@amcharts/amcharts5 5.17.3 → 5.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.internal/charts/flow/ArcDiagramLink.d.ts +3 -0
- package/.internal/charts/flow/ArcDiagramLink.d.ts.map +1 -1
- package/.internal/charts/flow/ArcDiagramLink.js +12 -4
- package/.internal/charts/flow/ArcDiagramLink.js.map +1 -1
- package/.internal/charts/flow/ChordDirected.d.ts.map +1 -1
- package/.internal/charts/flow/ChordDirected.js +1 -0
- package/.internal/charts/flow/ChordDirected.js.map +1 -1
- package/.internal/charts/flow/SankeyLink.d.ts +3 -0
- package/.internal/charts/flow/SankeyLink.d.ts.map +1 -1
- package/.internal/charts/flow/SankeyLink.js +12 -4
- package/.internal/charts/flow/SankeyLink.js.map +1 -1
- package/.internal/charts/funnel/PictorialStackedSeries.js +1 -1
- package/.internal/charts/funnel/PictorialStackedSeries.js.map +1 -1
- package/.internal/charts/hierarchy/BreadcrumbBar.d.ts.map +1 -1
- package/.internal/charts/hierarchy/BreadcrumbBar.js +6 -8
- package/.internal/charts/hierarchy/BreadcrumbBar.js.map +1 -1
- package/.internal/charts/hierarchy/ForceDirected.js +1 -1
- package/.internal/charts/hierarchy/ForceDirected.js.map +1 -1
- package/.internal/charts/hierarchy/HierarchyDefaultTheme.js +1 -1
- package/.internal/charts/hierarchy/HierarchyDefaultTheme.js.map +1 -1
- package/.internal/charts/hierarchy/HierarchyLink.d.ts +3 -0
- package/.internal/charts/hierarchy/HierarchyLink.d.ts.map +1 -1
- package/.internal/charts/hierarchy/HierarchyLink.js +10 -2
- package/.internal/charts/hierarchy/HierarchyLink.js.map +1 -1
- package/.internal/charts/hierarchy/Tree.d.ts +14 -0
- package/.internal/charts/hierarchy/Tree.d.ts.map +1 -1
- package/.internal/charts/hierarchy/Tree.js +70 -0
- package/.internal/charts/hierarchy/Tree.js.map +1 -1
- package/.internal/charts/hierarchy/VoronoiTreemap.d.ts +8 -2
- package/.internal/charts/hierarchy/VoronoiTreemap.d.ts.map +1 -1
- package/.internal/charts/hierarchy/VoronoiTreemap.js +8 -4
- package/.internal/charts/hierarchy/VoronoiTreemap.js.map +1 -1
- package/.internal/charts/map/GraticuleSeries.d.ts +2 -0
- package/.internal/charts/map/GraticuleSeries.d.ts.map +1 -1
- package/.internal/charts/map/GraticuleSeries.js +6 -1
- package/.internal/charts/map/GraticuleSeries.js.map +1 -1
- package/.internal/charts/map/MapChart.d.ts +59 -0
- package/.internal/charts/map/MapChart.d.ts.map +1 -1
- package/.internal/charts/map/MapChart.js +43 -0
- package/.internal/charts/map/MapChart.js.map +1 -1
- package/.internal/charts/map/MapChartProjections.d.ts +3 -0
- package/.internal/charts/map/MapChartProjections.d.ts.map +1 -0
- package/.internal/charts/map/MapChartProjections.js +20 -0
- package/.internal/charts/map/MapChartProjections.js.map +1 -0
- package/.internal/charts/map/MapPointSeries.js +1 -1
- package/.internal/charts/map/MapPointSeries.js.map +1 -1
- package/.internal/charts/map/MapPolygonSeries.d.ts.map +1 -1
- package/.internal/charts/map/MapPolygonSeries.js +2 -1
- package/.internal/charts/map/MapPolygonSeries.js.map +1 -1
- package/.internal/charts/map/MapProjections.d.ts +13 -0
- package/.internal/charts/map/MapProjections.d.ts.map +1 -0
- package/.internal/charts/map/MapProjections.js +15 -0
- package/.internal/charts/map/MapProjections.js.map +1 -0
- package/.internal/charts/pie/PieChart.d.ts +1 -0
- package/.internal/charts/pie/PieChart.d.ts.map +1 -1
- package/.internal/charts/pie/PieChart.js +6 -0
- package/.internal/charts/pie/PieChart.js.map +1 -1
- package/.internal/charts/stock/SettingsModal.js +1 -1
- package/.internal/charts/stock/SettingsModal.js.map +1 -1
- package/.internal/charts/stock/StockChartDefaultTheme.js +6 -6
- package/.internal/charts/stock/StockChartDefaultTheme.js.map +1 -1
- package/.internal/charts/stock/indicators/BollingerBands.js +1 -1
- package/.internal/charts/stock/indicators/BollingerBands.js.map +1 -1
- package/.internal/charts/stock/indicators/Indicator.d.ts.map +1 -1
- package/.internal/charts/stock/indicators/Indicator.js +1 -1
- package/.internal/charts/stock/indicators/Indicator.js.map +1 -1
- package/.internal/charts/stock/indicators/MovingAverage.d.ts +6 -0
- package/.internal/charts/stock/indicators/MovingAverage.d.ts.map +1 -1
- package/.internal/charts/stock/indicators/MovingAverage.js +9 -5
- package/.internal/charts/stock/indicators/MovingAverage.js.map +1 -1
- package/.internal/charts/stock/indicators/MovingAverageDeviation.d.ts +6 -0
- package/.internal/charts/stock/indicators/MovingAverageDeviation.d.ts.map +1 -1
- package/.internal/charts/stock/indicators/MovingAverageDeviation.js +8 -4
- package/.internal/charts/stock/indicators/MovingAverageDeviation.js.map +1 -1
- package/.internal/charts/stock/indicators/MovingAverageEnvelope.js +1 -1
- package/.internal/charts/stock/indicators/MovingAverageEnvelope.js.map +1 -1
- package/.internal/charts/stock/toolbar/DrawingControl.js +1 -1
- package/.internal/charts/stock/toolbar/DrawingControl.js.map +1 -1
- package/.internal/charts/stock/toolbar/StockToolbar.d.ts.map +1 -1
- package/.internal/charts/stock/toolbar/StockToolbar.js +3 -0
- package/.internal/charts/stock/toolbar/StockToolbar.js.map +1 -1
- package/.internal/charts/xy/XYChart.js +5 -5
- package/.internal/charts/xy/XYChart.js.map +1 -1
- package/.internal/charts/xy/XYCursor.d.ts +2 -0
- package/.internal/charts/xy/XYCursor.d.ts.map +1 -1
- package/.internal/charts/xy/XYCursor.js +6 -2
- package/.internal/charts/xy/XYCursor.js.map +1 -1
- package/.internal/charts/xy/axes/Axis.d.ts +7 -0
- package/.internal/charts/xy/axes/Axis.d.ts.map +1 -1
- package/.internal/charts/xy/axes/Axis.js +33 -20
- package/.internal/charts/xy/axes/Axis.js.map +1 -1
- package/.internal/charts/xy/axes/CategoryDateAxis.d.ts.map +1 -1
- package/.internal/charts/xy/axes/CategoryDateAxis.js +3 -0
- package/.internal/charts/xy/axes/CategoryDateAxis.js.map +1 -1
- package/.internal/charts/xy/axes/DateAxis.d.ts.map +1 -1
- package/.internal/charts/xy/axes/DateAxis.js +18 -1
- package/.internal/charts/xy/axes/DateAxis.js.map +1 -1
- package/.internal/charts/xy/axes/ValueAxis.d.ts +1 -0
- package/.internal/charts/xy/axes/ValueAxis.d.ts.map +1 -1
- package/.internal/charts/xy/axes/ValueAxis.js +26 -10
- package/.internal/charts/xy/axes/ValueAxis.js.map +1 -1
- package/.internal/charts/xy/series/StepLineSeries.js +1 -1
- package/.internal/charts/xy/series/StepLineSeries.js.map +1 -1
- package/.internal/charts/xy/series/XYSeries.d.ts.map +1 -1
- package/.internal/charts/xy/series/XYSeries.js +10 -4
- package/.internal/charts/xy/series/XYSeries.js.map +1 -1
- package/.internal/core/Registry.js +1 -1
- package/.internal/core/Registry.js.map +1 -1
- package/.internal/core/Root.d.ts +19 -0
- package/.internal/core/Root.d.ts.map +1 -1
- package/.internal/core/Root.js +15 -2
- package/.internal/core/Root.js.map +1 -1
- package/.internal/core/render/Container.d.ts.map +1 -1
- package/.internal/core/render/Container.js +1 -0
- package/.internal/core/render/Container.js.map +1 -1
- package/.internal/core/render/Legend.js +2 -2
- package/.internal/core/render/Legend.js.map +1 -1
- package/.internal/core/render/backend/CanvasRenderer.d.ts +6 -0
- package/.internal/core/render/backend/CanvasRenderer.d.ts.map +1 -1
- package/.internal/core/render/backend/CanvasRenderer.js +25 -5
- package/.internal/core/render/backend/CanvasRenderer.js.map +1 -1
- package/.internal/core/util/Entity.d.ts.map +1 -1
- package/.internal/core/util/Entity.js +7 -3
- package/.internal/core/util/Entity.js.map +1 -1
- package/.internal/core/util/Modal.js +2 -2
- package/.internal/core/util/Modal.js.map +1 -1
- package/.internal/core/util/Utils.d.ts +21 -0
- package/.internal/core/util/Utils.d.ts.map +1 -1
- package/.internal/core/util/Utils.js +49 -0
- package/.internal/core/util/Utils.js.map +1 -1
- package/.internal/plugins/exporting/Exporting.d.ts +38 -0
- package/.internal/plugins/exporting/Exporting.d.ts.map +1 -1
- package/.internal/plugins/exporting/Exporting.js +43 -9
- package/.internal/plugins/exporting/Exporting.js.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 +0 -9
- package/.internal/plugins/json/ChartSerializer.d.ts.map +1 -1
- package/.internal/plugins/json/ChartSerializer.js +8 -12
- package/.internal/plugins/json/ChartSerializer.js.map +1 -1
- package/.internal/plugins/json/Classes-script.js +254 -254
- package/.internal/plugins/json/Classes-script.js.map +1 -1
- package/.internal/plugins/json/Classes.d.ts.map +1 -1
- package/.internal/plugins/json/Classes.js +257 -254
- package/.internal/plugins/json/Classes.js.map +1 -1
- package/.internal/plugins/json/Json.d.ts.map +1 -1
- package/.internal/plugins/json/Json.js +56 -2
- package/.internal/plugins/json/Json.js.map +1 -1
- package/CHANGELOG.md +38 -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-sankey/package.json +1 -1
- package/examples/javascript/map-sankey-waypoints/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-sankey/package.json +1 -1
- package/examples/typescript/map-sankey-waypoints/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/map.d.ts +2 -3
- package/map.d.ts.map +1 -1
- package/map.js +2 -3
- package/map.js.map +1 -1
- package/package.json +5 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExportingMenu.js","sourceRoot":"","sources":["../../../../../src/.internal/plugins/exporting/ExportingMenu.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Exporting, ExportingFormats, ExportingTypes } from \"./Exporting\"\n\nimport { Entity, IEntitySettings, IEntityPrivate, IEntityEvents } from \"../../core/util/Entity\"\nimport { IDisposer, Disposer } from \"../../core/util/Disposer\";\nimport exportingCSS from \"./ExportingCSS\";\n\nimport * as $array from \"../../core/util/Array\";\nimport * as $utils from \"../../core/util/Utils\";\n\nexport interface IExportingMenuItem {\n\n\t/**\n\t * Indicates type of the menu item:\n\t * * `\"format\"` - indicates export action\n\t * * `\"separator\"` - will show horizontal divider.\n\t * * `\"custom\"` - will invoke custom function when clicked.\n\t */\n\ttype: \"format\" | \"separator\" | \"custom\";\n\n\t/**\n\t * If `type` is set to `\"format\"`, clicking item will initiate export in\n\t * that format.\n\t */\n\tformat?: ExportingFormats;\n\n\t/**\n\t * Indicates export type: `\"image\"`, `\"data\"`, or `\"print\"`.\n\t */\n\texportType?: ExportingTypes;\n\n\t/**\n\t * Menu label.\n\t */\n\tlabel?: string;\n\n\t/**\n\t * Additional information.\n\t */\n\tsublabel?: string;\n\n\t/**\n\t * If `type` is set to `\"custom\"`, this needs to be set to a function.\n\t */\n\tcallback?: (menuItem?: any) => any;\n\n\t/**\n\t * A target for callback function.\n\t */\n\tcallbackTarget?: any;\n\n\t/**\n\t * A DOM element for the menu item.\n\t *\n\t * @readonly\n\t */\n\telement?: HTMLAnchorElement;\n\n}\n\nexport interface IExportingMenuSettings extends IEntitySettings {\n\n\t/**\n\t * Horizontal alignment of the menu.\n\t *\n\t * @default \"right\"\n\t */\n\talign?: \"left\" | \"right\";\n\n\t/**\n\t * Vertical alignment of the menu.\n\t *\n\t * @default \"top\"\n\t */\n\tvalign?: \"top\" | \"bottom\";\n\n\t/**\n\t * A reference to an element in the document to place export menu in.\n\t *\n\t * If not set, will use root element's container.\n\t */\n\tcontainer?: HTMLElement;\n\n\t/**\n\t * A list of menu items.\n\t */\n\titems?: IExportingMenuItem[];\n\n\t/**\n\t * A reference to related [[Exporting]] object.\n\t */\n\texporting?: Exporting;\n\n\t/**\n\t * If set to `false` the menu will not load default CSS.\n\t *\n\t * @default true\n\t */\n\tuseDefaultCSS?: boolean;\n\n\t/**\n\t * If set to `true` the menu will close automatically when export operation\n\t * is initiated.\n\t *\n\t * @default true\n\t */\n\tautoClose?: boolean;\n\n\t/**\n\t * Menu will disable all interactions for the underlying chart when browsing\n\t * the menu.\n\t *\n\t * @default true\n\t */\n\tdeactivateRoot?: boolean;\n\n\t/**\n\t * ARIA label for the menu.\n\t *\n\t * @since 5.14.4\n\t */\n\tariaLabel?: string;\n\n}\n\nexport interface IExportingMenuPrivate extends IEntityPrivate {\n\n\t/**\n\t * A `<div>` element that acts as a container for other menu elements.\n\t */\n\tmenuElement?: HTMLDivElement;\n\n\t/**\n\t * A top-level `<ul>` element containing menu items.\n\t */\n\tlistElement?: HTMLUListElement;\n\n}\n\nexport interface IExportingMenuEvents extends IEntityEvents {\n\t\"menucreated\": {}\n\t\"menuopened\": {}\n\t\"menuclosed\": {}\n}\n\n/**\n * Displays a menu for [[Exporting]].\n *\n * @see {@link https://www.amcharts.com/docs/v5/concepts/exporting/} for more info\n */\nexport class ExportingMenu extends Entity {\n\tpublic static className: string = \"ExportingMenu\";\n\tpublic static classNames: Array<string> = Entity.classNames.concat([ExportingMenu.className]);\n\n\tdeclare public _settings: IExportingMenuSettings;\n\tdeclare public _privateSettings: IExportingMenuPrivate;\n\tdeclare public _events: IExportingMenuEvents;\n\n\tprivate _menuElement?: HTMLDivElement;\n\tprivate _iconElement?: HTMLElement;\n\tprivate _listElement?: HTMLUListElement;\n\tprivate _itemElements?: HTMLLIElement[] = [];\n\tprivate _itemDisposers: Array<IDisposer> = [];\n\n\tprivate _cssDisposer?: IDisposer;\n\tprivate _activeItem?: IExportingMenuItem;\n\n\tpublic isOpen: boolean = false;\n\n\tprivate _isOver: boolean = false;\n\n\tprotected _afterNew() {\n\t\tsuper._afterNew();\n\t\tthis._setRawDefault(\"container\", this._root._inner);\n\t\tthis._setRawDefault(\"align\", \"right\");\n\t\tthis._setRawDefault(\"valign\", \"top\");\n\t\tthis._setRawDefault(\"useDefaultCSS\", true);\n\t\tthis._setRawDefault(\"autoClose\", true);\n\t\tthis._setRawDefault(\"deactivateRoot\", true);\n\t\tthis._setRawDefault(\"items\", [{\n\t\t\ttype: \"separator\",\n\t\t\tlabel: this._t(\"Export\")\n\t\t}, {\n\t\t\ttype: \"format\",\n\t\t\tformat: \"png\",\n\t\t\texportType: \"image\",\n\t\t\tlabel: this._t(\"PNG\"),\n\t\t\tsublabel: this._t(\"Image\")\n\t\t}, {\n\t\t\ttype: \"format\",\n\t\t\tformat: \"jpg\",\n\t\t\texportType: \"image\",\n\t\t\tlabel: this._t(\"JPG\"),\n\t\t\tsublabel: this._t(\"Image\")\n\t\t}, {\n\t\t\ttype: \"format\",\n\t\t\tformat: \"pdf\",\n\t\t\texportType: \"image\",\n\t\t\tlabel: this._t(\"PDF\"),\n\t\t\tsublabel: this._t(\"Image\")\n\t\t}, {\n\t\t\ttype: \"separator\",\n\t\t\texportType: \"data\",\n\t\t\t//label: this._t(\"Data\")\n\t\t}, {\n\t\t\ttype: \"format\",\n\t\t\tformat: \"json\",\n\t\t\texportType: \"data\",\n\t\t\tlabel: this._t(\"JSON\"),\n\t\t\tsublabel: this._t(\"Data\")\n\t\t}, {\n\t\t\ttype: \"format\",\n\t\t\tformat: \"csv\",\n\t\t\texportType: \"data\",\n\t\t\tlabel: this._t(\"CSV\"),\n\t\t\tsublabel: this._t(\"Data\")\n\t\t}, {\n\t\t\ttype: \"format\",\n\t\t\tformat: \"xlsx\",\n\t\t\texportType: \"data\",\n\t\t\tlabel: this._t(\"XLSX\"),\n\t\t\tsublabel: this._t(\"Data\")\n\t\t}, {\n\t\t\ttype: \"format\",\n\t\t\tformat: \"pdfdata\",\n\t\t\texportType: \"data\",\n\t\t\tlabel: this._t(\"PDF\"),\n\t\t\tsublabel: this._t(\"Data\")\n\t\t}, {\n\t\t\ttype: \"format\",\n\t\t\tformat: \"html\",\n\t\t\texportType: \"data\",\n\t\t\tlabel: this._t(\"HTML\"),\n\t\t\tsublabel: this._t(\"Data\")\n\t\t}, {\n\t\t\ttype: \"separator\"\n\t\t}, {\n\t\t\ttype: \"format\",\n\t\t\tformat: \"print\",\n\t\t\texportType: \"print\",\n\t\t\tlabel: this._t(\"Print\")\n\t\t}]);\n\n\t\tconst menuElement = document.createElement(\"div\");\n\t\tthis._menuElement = menuElement;\n\t\tthis.setPrivate(\"menuElement\", this._menuElement);\n\n\t\tconst iconElement = document.createElement(\"a\");\n\t\tthis._iconElement = iconElement;\n\n\t\tthis._listElement = document.createElement(\"ul\");\n\t\tthis._listElement.setAttribute(\"role\", \"menu\");\n\t\tthis.setPrivate(\"listElement\", this._listElement);\n\t\tthis._applyClassNames();\n\n\t\ticonElement.innerHTML = '<svg fill=\"none\" height=\"20\" width=\"20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M6 10a2 2 0 11-4 0 2 2 0 014 0zM12 10a2 2 0 11-4 0 2 2 0 014 0zM16 12a2 2 0 100-4 2 2 0 000 4z\"/></svg>';\n\t\ticonElement.setAttribute(\"tabindex\", this._root.tabindex.toString());\n\t\ticonElement.setAttribute(\"aria-label\", this.get(\"ariaLabel\", this._t(\"Export\") + \"; \" + this._t(\"Press ENTER to open\")));\n\t\ticonElement.setAttribute(\"role\", \"button\");\n\n\t\tif ($utils.supports(\"keyboardevents\")) {\n\t\t\tthis._disposers.push($utils.addEventListener(document, \"keydown\", (ev: KeyboardEvent) => {\n\t\t\t\tconst eventKey = $utils.getEventKey(ev);\n\t\t\t\tif (document.activeElement == this._iconElement || this.isOpen) {\n\t\t\t\t\tif (eventKey == \"Escape\") {\n\t\t\t\t\t\t// ESC\n\t\t\t\t\t\tthis.close();\n\t\t\t\t\t}\n\t\t\t\t\telse if (eventKey == \"Enter\") {\n\t\t\t\t\t\t// ENTER\n\t\t\t\t\t\tif (this._activeItem) {\n\t\t\t\t\t\t\tthis._handleClick(this._activeItem);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tthis.toggle();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse if (eventKey == \"ArrowUp\" || eventKey == \"ArrowDown\") {\n\t\t\t\t\t\tconst items = this.get(\"items\", []);\n\t\t\t\t\t\tlet currentIndex = (<any>items).indexOf(this._activeItem);\n\t\t\t\t\t\tif (this.get(\"valign\") == \"top\" && currentIndex == -1) {\n\t\t\t\t\t\t\tcurrentIndex = items.length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst dir = eventKey == \"ArrowUp\" ? -1 : 1;\n\t\t\t\t\t\tlet newIndex = currentIndex + dir;\n\t\t\t\t\t\tlet newItem;\n\t\t\t\t\t\tdo {\n\t\t\t\t\t\t\tif (newIndex < 0) {\n\t\t\t\t\t\t\t\tnewIndex = items.length - 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (newIndex > (items.length - 1)) {\n\t\t\t\t\t\t\t\tnewIndex = 0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (items[newIndex].type == \"separator\") {\n\t\t\t\t\t\t\t\tnewIndex += dir;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tnewItem = items[newIndex];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} while (!newItem);\n\n\t\t\t\t\t\tif (newItem) {\n\t\t\t\t\t\t\tthis._handleItemFocus(newItem);\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\n\t\tthis._disposers.push($utils.addEventListener(iconElement, \"click\", (ev: MouseEvent) => {\n\t\t\tev.stopImmediatePropagation();\n\t\t\tthis.toggle();\n\t\t}));\n\n\t\tmenuElement.appendChild(this._iconElement);\n\t\tmenuElement.appendChild(this._listElement);\n\n\t\tconst container = this.get(\"container\", this._root._inner);\n\n\t\tcontainer.appendChild(this._menuElement);\n\n\t\tthis._disposers.push($utils.addEventListener(menuElement, $utils.getRendererEvent(\"pointerover\"), (_ev) => {\n\t\t\tthis._isOver = true;\n\t\t\tif (this.get(\"deactivateRoot\")) {\n\t\t\t\tthis._root._renderer.interactionsEnabled = false;\n\t\t\t}\n\t\t}));\n\n\t\tthis._disposers.push($utils.addEventListener(menuElement, $utils.getRendererEvent(\"pointerout\"), (_ev) => {\n\t\t\tif (this.get(\"deactivateRoot\") && (this.isOpen || this._isOver)) {\n\t\t\t\tthis._root._renderer.interactionsEnabled = true;\n\t\t\t}\n\t\t\tthis._isOver = false;\n\t\t}));\n\n\t\tthis._disposers.push(new Disposer(() => {\n\t\t\tif (this._menuElement) {\n\t\t\t\tcontainer.removeChild(this._menuElement);\n\t\t\t}\n\t\t}));\n\n\t\tthis._disposers.push($utils.addEventListener(document, \"click\", (_ev) => {\n\t\t\tif (this.isOpen && !this._isOver) {\n\t\t\t\tthis.close();\n\t\t\t}\n\t\t}));\n\n\t\tthis.loadDefaultCSS();\n\n\t\tthis._root.addDisposer(this);\n\n\t\tthis.events.dispatch(\"menucreated\", {\n\t\t\ttype: \"menucreated\",\n\t\t\ttarget: this\n\t\t});\n\t}\n\n\tpublic _afterChanged() {\n\t\tsuper._afterChanged();\n\n\t\tif (this._itemElements!.length == 0) {\n\t\t\tthis.createItems();\n\t\t}\n\n\t\tif (this.isDirty(\"useDefaultCSS\")) {\n\t\t\tif (this.get(\"useDefaultCSS\")) {\n\t\t\t\tthis.loadDefaultCSS();\n\t\t\t}\n\t\t\telse if (this._cssDisposer) {\n\t\t\t\tthis._cssDisposer.dispose();\n\t\t\t}\n\t\t}\n\n\t\tif (this.isDirty(\"exporting\")) {\n\t\t\tconst exporting = this.get(\"exporting\");\n\t\t\tif (exporting) {\n\t\t\t\tthis.createItems();\n\t\t\t}\n\t\t}\n\n\t\tif (this.isDirty(\"align\") || this.isDirty(\"valign\")) {\n\t\t\tthis._applyClassNames();\n\t\t}\n\n\t\tif (this.isDirty(\"container\")) {\n\t\t\tconst container = this.get(\"container\");\n\t\t\tif (container) {\n\t\t\t\tcontainer.appendChild(this._menuElement!);\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected _dispose(): void {\n\t\tsuper._dispose();\n\n\t\t$array.each(this._itemDisposers, (x) => {\n\t\t\tx.dispose();\n\t\t});\n\t}\n\n\tprivate _applyClassNames(): void {\n\t\tconst align = this.get(\"align\", \"right\");\n\t\tconst valign = this.get(\"valign\", \"top\");\n\t\tconst status = this.isOpen ? \"am5exporting-menu-open\" : \"am5exporting-menu-closed\";\n\n\t\tthis._menuElement!.className = \"am5exporting am5exporting-menu am5exporting-align-\" + align + \" am5exporting-valign-\" + valign + \" \" + status;\n\t\tthis._iconElement!.className = \"am5exporting am5exporting-icon am5exporting-align-\" + align + \" am5exporting-valign-\" + valign;\n\t\tthis._listElement!.className = \"am5exporting am5exporting-list am5exporting-align-\" + align + \" am5exporting-valign-\" + valign;\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic createItems(): void {\n\t\tconst exporting = this.get(\"exporting\");\n\t\tif (!exporting) {\n\t\t\treturn;\n\t\t}\n\t\tthis._listElement!.innerHTML = \"\";\n\t\tthis._itemElements = [];\n\t\tconst items = this.get(\"items\", []);\n\t\tconst supportedFormats = exporting.supportedFormats();\n\t\tconst supportedExportTypes = exporting.supportedExportTypes();\n\n\t\t$array.each(this._itemDisposers, (x) => {\n\t\t\tx.dispose();\n\t\t});\n\n\t\tthis._itemDisposers.length = 0;\n\n\t\t$array.each(items, (item) => {\n\n\t\t\tif (item.format && supportedFormats.indexOf(item.format) == -1) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (item.exportType && supportedExportTypes.indexOf(item.exportType) == -1) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst li = document.createElement(\"li\");\n\t\t\tli.setAttribute(\"role\", \"menuitem\");\n\n\t\t\tli.className = \"am5exporting am5exporting-item am5exporting-type-\" + item.type;\n\t\t\tif (item.format) {\n\t\t\t\tli.className += \" am5exporting-format-\" + item.format;\n\t\t\t}\n\n\t\t\tconst a = document.createElement(\"a\");\n\n\t\t\tlet ariaLabel = this._t(\"Export \");\n\t\t\tif (item.label) {\n\t\t\t\ta.innerHTML = item.label;\n\t\t\t\tariaLabel += \" \" + item.label;\n\t\t\t}\n\n\t\t\tif (item.sublabel) {\n\t\t\t\ta.innerHTML += \" <span class=\\\"am5exporting-label-alt\\\">\" + item.sublabel + \"</span>\";\n\t\t\t\tariaLabel += \" (\" + item.sublabel + \")\";\n\t\t\t}\n\n\t\t\tif (item.callback) {\n\t\t\t\tthis._itemDisposers.push($utils.addEventListener(a, \"click\", (_ev) => {\n\t\t\t\t\titem.callback!.call(item.callbackTarget || this)\n\t\t\t\t}));\n\t\t\t\ta.setAttribute(\"tabindex\", this._root.tabindex.toString());\n\t\t\t}\n\t\t\telse if (item.format && exporting) {\n\t\t\t\tthis._itemDisposers.push($utils.addEventListener(a, \"click\", (_ev) => {\n\t\t\t\t\tthis._handleClick(item);\n\t\t\t\t}));\n\t\t\t\tthis._itemDisposers.push($utils.addEventListener(a, \"focus\", (_ev) => {\n\t\t\t\t\tthis._handleItemFocus(item);\n\t\t\t\t}));\n\t\t\t\tthis._itemDisposers.push($utils.addEventListener(a, \"blur\", (_ev) => {\n\t\t\t\t\tthis._handleItemBlur(item);\n\t\t\t\t}));\n\t\t\t\ta.setAttribute(\"tabindex\", this._root.tabindex.toString());\n\t\t\t\ta.setAttribute(\"aria-label\", ariaLabel);\n\t\t\t}\n\n\t\t\titem.element = a;\n\t\t\tli.appendChild(a);\n\t\t\tthis._listElement!.appendChild(li);\n\t\t\tthis._itemElements!.push(li);\n\t\t});\n\t}\n\n\tprivate _handleClick(item: IExportingMenuItem): void {\n\t\tconst exporting = this.get(\"exporting\")!;\n\t\tif (this.get(\"autoClose\")) {\n\t\t\tthis.close();\n\t\t}\n\t\tif (item.format == \"print\") {\n\t\t\texporting.print();\n\t\t}\n\t\telse {\n\t\t\texporting.download(item.format!);\n\t\t}\n\t}\n\n\tprivate _handleItemFocus(item: IExportingMenuItem): void {\n\t\tif (item != this._activeItem) {\n\t\t\tif (this._activeItem) {\n\t\t\t\tthis._activeItem.element!.className = \"\";\n\t\t\t}\n\t\t\tthis._activeItem = item;\n\t\t\titem.element!.className = \"am5exporting-item-active\";\n\t\t\titem.element!.focus();\n\t\t}\n\t}\n\n\tprivate _handleItemBlur(item: IExportingMenuItem): void {\n\t\titem.element!.className = \"\";\n\t\tif (item == this._activeItem) {\n\t\t\tthis._activeItem = undefined\n\t\t}\n\t\tthis.setTimeout(() => {\n\t\t\tif (!document.activeElement || !$utils.contains(this.get(\"container\")!, document.activeElement!)) {\n\t\t\t\tthis.close();\n\t\t\t}\n\t\t}, 10);\n\n\t}\n\n\t/**\n\t * Loads the default CSS.\n\t *\n\t * @ignore Exclude from docs\n\t */\n\tpublic loadDefaultCSS(): void {\n\t\tconst disposer = exportingCSS($utils.getShadowRoot(this._root.dom), this._root);\n\t\tthis._disposers.push(disposer);\n\t\tthis._cssDisposer = disposer;\n\n\t\t// if (this._element) {\n\t\t// \tthis._element.style.display = \"\";\n\t\t// }\n\t}\n\n\t/**\n\t * Opens menu.\n\t */\n\tpublic open(): void {\n\t\tthis.setTimeout(() => {\n\t\t\tthis.isOpen = true;\n\t\t\tif (this.get(\"deactivateRoot\")) {\n\t\t\t\tthis._root._renderer.interactionsEnabled = false;\n\t\t\t}\n\t\t\tthis._applyClassNames();\n\t\t\tthis.events.dispatch(\"menuopened\", {\n\t\t\t\ttype: \"menuopened\",\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t}, 1);\n\t}\n\n\t/**\n\t * Closes menu.\n\t */\n\tpublic close(): void {\n\t\tthis.isOpen = false;\n\t\tif (this.get(\"deactivateRoot\")) {\n\t\t\tthis._root._renderer.interactionsEnabled = true;\n\t\t}\n\t\t$utils.blur();\n\t\tthis._applyClassNames();\n\t\tthis.events.dispatch(\"menuclosed\", {\n\t\t\ttype: \"menuclosed\",\n\t\t\ttarget: this\n\t\t});\n\t}\n\n\t/**\n\t * Toggles menu open and close.\n\t */\n\tpublic toggle(): void {\n\t\tif (this.isOpen) {\n\t\t\tthis.close();\n\t\t}\n\t\telse {\n\t\t\tthis.open();\n\t\t}\n\t}\n\n\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ExportingMenu.js","sourceRoot":"","sources":["../../../../../src/.internal/plugins/exporting/ExportingMenu.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Exporting, ExportingFormats, ExportingTypes } from \"./Exporting\"\n\nimport { Entity, IEntitySettings, IEntityPrivate, IEntityEvents } from \"../../core/util/Entity\"\nimport { IDisposer, Disposer } from \"../../core/util/Disposer\";\nimport exportingCSS from \"./ExportingCSS\";\n\nimport * as $array from \"../../core/util/Array\";\nimport * as $utils from \"../../core/util/Utils\";\n\nexport interface IExportingMenuItem {\n\n\t/**\n\t * Indicates type of the menu item:\n\t * * `\"format\"` - indicates export action\n\t * * `\"separator\"` - will show horizontal divider.\n\t * * `\"custom\"` - will invoke custom function when clicked.\n\t */\n\ttype: \"format\" | \"separator\" | \"custom\";\n\n\t/**\n\t * If `type` is set to `\"format\"`, clicking item will initiate export in\n\t * that format.\n\t */\n\tformat?: ExportingFormats;\n\n\t/**\n\t * Indicates export type: `\"image\"`, `\"data\"`, or `\"print\"`.\n\t */\n\texportType?: ExportingTypes;\n\n\t/**\n\t * Menu label.\n\t */\n\tlabel?: string;\n\n\t/**\n\t * Additional information.\n\t */\n\tsublabel?: string;\n\n\t/**\n\t * If `type` is set to `\"custom\"`, this needs to be set to a function.\n\t */\n\tcallback?: (menuItem?: any) => any;\n\n\t/**\n\t * A target for callback function.\n\t */\n\tcallbackTarget?: any;\n\n\t/**\n\t * A DOM element for the menu item.\n\t *\n\t * @readonly\n\t */\n\telement?: HTMLAnchorElement;\n\n}\n\nexport interface IExportingMenuSettings extends IEntitySettings {\n\n\t/**\n\t * Horizontal alignment of the menu.\n\t *\n\t * @default \"right\"\n\t */\n\talign?: \"left\" | \"right\";\n\n\t/**\n\t * Vertical alignment of the menu.\n\t *\n\t * @default \"top\"\n\t */\n\tvalign?: \"top\" | \"bottom\";\n\n\t/**\n\t * A reference to an element in the document to place export menu in.\n\t *\n\t * If not set, will use root element's container.\n\t */\n\tcontainer?: HTMLElement;\n\n\t/**\n\t * A list of menu items.\n\t */\n\titems?: IExportingMenuItem[];\n\n\t/**\n\t * A reference to related [[Exporting]] object.\n\t */\n\texporting?: Exporting;\n\n\t/**\n\t * If set to `false` the menu will not load default CSS.\n\t *\n\t * @default true\n\t */\n\tuseDefaultCSS?: boolean;\n\n\t/**\n\t * If set to `true` the menu will close automatically when export operation\n\t * is initiated.\n\t *\n\t * @default true\n\t */\n\tautoClose?: boolean;\n\n\t/**\n\t * Menu will disable all interactions for the underlying chart when browsing\n\t * the menu.\n\t *\n\t * @default true\n\t */\n\tdeactivateRoot?: boolean;\n\n\t/**\n\t * ARIA label for the menu.\n\t *\n\t * @since 5.14.4\n\t */\n\tariaLabel?: string;\n\n}\n\nexport interface IExportingMenuPrivate extends IEntityPrivate {\n\n\t/**\n\t * A `<div>` element that acts as a container for other menu elements.\n\t */\n\tmenuElement?: HTMLDivElement;\n\n\t/**\n\t * A top-level `<ul>` element containing menu items.\n\t */\n\tlistElement?: HTMLUListElement;\n\n}\n\nexport interface IExportingMenuEvents extends IEntityEvents {\n\t\"menucreated\": {}\n\t\"menuopened\": {}\n\t\"menuclosed\": {}\n}\n\n/**\n * Displays a menu for [[Exporting]].\n *\n * @see {@link https://www.amcharts.com/docs/v5/concepts/exporting/} for more info\n */\nexport class ExportingMenu extends Entity {\n\tpublic static className: string = \"ExportingMenu\";\n\tpublic static classNames: Array<string> = Entity.classNames.concat([ExportingMenu.className]);\n\n\tdeclare public _settings: IExportingMenuSettings;\n\tdeclare public _privateSettings: IExportingMenuPrivate;\n\tdeclare public _events: IExportingMenuEvents;\n\n\tprivate _menuElement?: HTMLDivElement;\n\tprivate _iconElement?: HTMLElement;\n\tprivate _listElement?: HTMLUListElement;\n\tprivate _itemElements?: HTMLLIElement[] = [];\n\tprivate _itemDisposers: Array<IDisposer> = [];\n\n\tprivate _cssDisposer?: IDisposer;\n\tprivate _activeItem?: IExportingMenuItem;\n\n\tpublic isOpen: boolean = false;\n\n\tprivate _isOver: boolean = false;\n\n\tprotected _afterNew() {\n\t\tsuper._afterNew();\n\t\tthis._setRawDefault(\"container\", this._root._inner);\n\t\tthis._setRawDefault(\"align\", \"right\");\n\t\tthis._setRawDefault(\"valign\", \"top\");\n\t\tthis._setRawDefault(\"useDefaultCSS\", true);\n\t\tthis._setRawDefault(\"autoClose\", true);\n\t\tthis._setRawDefault(\"deactivateRoot\", true);\n\t\tthis._setRawDefault(\"items\", [{\n\t\t\ttype: \"separator\",\n\t\t\tlabel: this._t(\"Export\")\n\t\t}, {\n\t\t\ttype: \"format\",\n\t\t\tformat: \"png\",\n\t\t\texportType: \"image\",\n\t\t\tlabel: this._t(\"PNG\"),\n\t\t\tsublabel: this._t(\"Image\")\n\t\t}, {\n\t\t\ttype: \"format\",\n\t\t\tformat: \"jpg\",\n\t\t\texportType: \"image\",\n\t\t\tlabel: this._t(\"JPG\"),\n\t\t\tsublabel: this._t(\"Image\")\n\t\t}, {\n\t\t\ttype: \"format\",\n\t\t\tformat: \"pdf\",\n\t\t\texportType: \"image\",\n\t\t\tlabel: this._t(\"PDF\"),\n\t\t\tsublabel: this._t(\"Image\")\n\t\t}, {\n\t\t\ttype: \"separator\",\n\t\t\texportType: \"data\",\n\t\t\t//label: this._t(\"Data\")\n\t\t}, {\n\t\t\ttype: \"format\",\n\t\t\tformat: \"json\",\n\t\t\texportType: \"data\",\n\t\t\tlabel: this._t(\"JSON\"),\n\t\t\tsublabel: this._t(\"Data\")\n\t\t}, {\n\t\t\ttype: \"format\",\n\t\t\tformat: \"csv\",\n\t\t\texportType: \"data\",\n\t\t\tlabel: this._t(\"CSV\"),\n\t\t\tsublabel: this._t(\"Data\")\n\t\t}, {\n\t\t\ttype: \"format\",\n\t\t\tformat: \"xlsx\",\n\t\t\texportType: \"data\",\n\t\t\tlabel: this._t(\"XLSX\"),\n\t\t\tsublabel: this._t(\"Data\")\n\t\t}, {\n\t\t\ttype: \"format\",\n\t\t\tformat: \"pdfdata\",\n\t\t\texportType: \"data\",\n\t\t\tlabel: this._t(\"PDF\"),\n\t\t\tsublabel: this._t(\"Data\")\n\t\t}, {\n\t\t\ttype: \"format\",\n\t\t\tformat: \"html\",\n\t\t\texportType: \"data\",\n\t\t\tlabel: this._t(\"HTML\"),\n\t\t\tsublabel: this._t(\"Data\")\n\t\t}, {\n\t\t\ttype: \"separator\"\n\t\t}, {\n\t\t\ttype: \"format\",\n\t\t\tformat: \"print\",\n\t\t\texportType: \"print\",\n\t\t\tlabel: this._t(\"Print\")\n\t\t}]);\n\n\t\tconst menuElement = document.createElement(\"div\");\n\t\tthis._menuElement = menuElement;\n\t\tthis.setPrivate(\"menuElement\", this._menuElement);\n\n\t\tconst iconElement = document.createElement(\"a\");\n\t\tthis._iconElement = iconElement;\n\n\t\tthis._listElement = document.createElement(\"ul\");\n\t\tthis._listElement.setAttribute(\"role\", \"menu\");\n\t\tthis.setPrivate(\"listElement\", this._listElement);\n\t\tthis._applyClassNames();\n\n\t\ticonElement.innerHTML = '<svg fill=\"none\" height=\"20\" width=\"20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M6 10a2 2 0 11-4 0 2 2 0 014 0zM12 10a2 2 0 11-4 0 2 2 0 014 0zM16 12a2 2 0 100-4 2 2 0 000 4z\"/></svg>';\n\t\ticonElement.setAttribute(\"tabindex\", this._root.tabindex.toString());\n\t\ticonElement.setAttribute(\"aria-label\", this.get(\"ariaLabel\", this._t(\"Export\") + \"; \" + this._t(\"Press ENTER to open\")));\n\t\ticonElement.setAttribute(\"role\", \"button\");\n\n\t\tif ($utils.supports(\"keyboardevents\")) {\n\t\t\tthis._disposers.push($utils.addEventListener(document, \"keydown\", (ev: KeyboardEvent) => {\n\t\t\t\tconst eventKey = $utils.getEventKey(ev);\n\t\t\t\tif (document.activeElement == this._iconElement || this.isOpen) {\n\t\t\t\t\tif (eventKey == \"Escape\") {\n\t\t\t\t\t\t// ESC\n\t\t\t\t\t\tthis.close();\n\t\t\t\t\t}\n\t\t\t\t\telse if (eventKey == \"Enter\") {\n\t\t\t\t\t\t// ENTER\n\t\t\t\t\t\tif (this._activeItem) {\n\t\t\t\t\t\t\tthis._handleClick(this._activeItem);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tthis.toggle();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse if (eventKey == \"ArrowUp\" || eventKey == \"ArrowDown\") {\n\t\t\t\t\t\tconst items = this.get(\"items\", []);\n\t\t\t\t\t\tlet currentIndex = (<any>items).indexOf(this._activeItem);\n\t\t\t\t\t\tif (this.get(\"valign\") == \"top\" && currentIndex == -1) {\n\t\t\t\t\t\t\tcurrentIndex = items.length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst dir = eventKey == \"ArrowUp\" ? -1 : 1;\n\t\t\t\t\t\tlet newIndex = currentIndex + dir;\n\t\t\t\t\t\tlet newItem;\n\t\t\t\t\t\tdo {\n\t\t\t\t\t\t\tif (newIndex < 0) {\n\t\t\t\t\t\t\t\tnewIndex = items.length - 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (newIndex > (items.length - 1)) {\n\t\t\t\t\t\t\t\tnewIndex = 0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (items[newIndex].type == \"separator\") {\n\t\t\t\t\t\t\t\tnewIndex += dir;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tnewItem = items[newIndex];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} while (!newItem);\n\n\t\t\t\t\t\tif (newItem) {\n\t\t\t\t\t\t\tthis._handleItemFocus(newItem);\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\n\t\tthis._disposers.push($utils.addEventListener(iconElement, \"click\", (ev: MouseEvent) => {\n\t\t\tev.stopImmediatePropagation();\n\t\t\tthis.toggle();\n\t\t}));\n\n\t\tmenuElement.appendChild(this._iconElement);\n\t\tmenuElement.appendChild(this._listElement);\n\n\t\tconst container = this.get(\"container\", this._root._inner);\n\n\t\tcontainer.appendChild(this._menuElement);\n\n\t\tthis._disposers.push($utils.addEventListener(menuElement, $utils.getRendererEvent(\"pointerover\"), (_ev) => {\n\t\t\tthis._isOver = true;\n\t\t\tif (this.get(\"deactivateRoot\")) {\n\t\t\t\tthis._root._renderer.interactionsEnabled = false;\n\t\t\t}\n\t\t}));\n\n\t\tthis._disposers.push($utils.addEventListener(menuElement, $utils.getRendererEvent(\"pointerout\"), (_ev) => {\n\t\t\tif (this.get(\"deactivateRoot\") && (this.isOpen || this._isOver)) {\n\t\t\t\tthis._root._renderer.interactionsEnabled = true;\n\t\t\t}\n\t\t\tthis._isOver = false;\n\t\t}));\n\n\t\tthis._disposers.push(new Disposer(() => {\n\t\t\tif (this._menuElement) {\n\t\t\t\tcontainer.removeChild(this._menuElement);\n\t\t\t}\n\t\t}));\n\n\t\tthis._disposers.push($utils.addEventListener(document, \"click\", (_ev) => {\n\t\t\tif (this.isOpen && !this._isOver) {\n\t\t\t\tthis.close();\n\t\t\t}\n\t\t}));\n\n\t\tthis.loadDefaultCSS();\n\n\t\tthis._root.addDisposer(this);\n\n\t\tthis.events.dispatch(\"menucreated\", {\n\t\t\ttype: \"menucreated\",\n\t\t\ttarget: this\n\t\t});\n\t}\n\n\tpublic _afterChanged() {\n\t\tsuper._afterChanged();\n\n\t\tif (this._itemElements!.length == 0) {\n\t\t\tthis.createItems();\n\t\t}\n\n\t\tif (this.isDirty(\"useDefaultCSS\")) {\n\t\t\tif (this.get(\"useDefaultCSS\")) {\n\t\t\t\tthis.loadDefaultCSS();\n\t\t\t}\n\t\t\telse if (this._cssDisposer) {\n\t\t\t\tthis._cssDisposer.dispose();\n\t\t\t}\n\t\t}\n\n\t\tif (this.isDirty(\"exporting\")) {\n\t\t\tconst exporting = this.get(\"exporting\");\n\t\t\tif (exporting) {\n\t\t\t\tthis.createItems();\n\t\t\t}\n\t\t}\n\n\t\tif (this.isDirty(\"align\") || this.isDirty(\"valign\")) {\n\t\t\tthis._applyClassNames();\n\t\t}\n\n\t\tif (this.isDirty(\"container\")) {\n\t\t\tconst container = this.get(\"container\");\n\t\t\tif (container) {\n\t\t\t\tcontainer.appendChild(this._menuElement!);\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected _dispose(): void {\n\t\tsuper._dispose();\n\n\t\t$array.each(this._itemDisposers, (x) => {\n\t\t\tx.dispose();\n\t\t});\n\t}\n\n\tprivate _applyClassNames(): void {\n\t\tconst align = this.get(\"align\", \"right\");\n\t\tconst valign = this.get(\"valign\", \"top\");\n\t\tconst status = this.isOpen ? \"am5exporting-menu-open\" : \"am5exporting-menu-closed\";\n\n\t\tthis._menuElement!.className = \"am5exporting am5exporting-menu am5exporting-align-\" + align + \" am5exporting-valign-\" + valign + \" \" + status;\n\t\tthis._iconElement!.className = \"am5exporting am5exporting-icon am5exporting-align-\" + align + \" am5exporting-valign-\" + valign;\n\t\tthis._listElement!.className = \"am5exporting am5exporting-list am5exporting-align-\" + align + \" am5exporting-valign-\" + valign;\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic createItems(): void {\n\t\tconst exporting = this.get(\"exporting\");\n\t\tif (!exporting) {\n\t\t\treturn;\n\t\t}\n\t\tthis._listElement!.innerHTML = \"\";\n\t\tthis._itemElements = [];\n\t\tconst items = this.get(\"items\", []);\n\t\tconst supportedFormats = exporting.supportedFormats();\n\t\tconst supportedExportTypes = exporting.supportedExportTypes();\n\n\t\t$array.each(this._itemDisposers, (x) => {\n\t\t\tx.dispose();\n\t\t});\n\n\t\tthis._itemDisposers.length = 0;\n\n\t\t$array.each(items, (item) => {\n\n\t\t\tif (item.format && supportedFormats.indexOf(item.format) == -1) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (item.exportType && supportedExportTypes.indexOf(item.exportType) == -1) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst li = document.createElement(\"li\");\n\t\t\tli.setAttribute(\"role\", \"menuitem\");\n\n\t\t\tli.className = \"am5exporting am5exporting-item am5exporting-type-\" + item.type;\n\t\t\tif (item.format) {\n\t\t\t\tli.className += \" am5exporting-format-\" + item.format;\n\t\t\t}\n\n\t\t\tconst a = document.createElement(\"a\");\n\n\t\t\tlet ariaLabel = this._t(\"Export \");\n\t\t\tif (item.label) {\n\t\t\t\ta.innerHTML = this._root._sanitizeHTML(item.label);\n\t\t\t\tariaLabel += \" \" + item.label;\n\t\t\t}\n\n\t\t\tif (item.sublabel) {\n\t\t\t\ta.innerHTML += \" <span class=\\\"am5exporting-label-alt\\\">\" + this._root._sanitizeHTML(item.sublabel) + \"</span>\";\n\t\t\t\tariaLabel += \" (\" + item.sublabel + \")\";\n\t\t\t}\n\n\t\t\tif (item.callback) {\n\t\t\t\tthis._itemDisposers.push($utils.addEventListener(a, \"click\", (_ev) => {\n\t\t\t\t\titem.callback!.call(item.callbackTarget || this)\n\t\t\t\t}));\n\t\t\t\ta.setAttribute(\"tabindex\", this._root.tabindex.toString());\n\t\t\t}\n\t\t\telse if (item.format && exporting) {\n\t\t\t\tthis._itemDisposers.push($utils.addEventListener(a, \"click\", (_ev) => {\n\t\t\t\t\tthis._handleClick(item);\n\t\t\t\t}));\n\t\t\t\tthis._itemDisposers.push($utils.addEventListener(a, \"focus\", (_ev) => {\n\t\t\t\t\tthis._handleItemFocus(item);\n\t\t\t\t}));\n\t\t\t\tthis._itemDisposers.push($utils.addEventListener(a, \"blur\", (_ev) => {\n\t\t\t\t\tthis._handleItemBlur(item);\n\t\t\t\t}));\n\t\t\t\ta.setAttribute(\"tabindex\", this._root.tabindex.toString());\n\t\t\t\ta.setAttribute(\"aria-label\", ariaLabel);\n\t\t\t}\n\n\t\t\titem.element = a;\n\t\t\tli.appendChild(a);\n\t\t\tthis._listElement!.appendChild(li);\n\t\t\tthis._itemElements!.push(li);\n\t\t});\n\t}\n\n\tprivate _handleClick(item: IExportingMenuItem): void {\n\t\tconst exporting = this.get(\"exporting\")!;\n\t\tif (this.get(\"autoClose\")) {\n\t\t\tthis.close();\n\t\t}\n\t\tif (item.format == \"print\") {\n\t\t\texporting.print();\n\t\t}\n\t\telse {\n\t\t\texporting.download(item.format!);\n\t\t}\n\t}\n\n\tprivate _handleItemFocus(item: IExportingMenuItem): void {\n\t\tif (item != this._activeItem) {\n\t\t\tif (this._activeItem) {\n\t\t\t\tthis._activeItem.element!.className = \"\";\n\t\t\t}\n\t\t\tthis._activeItem = item;\n\t\t\titem.element!.className = \"am5exporting-item-active\";\n\t\t\titem.element!.focus();\n\t\t}\n\t}\n\n\tprivate _handleItemBlur(item: IExportingMenuItem): void {\n\t\titem.element!.className = \"\";\n\t\tif (item == this._activeItem) {\n\t\t\tthis._activeItem = undefined\n\t\t}\n\t\tthis.setTimeout(() => {\n\t\t\tif (!document.activeElement || !$utils.contains(this.get(\"container\")!, document.activeElement!)) {\n\t\t\t\tthis.close();\n\t\t\t}\n\t\t}, 10);\n\n\t}\n\n\t/**\n\t * Loads the default CSS.\n\t *\n\t * @ignore Exclude from docs\n\t */\n\tpublic loadDefaultCSS(): void {\n\t\tconst disposer = exportingCSS($utils.getShadowRoot(this._root.dom), this._root);\n\t\tthis._disposers.push(disposer);\n\t\tthis._cssDisposer = disposer;\n\n\t\t// if (this._element) {\n\t\t// \tthis._element.style.display = \"\";\n\t\t// }\n\t}\n\n\t/**\n\t * Opens menu.\n\t */\n\tpublic open(): void {\n\t\tthis.setTimeout(() => {\n\t\t\tthis.isOpen = true;\n\t\t\tif (this.get(\"deactivateRoot\")) {\n\t\t\t\tthis._root._renderer.interactionsEnabled = false;\n\t\t\t}\n\t\t\tthis._applyClassNames();\n\t\t\tthis.events.dispatch(\"menuopened\", {\n\t\t\t\ttype: \"menuopened\",\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t}, 1);\n\t}\n\n\t/**\n\t * Closes menu.\n\t */\n\tpublic close(): void {\n\t\tthis.isOpen = false;\n\t\tif (this.get(\"deactivateRoot\")) {\n\t\t\tthis._root._renderer.interactionsEnabled = true;\n\t\t}\n\t\t$utils.blur();\n\t\tthis._applyClassNames();\n\t\tthis.events.dispatch(\"menuclosed\", {\n\t\t\ttype: \"menuclosed\",\n\t\t\ttarget: this\n\t\t});\n\t}\n\n\t/**\n\t * Toggles menu open and close.\n\t */\n\tpublic toggle(): void {\n\t\tif (this.isOpen) {\n\t\t\tthis.close();\n\t\t}\n\t\telse {\n\t\t\tthis.open();\n\t\t}\n\t}\n\n\n}\n"]}
|
|
@@ -7,15 +7,6 @@ export interface IChartSerializerSettings extends ISerializerSettings {
|
|
|
7
7
|
* @default true
|
|
8
8
|
*/
|
|
9
9
|
removeEmptyObjects?: boolean;
|
|
10
|
-
/**
|
|
11
|
-
* Include projection settings in the output.
|
|
12
|
-
*
|
|
13
|
-
* If enabled, the projection function will be included in the output,
|
|
14
|
-
* according to the `functionsAs` setting.
|
|
15
|
-
*
|
|
16
|
-
* @default false
|
|
17
|
-
*/
|
|
18
|
-
includeProjection?: boolean;
|
|
19
10
|
}
|
|
20
11
|
export interface IChartSerializerPrivate extends ISerializerPrivate {
|
|
21
12
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartSerializer.d.ts","sourceRoot":"","sources":["../../../../../src/.internal/plugins/json/ChartSerializer.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAGxD,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAMtG,MAAM,WAAW,wBAAyB,SAAQ,mBAAmB;IAEpE;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"ChartSerializer.d.ts","sourceRoot":"","sources":["../../../../../src/.internal/plugins/json/ChartSerializer.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAGxD,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAMtG,MAAM,WAAW,wBAAyB,SAAQ,mBAAmB;IAEpE;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAE7B;AAED,MAAM,WAAW,uBAAwB,SAAQ,kBAAkB;CAClE;AAED,MAAM,WAAW,sBAAuB,SAAQ,iBAAiB;CAChE;AAGD;;;;;GAKG;AACH,qBAAa,eAAgB,SAAQ,UAAU;IAE9C,OAAc,SAAS,EAAE,MAAM,CAAqB;IACpD,OAAc,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAA6D;IAErF,SAAS,EAAE,wBAAwB,CAAC;IACpC,gBAAgB,EAAE,uBAAuB,CAAC;IAC1C,OAAO,EAAE,sBAAsB,CAAC;IAE/C,OAAO,CAAC,yBAAyB,CAAkB;IACnD,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,aAAa,CAAW;IAChC,OAAO,CAAC,SAAS,CAAmC;IACpD,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,SAAS,CAAuC;IAExD,SAAS,CAAC,SAAS,IAAI,IAAI;IAqCpB,KAAK,IAAI,IAAI;IAuBpB;;;;;OAKG;IACI,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,GAAG;IA6B3C,OAAO,CAAC,gBAAgB;IA+ExB,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,sBAAsB;IA6C9B,OAAO,CAAC,cAAc;IAuFtB,OAAO,CAAC,gBAAgB;IAoBxB,OAAO,CAAC,mBAAmB;IAsB3B,OAAO,CAAC,eAAe;IA8FvB,OAAO,CAAC,YAAY;IA4EpB,OAAO,CAAC,kBAAkB;IA0B1B,OAAO,CAAC,gBAAgB;IAwDxB,OAAO,CAAC,aAAa;IAsBrB,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,OAAO;IAWf,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,UAAU;IAYlB,OAAO,CAAC,WAAW;IAkBnB,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,QAAQ;IAUhB,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,kBAAkB;IAsC1B,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,aAAa;CAIrB"}
|
|
@@ -204,7 +204,7 @@ export class ChartSerializer extends Serializer {
|
|
|
204
204
|
const series = item.component;
|
|
205
205
|
childItem.properties.data[index] = "#" + this._getInternalRef(series.uid) + ".dataItems." + index;
|
|
206
206
|
}
|
|
207
|
-
else if (item.isType("Series")) {
|
|
207
|
+
else if (item instanceof Entity && item.isType("Series")) {
|
|
208
208
|
childItem.properties.data[index] = "#" + this._getInternalRef(item.uid);
|
|
209
209
|
}
|
|
210
210
|
else {
|
|
@@ -551,16 +551,12 @@ export class ChartSerializer extends Serializer {
|
|
|
551
551
|
}
|
|
552
552
|
// Handle projection setting
|
|
553
553
|
const projection = source.get("projection");
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
}
|
|
561
|
-
else {
|
|
562
|
-
result.settings.projection = projection;
|
|
563
|
-
}
|
|
554
|
+
// If the projection carries a registered name (e.g. set via
|
|
555
|
+
// `am5map.geoMercator()`) and no explicit `projectionName` was set,
|
|
556
|
+
// emit `projectionName` so the chart round-trips even when built in code.
|
|
557
|
+
if (projection && !source.get("projectionName") && projection.__projectionName) {
|
|
558
|
+
this._maybeInit(result, "settings", {});
|
|
559
|
+
result.settings.projectionName = projection.__projectionName;
|
|
564
560
|
}
|
|
565
561
|
}
|
|
566
562
|
_processGantt(source, result) {
|
|
@@ -589,7 +585,7 @@ export class ChartSerializer extends Serializer {
|
|
|
589
585
|
const selectedDataItem = source.get("selectedDataItem");
|
|
590
586
|
if (selectedDataItem) {
|
|
591
587
|
const index = source.dataItems.indexOf(selectedDataItem);
|
|
592
|
-
result.settings.selectedDataItem = "@
|
|
588
|
+
result.settings.selectedDataItem = "@self.dataItems." + index;
|
|
593
589
|
}
|
|
594
590
|
}
|
|
595
591
|
_populateTemplates(source, result, templateKeys) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartSerializer.js","sourceRoot":"","sources":["../../../../../src/.internal/plugins/json/ChartSerializer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAiBhD,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,UAAU,EAA8D,MAAM,cAAc,CAAC;AAEtG,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAC;AAClD,OAAO,KAAK,KAAK,MAAM,sBAAsB,CAAC;AAC9C,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAC;AA8BhD;;;;;GAKG;AACH,MAAM,OAAO,eAAgB,SAAQ,UAAU;IAA/C;;QASS,8BAAyB,GAAY,KAAK,CAAC;QAC3C,gBAAW,GAAe,EAAE,CAAC;QAC7B,kBAAa,GAAQ,EAAE,CAAC;QACxB,cAAS,GAAgC,EAAE,CAAC;QAC5C,WAAM,GAA6B,EAAE,CAAC;QACtC,cAAS,GAAoC,EAAE,CAAC;IAozBzD,CAAC;IAlzBU,SAAS;QAClB,KAAK,CAAC,SAAS,EAAE,CAAC;QAClB,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAC9B,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;QACzC,gDAAgD;QAChD,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE;YAChC,OAAO;YACP,WAAW;YACX,MAAM;YACN,cAAc;YACd,iBAAiB;YACjB,gBAAgB;YAChB,KAAK;YACL,KAAK;YACL,QAAQ;YACR,SAAS;YACT,eAAe;YACf,YAAY;YACZ,YAAY;YACZ,mBAAmB;YACnB,WAAW;SACX,CAAC,CAAC,CAAC,WAAW;QAEf,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,OAAkC,EAAE,EAAE;YAC7E,IAAI,IAAI,CAAC,yBAAyB,EAAE;gBACnC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;aACxC;YACD,OAAO,OAAO,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,EAAE,CAAC;IACd,CAAC;IAEM,KAAK;QACX,IAAI,CAAC,yBAAyB,GAAG,KAAK,CAAC;QACvC,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG;YACb,IAAI,EAAE,EAAE;YACR,IAAI,EAAE,EAAE;YACR,MAAM,EAAE,EAAE;YACV,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE,EAAE;SACZ,CAAC;QACF,IAAI,CAAC,SAAS,GAAG;YAChB,SAAS,EAAE,EAAE;YACb,IAAI,EAAE,EAAE;YACR,SAAS,EAAE,EAAE;YACb,IAAI,EAAE,EAAE;YACR,MAAM,EAAE,EAAE;YACV,UAAU,EAAE,EAAE;YACd,gBAAgB,EAAE,EAAE;SACpB,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACI,YAAY,CAAC,MAAiB;QAEpC,0EAA0E;QAC1E,+CAA+C;QAE/C,wBAAwB;QACxB,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAE/B,uBAAuB;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAE7C,oCAAoC;QACpC,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YAC5C,IAAI,KAAK,CAAC,MAAM,EAAE;gBACjB,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;oBACtB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACxB,CAAC,CAAC,CAAC;aACH;QACF,CAAC,CAAC,CAAC;QAEH,UAAU;QACV,IAAI,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE;YACnC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;SAChC;QAED,OAAO,MAAM,CAAC;IACf,CAAC;IAEO,gBAAgB,CAAC,MAAc;QACtC,+BAA+B;QAC/B,IAAI,MAAW,CAAC;QAEhB,6BAA6B;QAC7B,IAAI,MAAM,CAAC,MAAM,CAAS,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YAC/D,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;YACtC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;YACzC,IAAI,CAAC,yBAAyB,GAAG,KAAK,CAAC;YACvC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACpC,wDAAwD;YACxD,gCAAgC;SAChC;aACI;YACJ,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAE,CAAC;SAC1C;QAED,2CAA2C;QAC3C,IAAI,MAAM,CAAC,SAAS,KAAK,WAAW,EAAE;YACrC,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;YACpB,MAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAa,EAAE,EAAE;gBACrD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;oBAC3B,MAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;oBACrD,IAAI,KAAK,CAAC,MAAM,CAAS,QAAQ,CAAC,EAAE;wBACnC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;qBAC5D;yBACI;wBACJ,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;qBACtC;iBACD;YACF,CAAC,CAAC,CAAC;SACH;QAED,0BAA0B;QAC1B,IAAI,MAAM,CAAC,MAAM,CAAc,aAAa,CAAC,EAAE;YAC9C,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;SACzC;QAED,IAAI,MAAM,CAAC,MAAM,CAAU,SAAS,CAAC,EAAE;YACtC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;SACrC;QAED,IAAI,MAAM,CAAC,MAAM,CAAW,UAAU,CAAC,EAAE;YACxC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;SACtC;QAED,IAAI,MAAM,CAAC,MAAM,CAAa,YAAY,CAAC,EAAE;YAC5C,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;SACxC;QAED,IAAI,MAAM,CAAC,MAAM,CAAa,YAAY,CAAC,EAAE;YAC5C,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;SACxC;QAED,IAAI,MAAM,CAAC,MAAM,CAAQ,OAAO,CAAC,EAAE;YAClC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;SACnC;QAED,IAAI,MAAM,CAAC,MAAM,CAAY,WAAW,CAAC,EAAE;YAC1C,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;SACvC;QAED,0BAA0B;QAC1B,IAAI,MAAM,CAAC,MAAM,CAAY,WAAW,CAAC,EAAE;YAC1C,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAE5C,mEAAmE;YACnE,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAW,EAAE,KAAU,EAAE,EAAE;gBAChD,IAAI,KAAK,YAAY,SAAS,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;oBACpD,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,CAAC,CAAA;oBACzC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,EAAE,EAAE,CAAC,CAAA;oBAC3C,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;iBAC3D;YACF,CAAC,CAAC,CAAC;SACH;QAED,OAAO,MAAM,CAAC;IACf,CAAC;IAEO,iBAAiB,CAAC,MAAiB;QAC1C,uCAAuC;QACvC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAa,EAAE,EAAE;YACtC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACxC,IAAI,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBACvD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;aACvC;YAED,IAAI,KAAK,CAAC,MAAM,CAAY,WAAW,CAAC,EAAE;gBACzC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;aAC9B;QACF,CAAC,CAAC,CAAC;IACJ,CAAC;IAEO,sBAAsB,CAAC,MAAiB,EAAE,MAAW;QAC5D,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAa,EAAE,EAAE;YACtC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;gBACjD,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACtC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;gBACxC,IAAI,SAAc,CAAC;gBAEnB,mCAAmC;gBACnC,IAAI,KAAK,CAAC,MAAM,CAAS,QAAQ,CAAC,EAAE;oBACnC,gDAAgD;oBAChD,qEAAqE;oBACrE,YAAY;oBACZ,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;oBACtC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;oBAC5C,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;oBAC7C,SAAS,CAAC,UAAU,CAAC,IAAI,GAAG,EAAE,CAAC;oBAC/B,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,KAAa,EAAE,EAAE;wBACtD,IAAI,IAAI,YAAY,QAAQ,EAAE;4BAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC;4BAC9B,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,aAAa,GAAG,KAAK,CAAC;yBAClG;6BACI,IAAK,IAAe,CAAC,MAAM,CAAS,QAAQ,CAAC,EAAE;4BACnD,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;yBACxE;6BACI;4BACJ,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;yBACxC;oBACF,CAAC,CAAC,CAAC;oBACH,IAAI,CAAC,yBAAyB,GAAG,KAAK,CAAC;oBAEvC,qBAAqB;oBACrB,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,SAAS,CAAC,UAAU,EAAE;wBACpD,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,kBAAkB,EAAE,gBAAgB;qBACxE,CAAC,CAAC;iBACH;qBACI;oBACJ,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;iBAC3C;gBAED,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC,MAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACxD,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aAChC;QACF,CAAC,CAAC,CAAC;IACJ,CAAC;IAEO,cAAc,CAAC,MAAc,EAAE,MAAW;QACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtD,IAAI,MAAM,GAAQ,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;QAEtC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC5C,IAAI,MAAM,KAAK,SAAS,EAAE;YACzB,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAC7E,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACxC,4CAA4C;YAC5C,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;SAC1D;QACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;QAChE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC;QAE5D,qBAAqB;QACrB,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE;YACxE,KAAK;YACL,SAAS,EAAE,OAAO,EAAE,SAAS;YAC7B,UAAU;YACV,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO;YACpC,YAAY;YACZ,OAAO,EAAE,SAAS,EAAE,cAAc;YAClC,MAAM;YACN,aAAa,EAAE,UAAU;SACzB,CAAC,CAAC;QAEH,iBAAiB;QACjB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,cAAmB,EAAE,EAAE;YAC3C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;YACxE,MAAM,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YACpG,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;YACnE,MAAM,gBAAgB,GAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;YAC9D,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC1C,IAAI,YAAY,EAAE;gBACjB,4CAA4C;gBAC5C,gBAAgB,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAC/E,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBAEvE,qBAAqB;gBACrB,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;aAC9E;QAEF,CAAC,CAAC,CAAC;QAEH,oBAAoB;QACpB,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC1C,IAAI,SAAS,EAAE;YAEd,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,SAAS,GAAG,EAAE,CAAC;YACrD,SAAS,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,EAAE;gBAE/B,oBAAoB;gBACpB,IAAI,QAAQ,GAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACvD,IAAI,QAAQ,EAAE;oBACb,QAAQ,GAAG,GAAG,GAAG,QAAQ,CAAC;iBAC1B;qBACI;oBACJ,wCAAwC;oBACxC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAQ,EAAE,KAAU,EAAE,EAAE;wBAC7C,IAAI,KAAK,YAAY,YAAY,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,MAAM,EAAE;4BACpE,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;4BAC3C,MAAM,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;4BACnE,QAAQ,GAAG,GAAG,GAAG,UAAU,CAAC;4BAC5B,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,QAAQ,GAAG,GAAG,GAAG,UAAU,CAAC;4BAC9D,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,UAAU,EAAE,kBAAkB,CAAC,CAAC;4BAC7D,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;yBAClD;oBACF,CAAC,CAAC,CAAC;iBACH;gBACD,IAAI,QAAQ,EAAE;oBACb,MAAM,cAAc,GAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;oBAC1D,cAAc,CAAC,MAAM,GAAG,QAAQ,CAAC;oBACjC,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC;oBAC9B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;iBACrE;YACF,CAAC,CAAC,CAAC;SACH;QAED,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QAClE,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QAElE,OAAO,QAAQ,CAAC;IACjB,CAAC;IAEO,gBAAgB,CAAC,MAAc,EAAE,MAAW;QACnD,IAAI,MAAM,CAAC,QAAQ,EAAE;YACpB,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;YACjC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAC3C,MAAM,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;YAC7D,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,CAAC,CAAA;YACzC,MAAM,CAAC,UAAU,CAAC,QAAQ,GAAG,GAAG,GAAG,UAAU,CAAC;YAC9C,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,UAAU,EAAE,kBAAkB,CAAC,CAAC;YAC7D,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;SAC5C;QAED,IAAI,MAAM,CAAC,MAAM,CAAY,WAAW,CAAC,EAAE;YAC1C,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAU,EAAE,KAAa,EAAE,EAAE;gBAClD,IAAI,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE;oBACxD,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;iBACrD;YACF,CAAC,CAAC,CAAC;SACH;IACF,CAAC;IAEO,mBAAmB,CAAC,MAAmB,EAAE,MAAW;QAE3D,iBAAiB;QACjB,MAAM,OAAO,GAAQ,EAAE,CAAC;QACxB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAW,EAAE,MAAc,EAAE,EAAE;YAClD,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;YACtC,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;YACzD,IAAI,CAAC,yBAAyB,GAAG,KAAK,CAAC;YACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;YAC/D,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC7B,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,sBAAsB;QACtB,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;QACjD,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,OAAO,CAAC;QAEnC,kBAAkB;QAClB,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;IAEO,eAAe,CAAC,MAAe,EAAE,MAAW;QAEnD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;QAChD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;QAEhD,WAAW;QACX,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,QAAgB,EAAE,EAAE;YACtC,MAAc,CAAC,QAAQ,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAe,EAAE,MAAc,EAAE,EAAE;gBAC3E,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAC7C,MAAM,CAAC,UAAU,CAAC,QAAQ,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC;YACzD,CAAC,CAAC,CAAC;QAEJ,CAAC,CAAC,CAAC;QAEH,sCAAsC;QACtC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAW,EAAE,MAAc,EAAE,EAAE;YAClD,MAAM,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;YAC5F,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;YAC5F,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,GAAG,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC;QACnG,CAAC,CAAC,CAAC;QAEH,6BAA6B;QAC7B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAW,EAAE,MAAc,EAAE,EAAE;YAClD,MAAM,UAAU,GAAI,MAAmB,CAAC,UAAU,CAAC,MAAM,CAAC;YAC1D,IAAI,UAAU,CAAC,MAAM,EAAE;gBACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;oBAC/C,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;oBAC5B,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC;oBAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;oBAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;oBACjD,MAAM,eAAe,GAAQ;wBAC5B,IAAI,EAAE,GAAG,GAAG,MAAM;wBAClB,MAAM,EAAE,GAAG,GAAG,QAAQ;wBACtB,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,EAAE,IAAI,CAAC;wBAC/D,YAAY,EAAE,WAAW;qBACzB,CAAC;oBACF,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,GAAW,EAAE,EAAE;wBACxD,MAAM,KAAK,GAAI,KAAa,CAAC,GAAG,CAAC,CAAC;wBAClC,IAAI,KAAK,IAAI,KAAK,YAAY,YAAY,EAAE;4BAC3C,eAAe,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;yBACzE;oBACF,CAAC,CAAC,CAAC;oBACH,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;iBAC9D;aACD;QACF,CAAC,CAAC,CAAC;QAEH,oCAAoC;QACpC,CAAC,mBAAmB,EAAE,oBAAoB,CAAC,CAAC,OAAO,CAAC,CAAC,GAAW,EAAE,EAAE;YACnE,MAAM,mBAAmB,GAAG,IAAI,CAAC,SAAS,CAAE,MAAc,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;YAC1E,IAAI,mBAAmB,EAAE;gBACxB,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;gBACrC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;gBAC1C,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,mBAAmB,CAAC;aAC7C;QACF,CAAC,CAAC,CAAC;QAEH,iBAAiB;QACjB,MAAM,MAAM,GAAQ,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAI,MAAM,EAAE;YACX,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,QAAgB,EAAE,EAAE;gBACvC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,GAAG,MAAM,CAAC,CAAC;gBAC3C,IAAI,IAAI,EAAE;oBACT,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBAC1F;gBACD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;YAC3D,CAAC,CAAC,CAAC;YACH,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACzD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAEzD,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,MAAW,EAAE,KAAa,EAAE,EAAE;gBACrE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC9F,CAAC,CAAC,CAAC;SACH;QAED,mCAAmC;QACnC,MAAM,CAAC,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;QACjF,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAA;QAEjF,wBAAwB;QACxB,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC5C,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,CAAmB,kBAAkB,CAAC,EAAE;YAC1E,MAAM,wBAAwB,GAAQ,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAC9E,IAAI,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAC;YAC1C,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;YAC9D,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,GAAG,wBAAwB,CAAC;SACvE;IACF,CAAC;IAEO,YAAY,CAAC,IAAe,EAAE,OAAY,EAAE,SAAmB;QACtE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACnC,MAAM,cAAc,GAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAC1D,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;QAEhD,WAAW;QACX,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;QACzD,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;QACpE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE;YAC1F,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO;SACtC,CAAC,CAAC;QAEH,eAAe;QACf,MAAM,UAAU,GAAI,IAAY,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACrD,IAAI,UAAU,EAAE;YACf,cAAc,CAAC,QAAQ,CAAC,YAAY,GAAG,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;SAClF;QAED,cAAc;QACd,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE;YACvD,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;YAClD,cAAc,CAAC,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;YAChF,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;SACnF;QAED,cAAc;QACd,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,cAAc,EAAE;YACnB,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YAC9F,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;YAC/D,MAAM,gBAAgB,GAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;YAC9D,cAAc,CAAC,UAAU,CAAC,MAAM,GAAG,gBAAgB,CAAC;SACpD;QAED,cAAc;QACd,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QAC1C,IAAI,UAAU,CAAC,MAAM,EAAE;YACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;gBACzC,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;gBAC5B,MAAM,eAAe,GAAQ;oBAC5B,IAAI,EAAE,GAAG,GAAG,MAAM;oBAClB,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,EAAE,IAAI,CAAC;oBAClD,YAAY,EAAE,WAAW;iBACzB,CAAC;gBACF,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;aACxD;SACD;QAED,4BAA4B;QAC5B,IAAI,IAAI,CAAC,MAAM,CAAoB,cAAc,CAAC,EAAE;YACnD,IAAI,MAAM,GAAQ,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3E,IAAI,MAAM,KAAK,SAAS,EAAE;gBACzB,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;gBAC3E,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;gBAClE,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;aAC1D;YACD,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;YAClD,cAAc,CAAC,UAAU,CAAC,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC;SAC9C;QACD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAExC,IAAI,SAAS,EAAE;YACd,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;YAChC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;SAClD;QAED,MAAM,QAAQ,GAAQ,EAAE,CAAC;QACzB,QAAQ,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC;QAClC,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEhC,OAAO,MAAM,CAAC;IACf,CAAC;IAEO,kBAAkB,CAAC,MAAkB,EAAE,OAAY;QAC1D,uEAAuE;QACvE,8BAA8B;QAC9B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAe,EAAE,EAAE;YACrC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACvC,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAC7C,IAAI,SAAS,EAAE;gBACd,gBAAgB;gBAChB,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACzD,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBACtD,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,GAAG,GAAG,GAAG,OAAO,GAAG,kBAAkB,CAAC;gBAE1F,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBACtD,OAAO,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAE5D,6BAA6B;gBAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAClD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAClD,IAAI,MAAM,GAAG,MAAM,EAAE;oBACpB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;iBACxH;aACD;QACF,CAAC,CAAC,CAAC;IACJ,CAAC;IAEO,gBAAgB,CAAC,MAAgB,EAAE,MAAW;QACrD,+BAA+B;QAC/B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAW,EAAE,MAAc,EAAE,EAAE;YAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAClD,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACtD,IAAI,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;YACrF,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,IAAS,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACpE,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,IAAS,EAAE,EAAE;gBACxC,IAAI,IAAI,CAAC,QAAQ,EAAE;oBAClB,uBAAuB;iBACvB;YACF,CAAC,CAAC,CAAC;YACH,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;gBAChC,OAAO,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC;aACxC;YAED,mBAAmB;YACnB,IAAI,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE;gBAClC,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;gBACrD,MAAM,cAAc,GAAG,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;gBACtH,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;gBACnE,MAAM,gBAAgB,GAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;gBAC9D,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;oBACzB,gBAAgB,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;oBAC/E,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,eAAe,GAAG,gBAAgB,CAAC;oBACzE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;iBAC9E;aACD;QACF,CAAC,CAAC,CAAC;QAEH,iCAAiC;QACjC,IAAI,MAAM,CAAC,QAAQ,CAAC,WAAW,IAAI,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,EAAE;YAC/E,OAAO,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC;YACnD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;YAC/D,CAAC,YAAY,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC9D,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG;oBAChD,QAAQ,EAAE;wBACT,OAAO,EAAG,MAAM,CAAC,GAAG,CAAC,aAAa,CAAS,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;qBAClE;iBACD,CAAA;YACF,CAAC,CAAC,CAAC;SACH;QAED,4BAA4B;QAC5B,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;QAC3C,IAAI,UAAU,IAAI,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,KAAK,CAAC,EAAE;YACvD,8CAA8C;YAC9C,oEAAoE;YACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,QAAQ,CAAC,IAAI,QAAQ,CAAC;YAC/D,IAAI,QAAQ,EAAE;gBACb,MAAM,CAAC,QAAQ,CAAC,UAAU,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC;aACnD;iBACI;gBACJ,MAAM,CAAC,QAAQ,CAAC,UAAU,GAAG,UAAU,CAAC;aACxC;SACD;IACF,CAAC;IAEO,aAAa,CAAC,MAAa,EAAE,MAAW;QAE/C,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAEnC;;;;;;;;;;;;;;;EAeA;IACD,CAAC;IAEO,kBAAkB,CAAC,MAAkB,EAAE,MAAW;QACzD,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;IAEO,iBAAiB,CAAC,MAAiB,EAAE,MAAW;QACvD,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QACxD,IAAI,gBAAgB,EAAE;YACrB,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;YACzD,MAAM,CAAC,QAAQ,CAAC,gBAAgB,GAAG,oBAAoB,GAAG,KAAK,CAAC;SAChE;IACF,CAAC;IAEO,kBAAkB,CAAC,MAAW,EAAE,MAAW,EAAE,YAAwB;QAC5E,YAAY,CAAC,OAAO,CAAC,CAAC,GAAW,EAAE,EAAE;YACpC,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE;gBAChB,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;gBACjC,MAAM,CAAC,GAAG,CAAC,GAAG;oBACb,UAAU,EAAE;wBACX,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC;qBACvD;iBACD,CAAC;gBACF,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;aACjD;QACF,CAAC,CAAC,CAAC;IACJ,CAAC;IAEO,UAAU,CAAC,MAAW,EAAE,IAAmB;QAClD,IAAI,CAAC,OAAO,CAAC,CAAC,GAAW,EAAE,EAAE;YAC5B,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;gBAC9B,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;aACnB;QACF,CAAC,CAAC,CAAC;IACJ,CAAC;IAEO,UAAU,CAAC,MAAW;QAC7B,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACnC,CAAC;IAEO,gBAAgB,CAAC,GAAQ,EAAE,KAAU;QAC5C,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACxC,CAAC;IAEO,eAAe,CAAC,GAAQ;QAC/B,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAEO,gBAAgB,CAAC,GAAQ;QAChC,IAAI,GAAQ,CAAC;QACb,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YACvD,IAAI,KAAK,KAAK,GAAG,EAAE;gBAClB,GAAG,GAAG,GAAG,CAAC;gBACV,OAAO,KAAK,CAAC;aACb;YACD,OAAO,IAAI,CAAC;QACb,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,CAAC;IACZ,CAAC;IAEO,OAAO,CAAC,GAAW,EAAE,EAAU;QACtC,IAAI,KAAU,CAAC;QACf,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,KAAU,EAAE,EAAE;YAC1C,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,SAAS,EAAE;gBAC5B,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;gBAClB,OAAO;aACP;QACF,CAAC,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACd,CAAC;IAEO,YAAY,CAAC,GAAW,EAAE,EAAU;QAC3C,IAAI,KAAK,GAAW,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,KAAU,EAAE,KAAa,EAAE,EAAE;YACzD,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,SAAS,EAAE;gBAC5B,KAAK,GAAG,KAAK,CAAC;gBACd,OAAO;aACP;QACF,CAAC,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACd,CAAC;IAEO,QAAQ,CAAC,GAAW,EAAE,KAAU;QACvC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAEO,UAAU,CAAC,GAAW,EAAE,EAAU,EAAE,KAAU;QACrD,MAAM,GAAG,GAAQ,EAAE,CAAC;QACpB,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;QAChB,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACzB,CAAC;IAED,iDAAiD;IACjD,uCAAuC;IACvC,2GAA2G;IAC3G,cAAc;IACd,IAAI;IAEI,WAAW,CAAC,GAAQ;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YAChD,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,YAAY,MAAM,EAAE;gBACrD,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;aAC1C;YACD,OAAO,KAAK,CAAC;QACd,CAAC,CAAC,CAAC;QACH,IAAI,IAAI,GAAG,CAAC,CAAC;QAEb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACrC,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC;YAChC,IAAI,IAAI,CAAC,CAAC,CAAC,wBAAwB;SACnC;QAED,OAAO,GAAG,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe;IACxD,CAAC;IAEO,UAAU,CAAC,MAAW,EAAE,GAAW,EAAE,KAAU;QACtD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;YACjB,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;SACpB;IACF,CAAC;IAEO,QAAQ,CAAC,EAAU;QAC1B,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,SAAS,EAAE;YACrC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;SACvB;aACI;YACJ,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC;SACrB;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;IAEO,MAAM,CAAC,EAAU;QACxB,OAAO,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACrC,CAAC;IAEO,kBAAkB,CAAC,KAAU;QACpC,sCAAsC;QACtC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YAC7C,OAAO,KAAK,CAAC;SACb;QAED,iBAAiB;QACjB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACzB,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC3C,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACpB,IAAI,EAAE,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;oBACnD,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;oBAC1C,IAAI,KAAK,EAAE;wBACV,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;qBACnB;iBACD;aACD;YACD,OAAO,KAAK,CAAC;SACb;QAED,iBAAiB;QACjB,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACtC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;YAEzB,IAAI,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBAC7C,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;aAClB;iBACI,IAAI,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;gBACxC,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBAClD,IAAI,UAAU,EAAE;oBACf,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;iBAClB;aACD;SACD;QAED,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;IACxC,CAAC;IAEO,SAAS,CAAC,MAAc;QAC/B,OAAO,MAAM,CAAC,MAAM,CAAS,QAAQ,CAAC,IAAI,MAAM,CAAC,MAAM,CAAa,YAAY,CAAC,CAAC;IACnF,CAAC;IAEO,aAAa,CAAC,OAAe,EAAE,MAAW;QACjD,MAAM,IAAI,KAAK,CAAC,sCAAsC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IACvE,CAAC;;AA9zBa,yBAAS,GAAW,iBAAiB,CAAC;AACtC,0BAAU,GAAkB,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC","sourcesContent":["import { Entity } from \"../../core/util/Entity\";\nimport type { Sprite } from \"../../core/render/Sprite\";\nimport type { SerialChart } from \"../../core/render/SerialChart\";\nimport type { Series } from \"../../core/render/Series\";\nimport type { XYChart } from \"../../charts/xy/XYChart\";\nimport type { XYSeries } from \"../../charts/xy/series/XYSeries\";\nimport type { XYChartScrollbar } from \"../../charts/xy/XYChartScrollbar\";\nimport type { MapChart } from \"../../charts/map/MapChart\";\nimport type { CurveChart } from \"../../charts/timeline/CurveChart\";\nimport type { Gantt } from \"../../charts/gantt/Gantt\";\nimport type { StockChart } from \"../../charts/stock/StockChart\";\nimport type { Hierarchy } from \"../../charts/hierarchy/Hierarchy\";\nimport type { Legend } from \"../../core/render/Legend\";\nimport type { HeatLegend } from \"../../core/render/HeatLegend\";\nimport type { Axis } from \"../../charts/xy/axes/Axis\";\nimport type { CategoryAxis } from \"../../charts/xy/axes/CategoryAxis\";\n\nimport { Container } from \"../../core/render/Container\";\nimport { DataItem } from \"../../core/render/Component\";\nimport { ListTemplate } from \"../../core/util/List\";\nimport { Serializer, ISerializerEvents, ISerializerSettings, ISerializerPrivate } from \"./Serializer\";\n\nimport * as $object from \"../../core/util/Object\";\nimport * as $type from \"../../core/util/Type\";\nimport * as $array from \"../../core/util/Array\";\n\nexport interface IChartSerializerSettings extends ISerializerSettings {\n\n\t/**\n\t * Remove empty objects from the output.\n\t *\n\t * @default true\n\t */\n\tremoveEmptyObjects?: boolean;\n\n\t/**\n\t * Include projection settings in the output.\n\t *\n\t * If enabled, the projection function will be included in the output,\n\t * according to the `functionsAs` setting.\n\t *\n\t * @default false\n\t */\n\tincludeProjection?: boolean;\n\n}\n\nexport interface IChartSerializerPrivate extends ISerializerPrivate {\n}\n\nexport interface IChartSerializerEvents extends ISerializerEvents {\n}\n\n\n/**\n * Serializes whole charts into simple objects or JSON.\n *\n * @see {@link https://www.amcharts.com/docs/v5/concepts/serializing/chart-serializer/} for more info\n * @since 5.15.0\n */\nexport class ChartSerializer extends Serializer {\n\n\tpublic static className: string = \"ChartSerializer\";\n\tpublic static classNames: Array<string> = Serializer.classNames.concat([ChartSerializer.className]);\n\n\tdeclare public _settings: IChartSerializerSettings;\n\tdeclare public _privateSettings: IChartSerializerPrivate;\n\tdeclare public _events: IChartSerializerEvents;\n\n\tprivate _disableDataSerialization: boolean = false;\n\tprivate _globalRefs: Array<any> = [];\n\tprivate _internalRefs: any = {};\n\tprivate _counters: { [index: string]: number } = {};\n\tprivate _lists: { [index: string]: any } = {};\n\tprivate _mainRefs: { [index: string]: Array<any> } = {};\n\n\tprotected _afterNew(): void {\n\t\tsuper._afterNew();\n\t\tthis._setSoft(\"maxDepth\", 10);\n\t\tthis._setSoft(\"removeEmptyObjects\", true);\n\t\tthis._setSoft(\"includeEvents\", true);\n\t\tthis._setSoft(\"includeAdapters\", true);\n\t\tthis._setSoft(\"includeStates\", true);\n\t\tthis._setSoft(\"functionsAs\", \"function\");\n\t\t//this._setSoft(\"includeProperties\", [\"label\"]);\n\t\tthis._setSoft(\"excludeSettings\", [\n\t\t\t\"chart\",\n\t\t\t\"themeTags\",\n\t\t\t\"draw\",\n\t\t\t\"curveFactory\",\n\t\t\t\"tooltipDataItem\",\n\t\t\t\"legendDataItem\",\n\t\t\t\"vcx\",\n\t\t\t\"vcy\",\n\t\t\t\"bounds\",\n\t\t\t\"pointTo\",\n\t\t\t\"tooltipTarget\",\n\t\t\t\"translateX\",\n\t\t\t\"translateY\",\n\t\t\t// Handled directly\n\t\t\t\"heatRules\"\n\t\t]); // \"x\", \"y\"\n\n\t\tthis.adapters.add(\"excludeProperties\", (exclude: Array<string> | undefined) => {\n\t\t\tif (this._disableDataSerialization) {\n\t\t\t\treturn (exclude || []).concat([\"data\"]);\n\t\t\t}\n\t\t\treturn exclude;\n\t\t});\n\n\t\tthis.reset();\n\t}\n\n\tpublic reset(): void {\n\t\tthis._disableDataSerialization = false;\n\t\tthis._globalRefs = [];\n\t\tthis._internalRefs = {};\n\t\tthis._counters = {};\n\t\tthis._lists = {\n\t\t\tdata: {},\n\t\t\taxes: {},\n\t\t\tseries: {},\n\t\t\tsprites: {},\n\t\t\telements: {}\n\t\t};\n\t\tthis._mainRefs = {\n\t\t\tfunctions: [],\n\t\t\tdata: [],\n\t\t\ttemplates: [],\n\t\t\taxes: [],\n\t\t\tseries: [],\n\t\t\taxisRanges: [],\n\t\t\tseriesAxisRanges: []\n\t\t};\n\t}\n\n\t/**\n\t * Serializes target object into a simple object.\n\t *\n\t * @param source Target object\n\t * @return Serialized data\n\t */\n\tpublic serializeAll(source: Container): any {\n\n\t\t// This will go as deep in the structure to find either chart or a series,\n\t\t// then will pass on to specialized serializers\n\n\t\t// Map out the structure\n\t\tthis._examineStructure(source);\n\n\t\t// Kick off serializing\n\t\tconst result = this._serializeEntity(source);\n\n\t\t// Finally, add in global references\n\t\tresult.refs = [];\n\t\t$object.each(this._mainRefs, (_key, value) => {\n\t\t\tif (value.length) {\n\t\t\t\tvalue.forEach((item) => {\n\t\t\t\t\tresult.refs.push(item);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\t// Cleanup\n\t\tif (this.get(\"removeEmptyObjects\")) {\n\t\t\tthis._pruneEmptyObjects(result);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tprivate _serializeEntity(source: Entity): any {\n\t\t// Initialize the result object\n\t\tlet result: any;\n\n\t\t// Process series differently\n\t\tif (source.isType<Series>(\"Series\") && !this._isLegend(source)) {\n\t\t\tthis._disableDataSerialization = true;\n\t\t\tresult = this.serialize(source, 0, true);\n\t\t\tthis._disableDataSerialization = false;\n\t\t\tthis._processSeries(source, result);\n\t\t\t// const seriesId = this._processSeries(source, result);\n\t\t\t// this._lists.series[seriesId];\n\t\t}\n\t\telse {\n\t\t\tresult = this.serialize(source, 0, true)!;\n\t\t}\n\n\t\t// Only go deeper if it's a plain Container\n\t\tif (source.className === \"Container\") {\n\t\t\tresult.children = [];\n\t\t\t(source as Container).children.each((child: Sprite) => {\n\t\t\t\tif (!this._isLegend(child)) {\n\t\t\t\t\tconst serializedChild = this._serializeEntity(child);\n\t\t\t\t\tif (child.isType<Series>(\"Series\")) {\n\t\t\t\t\t\tresult.children.push(\"#\" + this._getInternalRef(child.uid));\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tresult.children.push(serializedChild);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t// Specialized serializers\n\t\tif (source.isType<SerialChart>(\"SerialChart\")) {\n\t\t\tthis._processSerialChart(source, result);\n\t\t}\n\n\t\tif (source.isType<XYChart>(\"XYChart\")) {\n\t\t\tthis._processXYChart(source, result);\n\t\t}\n\n\t\tif (source.isType<MapChart>(\"MapChart\")) {\n\t\t\tthis._processMapChart(source, result);\n\t\t}\n\n\t\tif (source.isType<CurveChart>(\"CurveChart\")) {\n\t\t\tthis._processCurveChart(source, result);\n\t\t}\n\n\t\tif (source.isType<StockChart>(\"StockChart\")) {\n\t\t\tthis._processStockChart(source, result);\n\t\t}\n\n\t\tif (source.isType<Gantt>(\"Gantt\")) {\n\t\t\tthis._processGantt(source, result);\n\t\t}\n\n\t\tif (source.isType<Hierarchy>(\"Hierarchy\")) {\n\t\t\tthis._processHierarchy(source, result);\n\t\t}\n\n\t\t// Process custom children\n\t\tif (source.isType<Container>(\"Container\")) {\n\t\t\tthis._processCustomChildren(source, result);\n\n\t\t\t// Check for custom children in property-linked internal containers\n\t\t\t$object.each(source, (key: string, child: any) => {\n\t\t\t\tif (child instanceof Container && !key.match(/^\\_/)) {\n\t\t\t\t\tthis._maybeInit(result, \"properties\", {})\n\t\t\t\t\tthis._maybeInit(result.properties, key, {})\n\t\t\t\t\tthis._processCustomChildren(child, result.properties[key]);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tprivate _examineStructure(source: Container) {\n\t\t// Collect serializable custom children\n\t\tsource.children.each((child: Sprite) => {\n\t\t\tthis._lists.elements[child.uid] = child;\n\t\t\tif (child.hasTag(\"serialize\") || this._isLegend(child)) {\n\t\t\t\tthis._lists.sprites[child.uid] = child;\n\t\t\t}\n\n\t\t\tif (child.isType<Container>(\"Container\")) {\n\t\t\t\tthis._examineStructure(child);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate _processCustomChildren(source: Container, result: any) {\n\t\tsource.children.each((child: Sprite) => {\n\t\t\tif (this._lists.sprites[child.uid] !== undefined) {\n\t\t\t\tdelete this._lists.sprites[child.uid];\n\t\t\t\tthis._maybeInit(result, \"children\", []);\n\t\t\t\tlet childItem: any;\n\n\t\t\t\t// Additional processing for Legend\n\t\t\t\tif (child.isType<Legend>(\"Legend\")) {\n\t\t\t\t\t// Do not let serializer serialize legend's data\n\t\t\t\t\t// It can contain big objects like Series, we'll build the data array\n\t\t\t\t\t// ourselves\n\t\t\t\t\tthis._disableDataSerialization = true;\n\t\t\t\t\tchildItem = this.serialize(child, 0, false);\n\t\t\t\t\tthis._maybeInit(childItem, \"properties\", {});\n\t\t\t\t\tchildItem.properties.data = [];\n\t\t\t\t\tchild.data.values.forEach((item: any, index: number) => {\n\t\t\t\t\t\tif (item instanceof DataItem) {\n\t\t\t\t\t\t\tconst series = item.component;\n\t\t\t\t\t\t\tchildItem.properties.data[index] = \"#\" + this._getInternalRef(series.uid) + \".dataItems.\" + index;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if ((item as Entity).isType<Series>(\"Series\")) {\n\t\t\t\t\t\t\tchildItem.properties.data[index] = \"#\" + this._getInternalRef(item.uid);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tchildItem.properties.data[index] = item;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tthis._disableDataSerialization = false;\n\n\t\t\t\t\t// Populate templates\n\t\t\t\t\tthis._populateTemplates(child, childItem.properties, [\n\t\t\t\t\t\t\"labels\", \"valueLabels\", \"markers\", \"markerRectangles\", \"itemContainers\"\n\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tchildItem = this.serialize(child, 0, true);\n\t\t\t\t}\n\n\t\t\t\tchildItem.index = child.parent!.children.indexOf(child);\n\t\t\t\tresult.children.push(childItem);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate _processSeries(series: Series, result: any): string {\n\t\tconst datahash = this._hashObject(series.data.values);\n\t\tlet dataId: any = this._getInternalRef(datahash);\n\t\tconst seriesId = this._getId(\"series\");\n\t\tthis._lists.series[seriesId] = result;\n\n\t\tthis._saveInternalRef(series.uid, seriesId);\n\t\tif (dataId === undefined) {\n\t\t\tdataId = this._getId(\"data\");\n\t\t\tthis._lists.data[dataId] = this.serialize(series.data.values, 0, true, true);\n\t\t\tthis._saveInternalRef(datahash, dataId);\n\t\t\t//_datas[dataId] = this._lists.data[dataId];\n\t\t\tthis._saveRefId(\"data\", dataId, this._lists.data[dataId]);\n\t\t}\n\t\tthis._maybeInit(this._lists.series[seriesId], \"properties\", {});\n\t\tthis._lists.series[seriesId].properties.data = \"#\" + dataId;\n\n\t\t// Populate templates\n\t\tthis._populateTemplates(series, this._lists.series[seriesId].properties, [\n\t\t\t// XY\n\t\t\t\"strokes\", \"fills\", \"columns\",\n\t\t\t// Percent\n\t\t\t\"slices\", \"labels\", \"ticks\", \"links\",\n\t\t\t// Hierarchy\n\t\t\t\"nodes\", \"circles\", \"outerCircles\",\n\t\t\t// Map\n\t\t\t\"mapPolygons\", \"mapLines\"\n\t\t]);\n\n\t\t// Handle bullets\n\t\tseries.bullets.each((bulletFunction: any) => {\n\t\t\tthis._maybeInit(this._lists.series[seriesId].properties, \"bullets\", []);\n\t\t\tconst sampleDataItem = series.dataItems.length ? series.dataItems[0] : new DataItem(series, {}, {});\n\t\t\tconst bullet = bulletFunction(series.root, series, sampleDataItem);\n\t\t\tconst serializedBullet: any = this.serialize(bullet, 0, true);\n\t\t\tconst bulletSprite = bullet.get(\"sprite\");\n\t\t\tif (bulletSprite) {\n\t\t\t\t// Serialize the sprite (including children)\n\t\t\t\tserializedBullet.settings.sprite = this._serializeEntity(bullet.get(\"sprite\"));\n\t\t\t\tthis._lists.series[seriesId].properties.bullets.push(serializedBullet);\n\n\t\t\t\t// Look for templates\n\t\t\t\tthis._processTemplate(bullet.get(\"sprite\"), serializedBullet.settings.sprite);\n\t\t\t}\n\n\t\t});\n\n\t\t// Handle heat rules\n\t\tconst heatRules = series.get(\"heatRules\");\n\t\tif (heatRules) {\n\n\t\t\tthis._lists.series[seriesId].settings.heatRules = [];\n\t\t\theatRules.forEach((rule: any) => {\n\n\t\t\t\t// Figure out target\n\t\t\t\tlet targetId: any = this._findInternalRef(rule.target);\n\t\t\t\tif (targetId) {\n\t\t\t\t\ttargetId = \"#\" + targetId;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t// Let's search in series template lists\n\t\t\t\t\t$object.each(series, (key: any, value: any) => {\n\t\t\t\t\t\tif (value instanceof ListTemplate && value.template === rule.target) {\n\t\t\t\t\t\t\tconst templateId = this._getId(\"template\");\n\t\t\t\t\t\t\tconst serializedTemplate = this.serialize(value.template, 0, true);\n\t\t\t\t\t\t\ttargetId = \"#\" + templateId;\n\t\t\t\t\t\t\tresult.properties[key].properties.template = \"#\" + templateId;\n\t\t\t\t\t\t\tthis._saveRefId(\"templates\", templateId, serializedTemplate);\n\t\t\t\t\t\t\tthis._saveInternalRef(templateId, value.template);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (targetId) {\n\t\t\t\t\tconst serializedRule: any = this.serialize(rule, 0, true);\n\t\t\t\t\tserializedRule.target = targetId;\n\t\t\t\t\tserializedRule.__parse = true;\n\t\t\t\t\tthis._lists.series[seriesId].settings.heatRules.push(serializedRule);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tthis._saveRefId(\"series\", seriesId, this._lists.series[seriesId]);\n\t\tthis._processCustomChildren(series, this._lists.series[seriesId]);\n\n\t\treturn seriesId;\n\t}\n\n\tprivate _processTemplate(source: Sprite, result: any): void {\n\t\tif (source.template) {\n\t\t\tconst template = source.template;\n\t\t\tconst templateId = this._getId(\"template\");\n\t\t\tconst serializedTemplate = this.serialize(template, 0, true);\n\t\t\tthis._maybeInit(result, \"properties\", {})\n\t\t\tresult.properties.template = \"#\" + templateId;\n\t\t\tthis._saveRefId(\"templates\", templateId, serializedTemplate);\n\t\t\tthis._saveInternalRef(templateId, template);\n\t\t}\n\n\t\tif (source.isType<Container>(\"Container\")) {\n\t\t\tsource.children.each((child: any, index: number) => {\n\t\t\t\tif (result.children && (result.children.length > index)) {\n\t\t\t\t\tthis._processTemplate(child, result.children[index]);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate _processSerialChart(source: SerialChart, result: any): void {\n\n\t\t// Process series\n\t\tconst _series: any = [];\n\t\tsource.series.each((series: any, _index: number) => {\n\t\t\tthis._disableDataSerialization = true;\n\t\t\tconst serializedSeries = this.serialize(series, 0, true);\n\t\t\tthis._disableDataSerialization = false;\n\t\t\tconst seriesId = this._processSeries(series, serializedSeries);\n\t\t\tthis._lists.series[seriesId];\n\t\t\t_series.push(\"#\" + seriesId);\n\t\t});\n\n\t\t// Add series to chart\n\t\tthis._maybeInit(result, \"properties\", {});\n\t\tthis._maybeInit(result.properties, \"series\", []);\n\t\tresult.properties.series = _series;\n\n\t\t// Custom children\n\t\tthis._processCustomChildren(source, result);\n\t}\n\n\tprivate _processXYChart(source: XYChart, result: any) {\n\n\t\tthis._maybeInit(result.properties, \"xAxes\", []);\n\t\tthis._maybeInit(result.properties, \"yAxes\", []);\n\n\t\t// Add axes\n\t\t[\"x\", \"y\"].forEach((axisType: string) => {\n\t\t\t(source as any)[axisType + \"Axes\"].each((axis: Axis<any>, _index: number) => {\n\t\t\t\tconst axisId = this._processAxis(axis, null);\n\t\t\t\tresult.properties[axisType + \"Axes\"].push(\"#\" + axisId);\n\t\t\t});\n\n\t\t});\n\n\t\t// Populate series with axe references\n\t\tsource.series.each((series: any, _index: number) => {\n\t\t\tconst id = this._getInternalRef(series.uid);\n\t\t\tthis._lists.series[id].settings.xAxis = \"#\" + this._getInternalRef(series.get(\"xAxis\").uid);\n\t\t\tthis._lists.series[id].settings.yAxis = \"#\" + this._getInternalRef(series.get(\"yAxis\").uid);\n\t\t\tthis._lists.series[id].settings.baseAxis = \"#\" + this._getInternalRef(series.get(\"baseAxis\").uid);\n\t\t});\n\n\t\t// Process series axis ranges\n\t\tsource.series.each((series: any, _index: number) => {\n\t\t\tconst axisRanges = (series as XYSeries).axisRanges.values;\n\t\t\tif (axisRanges.length) {\n\t\t\t\tfor (let i = 0; i < axisRanges.length; i++) {\n\t\t\t\t\tconst rangeId = this._getId(\"seriesAxisRange\");\n\t\t\t\t\tconst range = axisRanges[i];\n\t\t\t\t\tconst axis = range.axisDataItem.component;\n\t\t\t\t\tconst axisId = this._getInternalRef(axis.uid)\n\t\t\t\t\tconst seriesId = this._getInternalRef(series.uid)\n\t\t\t\t\tconst serializedRange: any = {\n\t\t\t\t\t\taxis: \"#\" + axisId,\n\t\t\t\t\t\tseries: \"#\" + seriesId,\n\t\t\t\t\t\tsettings: this.serialize(range.axisDataItem._settings, 0, true),\n\t\t\t\t\t\t__parseLogic: \"axisRange\"\n\t\t\t\t\t};\n\t\t\t\t\t[\"fills\", \"strokes\", \"graphics\"].forEach((key: string) => {\n\t\t\t\t\t\tconst value = (range as any)[key];\n\t\t\t\t\t\tif (value && value instanceof ListTemplate) {\n\t\t\t\t\t\t\tserializedRange[key] = this.serialize(value.template._settings, 0, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tthis._saveRefId(\"seriesAxisRanges\", rangeId, serializedRange);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// Handle layout for axis containers\n\t\t[\"leftAxesContainer\", \"rightAxesContainer\"].forEach((key: string) => {\n\t\t\tconst serializedContainer = this.serialize((source as any)[key], 0, true);\n\t\t\tif (serializedContainer) {\n\t\t\t\tthis._stripType(serializedContainer);\n\t\t\t\tthis._maybeInit(result, \"properties\", {});\n\t\t\t\tresult.properties[key] = serializedContainer;\n\t\t\t}\n\t\t});\n\n\t\t// Process cursor\n\t\tconst cursor: any = source.get(\"cursor\");\n\t\tif (cursor) {\n\t\t\t[\"x\", \"y\"].forEach((axisType: string) => {\n\t\t\t\tconst axis = cursor.get(axisType + \"Axis\");\n\t\t\t\tif (axis) {\n\t\t\t\t\tresult.settings.cursor.settings[axisType + \"Axis\"] = \"#\" + this._getInternalRef(axis.uid);\n\t\t\t\t}\n\t\t\t\tthis._maybeInit(result.settings.cursor, \"properties\", {});\n\t\t\t});\n\t\t\tresult.settings.cursor.properties.lineX = this.serialize(cursor.lineX);\n\t\t\tresult.settings.cursor.properties.lineY = this.serialize(cursor.lineY);\n\t\t\tthis._stripType(result.settings.cursor.properties.lineX);\n\t\t\tthis._stripType(result.settings.cursor.properties.lineY);\n\n\t\t\tcursor.get(\"snapToSeries\", []).forEach((series: any, index: number) => {\n\t\t\t\tresult.settings.cursor.settings.snapToSeries[index] = \"#\" + this._getInternalRef(series.uid);\n\t\t\t});\n\t\t}\n\n\t\t// Process the rest of the XY stuff\n\t\tresult.properties.zoomOutButton = this.serialize(source.zoomOutButton, 0, false);\n\t\tthis._stripType(result.properties.zoomOutButton);\n\t\tthis._stripKeys(result.properties.zoomOutButton.settings, [\"background\", \"icon\"])\n\n\t\t// Process the scrollbar\n\t\tconst scrollbarX = source.get(\"scrollbarX\");\n\t\tif (scrollbarX && scrollbarX.isType<XYChartScrollbar>(\"XYChartScrollbar\")) {\n\t\t\tconst serializedScrollbarChart: any = this._serializeEntity(scrollbarX.chart);\n\t\t\tthis._stripType(serializedScrollbarChart);\n\t\t\tthis._maybeInit(result.settings.scrollbarX, \"properties\", {});\n\t\t\tresult.settings.scrollbarX.properties.chart = serializedScrollbarChart;\n\t\t}\n\t}\n\n\tprivate _processAxis(axis: Axis<any>, _result: any, stripType?: boolean): string {\n\t\tconst axisId = this._getId(\"axis\");\n\t\tconst serializedAxis: any = this.serialize(axis, 0, true);\n\t\tthis._saveRefId(\"axes\", axisId, serializedAxis);\n\n\t\t// Renderer\n\t\tthis._maybeInit(serializedAxis.settings, \"renderer\", {});\n\t\tthis._maybeInit(serializedAxis.settings.renderer, \"properties\", {});\n\t\tthis._populateTemplates(axis.get(\"renderer\"), serializedAxis.settings.renderer.properties, [\n\t\t\t\"labels\", \"grid\", \"minorGrid\", \"ticks\"\n\t\t]);\n\n\t\t// Axis syncing\n\t\tconst syncedAxis = (axis as any).get(\"syncWithAxis\");\n\t\tif (syncedAxis) {\n\t\t\tserializedAxis.settings.syncWithAxis = \"#\" + this._getInternalRef(syncedAxis.uid);\n\t\t}\n\n\t\t// Axis header\n\t\tif (axis.axisHeader && axis.axisHeader.children.length) {\n\t\t\tthis._maybeInit(serializedAxis, \"properties\", {});\n\t\t\tserializedAxis.properties.axisHeader = this.serialize(axis.axisHeader, 0, true);\n\t\t\tthis._processCustomChildren(axis.axisHeader, serializedAxis.properties.axisHeader);\n\t\t}\n\n\t\t// Axis bullet\n\t\tconst bulletFunction = axis.get(\"bullet\");\n\t\tif (bulletFunction) {\n\t\t\tconst sampleDataItem = axis.dataItems.length ? axis.dataItems[0] : new DataItem(axis, {}, {});\n\t\t\tconst bullet = bulletFunction(axis.root, axis, sampleDataItem);\n\t\t\tconst serializedBullet: any = this.serialize(bullet, 0, true);\n\t\t\tserializedAxis.properties.bullet = serializedBullet;\n\t\t}\n\n\t\t// Axis ranges\n\t\tconst axisRanges = axis.axisRanges.values;\n\t\tif (axisRanges.length) {\n\t\t\tfor (let i = 0; i < axisRanges.length; i++) {\n\t\t\t\tconst rangeId = this._getId(\"axisRange\");\n\t\t\t\tconst range = axisRanges[i];\n\t\t\t\tconst serializedRange: any = {\n\t\t\t\t\taxis: \"#\" + axisId,\n\t\t\t\t\tsettings: this.serialize(range._settings, 0, true),\n\t\t\t\t\t__parseLogic: \"axisRange\"\n\t\t\t\t};\n\t\t\t\tthis._saveRefId(\"axisRanges\", rangeId, serializedRange);\n\t\t\t}\n\t\t}\n\n\t\t// Process CategoryAxis data\n\t\tif (axis.isType<CategoryAxis<any>>(\"CategoryAxis\")) {\n\t\t\tlet dataid: any = this._getInternalRef(this._hashObject(axis.data.values));\n\t\t\tif (dataid === undefined) {\n\t\t\t\tdataid = this._getId(\"data\");\n\t\t\t\tthis._lists.data[dataid] = this.serialize(axis.data.values, 0, true, true);\n\t\t\t\tthis._saveInternalRef(this._hashObject(axis.data.values), dataid);\n\t\t\t\tthis._saveRefId(\"data\", dataid, this._lists.data[dataid]);\n\t\t\t}\n\t\t\tthis._maybeInit(serializedAxis, \"properties\", {});\n\t\t\tserializedAxis.properties.data = \"#\" + dataid;\n\t\t}\n\t\tthis._saveInternalRef(axis.uid, axisId);\n\n\t\tif (stripType) {\n\t\t\tthis._stripType(serializedAxis);\n\t\t\tthis._stripType(serializedAxis.settings.renderer);\n\t\t}\n\n\t\tconst axisItem: any = {};\n\t\taxisItem[axisId] = serializedAxis;\n\t\tthis._processCustomChildren(axis, axisItem[axisId]);\n\t\tthis._globalRefs.push(axisItem);\n\n\t\treturn axisId;\n\t}\n\n\tprivate _processCurveChart(source: CurveChart, _result: any) {\n\t\t// Curve Chart needs special treament, as it's X axis references Y axis\n\t\t// via `yAxis` of its renderer\n\t\tsource.xAxes.each((axis: Axis<any>) => {\n\t\t\tconst xRenderer = axis.get(\"renderer\");\n\t\t\tconst yRenderer = xRenderer.get(\"yRenderer\");\n\t\t\tif (yRenderer) {\n\t\t\t\t// Add reference\n\t\t\t\tconst xAxisId = this._getInternalRef(axis.uid);\n\t\t\t\tconst yAxisId = this._getInternalRef(yRenderer.axis.uid);\n\t\t\t\tconst serializedXAxis = this._getRef(\"axes\", xAxisId);\n\t\t\t\tserializedXAxis.settings.renderer.settings.yRenderer = \"#\" + yAxisId + \".get('renderer')\";\n\n\t\t\t\tconst serializedYAxis = this._getRef(\"axes\", yAxisId);\n\t\t\t\tdelete serializedYAxis.settings.renderer.settings.xRenderer;\n\n\t\t\t\t// Swap positions of the axes\n\t\t\t\tconst xIndex = this._getRefIndex(\"axes\", xAxisId);\n\t\t\t\tconst yIndex = this._getRefIndex(\"axes\", yAxisId);\n\t\t\t\tif (xIndex < yIndex) {\n\t\t\t\t\t[this._mainRefs.axes[xIndex], this._mainRefs.axes[yIndex]] = [this._mainRefs.axes[yIndex], this._mainRefs.axes[xIndex]];\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate _processMapChart(source: MapChart, result: any) {\n\t\t// Clean up auto-populated data\n\t\tsource.series.each((series: any, _index: number) => {\n\t\t\tconst seriesId = this._getInternalRef(series.uid);\n\t\t\tconst serializedSeries = this._lists.series[seriesId];\n\t\t\tlet serializedData = this._getRef(\"data\", serializedSeries.properties.data.substr(1))\n\t\t\t$array.keepIf(serializedData, (item: any) => !item.madeFromGeoData);\n\t\t\t$array.map(serializedData, (item: any) => {\n\t\t\t\tif (item.geometry) {\n\t\t\t\t\t//delete item.geometry;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (serializedData.length === 0) {\n\t\t\t\tdelete serializedSeries.properties.data;\n\t\t\t}\n\n\t\t\t// Clustered bullet\n\t\t\tif (series.get(\"clusteredBullet\")) {\n\t\t\t\tconst bulletFunction = series.get(\"clusteredBullet\");\n\t\t\t\tconst sampleDataItem = series.clusteredDataItems.length ? series.clusteredDataItems[0] : new DataItem(series, {}, {});\n\t\t\t\tconst bullet = bulletFunction(series.root, series, sampleDataItem);\n\t\t\t\tconst serializedBullet: any = this.serialize(bullet, 0, true);\n\t\t\t\tif (bullet.get(\"sprite\")) {\n\t\t\t\t\tserializedBullet.settings.sprite = this._serializeEntity(bullet.get(\"sprite\"));\n\t\t\t\t\tthis._lists.series[seriesId].settings.clusteredBullet = serializedBullet;\n\t\t\t\t\tthis._processTemplate(bullet.get(\"sprite\"), serializedBullet.settings.sprite);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// Remove target from ZoomControl\n\t\tif (result.settings.zoomControl && result.settings.zoomControl.settings.target) {\n\t\t\tdelete result.settings.zoomControl.settings.target;\n\t\t\tthis._maybeInit(result.settings.zoomControl, \"properties\", {});\n\t\t\t[\"homeButton\", \"minusButton\", \"plusButton\"].forEach((button) => {\n\t\t\t\tresult.settings.zoomControl.properties[button] = {\n\t\t\t\t\tsettings: {\n\t\t\t\t\t\tvisible: (source.get(\"zoomControl\") as any)[button].get(\"visible\")\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t// Handle projection setting\n\t\tconst projection = source.get(\"projection\")\n\t\tif (projection && this.get(\"includeProjection\", false)) {\n\t\t\t// @TODO: use references for functions instead\n\t\t\t//result.settings.projection = \"#\" + this._saveFunction(projection);\n\t\t\tconst asString = this.get(\"functionsAs\", \"string\") == \"string\";\n\t\t\tif (asString) {\n\t\t\t\tresult.settings.projection = projection.toString();\n\t\t\t}\n\t\t\telse {\n\t\t\t\tresult.settings.projection = projection;\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _processGantt(source: Gantt, result: any) {\n\n\t\tthis._notSupported(source, result);\n\n\t\t/*\n\t\t// Process series and axis data\n\t\tthis._maybeInit(result, \"properties\", {});\n\n\t\t// Process series\n\t\tthis._disableDataSerialization = true;\n\t\tconst serializedSeries = this.serialize(source.series, 0, true);\n\t\tthis._stripType(serializedSeries);\n\t\tresult.properties.series = \"#\" + this._processSeries(source.series, serializedSeries);\n\n\t\t// Process category axis\n\t\tconst serializedYAxis = this.serialize(source.yAxis, 0, true);\n\t\tthis._stripType(serializedYAxis);\n\t\tconst yAxisId = this._processAxis(source.yAxis, serializedYAxis, true);\n\t\tresult.properties.yAxis = \"#\" + yAxisId;\n*/\n\t}\n\n\tprivate _processStockChart(source: StockChart, result: any) {\n\t\tthis._notSupported(source, result);\n\t}\n\n\tprivate _processHierarchy(source: Hierarchy, result: any) {\n\t\tconst selectedDataItem = source.get(\"selectedDataItem\");\n\t\tif (selectedDataItem) {\n\t\t\tconst index = source.dataItems.indexOf(selectedDataItem);\n\t\t\tresult.settings.selectedDataItem = \"@series.dataItems.\" + index;\n\t\t}\n\t}\n\n\tprivate _populateTemplates(source: any, result: any, templateKeys: Array<any>): void {\n\t\ttemplateKeys.forEach((key: string) => {\n\t\t\tif (source[key]) {\n\t\t\t\tthis._maybeInit(result, key, {});\n\t\t\t\tresult[key] = {\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\ttemplate: this.serialize(source[key].template, 0, true)\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tthis._stripType(result[key].properties.template);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate _stripKeys(source: any, keys: Array<string>): void {\n\t\tkeys.forEach((key: string) => {\n\t\t\tif (source[key] !== undefined) {\n\t\t\t\tdelete source[key];\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate _stripType(source: any): void {\n\t\tthis._stripKeys(source, [\"type\"]);\n\t}\n\n\tprivate _saveInternalRef(ref: any, value: any): any {\n\t\treturn this._internalRefs[ref] = value;\n\t}\n\n\tprivate _getInternalRef(ref: any): any {\n\t\treturn this._internalRefs[ref];\n\t}\n\n\tprivate _findInternalRef(ref: any): any {\n\t\tlet res: any;\n\t\t$object.eachContinue(this._internalRefs, (key, value) => {\n\t\t\tif (value === ref) {\n\t\t\t\tres = key;\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t});\n\t\treturn res;\n\t}\n\n\tprivate _getRef(key: string, id: string): any {\n\t\tlet found: any;\n\t\tthis._mainRefs[key].forEach((value: any) => {\n\t\t\tif (value[id] !== undefined) {\n\t\t\t\tfound = value[id];\n\t\t\t\treturn;\n\t\t\t}\n\t\t});\n\t\treturn found;\n\t}\n\n\tprivate _getRefIndex(key: string, id: string): number {\n\t\tlet found: number = -1;\n\t\tthis._mainRefs[key].forEach((value: any, index: number) => {\n\t\t\tif (value[id] !== undefined) {\n\t\t\t\tfound = index;\n\t\t\t\treturn;\n\t\t\t}\n\t\t});\n\t\treturn found;\n\t}\n\n\tprivate _saveRef(key: string, value: any): void {\n\t\tthis._mainRefs[key].push(value);\n\t}\n\n\tprivate _saveRefId(key: string, id: string, value: any): void {\n\t\tconst ref: any = {};\n\t\tref[id] = value;\n\t\tthis._saveRef(key, ref);\n\t}\n\n\t// private _saveFunction(callback: any): string {\n\t// \tconst id = this._getId(\"function\");\n\t// \tthis._saveRefId(\"functions\", id, this.get(\"functionsAs\") == \"string\" ? callback.toString() : callback);\n\t// \treturn id;\n\t// }\n\n\tprivate _hashObject(obj: any) {\n\t\tconst json = JSON.stringify(obj, (_key, value) => {\n\t\t\tif ($type.isObject(value) && value instanceof Entity) {\n\t\t\t\treturn JSON.stringify(Object.keys(value));\n\t\t\t}\n\t\t\treturn value;\n\t\t});\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < json.length; i++) {\n\t\t\tconst chr = json.charCodeAt(i);\n\t\t\thash = (hash << 5) - hash + chr;\n\t\t\thash |= 0; // convert to 32-bit int\n\t\t}\n\n\t\treturn \"h\" + (hash >>> 0).toString(16); // unsigned hex\n\t}\n\n\tprivate _maybeInit(source: any, key: string, value: any): void {\n\t\tif (!source[key]) {\n\t\t\tsource[key] = value;\n\t\t}\n\t}\n\n\tprivate _counter(id: string): number {\n\t\tif (this._counters[id] === undefined) {\n\t\t\tthis._counters[id] = 0;\n\t\t}\n\t\telse {\n\t\t\tthis._counters[id]++;\n\t\t}\n\t\treturn this._counters[id];\n\t}\n\n\tprivate _getId(id: string): string {\n\t\treturn id + \"-\" + this._counter(id);\n\t}\n\n\tprivate _pruneEmptyObjects(value: any): boolean {\n\t\t// Non-object primitives → never empty\n\t\tif (value === null || !$type.isObject(value)) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Process arrays\n\t\tif ($type.isArray(value)) {\n\t\t\tfor (let i = value.length - 1; i >= 0; i--) {\n\t\t\t\tconst el = value[i];\n\t\t\t\tif (el && $type.isObject(el) && !$type.isArray(el)) {\n\t\t\t\t\tconst empty = this._pruneEmptyObjects(el);\n\t\t\t\t\tif (empty) {\n\t\t\t\t\t\tvalue.splice(i, 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\t// Regular object\n\t\tfor (const key of $object.keys(value)) {\n\t\t\tconst child = value[key];\n\n\t\t\tif (key === \"states\" && $type.isArray(value)) {\n\t\t\t\tdelete value[key];\n\t\t\t}\n\t\t\telse if (child && $type.isObject(child)) {\n\t\t\t\tconst childEmpty = this._pruneEmptyObjects(child);\n\t\t\t\tif (childEmpty) {\n\t\t\t\t\tdelete value[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn Object.keys(value).length === 0;\n\t}\n\n\tprivate _isLegend(source: Entity): boolean {\n\t\treturn source.isType<Legend>(\"Legend\") || source.isType<HeatLegend>(\"HeatLegend\");\n\t}\n\n\tprivate _notSupported(_source: Entity, result: any) {\n\t\tthrow new Error(\"Unsupported type for serialization: \" + result.type);\n\t}\n\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ChartSerializer.js","sourceRoot":"","sources":["../../../../../src/.internal/plugins/json/ChartSerializer.ts"],"names":[],"mappings":"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","sourcesContent":["import { Entity } from \"../../core/util/Entity\";\nimport type { Sprite } from \"../../core/render/Sprite\";\nimport type { SerialChart } from \"../../core/render/SerialChart\";\nimport type { Series } from \"../../core/render/Series\";\nimport type { XYChart } from \"../../charts/xy/XYChart\";\nimport type { XYSeries } from \"../../charts/xy/series/XYSeries\";\nimport type { XYChartScrollbar } from \"../../charts/xy/XYChartScrollbar\";\nimport type { MapChart } from \"../../charts/map/MapChart\";\nimport type { CurveChart } from \"../../charts/timeline/CurveChart\";\nimport type { Gantt } from \"../../charts/gantt/Gantt\";\nimport type { StockChart } from \"../../charts/stock/StockChart\";\nimport type { Hierarchy } from \"../../charts/hierarchy/Hierarchy\";\nimport type { Legend } from \"../../core/render/Legend\";\nimport type { HeatLegend } from \"../../core/render/HeatLegend\";\nimport type { Axis } from \"../../charts/xy/axes/Axis\";\nimport type { CategoryAxis } from \"../../charts/xy/axes/CategoryAxis\";\n\nimport { Container } from \"../../core/render/Container\";\nimport { DataItem } from \"../../core/render/Component\";\nimport { ListTemplate } from \"../../core/util/List\";\nimport { Serializer, ISerializerEvents, ISerializerSettings, ISerializerPrivate } from \"./Serializer\";\n\nimport * as $object from \"../../core/util/Object\";\nimport * as $type from \"../../core/util/Type\";\nimport * as $array from \"../../core/util/Array\";\n\nexport interface IChartSerializerSettings extends ISerializerSettings {\n\n\t/**\n\t * Remove empty objects from the output.\n\t *\n\t * @default true\n\t */\n\tremoveEmptyObjects?: boolean;\n\n}\n\nexport interface IChartSerializerPrivate extends ISerializerPrivate {\n}\n\nexport interface IChartSerializerEvents extends ISerializerEvents {\n}\n\n\n/**\n * Serializes whole charts into simple objects or JSON.\n *\n * @see {@link https://www.amcharts.com/docs/v5/concepts/serializing/chart-serializer/} for more info\n * @since 5.15.0\n */\nexport class ChartSerializer extends Serializer {\n\n\tpublic static className: string = \"ChartSerializer\";\n\tpublic static classNames: Array<string> = Serializer.classNames.concat([ChartSerializer.className]);\n\n\tdeclare public _settings: IChartSerializerSettings;\n\tdeclare public _privateSettings: IChartSerializerPrivate;\n\tdeclare public _events: IChartSerializerEvents;\n\n\tprivate _disableDataSerialization: boolean = false;\n\tprivate _globalRefs: Array<any> = [];\n\tprivate _internalRefs: any = {};\n\tprivate _counters: { [index: string]: number } = {};\n\tprivate _lists: { [index: string]: any } = {};\n\tprivate _mainRefs: { [index: string]: Array<any> } = {};\n\n\tprotected _afterNew(): void {\n\t\tsuper._afterNew();\n\t\tthis._setSoft(\"maxDepth\", 10);\n\t\tthis._setSoft(\"removeEmptyObjects\", true);\n\t\tthis._setSoft(\"includeEvents\", true);\n\t\tthis._setSoft(\"includeAdapters\", true);\n\t\tthis._setSoft(\"includeStates\", true);\n\t\tthis._setSoft(\"functionsAs\", \"function\");\n\t\t//this._setSoft(\"includeProperties\", [\"label\"]);\n\t\tthis._setSoft(\"excludeSettings\", [\n\t\t\t\"chart\",\n\t\t\t\"themeTags\",\n\t\t\t\"draw\",\n\t\t\t\"curveFactory\",\n\t\t\t\"tooltipDataItem\",\n\t\t\t\"legendDataItem\",\n\t\t\t\"vcx\",\n\t\t\t\"vcy\",\n\t\t\t\"bounds\",\n\t\t\t\"pointTo\",\n\t\t\t\"tooltipTarget\",\n\t\t\t\"translateX\",\n\t\t\t\"translateY\",\n\t\t\t// Handled directly\n\t\t\t\"heatRules\"\n\t\t]); // \"x\", \"y\"\n\n\t\tthis.adapters.add(\"excludeProperties\", (exclude: Array<string> | undefined) => {\n\t\t\tif (this._disableDataSerialization) {\n\t\t\t\treturn (exclude || []).concat([\"data\"]);\n\t\t\t}\n\t\t\treturn exclude;\n\t\t});\n\n\t\tthis.reset();\n\t}\n\n\tpublic reset(): void {\n\t\tthis._disableDataSerialization = false;\n\t\tthis._globalRefs = [];\n\t\tthis._internalRefs = {};\n\t\tthis._counters = {};\n\t\tthis._lists = {\n\t\t\tdata: {},\n\t\t\taxes: {},\n\t\t\tseries: {},\n\t\t\tsprites: {},\n\t\t\telements: {}\n\t\t};\n\t\tthis._mainRefs = {\n\t\t\tfunctions: [],\n\t\t\tdata: [],\n\t\t\ttemplates: [],\n\t\t\taxes: [],\n\t\t\tseries: [],\n\t\t\taxisRanges: [],\n\t\t\tseriesAxisRanges: []\n\t\t};\n\t}\n\n\t/**\n\t * Serializes target object into a simple object.\n\t *\n\t * @param source Target object\n\t * @return Serialized data\n\t */\n\tpublic serializeAll(source: Container): any {\n\n\t\t// This will go as deep in the structure to find either chart or a series,\n\t\t// then will pass on to specialized serializers\n\n\t\t// Map out the structure\n\t\tthis._examineStructure(source);\n\n\t\t// Kick off serializing\n\t\tconst result = this._serializeEntity(source);\n\n\t\t// Finally, add in global references\n\t\tresult.refs = [];\n\t\t$object.each(this._mainRefs, (_key, value) => {\n\t\t\tif (value.length) {\n\t\t\t\tvalue.forEach((item) => {\n\t\t\t\t\tresult.refs.push(item);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\t// Cleanup\n\t\tif (this.get(\"removeEmptyObjects\")) {\n\t\t\tthis._pruneEmptyObjects(result);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tprivate _serializeEntity(source: Entity): any {\n\t\t// Initialize the result object\n\t\tlet result: any;\n\n\t\t// Process series differently\n\t\tif (source.isType<Series>(\"Series\") && !this._isLegend(source)) {\n\t\t\tthis._disableDataSerialization = true;\n\t\t\tresult = this.serialize(source, 0, true);\n\t\t\tthis._disableDataSerialization = false;\n\t\t\tthis._processSeries(source, result);\n\t\t\t// const seriesId = this._processSeries(source, result);\n\t\t\t// this._lists.series[seriesId];\n\t\t}\n\t\telse {\n\t\t\tresult = this.serialize(source, 0, true)!;\n\t\t}\n\n\t\t// Only go deeper if it's a plain Container\n\t\tif (source.className === \"Container\") {\n\t\t\tresult.children = [];\n\t\t\t(source as Container).children.each((child: Sprite) => {\n\t\t\t\tif (!this._isLegend(child)) {\n\t\t\t\t\tconst serializedChild = this._serializeEntity(child);\n\t\t\t\t\tif (child.isType<Series>(\"Series\")) {\n\t\t\t\t\t\tresult.children.push(\"#\" + this._getInternalRef(child.uid));\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tresult.children.push(serializedChild);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t// Specialized serializers\n\t\tif (source.isType<SerialChart>(\"SerialChart\")) {\n\t\t\tthis._processSerialChart(source, result);\n\t\t}\n\n\t\tif (source.isType<XYChart>(\"XYChart\")) {\n\t\t\tthis._processXYChart(source, result);\n\t\t}\n\n\t\tif (source.isType<MapChart>(\"MapChart\")) {\n\t\t\tthis._processMapChart(source, result);\n\t\t}\n\n\t\tif (source.isType<CurveChart>(\"CurveChart\")) {\n\t\t\tthis._processCurveChart(source, result);\n\t\t}\n\n\t\tif (source.isType<StockChart>(\"StockChart\")) {\n\t\t\tthis._processStockChart(source, result);\n\t\t}\n\n\t\tif (source.isType<Gantt>(\"Gantt\")) {\n\t\t\tthis._processGantt(source, result);\n\t\t}\n\n\t\tif (source.isType<Hierarchy>(\"Hierarchy\")) {\n\t\t\tthis._processHierarchy(source, result);\n\t\t}\n\n\t\t// Process custom children\n\t\tif (source.isType<Container>(\"Container\")) {\n\t\t\tthis._processCustomChildren(source, result);\n\n\t\t\t// Check for custom children in property-linked internal containers\n\t\t\t$object.each(source, (key: string, child: any) => {\n\t\t\t\tif (child instanceof Container && !key.match(/^\\_/)) {\n\t\t\t\t\tthis._maybeInit(result, \"properties\", {})\n\t\t\t\t\tthis._maybeInit(result.properties, key, {})\n\t\t\t\t\tthis._processCustomChildren(child, result.properties[key]);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tprivate _examineStructure(source: Container) {\n\t\t// Collect serializable custom children\n\t\tsource.children.each((child: Sprite) => {\n\t\t\tthis._lists.elements[child.uid] = child;\n\t\t\tif (child.hasTag(\"serialize\") || this._isLegend(child)) {\n\t\t\t\tthis._lists.sprites[child.uid] = child;\n\t\t\t}\n\n\t\t\tif (child.isType<Container>(\"Container\")) {\n\t\t\t\tthis._examineStructure(child);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate _processCustomChildren(source: Container, result: any) {\n\t\tsource.children.each((child: Sprite) => {\n\t\t\tif (this._lists.sprites[child.uid] !== undefined) {\n\t\t\t\tdelete this._lists.sprites[child.uid];\n\t\t\t\tthis._maybeInit(result, \"children\", []);\n\t\t\t\tlet childItem: any;\n\n\t\t\t\t// Additional processing for Legend\n\t\t\t\tif (child.isType<Legend>(\"Legend\")) {\n\t\t\t\t\t// Do not let serializer serialize legend's data\n\t\t\t\t\t// It can contain big objects like Series, we'll build the data array\n\t\t\t\t\t// ourselves\n\t\t\t\t\tthis._disableDataSerialization = true;\n\t\t\t\t\tchildItem = this.serialize(child, 0, false);\n\t\t\t\t\tthis._maybeInit(childItem, \"properties\", {});\n\t\t\t\t\tchildItem.properties.data = [];\n\t\t\t\t\tchild.data.values.forEach((item: any, index: number) => {\n\t\t\t\t\t\tif (item instanceof DataItem) {\n\t\t\t\t\t\t\tconst series = item.component;\n\t\t\t\t\t\t\tchildItem.properties.data[index] = \"#\" + this._getInternalRef(series.uid) + \".dataItems.\" + index;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (item instanceof Entity && item.isType<Series>(\"Series\")) {\n\t\t\t\t\t\t\tchildItem.properties.data[index] = \"#\" + this._getInternalRef(item.uid);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tchildItem.properties.data[index] = item;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tthis._disableDataSerialization = false;\n\n\t\t\t\t\t// Populate templates\n\t\t\t\t\tthis._populateTemplates(child, childItem.properties, [\n\t\t\t\t\t\t\"labels\", \"valueLabels\", \"markers\", \"markerRectangles\", \"itemContainers\"\n\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tchildItem = this.serialize(child, 0, true);\n\t\t\t\t}\n\n\t\t\t\tchildItem.index = child.parent!.children.indexOf(child);\n\t\t\t\tresult.children.push(childItem);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate _processSeries(series: Series, result: any): string {\n\t\tconst datahash = this._hashObject(series.data.values);\n\t\tlet dataId: any = this._getInternalRef(datahash);\n\t\tconst seriesId = this._getId(\"series\");\n\t\tthis._lists.series[seriesId] = result;\n\n\t\tthis._saveInternalRef(series.uid, seriesId);\n\t\tif (dataId === undefined) {\n\t\t\tdataId = this._getId(\"data\");\n\t\t\tthis._lists.data[dataId] = this.serialize(series.data.values, 0, true, true);\n\t\t\tthis._saveInternalRef(datahash, dataId);\n\t\t\t//_datas[dataId] = this._lists.data[dataId];\n\t\t\tthis._saveRefId(\"data\", dataId, this._lists.data[dataId]);\n\t\t}\n\t\tthis._maybeInit(this._lists.series[seriesId], \"properties\", {});\n\t\tthis._lists.series[seriesId].properties.data = \"#\" + dataId;\n\n\t\t// Populate templates\n\t\tthis._populateTemplates(series, this._lists.series[seriesId].properties, [\n\t\t\t// XY\n\t\t\t\"strokes\", \"fills\", \"columns\",\n\t\t\t// Percent\n\t\t\t\"slices\", \"labels\", \"ticks\", \"links\",\n\t\t\t// Hierarchy\n\t\t\t\"nodes\", \"circles\", \"outerCircles\",\n\t\t\t// Map\n\t\t\t\"mapPolygons\", \"mapLines\"\n\t\t]);\n\n\t\t// Handle bullets\n\t\tseries.bullets.each((bulletFunction: any) => {\n\t\t\tthis._maybeInit(this._lists.series[seriesId].properties, \"bullets\", []);\n\t\t\tconst sampleDataItem = series.dataItems.length ? series.dataItems[0] : new DataItem(series, {}, {});\n\t\t\tconst bullet = bulletFunction(series.root, series, sampleDataItem);\n\t\t\tconst serializedBullet: any = this.serialize(bullet, 0, true);\n\t\t\tconst bulletSprite = bullet.get(\"sprite\");\n\t\t\tif (bulletSprite) {\n\t\t\t\t// Serialize the sprite (including children)\n\t\t\t\tserializedBullet.settings.sprite = this._serializeEntity(bullet.get(\"sprite\"));\n\t\t\t\tthis._lists.series[seriesId].properties.bullets.push(serializedBullet);\n\n\t\t\t\t// Look for templates\n\t\t\t\tthis._processTemplate(bullet.get(\"sprite\"), serializedBullet.settings.sprite);\n\t\t\t}\n\n\t\t});\n\n\t\t// Handle heat rules\n\t\tconst heatRules = series.get(\"heatRules\");\n\t\tif (heatRules) {\n\n\t\t\tthis._lists.series[seriesId].settings.heatRules = [];\n\t\t\theatRules.forEach((rule: any) => {\n\n\t\t\t\t// Figure out target\n\t\t\t\tlet targetId: any = this._findInternalRef(rule.target);\n\t\t\t\tif (targetId) {\n\t\t\t\t\ttargetId = \"#\" + targetId;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t// Let's search in series template lists\n\t\t\t\t\t$object.each(series, (key: any, value: any) => {\n\t\t\t\t\t\tif (value instanceof ListTemplate && value.template === rule.target) {\n\t\t\t\t\t\t\tconst templateId = this._getId(\"template\");\n\t\t\t\t\t\t\tconst serializedTemplate = this.serialize(value.template, 0, true);\n\t\t\t\t\t\t\ttargetId = \"#\" + templateId;\n\t\t\t\t\t\t\tresult.properties[key].properties.template = \"#\" + templateId;\n\t\t\t\t\t\t\tthis._saveRefId(\"templates\", templateId, serializedTemplate);\n\t\t\t\t\t\t\tthis._saveInternalRef(templateId, value.template);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (targetId) {\n\t\t\t\t\tconst serializedRule: any = this.serialize(rule, 0, true);\n\t\t\t\t\tserializedRule.target = targetId;\n\t\t\t\t\tserializedRule.__parse = true;\n\t\t\t\t\tthis._lists.series[seriesId].settings.heatRules.push(serializedRule);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tthis._saveRefId(\"series\", seriesId, this._lists.series[seriesId]);\n\t\tthis._processCustomChildren(series, this._lists.series[seriesId]);\n\n\t\treturn seriesId;\n\t}\n\n\tprivate _processTemplate(source: Sprite, result: any): void {\n\t\tif (source.template) {\n\t\t\tconst template = source.template;\n\t\t\tconst templateId = this._getId(\"template\");\n\t\t\tconst serializedTemplate = this.serialize(template, 0, true);\n\t\t\tthis._maybeInit(result, \"properties\", {})\n\t\t\tresult.properties.template = \"#\" + templateId;\n\t\t\tthis._saveRefId(\"templates\", templateId, serializedTemplate);\n\t\t\tthis._saveInternalRef(templateId, template);\n\t\t}\n\n\t\tif (source.isType<Container>(\"Container\")) {\n\t\t\tsource.children.each((child: any, index: number) => {\n\t\t\t\tif (result.children && (result.children.length > index)) {\n\t\t\t\t\tthis._processTemplate(child, result.children[index]);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate _processSerialChart(source: SerialChart, result: any): void {\n\n\t\t// Process series\n\t\tconst _series: any = [];\n\t\tsource.series.each((series: any, _index: number) => {\n\t\t\tthis._disableDataSerialization = true;\n\t\t\tconst serializedSeries = this.serialize(series, 0, true);\n\t\t\tthis._disableDataSerialization = false;\n\t\t\tconst seriesId = this._processSeries(series, serializedSeries);\n\t\t\tthis._lists.series[seriesId];\n\t\t\t_series.push(\"#\" + seriesId);\n\t\t});\n\n\t\t// Add series to chart\n\t\tthis._maybeInit(result, \"properties\", {});\n\t\tthis._maybeInit(result.properties, \"series\", []);\n\t\tresult.properties.series = _series;\n\n\t\t// Custom children\n\t\tthis._processCustomChildren(source, result);\n\t}\n\n\tprivate _processXYChart(source: XYChart, result: any) {\n\n\t\tthis._maybeInit(result.properties, \"xAxes\", []);\n\t\tthis._maybeInit(result.properties, \"yAxes\", []);\n\n\t\t// Add axes\n\t\t[\"x\", \"y\"].forEach((axisType: string) => {\n\t\t\t(source as any)[axisType + \"Axes\"].each((axis: Axis<any>, _index: number) => {\n\t\t\t\tconst axisId = this._processAxis(axis, null);\n\t\t\t\tresult.properties[axisType + \"Axes\"].push(\"#\" + axisId);\n\t\t\t});\n\n\t\t});\n\n\t\t// Populate series with axe references\n\t\tsource.series.each((series: any, _index: number) => {\n\t\t\tconst id = this._getInternalRef(series.uid);\n\t\t\tthis._lists.series[id].settings.xAxis = \"#\" + this._getInternalRef(series.get(\"xAxis\").uid);\n\t\t\tthis._lists.series[id].settings.yAxis = \"#\" + this._getInternalRef(series.get(\"yAxis\").uid);\n\t\t\tthis._lists.series[id].settings.baseAxis = \"#\" + this._getInternalRef(series.get(\"baseAxis\").uid);\n\t\t});\n\n\t\t// Process series axis ranges\n\t\tsource.series.each((series: any, _index: number) => {\n\t\t\tconst axisRanges = (series as XYSeries).axisRanges.values;\n\t\t\tif (axisRanges.length) {\n\t\t\t\tfor (let i = 0; i < axisRanges.length; i++) {\n\t\t\t\t\tconst rangeId = this._getId(\"seriesAxisRange\");\n\t\t\t\t\tconst range = axisRanges[i];\n\t\t\t\t\tconst axis = range.axisDataItem.component;\n\t\t\t\t\tconst axisId = this._getInternalRef(axis.uid)\n\t\t\t\t\tconst seriesId = this._getInternalRef(series.uid)\n\t\t\t\t\tconst serializedRange: any = {\n\t\t\t\t\t\taxis: \"#\" + axisId,\n\t\t\t\t\t\tseries: \"#\" + seriesId,\n\t\t\t\t\t\tsettings: this.serialize(range.axisDataItem._settings, 0, true),\n\t\t\t\t\t\t__parseLogic: \"axisRange\"\n\t\t\t\t\t};\n\t\t\t\t\t[\"fills\", \"strokes\", \"graphics\"].forEach((key: string) => {\n\t\t\t\t\t\tconst value = (range as any)[key];\n\t\t\t\t\t\tif (value && value instanceof ListTemplate) {\n\t\t\t\t\t\t\tserializedRange[key] = this.serialize(value.template._settings, 0, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tthis._saveRefId(\"seriesAxisRanges\", rangeId, serializedRange);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// Handle layout for axis containers\n\t\t[\"leftAxesContainer\", \"rightAxesContainer\"].forEach((key: string) => {\n\t\t\tconst serializedContainer = this.serialize((source as any)[key], 0, true);\n\t\t\tif (serializedContainer) {\n\t\t\t\tthis._stripType(serializedContainer);\n\t\t\t\tthis._maybeInit(result, \"properties\", {});\n\t\t\t\tresult.properties[key] = serializedContainer;\n\t\t\t}\n\t\t});\n\n\t\t// Process cursor\n\t\tconst cursor: any = source.get(\"cursor\");\n\t\tif (cursor) {\n\t\t\t[\"x\", \"y\"].forEach((axisType: string) => {\n\t\t\t\tconst axis = cursor.get(axisType + \"Axis\");\n\t\t\t\tif (axis) {\n\t\t\t\t\tresult.settings.cursor.settings[axisType + \"Axis\"] = \"#\" + this._getInternalRef(axis.uid);\n\t\t\t\t}\n\t\t\t\tthis._maybeInit(result.settings.cursor, \"properties\", {});\n\t\t\t});\n\t\t\tresult.settings.cursor.properties.lineX = this.serialize(cursor.lineX);\n\t\t\tresult.settings.cursor.properties.lineY = this.serialize(cursor.lineY);\n\t\t\tthis._stripType(result.settings.cursor.properties.lineX);\n\t\t\tthis._stripType(result.settings.cursor.properties.lineY);\n\n\t\t\tcursor.get(\"snapToSeries\", []).forEach((series: any, index: number) => {\n\t\t\t\tresult.settings.cursor.settings.snapToSeries[index] = \"#\" + this._getInternalRef(series.uid);\n\t\t\t});\n\t\t}\n\n\t\t// Process the rest of the XY stuff\n\t\tresult.properties.zoomOutButton = this.serialize(source.zoomOutButton, 0, false);\n\t\tthis._stripType(result.properties.zoomOutButton);\n\t\tthis._stripKeys(result.properties.zoomOutButton.settings, [\"background\", \"icon\"])\n\n\t\t// Process the scrollbar\n\t\tconst scrollbarX = source.get(\"scrollbarX\");\n\t\tif (scrollbarX && scrollbarX.isType<XYChartScrollbar>(\"XYChartScrollbar\")) {\n\t\t\tconst serializedScrollbarChart: any = this._serializeEntity(scrollbarX.chart);\n\t\t\tthis._stripType(serializedScrollbarChart);\n\t\t\tthis._maybeInit(result.settings.scrollbarX, \"properties\", {});\n\t\t\tresult.settings.scrollbarX.properties.chart = serializedScrollbarChart;\n\t\t}\n\t}\n\n\tprivate _processAxis(axis: Axis<any>, _result: any, stripType?: boolean): string {\n\t\tconst axisId = this._getId(\"axis\");\n\t\tconst serializedAxis: any = this.serialize(axis, 0, true);\n\t\tthis._saveRefId(\"axes\", axisId, serializedAxis);\n\n\t\t// Renderer\n\t\tthis._maybeInit(serializedAxis.settings, \"renderer\", {});\n\t\tthis._maybeInit(serializedAxis.settings.renderer, \"properties\", {});\n\t\tthis._populateTemplates(axis.get(\"renderer\"), serializedAxis.settings.renderer.properties, [\n\t\t\t\"labels\", \"grid\", \"minorGrid\", \"ticks\"\n\t\t]);\n\n\t\t// Axis syncing\n\t\tconst syncedAxis = (axis as any).get(\"syncWithAxis\");\n\t\tif (syncedAxis) {\n\t\t\tserializedAxis.settings.syncWithAxis = \"#\" + this._getInternalRef(syncedAxis.uid);\n\t\t}\n\n\t\t// Axis header\n\t\tif (axis.axisHeader && axis.axisHeader.children.length) {\n\t\t\tthis._maybeInit(serializedAxis, \"properties\", {});\n\t\t\tserializedAxis.properties.axisHeader = this.serialize(axis.axisHeader, 0, true);\n\t\t\tthis._processCustomChildren(axis.axisHeader, serializedAxis.properties.axisHeader);\n\t\t}\n\n\t\t// Axis bullet\n\t\tconst bulletFunction = axis.get(\"bullet\");\n\t\tif (bulletFunction) {\n\t\t\tconst sampleDataItem = axis.dataItems.length ? axis.dataItems[0] : new DataItem(axis, {}, {});\n\t\t\tconst bullet = bulletFunction(axis.root, axis, sampleDataItem);\n\t\t\tconst serializedBullet: any = this.serialize(bullet, 0, true);\n\t\t\tserializedAxis.properties.bullet = serializedBullet;\n\t\t}\n\n\t\t// Axis ranges\n\t\tconst axisRanges = axis.axisRanges.values;\n\t\tif (axisRanges.length) {\n\t\t\tfor (let i = 0; i < axisRanges.length; i++) {\n\t\t\t\tconst rangeId = this._getId(\"axisRange\");\n\t\t\t\tconst range = axisRanges[i];\n\t\t\t\tconst serializedRange: any = {\n\t\t\t\t\taxis: \"#\" + axisId,\n\t\t\t\t\tsettings: this.serialize(range._settings, 0, true),\n\t\t\t\t\t__parseLogic: \"axisRange\"\n\t\t\t\t};\n\t\t\t\tthis._saveRefId(\"axisRanges\", rangeId, serializedRange);\n\t\t\t}\n\t\t}\n\n\t\t// Process CategoryAxis data\n\t\tif (axis.isType<CategoryAxis<any>>(\"CategoryAxis\")) {\n\t\t\tlet dataid: any = this._getInternalRef(this._hashObject(axis.data.values));\n\t\t\tif (dataid === undefined) {\n\t\t\t\tdataid = this._getId(\"data\");\n\t\t\t\tthis._lists.data[dataid] = this.serialize(axis.data.values, 0, true, true);\n\t\t\t\tthis._saveInternalRef(this._hashObject(axis.data.values), dataid);\n\t\t\t\tthis._saveRefId(\"data\", dataid, this._lists.data[dataid]);\n\t\t\t}\n\t\t\tthis._maybeInit(serializedAxis, \"properties\", {});\n\t\t\tserializedAxis.properties.data = \"#\" + dataid;\n\t\t}\n\t\tthis._saveInternalRef(axis.uid, axisId);\n\n\t\tif (stripType) {\n\t\t\tthis._stripType(serializedAxis);\n\t\t\tthis._stripType(serializedAxis.settings.renderer);\n\t\t}\n\n\t\tconst axisItem: any = {};\n\t\taxisItem[axisId] = serializedAxis;\n\t\tthis._processCustomChildren(axis, axisItem[axisId]);\n\t\tthis._globalRefs.push(axisItem);\n\n\t\treturn axisId;\n\t}\n\n\tprivate _processCurveChart(source: CurveChart, _result: any) {\n\t\t// Curve Chart needs special treament, as it's X axis references Y axis\n\t\t// via `yAxis` of its renderer\n\t\tsource.xAxes.each((axis: Axis<any>) => {\n\t\t\tconst xRenderer = axis.get(\"renderer\");\n\t\t\tconst yRenderer = xRenderer.get(\"yRenderer\");\n\t\t\tif (yRenderer) {\n\t\t\t\t// Add reference\n\t\t\t\tconst xAxisId = this._getInternalRef(axis.uid);\n\t\t\t\tconst yAxisId = this._getInternalRef(yRenderer.axis.uid);\n\t\t\t\tconst serializedXAxis = this._getRef(\"axes\", xAxisId);\n\t\t\t\tserializedXAxis.settings.renderer.settings.yRenderer = \"#\" + yAxisId + \".get('renderer')\";\n\n\t\t\t\tconst serializedYAxis = this._getRef(\"axes\", yAxisId);\n\t\t\t\tdelete serializedYAxis.settings.renderer.settings.xRenderer;\n\n\t\t\t\t// Swap positions of the axes\n\t\t\t\tconst xIndex = this._getRefIndex(\"axes\", xAxisId);\n\t\t\t\tconst yIndex = this._getRefIndex(\"axes\", yAxisId);\n\t\t\t\tif (xIndex < yIndex) {\n\t\t\t\t\t[this._mainRefs.axes[xIndex], this._mainRefs.axes[yIndex]] = [this._mainRefs.axes[yIndex], this._mainRefs.axes[xIndex]];\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate _processMapChart(source: MapChart, result: any) {\n\t\t// Clean up auto-populated data\n\t\tsource.series.each((series: any, _index: number) => {\n\t\t\tconst seriesId = this._getInternalRef(series.uid);\n\t\t\tconst serializedSeries = this._lists.series[seriesId];\n\t\t\tlet serializedData = this._getRef(\"data\", serializedSeries.properties.data.substr(1))\n\t\t\t$array.keepIf(serializedData, (item: any) => !item.madeFromGeoData);\n\t\t\t$array.map(serializedData, (item: any) => {\n\t\t\t\tif (item.geometry) {\n\t\t\t\t\t//delete item.geometry;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (serializedData.length === 0) {\n\t\t\t\tdelete serializedSeries.properties.data;\n\t\t\t}\n\n\t\t\t// Clustered bullet\n\t\t\tif (series.get(\"clusteredBullet\")) {\n\t\t\t\tconst bulletFunction = series.get(\"clusteredBullet\");\n\t\t\t\tconst sampleDataItem = series.clusteredDataItems.length ? series.clusteredDataItems[0] : new DataItem(series, {}, {});\n\t\t\t\tconst bullet = bulletFunction(series.root, series, sampleDataItem);\n\t\t\t\tconst serializedBullet: any = this.serialize(bullet, 0, true);\n\t\t\t\tif (bullet.get(\"sprite\")) {\n\t\t\t\t\tserializedBullet.settings.sprite = this._serializeEntity(bullet.get(\"sprite\"));\n\t\t\t\t\tthis._lists.series[seriesId].settings.clusteredBullet = serializedBullet;\n\t\t\t\t\tthis._processTemplate(bullet.get(\"sprite\"), serializedBullet.settings.sprite);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// Remove target from ZoomControl\n\t\tif (result.settings.zoomControl && result.settings.zoomControl.settings.target) {\n\t\t\tdelete result.settings.zoomControl.settings.target;\n\t\t\tthis._maybeInit(result.settings.zoomControl, \"properties\", {});\n\t\t\t[\"homeButton\", \"minusButton\", \"plusButton\"].forEach((button) => {\n\t\t\t\tresult.settings.zoomControl.properties[button] = {\n\t\t\t\t\tsettings: {\n\t\t\t\t\t\tvisible: (source.get(\"zoomControl\") as any)[button].get(\"visible\")\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t// Handle projection setting\n\t\tconst projection = source.get(\"projection\")\n\n\t\t// If the projection carries a registered name (e.g. set via\n\t\t// `am5map.geoMercator()`) and no explicit `projectionName` was set,\n\t\t// emit `projectionName` so the chart round-trips even when built in code.\n\t\tif (projection && !source.get(\"projectionName\") && (projection as any).__projectionName) {\n\t\t\tthis._maybeInit(result, \"settings\", {});\n\t\t\tresult.settings.projectionName = (projection as any).__projectionName;\n\t\t}\n\n\t}\n\n\tprivate _processGantt(source: Gantt, result: any) {\n\n\t\tthis._notSupported(source, result);\n\n\t\t/*\n\t\t// Process series and axis data\n\t\tthis._maybeInit(result, \"properties\", {});\n\n\t\t// Process series\n\t\tthis._disableDataSerialization = true;\n\t\tconst serializedSeries = this.serialize(source.series, 0, true);\n\t\tthis._stripType(serializedSeries);\n\t\tresult.properties.series = \"#\" + this._processSeries(source.series, serializedSeries);\n\n\t\t// Process category axis\n\t\tconst serializedYAxis = this.serialize(source.yAxis, 0, true);\n\t\tthis._stripType(serializedYAxis);\n\t\tconst yAxisId = this._processAxis(source.yAxis, serializedYAxis, true);\n\t\tresult.properties.yAxis = \"#\" + yAxisId;\n*/\n\t}\n\n\tprivate _processStockChart(source: StockChart, result: any) {\n\t\tthis._notSupported(source, result);\n\t}\n\n\tprivate _processHierarchy(source: Hierarchy, result: any) {\n\t\tconst selectedDataItem = source.get(\"selectedDataItem\");\n\t\tif (selectedDataItem) {\n\t\t\tconst index = source.dataItems.indexOf(selectedDataItem);\n\t\t\tresult.settings.selectedDataItem = \"@self.dataItems.\" + index;\n\t\t}\n\t}\n\n\tprivate _populateTemplates(source: any, result: any, templateKeys: Array<any>): void {\n\t\ttemplateKeys.forEach((key: string) => {\n\t\t\tif (source[key]) {\n\t\t\t\tthis._maybeInit(result, key, {});\n\t\t\t\tresult[key] = {\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\ttemplate: this.serialize(source[key].template, 0, true)\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tthis._stripType(result[key].properties.template);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate _stripKeys(source: any, keys: Array<string>): void {\n\t\tkeys.forEach((key: string) => {\n\t\t\tif (source[key] !== undefined) {\n\t\t\t\tdelete source[key];\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate _stripType(source: any): void {\n\t\tthis._stripKeys(source, [\"type\"]);\n\t}\n\n\tprivate _saveInternalRef(ref: any, value: any): any {\n\t\treturn this._internalRefs[ref] = value;\n\t}\n\n\tprivate _getInternalRef(ref: any): any {\n\t\treturn this._internalRefs[ref];\n\t}\n\n\tprivate _findInternalRef(ref: any): any {\n\t\tlet res: any;\n\t\t$object.eachContinue(this._internalRefs, (key, value) => {\n\t\t\tif (value === ref) {\n\t\t\t\tres = key;\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t});\n\t\treturn res;\n\t}\n\n\tprivate _getRef(key: string, id: string): any {\n\t\tlet found: any;\n\t\tthis._mainRefs[key].forEach((value: any) => {\n\t\t\tif (value[id] !== undefined) {\n\t\t\t\tfound = value[id];\n\t\t\t\treturn;\n\t\t\t}\n\t\t});\n\t\treturn found;\n\t}\n\n\tprivate _getRefIndex(key: string, id: string): number {\n\t\tlet found: number = -1;\n\t\tthis._mainRefs[key].forEach((value: any, index: number) => {\n\t\t\tif (value[id] !== undefined) {\n\t\t\t\tfound = index;\n\t\t\t\treturn;\n\t\t\t}\n\t\t});\n\t\treturn found;\n\t}\n\n\tprivate _saveRef(key: string, value: any): void {\n\t\tthis._mainRefs[key].push(value);\n\t}\n\n\tprivate _saveRefId(key: string, id: string, value: any): void {\n\t\tconst ref: any = {};\n\t\tref[id] = value;\n\t\tthis._saveRef(key, ref);\n\t}\n\n\t// private _saveFunction(callback: any): string {\n\t// \tconst id = this._getId(\"function\");\n\t// \tthis._saveRefId(\"functions\", id, this.get(\"functionsAs\") == \"string\" ? callback.toString() : callback);\n\t// \treturn id;\n\t// }\n\n\tprivate _hashObject(obj: any) {\n\t\tconst json = JSON.stringify(obj, (_key, value) => {\n\t\t\tif ($type.isObject(value) && value instanceof Entity) {\n\t\t\t\treturn JSON.stringify(Object.keys(value));\n\t\t\t}\n\t\t\treturn value;\n\t\t});\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < json.length; i++) {\n\t\t\tconst chr = json.charCodeAt(i);\n\t\t\thash = (hash << 5) - hash + chr;\n\t\t\thash |= 0; // convert to 32-bit int\n\t\t}\n\n\t\treturn \"h\" + (hash >>> 0).toString(16); // unsigned hex\n\t}\n\n\tprivate _maybeInit(source: any, key: string, value: any): void {\n\t\tif (!source[key]) {\n\t\t\tsource[key] = value;\n\t\t}\n\t}\n\n\tprivate _counter(id: string): number {\n\t\tif (this._counters[id] === undefined) {\n\t\t\tthis._counters[id] = 0;\n\t\t}\n\t\telse {\n\t\t\tthis._counters[id]++;\n\t\t}\n\t\treturn this._counters[id];\n\t}\n\n\tprivate _getId(id: string): string {\n\t\treturn id + \"-\" + this._counter(id);\n\t}\n\n\tprivate _pruneEmptyObjects(value: any): boolean {\n\t\t// Non-object primitives → never empty\n\t\tif (value === null || !$type.isObject(value)) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Process arrays\n\t\tif ($type.isArray(value)) {\n\t\t\tfor (let i = value.length - 1; i >= 0; i--) {\n\t\t\t\tconst el = value[i];\n\t\t\t\tif (el && $type.isObject(el) && !$type.isArray(el)) {\n\t\t\t\t\tconst empty = this._pruneEmptyObjects(el);\n\t\t\t\t\tif (empty) {\n\t\t\t\t\t\tvalue.splice(i, 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\t// Regular object\n\t\tfor (const key of $object.keys(value)) {\n\t\t\tconst child = value[key];\n\n\t\t\tif (key === \"states\" && $type.isArray(value)) {\n\t\t\t\tdelete value[key];\n\t\t\t}\n\t\t\telse if (child && $type.isObject(child)) {\n\t\t\t\tconst childEmpty = this._pruneEmptyObjects(child);\n\t\t\t\tif (childEmpty) {\n\t\t\t\t\tdelete value[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn Object.keys(value).length === 0;\n\t}\n\n\tprivate _isLegend(source: Entity): boolean {\n\t\treturn source.isType<Legend>(\"Legend\") || source.isType<HeatLegend>(\"HeatLegend\");\n\t}\n\n\tprivate _notSupported(_source: Entity, result: any) {\n\t\tthrow new Error(\"Unsupported type for serialization: \" + result.type);\n\t}\n\n}\n"]}
|