@kiwibit/chart 14.0.0 → 15.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +89 -1
- package/esm2020/lib/chart.component.mjs +29 -8
- package/esm2020/lib/chart.module.mjs +5 -5
- package/fesm2015/kiwibit-chart.mjs +30 -10
- package/fesm2015/kiwibit-chart.mjs.map +1 -1
- package/fesm2020/kiwibit-chart.mjs +30 -10
- package/fesm2020/kiwibit-chart.mjs.map +1 -1
- package/lib/chart.component.d.ts +2 -1
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -2,6 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
**kiwi-chart** is an Angular library designed to simplify the process of 2D charts generation.
|
|
4
4
|
|
|
5
|
+
### Latest versions @npm:
|
|
6
|
+
|
|
7
|
+
> **v15.x** for Angular >= **15.x**
|
|
8
|
+
>
|
|
9
|
+
> **v14.x** for Angular >= **14.x**
|
|
10
|
+
>
|
|
11
|
+
> **v1.0.x** for Angular <= **13.x**
|
|
12
|
+
|
|
5
13
|
# Installation
|
|
6
14
|
|
|
7
15
|
After creating a new Angular project simply run:
|
|
@@ -41,4 +49,84 @@ npm install @kiwibit/chart
|
|
|
41
49
|
| **@Input** [darkTheme] | boolean | false | Whether to activate the Dark Theme |
|
|
42
50
|
| **@Input** [darkThemeBackground] | string | | Background color for the Dark Theme |
|
|
43
51
|
| **@Output** (addPoint) | BasePoint | | When clicking in the chart area, emits a BasePoint containing the coordinates. To be available it requires the flag "clickToAddPoint" in the Chart model set to true. |
|
|
44
|
-
| **@Output** (chartHover) | BasePoint | | When hovering the chart area, emits a BasePoint containing the coordinates. |
|
|
52
|
+
| **@Output** (chartHover) | BasePoint | | When hovering the chart area, emits a BasePoint containing the coordinates. |
|
|
53
|
+
|
|
54
|
+
# Latest Updates
|
|
55
|
+
|
|
56
|
+
## [15.0.1] - 2022-11-30
|
|
57
|
+
### Added
|
|
58
|
+
- Added initial chart configuration if not passed as an input to the chart, in order to suppress the echarts warning.
|
|
59
|
+
|
|
60
|
+
## [15.0.0] - 2022-11-30
|
|
61
|
+
### Added
|
|
62
|
+
- Upgrade to Angular 15
|
|
63
|
+
|
|
64
|
+
## [14.0.0] - 2022-11-30
|
|
65
|
+
### Added
|
|
66
|
+
- Upgrade to Angular 14
|
|
67
|
+
|
|
68
|
+
## [1.0.13] - 2022-06-29
|
|
69
|
+
### Added
|
|
70
|
+
- Added "chartHover" Output property to emit the x and y coordinates when the cursor is hovering the chart area.
|
|
71
|
+
- Added opacity property in the Trace model.
|
|
72
|
+
|
|
73
|
+
## [1.0.12] - 2022-06-14
|
|
74
|
+
### Added
|
|
75
|
+
- Added animation duration in the chart model (as optional).
|
|
76
|
+
- Added maxAxesDecimals in the chart model (as optional).
|
|
77
|
+
### Changed
|
|
78
|
+
- Changed width of the chart in the grid option (to make the legend more readable when there's less space).
|
|
79
|
+
|
|
80
|
+
## [1.0.11] - 2022-06-09
|
|
81
|
+
### Added
|
|
82
|
+
- Added min and max values (as optional) for the x and y coordinate of the chart.
|
|
83
|
+
### Changed
|
|
84
|
+
- Minor fixes in the chart legend (increased width and changed inactive color for the dark theme).
|
|
85
|
+
|
|
86
|
+
## [1.0.10] - 2022-06-08
|
|
87
|
+
### Added
|
|
88
|
+
- Re-introduced manual change detection in the chart component.
|
|
89
|
+
- Added two different "Add Point" icons for both the light and dark theme.
|
|
90
|
+
|
|
91
|
+
## [1.0.9] - 2022-05-31
|
|
92
|
+
### Changed
|
|
93
|
+
- Minor changes to the chart rendering logic.
|
|
94
|
+
### Removed
|
|
95
|
+
- Removed manual change detection in the chart component.
|
|
96
|
+
|
|
97
|
+
## [1.0.7] - 2022-05-31
|
|
98
|
+
### Added
|
|
99
|
+
- Added Dark Theme for the chart.
|
|
100
|
+
- Added documentation for the Chart's models and component.
|
|
101
|
+
|
|
102
|
+
## [1.0.4] - 2022-03-30
|
|
103
|
+
### Added
|
|
104
|
+
- Added color property for the popints in a Trace.
|
|
105
|
+
|
|
106
|
+
## [1.0.3] - 2022-03-29
|
|
107
|
+
### Added
|
|
108
|
+
- Added a property in the Chart to choose if show the grid lines or not.
|
|
109
|
+
### Changed
|
|
110
|
+
- Changed the grid lines default color to #ccc.
|
|
111
|
+
### Removed
|
|
112
|
+
- Removed the automatic add of a point in the chart when clicking on add point control button. We just pass the data to father component which then decides whether to add a point or not.
|
|
113
|
+
- Removed point name from tooltip.
|
|
114
|
+
|
|
115
|
+
## [1.0.2] - 2022-03-28
|
|
116
|
+
### Changed
|
|
117
|
+
- scrollToZoom and clickToAddPoint are now optional and by default set to false.
|
|
118
|
+
### Fixed
|
|
119
|
+
- Rounded number to 3 decimals in the point tooltip.
|
|
120
|
+
### Removed
|
|
121
|
+
- Removed restore option in the toolbox.
|
|
122
|
+
|
|
123
|
+
## [1.0.1] - 2022-03-28
|
|
124
|
+
### Added
|
|
125
|
+
- Added property in the Trace model to make a Trace not selected in the legend by default.
|
|
126
|
+
### Changed
|
|
127
|
+
- Changed Unit of Measure format in the Axes labels.
|
|
128
|
+
- Changed default symbol of a Point.
|
|
129
|
+
|
|
130
|
+
## [1.0.0] - 2022-03-25
|
|
131
|
+
### Added
|
|
132
|
+
- First release of the kiwi-chart (version 1.0.0).
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
// Angular General
|
|
1
2
|
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
3
|
import { interval, Subject, takeUntil } from 'rxjs';
|
|
4
|
+
// Kiwi Chart
|
|
3
5
|
import { ADD_POINT_IMG_OFF_DARK, ADD_POINT_IMG_OFF_LIGHT, ADD_POINT_IMG_ON } from './constants/chart.constants';
|
|
4
|
-
import { ShapeVariant } from './models/chart.models';
|
|
6
|
+
import { ShapeVariant, TraceType } from './models/chart.models';
|
|
5
7
|
import * as i0 from "@angular/core";
|
|
6
8
|
import * as i1 from "@angular/common";
|
|
7
9
|
import * as i2 from "ngx-echarts";
|
|
@@ -54,11 +56,28 @@ export class KiwiChartComponent {
|
|
|
54
56
|
this.chartHover = new EventEmitter();
|
|
55
57
|
/**
|
|
56
58
|
* The object used by echarts to initially create the Chart.
|
|
59
|
+
* Has a default configuration that can be totally overrided using specific properties.
|
|
57
60
|
*
|
|
58
61
|
* @type {EChartsOption}
|
|
59
62
|
* @memberof KiwiChartComponent
|
|
60
63
|
*/
|
|
61
|
-
this.chartOption = {
|
|
64
|
+
this.chartOption = {
|
|
65
|
+
title: {
|
|
66
|
+
text: 'Kiwi Chart'
|
|
67
|
+
},
|
|
68
|
+
xAxis: {
|
|
69
|
+
name: 'X'
|
|
70
|
+
},
|
|
71
|
+
yAxis: {
|
|
72
|
+
name: 'Y'
|
|
73
|
+
},
|
|
74
|
+
series: [
|
|
75
|
+
{
|
|
76
|
+
type: TraceType.LINE,
|
|
77
|
+
data: [[0, 0]]
|
|
78
|
+
}
|
|
79
|
+
]
|
|
80
|
+
};
|
|
62
81
|
/**
|
|
63
82
|
* The instance of the Chart.
|
|
64
83
|
*
|
|
@@ -99,8 +118,10 @@ export class KiwiChartComponent {
|
|
|
99
118
|
*/
|
|
100
119
|
interval(200)
|
|
101
120
|
.pipe(takeUntil(this.destroyed$))
|
|
102
|
-
.subscribe(
|
|
103
|
-
|
|
121
|
+
.subscribe({
|
|
122
|
+
next: () => {
|
|
123
|
+
this.cd.detectChanges();
|
|
124
|
+
}
|
|
104
125
|
});
|
|
105
126
|
}
|
|
106
127
|
onChartInit(ec) {
|
|
@@ -339,8 +360,8 @@ export class KiwiChartComponent {
|
|
|
339
360
|
this.destroyed$.complete();
|
|
340
361
|
}
|
|
341
362
|
}
|
|
342
|
-
KiwiChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
343
|
-
KiwiChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
363
|
+
KiwiChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: KiwiChartComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
364
|
+
KiwiChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.1", type: KiwiChartComponent, selector: "kiwi-chart", inputs: { chart: "chart", width: "width", height: "height", darkTheme: "darkTheme", darkThemeBackground: "darkThemeBackground" }, outputs: { addPoint: "addPoint", chartHover: "chartHover" }, usesOnChanges: true, ngImport: i0, template: `
|
|
344
365
|
<div
|
|
345
366
|
echarts
|
|
346
367
|
[options]="chartOption"
|
|
@@ -352,7 +373,7 @@ KiwiChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", ver
|
|
|
352
373
|
[theme]="darkTheme ? 'dark' : ''"
|
|
353
374
|
></div>
|
|
354
375
|
`, isInline: true, styles: [""], dependencies: [{ kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.NgxEchartsDirective, selector: "echarts, [echarts]", inputs: ["options", "theme", "loading", "initOpts", "merge", "autoResize", "loadingType", "loadingOpts"], outputs: ["chartInit", "optionsError", "chartClick", "chartDblClick", "chartMouseDown", "chartMouseMove", "chartMouseUp", "chartMouseOver", "chartMouseOut", "chartGlobalOut", "chartContextMenu", "chartLegendSelectChanged", "chartLegendSelected", "chartLegendUnselected", "chartLegendScroll", "chartDataZoom", "chartDataRangeSelected", "chartTimelineChanged", "chartTimelinePlayChanged", "chartRestore", "chartDataViewChanged", "chartMagicTypeChanged", "chartPieSelectChanged", "chartPieSelected", "chartPieUnselected", "chartMapSelectChanged", "chartMapSelected", "chartMapUnselected", "chartAxisAreaSelected", "chartFocusNodeAdjacency", "chartUnfocusNodeAdjacency", "chartBrush", "chartBrushEnd", "chartBrushSelected", "chartRendered", "chartFinished"], exportAs: ["echarts"] }] });
|
|
355
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
376
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: KiwiChartComponent, decorators: [{
|
|
356
377
|
type: Component,
|
|
357
378
|
args: [{ selector: 'kiwi-chart', template: `
|
|
358
379
|
<div
|
|
@@ -381,4 +402,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
381
402
|
}], chartHover: [{
|
|
382
403
|
type: Output
|
|
383
404
|
}] } });
|
|
384
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l3aWJpdC9jaGFydC9zcmMvbGliL2NoYXJ0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFnQyxNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBRXZJLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsdUJBQXVCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoSCxPQUFPLEVBQWdCLFlBQVksRUFBMkIsTUFBTSx1QkFBdUIsQ0FBQzs7OztBQWtCNUYsTUFBTSxPQUFPLGtCQUFrQjtJQStGN0IsWUFDVSxFQUFxQjtRQUFyQixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQTlGL0I7Ozs7OztXQU1HO1FBQ00sVUFBSyxHQUFpQixJQUFJLENBQUM7UUFFcEM7Ozs7Ozs7V0FPRztRQUNNLFVBQUssR0FBVyxNQUFNLENBQUM7UUFDdkIsV0FBTSxHQUFXLE9BQU8sQ0FBQztRQUVsQzs7Ozs7OztXQU9HO1FBQ00sY0FBUyxHQUFZLEtBQUssQ0FBQztRQUdwQzs7Ozs7OztXQU9HO1FBQ08sYUFBUSxHQUE0QixJQUFJLFlBQVksRUFBYSxDQUFDO1FBRTVFOzs7Ozs7V0FNRztRQUNPLGVBQVUsR0FBNEIsSUFBSSxZQUFZLEVBQWEsQ0FBQztRQUU5RTs7Ozs7V0FLRztRQUNILGdCQUFXLEdBQWtCLEVBQUUsQ0FBQztRQUVoQzs7Ozs7V0FLRztRQUNILG9CQUFlLEdBQW1CLElBQUksQ0FBQztRQUV2Qzs7Ozs7V0FLRztRQUNILE9BQUUsR0FBK0IsSUFBSSxDQUFDO1FBRXRDOzs7Ozs7V0FNRztRQUNLLGVBQVUsR0FBa0IsSUFBSSxP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SSxFQUFFLEtBQUssQ0FBQyxLQUFLO2dCQUNqQixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sSUFBSSxDQUFDO2FBQzVCO1lBQ0QsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSztTQUM5QixDQUFDO0lBQ0osQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDN0IsQ0FBQzs7Z0hBeldVLGtCQUFrQjtvR0FBbEIsa0JBQWtCLHNRQWZuQjs7Ozs7Ozs7Ozs7R0FXVDs0RkFJVSxrQkFBa0I7a0JBakI5QixTQUFTOytCQUNFLFlBQVksWUFDWjs7Ozs7Ozs7Ozs7R0FXVDt3R0FhUSxLQUFLO3NCQUFiLEtBQUs7Z0JBVUcsS0FBSztzQkFBYixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFVRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFVSSxRQUFRO3NCQUFqQixNQUFNO2dCQVNHLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ3VzdG9tU2VyaWVzT3B0aW9uLCBFQ2hhcnRzLCBFQ2hhcnRzT3B0aW9uLCBMaW5lU2VyaWVzT3B0aW9uLCBTY2F0dGVyU2VyaWVzT3B0aW9uLCB6cmVuZGVyIH0gZnJvbSAnZWNoYXJ0cyc7XHJcbmltcG9ydCB7IGludGVydmFsLCBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQUREX1BPSU5UX0lNR19PRkZfREFSSywgQUREX1BPSU5UX0lNR19PRkZfTElHSFQsIEFERF9QT0lOVF9JTUdfT04gfSBmcm9tICcuL2NvbnN0YW50cy9jaGFydC5jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBDaGFydCwgU2hhcGUsIFNoYXBlVmFyaWFudCwgVHJhY2UsIFBvaW50LCBCYXNlUG9pbnQgfSBmcm9tICcuL21vZGVscy9jaGFydC5tb2RlbHMnO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2tpd2ktY2hhcnQnLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8ZGl2IFxyXG4gICAgICBlY2hhcnRzIFxyXG4gICAgICBbb3B0aW9uc109XCJjaGFydE9wdGlvblwiIFxyXG4gICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgJ3dpZHRoJzogd2lkdGgsXHJcbiAgICAgICAgJ2hlaWdodCc6IGhlaWdodFxyXG4gICAgICB9XCJcclxuICAgICAgKGNoYXJ0SW5pdCk9XCJvbkNoYXJ0SW5pdCgkZXZlbnQpXCJcclxuICAgICAgW3RoZW1lXT1cImRhcmtUaGVtZSA/ICdkYXJrJyA6ICcnXCJcclxuICAgID48L2Rpdj4gXHJcbiAgYCxcclxuICBzdHlsZXM6IFtgXHJcbiAgYF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEtpd2lDaGFydENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgQ2hhcnQgT2JqZWN0IHJlbmRlcmVkIGJ5IHRoZSBjYW52YXMuIEZvciBhbGwgdGhlIGF2YWlsYWJsZSBvcHRpb25zIHJlZmVyIFxyXG4gICAqIHRvIENoYXJ0IGludGVyZmFjZSBpbiB0aGUgbW9kZWxzIGZvbGRlci5cclxuICAgKlxyXG4gICAqIEB0eXBlIHsoQ2hhcnQgfCBudWxsKX1cclxuICAgKiBAbWVtYmVyb2YgS2l3aUNoYXJ0Q29tcG9uZW50XHJcbiAgICovXHJcbiAgQElucHV0KCkgY2hhcnQ6IENoYXJ0IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIC8qKlxyXG4gICAqIFdpZHRoIGFuZCBIZWlnaHQgb2YgdGhlIGNoYXJ0IGFyZWEuIFRoZSBkaW1lbnNpb25zIHJlZmVyIHRvIHRoZSBmYXRoZXIgY29tcG9uZW50IFxyXG4gICAqIGludG8gd2hpY2ggdGhlIGtpd2ktY2hhcnQgaXMgaW5zZXJ0ZWQuIEZvciBleGFtcGxlIGluIGFuIGVtcHR5IHBhZ2UgdGhlIHdpZHRoL2hlaWdodCBcclxuICAgKiBvZiB0aGUgY2hhcnQgY2FuIHRha2UgdGhlIHdob2xlIGF2YWlsYWJsZSBzcGFjZSBpbiB0aGUgcGFnZS5cclxuICAgKlxyXG4gICAqIEB0eXBlIHtzdHJpbmd9XHJcbiAgICogQG1lbWJlcm9mIEtpd2lDaGFydENvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHdpZHRoOiBzdHJpbmcgPSAnMTAwJSc7XHJcbiAgQElucHV0KCkgaGVpZ2h0OiBzdHJpbmcgPSAnNDgwcHgnO1xyXG5cclxuICAvKipcclxuICAgKiBUaGlzIHByb3BlcnR5IHNpbXBseSBhY3RpdmF0ZXMgb3Igbm90IHRoZSBkYXJrIHRoZW1lIG9mIHRoZSBjaGFydFxyXG4gICAqIGRlZmluZWQgYnkgdGhlIEVjaGFydHMgbGlicmFyeS4gSW4gYWRkaXRpb24gdGhlIGJhY2tncm91bmQgY29sb3IgY2FuIGJlIGN1c3RvbVxyXG4gICAqIHNvIHRoYXQgdGhlIGNoYXJ0IGNhbiBtYXRjaCB0aGUgYmFja2dyb3VuZCBvZiB0aGUgYXBwbGljYXRpb24gaW4gd2hpY2ggaXQncyB1c2VkLlxyXG4gICAqXHJcbiAgICogQHR5cGUge2Jvb2xlYW59XHJcbiAgICogQG1lbWJlcm9mIEtpd2lDaGFydENvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGRhcmtUaGVtZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGRhcmtUaGVtZUJhY2tncm91bmQ/OiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIE91dHB1dCBldmVudCB1c2VkIHRvIGVtaXQgdG8gdGhlIGZhdGhlciBjb21wb25lbnQgdGhlIGNvb3JkaW5hdGVzXHJcbiAgICogb2YgdGhlIHBvaW50IGNsaWNrZWQgaW4gdGhlIGNoYXJ0IGFyZWEuIFRoaXMgZnVuY3Rpb25hbGl0eSB0byBiZSB1c2VkIG11c3RcclxuICAgKiBoYXZlIHRoZSBwcm9wZXJ0eSBcImNsaWNrVG9BZGRQb2ludFwiIGluIHRoZSBDaGFydCBvYmplY3Qgc2V0IHRvIHRydWUuXHJcbiAgICpcclxuICAgKiBAdHlwZSB7RXZlbnRFbWl0dGVyPEJhc2VQb2ludD59XHJcbiAgICogQG1lbWJlcm9mIEtpd2lDaGFydENvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBhZGRQb2ludDogRXZlbnRFbWl0dGVyPEJhc2VQb2ludD4gPSBuZXcgRXZlbnRFbWl0dGVyPEJhc2VQb2ludD4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogV2hlbiB0aGUgY3Vyc29yIGhvdmVycyB0aGUgY2hhcnQgYXJlYSBpdCBlbWl0cyB0byB0aGUgZmF0aGVyIGNvbXBvbmVudCB0aGVcclxuICAgKiB4IGFuZCB5IGNvb3JkaW5hdGVzIHJlbGF0aXZlIHRvIHRoZSBjaGFydCByZWZlcmVuY2Ugc3lzdGVtLlxyXG4gICAqXHJcbiAgICogQHR5cGUge0V2ZW50RW1pdHRlcjxCYXNlUG9pbnQ+fVxyXG4gICAqIEBtZW1iZXJvZiBLaXdpQ2hhcnRDb21wb25lbnRcclxuICAgKi9cclxuICBAT3V0cHV0KCkgY2hhcnRIb3ZlcjogRXZlbnRFbWl0dGVyPEJhc2VQb2ludD4gPSBuZXcgRXZlbnRFbWl0dGVyPEJhc2VQb2ludD4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIG9iamVjdCB1c2VkIGJ5IGVjaGFydHMgdG8gaW5pdGlhbGx5IGNyZWF0ZSB0aGUgQ2hhcnQuXHJcbiAgICpcclxuICAgKiBAdHlwZSB7RUNoYXJ0c09wdGlvbn1cclxuICAgKiBAbWVtYmVyb2YgS2l3aUNoYXJ0Q29tcG9uZW50XHJcbiAgICovXHJcbiAgY2hhcnRPcHRpb246IEVDaGFydHNPcHRpb24gPSB7fTtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIGluc3RhbmNlIG9mIHRoZSBDaGFydC5cclxuICAgKlxyXG4gICAqIEB0eXBlIHsoRUNoYXJ0cyB8IG51bGwpfVxyXG4gICAqIEBtZW1iZXJvZiBLaXdpQ2hhcnRDb21wb25lbnRcclxuICAgKi9cclxuICBlY2hhcnRzSW5zdGFuY2U6IEVDaGFydHMgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgLyoqXHJcbiAgICogVXNlZCB0byBwZXJmb3JtIGFjdGlvbnMgKGFzIHBvaW50IGFkZGl0aW9uIGJhc2VkIG9uIHRoZSBjdXJzb3IgcG9zaXRpb24pIG9uIHRoZSBjaGFydC5cclxuICAgKlxyXG4gICAqIEB0eXBlIHsoenJlbmRlci5aUmVuZGVyVHlwZSB8IG51bGwpfVxyXG4gICAqIEBtZW1iZXJvZiBLaXdpQ2hhcnRDb21wb25lbnRcclxuICAgKi9cclxuICB6cjogenJlbmRlci5aUmVuZGVyVHlwZSB8IG51bGwgPSBudWxsO1xyXG5cclxuICAvKipcclxuICAgKiBTdWJqZWN0IHVzZWQgdG8gdW5zdWJzY3JpYmUgb25jZSB0aGUgY29tcG9uZW50IGdldHMgZGVzdHJveWVkLlxyXG4gICAqXHJcbiAgICogQHByaXZhdGVcclxuICAgKiBAdHlwZSB7U3ViamVjdDx2b2lkPn1cclxuICAgKiBAbWVtYmVyb2YgS2l3aUNoYXJ0Q29tcG9uZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBkZXN0cm95ZWQkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogRGVmYXVsdCBudW1iZXIgb2YgZGVjaW1hbHMgdGhhdCBjYW4gaGF2ZVxyXG4gICAqIHRoZSB2YWx1ZXMgb24gdGhlIHggYW5kIHkgYXhlcy5cclxuICAgKlxyXG4gICAqIEBwcml2YXRlXHJcbiAgICogQHR5cGUge251bWJlcn1cclxuICAgKiBAbWVtYmVyb2YgS2l3aUNoYXJ0Q29tcG9uZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSByZWFkb25seSBNQVhfREVDSU1BTFM6IG51bWJlciA9IDM7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWZcclxuICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIC8qKiBcclxuICAgICAqIFRoaXMgaXMgYSBtYW51YWwgY2hhbmdlIGRldGVjdGlvbiBydW5uaW5nIGV2ZXJ5IDIwMG1zLCB0aGUgbWVtb3J5IHNob3VsZCBub3QgYmUgbXVjaCBhZmZsaWN0ZWQuXHJcbiAgICAgKiBJdCdzIG5lY2Vzc2FyeSBiZWNhdXNlIHdoZW4gaW50ZXJhY3Rpbmcgd2l0aCB0aGUgY2hhcnQgKGZvciBleGFtcGxlIGFkZFBvaW50KSxcclxuICAgICAqIEFuZ3VsYXIgbG9zZXMgdGhlIGNoYW5nZSBkZXRlY3Rpb24gYW5kIHRoZSBwb2ludCBpcyBub3QgYWRkZWQgaW4gdGhlIGNoYXJ0IGNhbnZhcy5cclxuICAgICAqL1xyXG4gICAgaW50ZXJ2YWwoMjAwKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uQ2hhcnRJbml0KGVjOiBFQ2hhcnRzKSB7XHJcbiAgICB0aGlzLmVjaGFydHNJbnN0YW5jZSA9IGVjO1xyXG4gICAgdGhpcy5zZXR1cFpyRXZlbnRIYW5kbGVyKGVjKTtcclxuICB9XHJcblxyXG4gIHNldHVwWnJFdmVudEhhbmRsZXIoZWM6IEVDaGFydHMpIHtcclxuICAgIHRoaXMuenIgPSBlYy5nZXRacigpO1xyXG4gICAgLyoqIFxyXG4gICAgICogSW50ZXJjZXB0cyB0aGUgY2xpY2sgZXZlbnQgb24gdGhlIGNoYXJ0IChpZiB0aGUgY2xpY2tUb0FkZFBvaW50IHByb3BlcnR5IGlzIHNldCB0byB0cnVlKVxyXG4gICAgICogYW5kIGVtaXRzIHRoZSBwb2ludCBjb29yZGluYXRlcyB0byB0aGUgZmF0aGVyIGNvbXBvbmVudC5cclxuICAgICAqL1xyXG4gICAgdGhpcy56ci5vbignY2xpY2snLCBwYXJhbXMgPT4ge1xyXG4gICAgICBsZXQgb3B0aW9uOiBhbnkgPSBlYy5nZXRPcHRpb24oKTtcclxuICAgICAgbGV0IGFjdGl2ZSA9IG9wdGlvbj8udG9vbGJveD8uWzBdPy5mZWF0dXJlPy5teUFkZFBvaW50Py5pY29uU3RhdHVzO1xyXG4gICAgICBpZiAoYWN0aXZlICYmIHRoaXMuY2hhcnQ/LmNsaWNrVG9BZGRQb2ludCkge1xyXG4gICAgICAgIGNvbnN0IHBvaW50SW5QaXhlbCA9IFtwYXJhbXMub2Zmc2V0WCwgcGFyYW1zLm9mZnNldFldO1xyXG4gICAgICAgIGNvbnN0IHBvaW50SW5HcmlkID0gZWMuY29udmVydEZyb21QaXhlbCgnZ3JpZCcsIHBvaW50SW5QaXhlbCk7XHJcbiAgICAgICAgaWYgKGVjLmNvbnRhaW5QaXhlbCgnZ3JpZCcsIHBvaW50SW5QaXhlbCkgJiYgcG9pbnRJbkdyaWQpIHtcclxuICAgICAgICAgIGxldCBuZXdQb2ludDogeyB4OiBudW1iZXIsIHk6IG51bWJlciB9ID0ge1xyXG4gICAgICAgICAgICB4OiArcG9pbnRJbkdyaWRbMF0udG9GaXhlZCgzKSxcclxuICAgICAgICAgICAgeTogK3BvaW50SW5HcmlkWzFdLnRvRml4ZWQoMylcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICB0aGlzLmFkZFBvaW50LmVtaXQobmV3UG9pbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICAvKiogXHJcbiAgICAgKiBUaGlzIGlzIHVzZWQgcGVyZm9ybSBjdXN0b20gYWN0aW9ucyB3aGVuIHRoZSBtb3VzZSBpcyBob3ZlcmluZyB0aGUgY2hhcnQgYXJlYVxyXG4gICAgICovXHJcbiAgICB0aGlzLnpyLm9uKCdtb3VzZW1vdmUnLCBwYXJhbXMgPT4ge1xyXG4gICAgICBjb25zdCBwb2ludEluUGl4ZWwgPSBbcGFyYW1zLm9mZnNldFgsIHBhcmFtcy5vZmZzZXRZXTtcclxuICAgICAgY29uc3QgcG9pbnRJbkdyaWQgPSBlYy5jb252ZXJ0RnJvbVBpeGVsKCdncmlkJywgcG9pbnRJblBpeGVsKTtcclxuICAgICAgLyogXHJcbiAgICAgICAqIExvZ2ljIHRvIGVtaXQgdG8gdGhlIGZhdGhlciBjb21wb25lbnQgdGhlIHggYW5kIHkgY2RpbmF0ZXMgd2hlbiB0aGVcclxuICAgICAgICogY3Vyc29yIGlzIGhvdmVyaW5nIHRoZSBjaGFydCBhcmVhIC5cclxuICAgICAgICovXHJcbiAgICAgIGlmIChlYy5jb250YWluUGl4ZWwoJ2dyaWQnLCBwb2ludEluUGl4ZWwpICYmIHBvaW50SW5HcmlkKSB7XHJcbiAgICAgICAgbGV0IG5ld1BvaW50OiB7IHg6IG51bWJlciwgeTogbnVtYmVyIH0gPSB7XHJcbiAgICAgICAgICB4OiArcG9pbnRJbkdyaWRbMF0udG9GaXhlZCgzKSxcclxuICAgICAgICAgIHk6ICtwb2ludEluR3JpZFsxXS50b0ZpeGVkKDMpXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmNoYXJ0SG92ZXIuZW1pdChuZXdQb2ludCk7XHJcbiAgICAgIH1cclxuICAgICAgLyogTG9naWMgdG8gY2hhbmdlIHRoZSBjdXJzb3IgaWNvbiB3aGVuIHRoZSBcIkNsaWNrIHRvIEFkZCBQb2ludFwiIGZlYXR1cmUgaXMgYWN0aXZlIGFuZCB2aWNldmVyc2EuICovXHJcbiAgICAgIGNvbnN0IG9wdGlvbjogYW55ID0gZWMuZ2V0T3B0aW9uKCk7XHJcbiAgICAgIGNvbnN0IGFkZFBvaW50SXNBY3RpdmUgPSBvcHRpb24/LnRvb2xib3g/LlswXT8uZmVhdHVyZT8ubXlBZGRQb2ludD8uaWNvblN0YXR1cztcclxuICAgICAgaWYgKGFkZFBvaW50SXNBY3RpdmUpIHtcclxuICAgICAgICB0aGlzLnpyPy5zZXRDdXJzb3JTdHlsZShcclxuICAgICAgICAgIGVjLmNvbnRhaW5QaXhlbCgnZ3JpZCcsIHBvaW50SW5QaXhlbCkgPyAnY29weScgOiAnZGVmYXVsdCdcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGxldCBjaGFydDogQ2hhcnQgPSBjaGFuZ2VzWydjaGFydCddPy5jdXJyZW50VmFsdWU7XHJcbiAgICBpZiAoY2hhcnQpIHtcclxuICAgICAgdGhpcy5jaGFydE9wdGlvbiA9IHtcclxuICAgICAgICB0aXRsZToge1xyXG4gICAgICAgICAgdGV4dDogY2hhcnQudGl0bGUsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBncmlkOiB7XHJcbiAgICAgICAgICB3aWR0aDogJzcwJSdcclxuICAgICAgICB9LFxyXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhpcy5kYXJrVGhlbWUgPyB0aGlzLmRhcmtUaGVtZUJhY2tncm91bmQgPz8gJyMzMDMwMzAnIDogJ3RyYW5zcGFyZW50JywgdG9vbHRpcDoge1xyXG4gICAgICAgICAgYXhpc1BvaW50ZXI6IHtcclxuICAgICAgICAgICAgdHlwZTogJ2Nyb3NzJyxcclxuICAgICAgICAgICAgY3Jvc3NTdHlsZToge1xyXG4gICAgICAgICAgICAgIGNvbG9yOiAnI2JlYmViZSdcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdG9vbGJveDoge1xyXG4gICAgICAgICAgb3JpZW50OiAnaG9yaXpvbnRhbCcsXHJcbiAgICAgICAgICBsZWZ0OiAnY2VudGVyJyxcclxuICAgICAgICAgIGZlYXR1cmU6IHtcclxuICAgICAgICAgICAgZGF0YVpvb206IHtcclxuICAgICAgICAgICAgICBicnVzaFN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgICBib3JkZXJDb2xvcjogJyMwMDAnLFxyXG4gICAgICAgICAgICAgICAgYm9yZGVyV2lkdGg6IDEsXHJcbiAgICAgICAgICAgICAgICBib3JkZXJUeXBlOiAnZGFzaGVkJ1xyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHNhdmVBc0ltYWdlOiB7fSxcclxuICAgICAgICAgICAgcmVzdG9yZToge30sXHJcbiAgICAgICAgICAgIG15QWRkUG9pbnQ6IHtcclxuICAgICAgICAgICAgICBzaG93OiBjaGFydC5jbGlja1RvQWRkUG9pbnQgPz8gZmFsc2UsXHJcbiAgICAgICAgICAgICAgdGl0bGU6IGNoYXJ0LmFkZFBvaW50Q3VzdG9tTmFtZSA/PyAnQWRkIFBvaW50JyxcclxuICAgICAgICAgICAgICBpY29uOiB0aGlzLmRhcmtUaGVtZSA/IEFERF9QT0lOVF9JTUdfT0ZGX0RBUksgOiBBRERfUE9JTlRfSU1HX09GRl9MSUdIVCxcclxuICAgICAgICAgICAgICBpY29uU3RhdHVzOiBmYWxzZSxcclxuICAgICAgICAgICAgICBvbmNsaWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgb3B0aW9uOiBhbnkgPSB0aGlzLmVjaGFydHNJbnN0YW5jZT8uZ2V0T3B0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICBsZXQgc3RhdHVzID0gb3B0aW9uLnRvb2xib3hbMF0uZmVhdHVyZS5teUFkZFBvaW50Lmljb25TdGF0dXM7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVjaGFydHNJbnN0YW5jZT8uc2V0T3B0aW9uKHtcclxuICAgICAgICAgICAgICAgICAgdG9vbGJveDoge1xyXG4gICAgICAgICAgICAgICAgICAgIGZlYXR1cmU6IHtcclxuICAgICAgICAgICAgICAgICAgICAgIG15QWRkUG9pbnQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvblN0YXR1czogIXN0YXR1cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogIXN0YXR1cyA/IEFERF9QT0lOVF9JTUdfT04gOiB0aGlzLmRhcmtUaGVtZSA/IEFERF9QT0lOVF9JTUdfT0ZGX0RBUksgOiBBRERfUE9JTlRfSU1HX09GRl9MSUdIVFxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZGF0YVpvb206IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdHlwZTogJ2luc2lkZScsXHJcbiAgICAgICAgICAgIHhBeGlzSW5kZXg6IFswXSxcclxuICAgICAgICAgICAgdGhyb3R0bGU6IDAsXHJcbiAgICAgICAgICAgIGZpbHRlck1vZGU6ICdub25lJyxcclxuICAgICAgICAgICAgZGlzYWJsZWQ6ICFjaGFydC5zY3JvbGxUb1pvb20gPz8gdHJ1ZVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdHlwZTogJ2luc2lkZScsXHJcbiAgICAgICAgICAgIHlBeGlzSW5kZXg6IFswXSxcclxuICAgICAgICAgICAgdGhyb3R0bGU6IDAsXHJcbiAgICAgICAgICAgIGZpbHRlck1vZGU6ICdub25lJyxcclxuICAgICAgICAgICAgZGlzYWJsZWQ6ICFjaGFydC5zY3JvbGxUb1pvb20gPz8gdHJ1ZVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICBdLFxyXG4gICAgICAgIGxlZ2VuZDoge1xyXG4gICAgICAgICAgaW5hY3RpdmVDb2xvcjogdGhpcy5kYXJrVGhlbWUgPyAnIzhiOGI4YicgOiAnI2NjYycsXHJcbiAgICAgICAgICBkYXRhOiBjaGFydC5zaGFwZXMubWFwKFxyXG4gICAgICAgICAgICAoc2hhcGU6IFNoYXBlKSA9PiAoe1xyXG4gICAgICAgICAgICAgIG5hbWU6IHNoYXBlLm5hbWUsXHJcbiAgICAgICAgICAgICAgaWNvbjogJ2NpcmNsZSdcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICksXHJcbiAgICAgICAgICBzZWxlY3RlZDogY2hhcnQuc2hhcGVzLnJlZHVjZSgoYWNjdW11bGF0b3IsIHNoYXBlOiBTaGFwZSkgPT4gKHsgLi4uYWNjdW11bGF0b3IsIFtzaGFwZS5uYW1lIGFzIHN0cmluZ106IHNoYXBlLnNlbGVjdGVkQnlEZWZhdWx0ID8/IHRydWUgfSksIHt9KSxcclxuICAgICAgICAgIHNob3c6IGNoYXJ0LnNob3dMZWdlbmQgPz8gZmFsc2UsXHJcbiAgICAgICAgICBvcmllbnQ6ICd2ZXJ0aWNhbCcsXHJcbiAgICAgICAgICBsZWZ0OiAncmlnaHQnLFxyXG4gICAgICAgICAgcGFkZGluZzogWzYwLCAyMF0sXHJcbiAgICAgICAgICB0eXBlOiAnc2Nyb2xsJyxcclxuICAgICAgICAgIHRleHRTdHlsZToge1xyXG4gICAgICAgICAgICB3aWR0aDogMTIwLFxyXG4gICAgICAgICAgICBmb250V2VpZ2h0OiAnYm9sZCcsXHJcbiAgICAgICAgICAgIG92ZXJmbG93OiAnYnJlYWsnXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICB4QXhpczoge1xyXG4gICAgICAgICAgdHlwZTogY2hhcnQueEF4aXNUeXBlLFxyXG4gICAgICAgICAgbmFtZTogY2hhcnQueEF4aXNVb20gPyBgJHtjaGFydC54QXhpc05hbWV9IFsgJHtjaGFydC54QXhpc1VvbX0gXWAgOiBjaGFydC54QXhpc05hbWUsXHJcbiAgICAgICAgICBuYW1lTG9jYXRpb246ICdtaWRkbGUnLFxyXG4gICAgICAgICAgbmFtZUdhcDogMzAsXHJcbiAgICAgICAgICBzcGxpdExpbmU6IHtcclxuICAgICAgICAgICAgc2hvdzogY2hhcnQuc2hvd0dyaWQgPz8gdHJ1ZSxcclxuICAgICAgICAgICAgbGluZVN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgY29sb3I6IHRoaXMuZGFya1RoZW1lID8gJyM1OTU5NTknIDogJyNjY2MnXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBtaW46IGNoYXJ0LnhNaW4/LnRvRml4ZWQoY2hhcnQubWF4QXhlc0RlY2ltYWxzID8/IHRoaXMuTUFYX0RFQ0lNQUxTKSxcclxuICAgICAgICAgIG1heDogY2hhcnQueE1heD8udG9GaXhlZChjaGFydC5tYXhBeGVzRGVjaW1hbHMgPz8gdGhpcy5NQVhfREVDSU1BTFMpLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgeUF4aXM6IHtcclxuICAgICAgICAgIHR5cGU6IGNoYXJ0LnlBeGlzVHlwZSxcclxuICAgICAgICAgIG5hbWU6IGNoYXJ0LnlBeGlzVW9tID8gYCR7Y2hhcnQueUF4aXNOYW1lfSBbICR7Y2hhcnQueUF4aXNVb219IF1gIDogY2hhcnQueUF4aXNOYW1lLFxyXG4gICAgICAgICAgbmFtZUxvY2F0aW9uOiAnbWlkZGxlJyxcclxuICAgICAgICAgIG5hbWVHYXA6IDUwLFxyXG4gICAgICAgICAgc3BsaXRMaW5lOiB7XHJcbiAgICAgICAgICAgIHNob3c6IGNoYXJ0LnNob3dHcmlkID8/IHRydWUsXHJcbiAgICAgICAgICAgIGxpbmVTdHlsZToge1xyXG4gICAgICAgICAgICAgIGNvbG9yOiB0aGlzLmRhcmtUaGVtZSA/ICcjNTk1OTU5JyA6ICcjY2NjJ1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgbWluOiBjaGFydC55TWluPy50b0ZpeGVkKGNoYXJ0Lm1heEF4ZXNEZWNpbWFscyA/PyB0aGlzLk1BWF9ERUNJTUFMUyksXHJcbiAgICAgICAgICBtYXg6IGNoYXJ0LnlNYXg/LnRvRml4ZWQoY2hhcnQubWF4QXhlc0RlY2ltYWxzID8/IHRoaXMuTUFYX0RFQ0lNQUxTKSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHNlcmllczogdGhpcy5jcmVhdGVTZXJpZXMoY2hhcnQuc2hhcGVzKSxcclxuICAgICAgICBhbmltYXRpb246IGNoYXJ0Lmhhc0FuaW1hdGlvbnMsXHJcbiAgICAgICAgYW5pbWF0aW9uRHVyYXRpb246IGNoYXJ0LmFuaW1hdGlvbkR1cmF0aW9uID8/IDUwMCxcclxuICAgICAgICBhbmltYXRpb25FYXNpbmc6ICdjdWJpY091dCdcclxuICAgICAgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNyZWF0ZVNlcmllcyhzaGFwZXM6IFNoYXBlW10pOiBBcnJheTxMaW5lU2VyaWVzT3B0aW9uIHwgQ3VzdG9tU2VyaWVzT3B0aW9uIHwgU2NhdHRlclNlcmllc09wdGlvbj4ge1xyXG4gICAgbGV0IHNlcmllczogQXJyYXk8TGluZVNlcmllc09wdGlvbiB8IEN1c3RvbVNlcmllc09wdGlvbiB8IFNjYXR0ZXJTZXJpZXNPcHRpb24+ID0gW107XHJcbiAgICBzaGFwZXMuZm9yRWFjaChcclxuICAgICAgKHNoYXBlOiBTaGFwZSkgPT4ge1xyXG4gICAgICAgIHN3aXRjaCAoc2hhcGUudmFyaWFudCkge1xyXG4gICAgICAgICAgY2FzZSBTaGFwZVZhcmlhbnQuVFJBQ0U6XHJcbiAgICAgICAgICAgIHNlcmllcy5wdXNoKHRoaXMuY3JlYXRlVHJhY2Uoc2hhcGUgYXMgVHJhY2UpKVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKTtcclxuICAgIHJldHVybiBzZXJpZXM7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVUcmFjZSh0cmFjZTogVHJhY2UpOiBMaW5lU2VyaWVzT3B0aW9uIHwgU2NhdHRlclNlcmllc09wdGlvbiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB0eXBlOiB0cmFjZS50eXBlLFxyXG4gICAgICBuYW1lOiB0cmFjZS5uYW1lLFxyXG4gICAgICBkYXRhOiB0cmFjZS5wb2ludHMubWFwKFxyXG4gICAgICAgIChwb2ludDogUG9pbnQpID0+ICh7XHJcbiAgICAgICAgICB2YWx1ZTogW3BvaW50LngsIHBvaW50LnldLFxyXG4gICAgICAgICAgc3ltYm9sOiBwb2ludC5zeW1ib2wgPz8gJ2NpcmNsZScsXHJcbiAgICAgICAgICBuYW1lOiBwb2ludC5uYW1lLFxyXG4gICAgICAgICAgc3ltYm9sU2l6ZTogcG9pbnQuc3ltYm9sU2l6ZSA/PyAyLFxyXG4gICAgICAgICAgaXRlbVN0eWxlOiB7XHJcbiAgICAgICAgICAgIGNvbG9yOiBwb2ludC5jb2xvclxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVtcGhhc2lzOiB7XHJcbiAgICAgICAgICAgIGRpc2FibGVkOiB0cnVlXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgbGFiZWw6IHtcclxuICAgICAgICAgICAgc2hvdzogdHJ1ZSxcclxuICAgICAgICAgICAgcG9zaXRpb246ICdib3R0b20nLFxyXG4gICAgICAgICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICAgICAgICB2ZXJ0aWNhbEFsaWduOiAnYm90dG9tJyxcclxuICAgICAgICAgICAgZm9ybWF0dGVyOiAoKSA9PiBgJHtwb2ludC5uYW1lID8/ICcnfWAsXHJcbiAgICAgICAgICAgIGZvbnRTaXplOiAxMyxcclxuICAgICAgICAgICAgcGFkZGluZzogWzAsIDAsIDAsIDEwXSxcclxuICAgICAgICAgICAgd2lkdGg6IDEwMCxcclxuICAgICAgICAgICAgb3ZlcmZsb3c6ICd0cnVuY2F0ZScsXHJcbiAgICAgICAgICAgIGVsbGlwc2lzOiAnLi4uJyxcclxuICAgICAgICAgICAgZm9udFdlaWdodDogJ2JvbGQnLFxyXG4gICAgICAgICAgICBjb2xvcjogdGhpcy5kYXJrVGhlbWUgPyAnI2ZmZicgOiAnIzAwMCdcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB0b29sdGlwOiB7XHJcbiAgICAgICAgICAgIGZvcm1hdHRlcjogKHsgdmFsdWUgfTogeyB2YWx1ZTogbnVtYmVyW10gfSkgPT4gYFxyXG4gICAgICAgICAgICAgIDxzdHJvbmc+JHt0aGlzLmNoYXJ0Py54QXhpc05hbWV9Ojwvc3Ryb25nPiAke3ZhbHVlWzBdLnRvRml4ZWQoMykucmVwbGFjZSgvWy4sXTAwMCQvLCBcIlwiKX1cclxuICAgICAgICAgICAgICA8YnI+XHJcbiAgICAgICAgICAgICAgPHN0cm9uZz4ke3RoaXMuY2hhcnQ/LnlBeGlzTmFtZX06PC9zdHJvbmc+ICR7dmFsdWVbMV0udG9GaXhlZCgzKS5yZXBsYWNlKC9bLixdMDAwJC8sIFwiXCIpfVxyXG4gICAgICAgICAgICBgXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgKSxcclxuICAgICAgY29sb3I6IHRyYWNlLmNvbG9yLFxyXG4gICAgICBsaW5lU3R5bGU6IHtcclxuICAgICAgICB3aWR0aDogdHJhY2Uud2lkdGgsXHJcbiAgICAgICAgdHlwZTogdHJhY2Uuc3R5bGUsXHJcbiAgICAgICAgb3BhY2l0eTogdHJhY2Uub3BhY2l0eSA/PyAxXHJcbiAgICAgIH0sXHJcbiAgICAgIHNtb290aDogdHJhY2Uuc21vb3RoID8/IGZhbHNlXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLmRlc3Ryb3llZCQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95ZWQkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
|
|
405
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l3aWJpdC9jaGFydC9zcmMvbGliL2NoYXJ0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxrQkFBa0I7QUFDbEIsT0FBTyxFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBZ0MsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUN2SSxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHcEQsYUFBYTtBQUNiLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSx1QkFBdUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hILE9BQU8sRUFBZ0IsWUFBWSxFQUEyQixTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7OztBQWtCdkcsTUFBTSxPQUFPLGtCQUFrQjtJQWdIN0IsWUFDVSxFQUFxQjtRQUFyQixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQS9HL0I7Ozs7OztXQU1HO1FBQ00sVUFBSyxHQUFpQixJQUFJLENBQUM7UUFFcEM7Ozs7Ozs7V0FPRztRQUNNLFVBQUssR0FBVyxNQUFNLENBQUM7UUFDdkIsV0FBTSxHQUFXLE9BQU8sQ0FBQztRQUVsQzs7Ozs7OztXQU9HO1FBQ00sY0FBUyxHQUFZLEtBQUssQ0FBQztRQUdwQzs7Ozs7OztXQU9HO1FBQ08sYUFBUSxHQUE0QixJQUFJLFlBQVksRUFBYSxDQUFDO1FBRTVFOzs7Ozs7V0FNRztRQUNPLGVBQVUsR0FBNEIsSUFBSSxZQUFZLEVBQWEsQ0FBQztRQUU5RTs7Ozs7O1dBTUc7UUFDSCxnQkFBVyxHQUFrQjtZQUMzQixLQUFLLEVBQUU7Z0JBQ0wsSUFBSSxFQUFFLFlBQVk7YUFDbkI7WUFDRCxLQUFLLEVBQUU7Z0JBQ0wsSUFBSSxFQUFFLEdBQUc7YUFDVjtZQUNELEtBQUssRUFB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QyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQzs7d0JBRTlFLElBQUksQ0FBQyxLQUFLLEVBQUUsU0FBUyxjQUFjLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7YUFDekY7aUJBQ0Y7YUFDRixDQUFDLENBQ0g7WUFDRCxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7WUFDbEIsU0FBUyxFQUFFO2dCQUNULEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSztnQkFDbEIsSUFBSSxFQUFFLEtBQUssQ0FBQyxLQUFLO2dCQUNqQixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sSUFBSSxDQUFDO2FBQzVCO1lBQ0QsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSztTQUM5QixDQUFDO0lBQ0osQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDN0IsQ0FBQzs7K0dBNVhVLGtCQUFrQjttR0FBbEIsa0JBQWtCLHNRQWZuQjs7Ozs7Ozs7Ozs7R0FXVDsyRkFJVSxrQkFBa0I7a0JBakI5QixTQUFTOytCQUNFLFlBQVksWUFDWjs7Ozs7Ozs7Ozs7R0FXVDt3R0FhUSxLQUFLO3NCQUFiLEtBQUs7Z0JBVUcsS0FBSztzQkFBYixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFVRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFVSSxRQUFRO3NCQUFqQixNQUFNO2dCQVNHLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyIEdlbmVyYWxcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGludGVydmFsLCBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuLy8gRWNoYXJ0c1xyXG5pbXBvcnQgeyBDdXN0b21TZXJpZXNPcHRpb24sIEVDaGFydHMsIEVDaGFydHNPcHRpb24sIExpbmVTZXJpZXNPcHRpb24sIFNjYXR0ZXJTZXJpZXNPcHRpb24sIHpyZW5kZXIgfSBmcm9tICdlY2hhcnRzJztcclxuLy8gS2l3aSBDaGFydFxyXG5pbXBvcnQgeyBBRERfUE9JTlRfSU1HX09GRl9EQVJLLCBBRERfUE9JTlRfSU1HX09GRl9MSUdIVCwgQUREX1BPSU5UX0lNR19PTiB9IGZyb20gJy4vY29uc3RhbnRzL2NoYXJ0LmNvbnN0YW50cyc7XHJcbmltcG9ydCB7IENoYXJ0LCBTaGFwZSwgU2hhcGVWYXJpYW50LCBUcmFjZSwgUG9pbnQsIEJhc2VQb2ludCwgVHJhY2VUeXBlIH0gZnJvbSAnLi9tb2RlbHMvY2hhcnQubW9kZWxzJztcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdraXdpLWNoYXJ0JyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGRpdiBcclxuICAgICAgZWNoYXJ0cyBcclxuICAgICAgW29wdGlvbnNdPVwiY2hhcnRPcHRpb25cIiBcclxuICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICd3aWR0aCc6IHdpZHRoLFxyXG4gICAgICAgICdoZWlnaHQnOiBoZWlnaHRcclxuICAgICAgfVwiXHJcbiAgICAgIChjaGFydEluaXQpPVwib25DaGFydEluaXQoJGV2ZW50KVwiXHJcbiAgICAgIFt0aGVtZV09XCJkYXJrVGhlbWUgPyAnZGFyaycgOiAnJ1wiXHJcbiAgICA+PC9kaXY+IFxyXG4gIGAsXHJcbiAgc3R5bGVzOiBbYFxyXG4gIGBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBLaXdpQ2hhcnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIENoYXJ0IE9iamVjdCByZW5kZXJlZCBieSB0aGUgY2FudmFzLiBGb3IgYWxsIHRoZSBhdmFpbGFibGUgb3B0aW9ucyByZWZlciBcclxuICAgKiB0byBDaGFydCBpbnRlcmZhY2UgaW4gdGhlIG1vZGVscyBmb2xkZXIuXHJcbiAgICpcclxuICAgKiBAdHlwZSB7KENoYXJ0IHwgbnVsbCl9XHJcbiAgICogQG1lbWJlcm9mIEtpd2lDaGFydENvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGNoYXJ0OiBDaGFydCB8IG51bGwgPSBudWxsO1xyXG5cclxuICAvKipcclxuICAgKiBXaWR0aCBhbmQgSGVpZ2h0IG9mIHRoZSBjaGFydCBhcmVhLiBUaGUgZGltZW5zaW9ucyByZWZlciB0byB0aGUgZmF0aGVyIGNvbXBvbmVudCBcclxuICAgKiBpbnRvIHdoaWNoIHRoZSBraXdpLWNoYXJ0IGlzIGluc2VydGVkLiBGb3IgZXhhbXBsZSBpbiBhbiBlbXB0eSBwYWdlIHRoZSB3aWR0aC9oZWlnaHQgXHJcbiAgICogb2YgdGhlIGNoYXJ0IGNhbiB0YWtlIHRoZSB3aG9sZSBhdmFpbGFibGUgc3BhY2UgaW4gdGhlIHBhZ2UuXHJcbiAgICpcclxuICAgKiBAdHlwZSB7c3RyaW5nfVxyXG4gICAqIEBtZW1iZXJvZiBLaXdpQ2hhcnRDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSB3aWR0aDogc3RyaW5nID0gJzEwMCUnO1xyXG4gIEBJbnB1dCgpIGhlaWdodDogc3RyaW5nID0gJzQ4MHB4JztcclxuXHJcbiAgLyoqXHJcbiAgICogVGhpcyBwcm9wZXJ0eSBzaW1wbHkgYWN0aXZhdGVzIG9yIG5vdCB0aGUgZGFyayB0aGVtZSBvZiB0aGUgY2hhcnRcclxuICAgKiBkZWZpbmVkIGJ5IHRoZSBFY2hhcnRzIGxpYnJhcnkuIEluIGFkZGl0aW9uIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGNhbiBiZSBjdXN0b21cclxuICAgKiBzbyB0aGF0IHRoZSBjaGFydCBjYW4gbWF0Y2ggdGhlIGJhY2tncm91bmQgb2YgdGhlIGFwcGxpY2F0aW9uIGluIHdoaWNoIGl0J3MgdXNlZC5cclxuICAgKlxyXG4gICAqIEB0eXBlIHtib29sZWFufVxyXG4gICAqIEBtZW1iZXJvZiBLaXdpQ2hhcnRDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSBkYXJrVGhlbWU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBkYXJrVGhlbWVCYWNrZ3JvdW5kPzogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBPdXRwdXQgZXZlbnQgdXNlZCB0byBlbWl0IHRvIHRoZSBmYXRoZXIgY29tcG9uZW50IHRoZSBjb29yZGluYXRlc1xyXG4gICAqIG9mIHRoZSBwb2ludCBjbGlja2VkIGluIHRoZSBjaGFydCBhcmVhLiBUaGlzIGZ1bmN0aW9uYWxpdHkgdG8gYmUgdXNlZCBtdXN0XHJcbiAgICogaGF2ZSB0aGUgcHJvcGVydHkgXCJjbGlja1RvQWRkUG9pbnRcIiBpbiB0aGUgQ2hhcnQgb2JqZWN0IHNldCB0byB0cnVlLlxyXG4gICAqXHJcbiAgICogQHR5cGUge0V2ZW50RW1pdHRlcjxCYXNlUG9pbnQ+fVxyXG4gICAqIEBtZW1iZXJvZiBLaXdpQ2hhcnRDb21wb25lbnRcclxuICAgKi9cclxuICBAT3V0cHV0KCkgYWRkUG9pbnQ6IEV2ZW50RW1pdHRlcjxCYXNlUG9pbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxCYXNlUG9pbnQ+KCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIFdoZW4gdGhlIGN1cnNvciBob3ZlcnMgdGhlIGNoYXJ0IGFyZWEgaXQgZW1pdHMgdG8gdGhlIGZhdGhlciBjb21wb25lbnQgdGhlXHJcbiAgICogeCBhbmQgeSBjb29yZGluYXRlcyByZWxhdGl2ZSB0byB0aGUgY2hhcnQgcmVmZXJlbmNlIHN5c3RlbS5cclxuICAgKlxyXG4gICAqIEB0eXBlIHtFdmVudEVtaXR0ZXI8QmFzZVBvaW50Pn1cclxuICAgKiBAbWVtYmVyb2YgS2l3aUNoYXJ0Q29tcG9uZW50XHJcbiAgICovXHJcbiAgQE91dHB1dCgpIGNoYXJ0SG92ZXI6IEV2ZW50RW1pdHRlcjxCYXNlUG9pbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxCYXNlUG9pbnQ+KCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBvYmplY3QgdXNlZCBieSBlY2hhcnRzIHRvIGluaXRpYWxseSBjcmVhdGUgdGhlIENoYXJ0LlxyXG4gICAqIEhhcyBhIGRlZmF1bHQgY29uZmlndXJhdGlvbiB0aGF0IGNhbiBiZSB0b3RhbGx5IG92ZXJyaWRlZCB1c2luZyBzcGVjaWZpYyBwcm9wZXJ0aWVzLlxyXG4gICAqXHJcbiAgICogQHR5cGUge0VDaGFydHNPcHRpb259XHJcbiAgICogQG1lbWJlcm9mIEtpd2lDaGFydENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGNoYXJ0T3B0aW9uOiBFQ2hhcnRzT3B0aW9uID0ge1xyXG4gICAgdGl0bGU6IHtcclxuICAgICAgdGV4dDogJ0tpd2kgQ2hhcnQnXHJcbiAgICB9LFxyXG4gICAgeEF4aXM6IHtcclxuICAgICAgbmFtZTogJ1gnXHJcbiAgICB9LFxyXG4gICAgeUF4aXM6IHtcclxuICAgICAgbmFtZTogJ1knXHJcbiAgICB9LFxyXG4gICAgc2VyaWVzOiBbXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBUcmFjZVR5cGUuTElORSxcclxuICAgICAgICBkYXRhOiBbWzAsIDBdXVxyXG4gICAgICB9XHJcbiAgICBdXHJcbiAgfTtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIGluc3RhbmNlIG9mIHRoZSBDaGFydC5cclxuICAgKlxyXG4gICAqIEB0eXBlIHsoRUNoYXJ0cyB8IG51bGwpfVxyXG4gICAqIEBtZW1iZXJvZiBLaXdpQ2hhcnRDb21wb25lbnRcclxuICAgKi9cclxuICBlY2hhcnRzSW5zdGFuY2U6IEVDaGFydHMgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgLyoqXHJcbiAgICogVXNlZCB0byBwZXJmb3JtIGFjdGlvbnMgKGFzIHBvaW50IGFkZGl0aW9uIGJhc2VkIG9uIHRoZSBjdXJzb3IgcG9zaXRpb24pIG9uIHRoZSBjaGFydC5cclxuICAgKlxyXG4gICAqIEB0eXBlIHsoenJlbmRlci5aUmVuZGVyVHlwZSB8IG51bGwpfVxyXG4gICAqIEBtZW1iZXJvZiBLaXdpQ2hhcnRDb21wb25lbnRcclxuICAgKi9cclxuICB6cjogenJlbmRlci5aUmVuZGVyVHlwZSB8IG51bGwgPSBudWxsO1xyXG5cclxuICAvKipcclxuICAgKiBTdWJqZWN0IHVzZWQgdG8gdW5zdWJzY3JpYmUgb25jZSB0aGUgY29tcG9uZW50IGdldHMgZGVzdHJveWVkLlxyXG4gICAqXHJcbiAgICogQHByaXZhdGVcclxuICAgKiBAdHlwZSB7U3ViamVjdDx2b2lkPn1cclxuICAgKiBAbWVtYmVyb2YgS2l3aUNoYXJ0Q29tcG9uZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBkZXN0cm95ZWQkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogRGVmYXVsdCBudW1iZXIgb2YgZGVjaW1hbHMgdGhhdCBjYW4gaGF2ZVxyXG4gICAqIHRoZSB2YWx1ZXMgb24gdGhlIHggYW5kIHkgYXhlcy5cclxuICAgKlxyXG4gICAqIEBwcml2YXRlXHJcbiAgICogQHR5cGUge251bWJlcn1cclxuICAgKiBAbWVtYmVyb2YgS2l3aUNoYXJ0Q29tcG9uZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSByZWFkb25seSBNQVhfREVDSU1BTFM6IG51bWJlciA9IDM7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWZcclxuICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIC8qKiBcclxuICAgICAqIFRoaXMgaXMgYSBtYW51YWwgY2hhbmdlIGRldGVjdGlvbiBydW5uaW5nIGV2ZXJ5IDIwMG1zLCB0aGUgbWVtb3J5IHNob3VsZCBub3QgYmUgbXVjaCBhZmZsaWN0ZWQuXHJcbiAgICAgKiBJdCdzIG5lY2Vzc2FyeSBiZWNhdXNlIHdoZW4gaW50ZXJhY3Rpbmcgd2l0aCB0aGUgY2hhcnQgKGZvciBleGFtcGxlIGFkZFBvaW50KSxcclxuICAgICAqIEFuZ3VsYXIgbG9zZXMgdGhlIGNoYW5nZSBkZXRlY3Rpb24gYW5kIHRoZSBwb2ludCBpcyBub3QgYWRkZWQgaW4gdGhlIGNoYXJ0IGNhbnZhcy5cclxuICAgICAqL1xyXG4gICAgaW50ZXJ2YWwoMjAwKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkNoYXJ0SW5pdChlYzogRUNoYXJ0cykge1xyXG4gICAgdGhpcy5lY2hhcnRzSW5zdGFuY2UgPSBlYztcclxuICAgIHRoaXMuc2V0dXBackV2ZW50SGFuZGxlcihlYyk7XHJcbiAgfVxyXG5cclxuICBzZXR1cFpyRXZlbnRIYW5kbGVyKGVjOiBFQ2hhcnRzKSB7XHJcbiAgICB0aGlzLnpyID0gZWMuZ2V0WnIoKTtcclxuICAgIC8qKiBcclxuICAgICAqIEludGVyY2VwdHMgdGhlIGNsaWNrIGV2ZW50IG9uIHRoZSBjaGFydCAoaWYgdGhlIGNsaWNrVG9BZGRQb2ludCBwcm9wZXJ0eSBpcyBzZXQgdG8gdHJ1ZSlcclxuICAgICAqIGFuZCBlbWl0cyB0aGUgcG9pbnQgY29vcmRpbmF0ZXMgdG8gdGhlIGZhdGhlciBjb21wb25lbnQuXHJcbiAgICAgKi9cclxuICAgIHRoaXMuenIub24oJ2NsaWNrJywgcGFyYW1zID0+IHtcclxuICAgICAgbGV0IG9wdGlvbjogYW55ID0gZWMuZ2V0T3B0aW9uKCk7XHJcbiAgICAgIGxldCBhY3RpdmUgPSBvcHRpb24/LnRvb2xib3g/LlswXT8uZmVhdHVyZT8ubXlBZGRQb2ludD8uaWNvblN0YXR1cztcclxuICAgICAgaWYgKGFjdGl2ZSAmJiB0aGlzLmNoYXJ0Py5jbGlja1RvQWRkUG9pbnQpIHtcclxuICAgICAgICBjb25zdCBwb2ludEluUGl4ZWwgPSBbcGFyYW1zLm9mZnNldFgsIHBhcmFtcy5vZmZzZXRZXTtcclxuICAgICAgICBjb25zdCBwb2ludEluR3JpZCA9IGVjLmNvbnZlcnRGcm9tUGl4ZWwoJ2dyaWQnLCBwb2ludEluUGl4ZWwpO1xyXG4gICAgICAgIGlmIChlYy5jb250YWluUGl4ZWwoJ2dyaWQnLCBwb2ludEluUGl4ZWwpICYmIHBvaW50SW5HcmlkKSB7XHJcbiAgICAgICAgICBsZXQgbmV3UG9pbnQ6IHsgeDogbnVtYmVyLCB5OiBudW1iZXIgfSA9IHtcclxuICAgICAgICAgICAgeDogK3BvaW50SW5HcmlkWzBdLnRvRml4ZWQoMyksXHJcbiAgICAgICAgICAgIHk6ICtwb2ludEluR3JpZFsxXS50b0ZpeGVkKDMpXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgdGhpcy5hZGRQb2ludC5lbWl0KG5ld1BvaW50KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgLyoqIFxyXG4gICAgICogVGhpcyBpcyB1c2VkIHBlcmZvcm0gY3VzdG9tIGFjdGlvbnMgd2hlbiB0aGUgbW91c2UgaXMgaG92ZXJpbmcgdGhlIGNoYXJ0IGFyZWFcclxuICAgICAqL1xyXG4gICAgdGhpcy56ci5vbignbW91c2Vtb3ZlJywgcGFyYW1zID0+IHtcclxuICAgICAgY29uc3QgcG9pbnRJblBpeGVsID0gW3BhcmFtcy5vZmZzZXRYLCBwYXJhbXMub2Zmc2V0WV07XHJcbiAgICAgIGNvbnN0IHBvaW50SW5HcmlkID0gZWMuY29udmVydEZyb21QaXhlbCgnZ3JpZCcsIHBvaW50SW5QaXhlbCk7XHJcbiAgICAgIC8qIFxyXG4gICAgICAgKiBMb2dpYyB0byBlbWl0IHRvIHRoZSBmYXRoZXIgY29tcG9uZW50IHRoZSB4IGFuZCB5IGNkaW5hdGVzIHdoZW4gdGhlXHJcbiAgICAgICAqIGN1cnNvciBpcyBob3ZlcmluZyB0aGUgY2hhcnQgYXJlYSAuXHJcbiAgICAgICAqL1xyXG4gICAgICBpZiAoZWMuY29udGFpblBpeGVsKCdncmlkJywgcG9pbnRJblBpeGVsKSAmJiBwb2ludEluR3JpZCkge1xyXG4gICAgICAgIGxldCBuZXdQb2ludDogeyB4OiBudW1iZXIsIHk6IG51bWJlciB9ID0ge1xyXG4gICAgICAgICAgeDogK3BvaW50SW5HcmlkWzBdLnRvRml4ZWQoMyksXHJcbiAgICAgICAgICB5OiArcG9pbnRJbkdyaWRbMV0udG9GaXhlZCgzKVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5jaGFydEhvdmVyLmVtaXQobmV3UG9pbnQpO1xyXG4gICAgICB9XHJcbiAgICAgIC8qIExvZ2ljIHRvIGNoYW5nZSB0aGUgY3Vyc29yIGljb24gd2hlbiB0aGUgXCJDbGljayB0byBBZGQgUG9pbnRcIiBmZWF0dXJlIGlzIGFjdGl2ZSBhbmQgdmljZXZlcnNhLiAqL1xyXG4gICAgICBjb25zdCBvcHRpb246IGFueSA9IGVjLmdldE9wdGlvbigpO1xyXG4gICAgICBjb25zdCBhZGRQb2ludElzQWN0aXZlID0gb3B0aW9uPy50b29sYm94Py5bMF0/LmZlYXR1cmU/Lm15QWRkUG9pbnQ/Lmljb25TdGF0dXM7XHJcbiAgICAgIGlmIChhZGRQb2ludElzQWN0aXZlKSB7XHJcbiAgICAgICAgdGhpcy56cj8uc2V0Q3Vyc29yU3R5bGUoXHJcbiAgICAgICAgICBlYy5jb250YWluUGl4ZWwoJ2dyaWQnLCBwb2ludEluUGl4ZWwpID8gJ2NvcHknIDogJ2RlZmF1bHQnXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBsZXQgY2hhcnQ6IENoYXJ0ID0gY2hhbmdlc1snY2hhcnQnXT8uY3VycmVudFZhbHVlO1xyXG4gICAgaWYgKGNoYXJ0KSB7XHJcbiAgICAgIHRoaXMuY2hhcnRPcHRpb24gPSB7XHJcbiAgICAgICAgdGl0bGU6IHtcclxuICAgICAgICAgIHRleHQ6IGNoYXJ0LnRpdGxlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZ3JpZDoge1xyXG4gICAgICAgICAgd2lkdGg6ICc3MCUnXHJcbiAgICAgICAgfSxcclxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoaXMuZGFya1RoZW1lID8gdGhpcy5kYXJrVGhlbWVCYWNrZ3JvdW5kID8/ICcjMzAzMDMwJyA6ICd0cmFuc3BhcmVudCcsIHRvb2x0aXA6IHtcclxuICAgICAgICAgIGF4aXNQb2ludGVyOiB7XHJcbiAgICAgICAgICAgIHR5cGU6ICdjcm9zcycsXHJcbiAgICAgICAgICAgIGNyb3NzU3R5bGU6IHtcclxuICAgICAgICAgICAgICBjb2xvcjogJyNiZWJlYmUnXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHRvb2xib3g6IHtcclxuICAgICAgICAgIG9yaWVudDogJ2hvcml6b250YWwnLFxyXG4gICAgICAgICAgbGVmdDogJ2NlbnRlcicsXHJcbiAgICAgICAgICBmZWF0dXJlOiB7XHJcbiAgICAgICAgICAgIGRhdGFab29tOiB7XHJcbiAgICAgICAgICAgICAgYnJ1c2hTdHlsZToge1xyXG4gICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I6ICcjMDAwJyxcclxuICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoOiAxLFxyXG4gICAgICAgICAgICAgICAgYm9yZGVyVHlwZTogJ2Rhc2hlZCdcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzYXZlQXNJbWFnZToge30sXHJcbiAgICAgICAgICAgIHJlc3RvcmU6IHt9LFxyXG4gICAgICAgICAgICBteUFkZFBvaW50OiB7XHJcbiAgICAgICAgICAgICAgc2hvdzogY2hhcnQuY2xpY2tUb0FkZFBvaW50ID8/IGZhbHNlLFxyXG4gICAgICAgICAgICAgIHRpdGxlOiBjaGFydC5hZGRQb2ludEN1c3RvbU5hbWUgPz8gJ0FkZCBQb2ludCcsXHJcbiAgICAgICAgICAgICAgaWNvbjogdGhpcy5kYXJrVGhlbWUgPyBBRERfUE9JTlRfSU1HX09GRl9EQVJLIDogQUREX1BPSU5UX0lNR19PRkZfTElHSFQsXHJcbiAgICAgICAgICAgICAgaWNvblN0YXR1czogZmFsc2UsXHJcbiAgICAgICAgICAgICAgb25jbGljazogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IG9wdGlvbjogYW55ID0gdGhpcy5lY2hhcnRzSW5zdGFuY2U/LmdldE9wdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHN0YXR1cyA9IG9wdGlvbi50b29sYm94WzBdLmZlYXR1cmUubXlBZGRQb2ludC5pY29uU3RhdHVzO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lY2hhcnRzSW5zdGFuY2U/LnNldE9wdGlvbih7XHJcbiAgICAgICAgICAgICAgICAgIHRvb2xib3g6IHtcclxuICAgICAgICAgICAgICAgICAgICBmZWF0dXJlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBteUFkZFBvaW50OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb25TdGF0dXM6ICFzdGF0dXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246ICFzdGF0dXMgPyBBRERfUE9JTlRfSU1HX09OIDogdGhpcy5kYXJrVGhlbWUgPyBBRERfUE9JTlRfSU1HX09GRl9EQVJLIDogQUREX1BPSU5UX0lNR19PRkZfTElHSFRcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIGRhdGFab29tOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHR5cGU6ICdpbnNpZGUnLFxyXG4gICAgICAgICAgICB4QXhpc0luZGV4OiBbMF0sXHJcbiAgICAgICAgICAgIHRocm90dGxlOiAwLFxyXG4gICAgICAgICAgICBmaWx0ZXJNb2RlOiAnbm9uZScsXHJcbiAgICAgICAgICAgIGRpc2FibGVkOiAhY2hhcnQuc2Nyb2xsVG9ab29tID8/IHRydWVcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHR5cGU6ICdpbnNpZGUnLFxyXG4gICAgICAgICAgICB5QXhpc0luZGV4OiBbMF0sXHJcbiAgICAgICAgICAgIHRocm90dGxlOiAwLFxyXG4gICAgICAgICAgICBmaWx0ZXJNb2RlOiAnbm9uZScsXHJcbiAgICAgICAgICAgIGRpc2FibGVkOiAhY2hhcnQuc2Nyb2xsVG9ab29tID8/IHRydWVcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgXSxcclxuICAgICAgICBsZWdlbmQ6IHtcclxuICAgICAgICAgIGluYWN0aXZlQ29sb3I6IHRoaXMuZGFya1RoZW1lID8gJyM4YjhiOGInIDogJyNjY2MnLFxyXG4gICAgICAgICAgZGF0YTogY2hhcnQuc2hhcGVzLm1hcChcclxuICAgICAgICAgICAgKHNoYXBlOiBTaGFwZSkgPT4gKHtcclxuICAgICAgICAgICAgICBuYW1lOiBzaGFwZS5uYW1lLFxyXG4gICAgICAgICAgICAgIGljb246ICdjaXJjbGUnXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICApLFxyXG4gICAgICAgICAgc2VsZWN0ZWQ6IGNoYXJ0LnNoYXBlcy5yZWR1Y2UoKGFjY3VtdWxhdG9yLCBzaGFwZTogU2hhcGUpID0+ICh7IC4uLmFjY3VtdWxhdG9yLCBbc2hhcGUubmFtZSBhcyBzdHJpbmddOiBzaGFwZS5zZWxlY3RlZEJ5RGVmYXVsdCA/PyB0cnVlIH0pLCB7fSksXHJcbiAgICAgICAgICBzaG93OiBjaGFydC5zaG93TGVnZW5kID8/IGZhbHNlLFxyXG4gICAgICAgICAgb3JpZW50OiAndmVydGljYWwnLFxyXG4gICAgICAgICAgbGVmdDogJ3JpZ2h0JyxcclxuICAgICAgICAgIHBhZGRpbmc6IFs2MCwgMjBdLFxyXG4gICAgICAgICAgdHlwZTogJ3Njcm9sbCcsXHJcbiAgICAgICAgICB0ZXh0U3R5bGU6IHtcclxuICAgICAgICAgICAgd2lkdGg6IDEyMCxcclxuICAgICAgICAgICAgZm9udFdlaWdodDogJ2JvbGQnLFxyXG4gICAgICAgICAgICBvdmVyZmxvdzogJ2JyZWFrJ1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgeEF4aXM6IHtcclxuICAgICAgICAgIHR5cGU6IGNoYXJ0LnhBeGlzVHlwZSxcclxuICAgICAgICAgIG5hbWU6IGNoYXJ0LnhBeGlzVW9tID8gYCR7Y2hhcnQueEF4aXNOYW1lfSBbICR7Y2hhcnQueEF4aXNVb219IF1gIDogY2hhcnQueEF4aXNOYW1lLFxyXG4gICAgICAgICAgbmFtZUxvY2F0aW9uOiAnbWlkZGxlJyxcclxuICAgICAgICAgIG5hbWVHYXA6IDMwLFxyXG4gICAgICAgICAgc3BsaXRMaW5lOiB7XHJcbiAgICAgICAgICAgIHNob3c6IGNoYXJ0LnNob3dHcmlkID8/IHRydWUsXHJcbiAgICAgICAgICAgIGxpbmVTdHlsZToge1xyXG4gICAgICAgICAgICAgIGNvbG9yOiB0aGlzLmRhcmtUaGVtZSA/ICcjNTk1OTU5JyA6ICcjY2NjJ1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgbWluOiBjaGFydC54TWluPy50b0ZpeGVkKGNoYXJ0Lm1heEF4ZXNEZWNpbWFscyA/PyB0aGlzLk1BWF9ERUNJTUFMUyksXHJcbiAgICAgICAgICBtYXg6IGNoYXJ0LnhNYXg/LnRvRml4ZWQoY2hhcnQubWF4QXhlc0RlY2ltYWxzID8/IHRoaXMuTUFYX0RFQ0lNQUxTKSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHlBeGlzOiB7XHJcbiAgICAgICAgICB0eXBlOiBjaGFydC55QXhpc1R5cGUsXHJcbiAgICAgICAgICBuYW1lOiBjaGFydC55QXhpc1VvbSA/IGAke2NoYXJ0LnlBeGlzTmFtZX0gWyAke2NoYXJ0LnlBeGlzVW9tfSBdYCA6IGNoYXJ0LnlBeGlzTmFtZSxcclxuICAgICAgICAgIG5hbWVMb2NhdGlvbjogJ21pZGRsZScsXHJcbiAgICAgICAgICBuYW1lR2FwOiA1MCxcclxuICAgICAgICAgIHNwbGl0TGluZToge1xyXG4gICAgICAgICAgICBzaG93OiBjaGFydC5zaG93R3JpZCA/PyB0cnVlLFxyXG4gICAgICAgICAgICBsaW5lU3R5bGU6IHtcclxuICAgICAgICAgICAgICBjb2xvcjogdGhpcy5kYXJrVGhlbWUgPyAnIzU5NTk1OScgOiAnI2NjYydcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIG1pbjogY2hhcnQueU1pbj8udG9GaXhlZChjaGFydC5tYXhBeGVzRGVjaW1hbHMgPz8gdGhpcy5NQVhfREVDSU1BTFMpLFxyXG4gICAgICAgICAgbWF4OiBjaGFydC55TWF4Py50b0ZpeGVkKGNoYXJ0Lm1heEF4ZXNEZWNpbWFscyA/PyB0aGlzLk1BWF9ERUNJTUFMUyksXHJcbiAgICAgICAgfSxcclxuICAgICAgICBzZXJpZXM6IHRoaXMuY3JlYXRlU2VyaWVzKGNoYXJ0LnNoYXBlcyksXHJcbiAgICAgICAgYW5pbWF0aW9uOiBjaGFydC5oYXNBbmltYXRpb25zLFxyXG4gICAgICAgIGFuaW1hdGlvbkR1cmF0aW9uOiBjaGFydC5hbmltYXRpb25EdXJhdGlvbiA/PyA1MDAsXHJcbiAgICAgICAgYW5pbWF0aW9uRWFzaW5nOiAnY3ViaWNPdXQnXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjcmVhdGVTZXJpZXMoc2hhcGVzOiBTaGFwZVtdKTogQXJyYXk8TGluZVNlcmllc09wdGlvbiB8IEN1c3RvbVNlcmllc09wdGlvbiB8IFNjYXR0ZXJTZXJpZXNPcHRpb24+IHtcclxuICAgIGxldCBzZXJpZXM6IEFycmF5PExpbmVTZXJpZXNPcHRpb24gfCBDdXN0b21TZXJpZXNPcHRpb24gfCBTY2F0dGVyU2VyaWVzT3B0aW9uPiA9IFtdO1xyXG4gICAgc2hhcGVzLmZvckVhY2goXHJcbiAgICAgIChzaGFwZTogU2hhcGUpID0+IHtcclxuICAgICAgICBzd2l0Y2ggKHNoYXBlLnZhcmlhbnQpIHtcclxuICAgICAgICAgIGNhc2UgU2hhcGVWYXJpYW50LlRSQUNFOlxyXG4gICAgICAgICAgICBzZXJpZXMucHVzaCh0aGlzLmNyZWF0ZVRyYWNlKHNoYXBlIGFzIFRyYWNlKSlcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgICByZXR1cm4gc2VyaWVzO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlVHJhY2UodHJhY2U6IFRyYWNlKTogTGluZVNlcmllc09wdGlvbiB8IFNjYXR0ZXJTZXJpZXNPcHRpb24ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdHlwZTogdHJhY2UudHlwZSxcclxuICAgICAgbmFtZTogdHJhY2UubmFtZSxcclxuICAgICAgZGF0YTogdHJhY2UucG9pbnRzLm1hcChcclxuICAgICAgICAocG9pbnQ6IFBvaW50KSA9PiAoe1xyXG4gICAgICAgICAgdmFsdWU6IFtwb2ludC54LCBwb2ludC55XSxcclxuICAgICAgICAgIHN5bWJvbDogcG9pbnQuc3ltYm9sID8/ICdjaXJjbGUnLFxyXG4gICAgICAgICAgbmFtZTogcG9pbnQubmFtZSxcclxuICAgICAgICAgIHN5bWJvbFNpemU6IHBvaW50LnN5bWJvbFNpemUgPz8gMixcclxuICAgICAgICAgIGl0ZW1TdHlsZToge1xyXG4gICAgICAgICAgICBjb2xvcjogcG9pbnQuY29sb3JcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBlbXBoYXNpczoge1xyXG4gICAgICAgICAgICBkaXNhYmxlZDogdHJ1ZVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGxhYmVsOiB7XHJcbiAgICAgICAgICAgIHNob3c6IHRydWUsXHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnYm90dG9tJyxcclxuICAgICAgICAgICAgYWxpZ246ICdsZWZ0JyxcclxuICAgICAgICAgICAgdmVydGljYWxBbGlnbjogJ2JvdHRvbScsXHJcbiAgICAgICAgICAgIGZvcm1hdHRlcjogKCkgPT4gYCR7cG9pbnQubmFtZSA/PyAnJ31gLFxyXG4gICAgICAgICAgICBmb250U2l6ZTogMTMsXHJcbiAgICAgICAgICAgIHBhZGRpbmc6IFswLCAwLCAwLCAxMF0sXHJcbiAgICAgICAgICAgIHdpZHRoOiAxMDAsXHJcbiAgICAgICAgICAgIG92ZXJmbG93OiAndHJ1bmNhdGUnLFxyXG4gICAgICAgICAgICBlbGxpcHNpczogJy4uLicsXHJcbiAgICAgICAgICAgIGZvbnRXZWlnaHQ6ICdib2xkJyxcclxuICAgICAgICAgICAgY29sb3I6IHRoaXMuZGFya1RoZW1lID8gJyNmZmYnIDogJyMwMDAnXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgdG9vbHRpcDoge1xyXG4gICAgICAgICAgICBmb3JtYXR0ZXI6ICh7IHZhbHVlIH06IHsgdmFsdWU6IG51bWJlcltdIH0pID0+IGBcclxuICAgICAgICAgICAgICA8c3Ryb25nPiR7dGhpcy5jaGFydD8ueEF4aXNOYW1lfTo8L3N0cm9uZz4gJHt2YWx1ZVswXS50b0ZpeGVkKDMpLnJlcGxhY2UoL1suLF0wMDAkLywgXCJcIil9XHJcbiAgICAgICAgICAgICAgPGJyPlxyXG4gICAgICAgICAgICAgIDxzdHJvbmc+JHt0aGlzLmNoYXJ0Py55QXhpc05hbWV9Ojwvc3Ryb25nPiAke3ZhbHVlWzFdLnRvRml4ZWQoMykucmVwbGFjZSgvWy4sXTAwMCQvLCBcIlwiKX1cclxuICAgICAgICAgICAgYFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICksXHJcbiAgICAgIGNvbG9yOiB0cmFjZS5jb2xvcixcclxuICAgICAgbGluZVN0eWxlOiB7XHJcbiAgICAgICAgd2lkdGg6IHRyYWNlLndpZHRoLFxyXG4gICAgICAgIHR5cGU6IHRyYWNlLnN0eWxlLFxyXG4gICAgICAgIG9wYWNpdHk6IHRyYWNlLm9wYWNpdHkgPz8gMVxyXG4gICAgICB9LFxyXG4gICAgICBzbW9vdGg6IHRyYWNlLnNtb290aCA/PyBmYWxzZVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5kZXN0cm95ZWQkLm5leHQoKTtcclxuICAgIHRoaXMuZGVzdHJveWVkJC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
|
|
@@ -21,11 +21,11 @@ echarts.use([
|
|
|
21
21
|
]);
|
|
22
22
|
export class KiwiChartModule {
|
|
23
23
|
}
|
|
24
|
-
KiwiChartModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
25
|
-
KiwiChartModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
26
|
-
KiwiChartModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
24
|
+
KiwiChartModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: KiwiChartModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
25
|
+
KiwiChartModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.1", ngImport: i0, type: KiwiChartModule, declarations: [KiwiChartComponent], imports: [CommonModule, i1.NgxEchartsModule], exports: [KiwiChartComponent] });
|
|
26
|
+
KiwiChartModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: KiwiChartModule, imports: [CommonModule,
|
|
27
27
|
NgxEchartsModule.forRoot({ echarts })] });
|
|
28
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
28
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: KiwiChartModule, decorators: [{
|
|
29
29
|
type: NgModule,
|
|
30
30
|
args: [{
|
|
31
31
|
declarations: [
|
|
@@ -40,4 +40,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
40
40
|
]
|
|
41
41
|
}]
|
|
42
42
|
}] });
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l3aWJpdC9jaGFydC9zcmMvbGliL2NoYXJ0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDL0MsT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFDeEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDM0ksT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7OztBQUNuRCxPQUFPLENBQUMsR0FBRyxDQUFDO0lBQ1YsY0FBYztJQUNkLGdCQUFnQjtJQUNoQixhQUFhO0lBQ2IsU0FBUztJQUNULGNBQWM7SUFDZCxlQUFlO0lBQ2YsaUJBQWlCO0lBQ2pCLGdCQUFnQjtJQUNoQixZQUFZO0NBQ2IsQ0FBQyxDQUFDO0FBZUgsTUFBTSxPQUFPLGVBQWU7OzRHQUFmLGVBQWU7NkdBQWYsZUFBZSxpQkFWeEIsa0JBQWtCLGFBR2xCLFlBQVksa0NBSVosa0JBQWtCOzZHQUdULGVBQWUsWUFQeEIsWUFBWTtRQUNaLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDOzJGQU01QixlQUFlO2tCQVozQixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixrQkFBa0I7cUJBQ25CO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDO3FCQUN0QztvQkFDRCxPQUFPLEVBQUU7d0JBQ1Asa0JBQWtCO3FCQUNuQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEtpd2lDaGFydENvbXBvbmVudCB9IGZyb20gJy4vY2hhcnQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTmd4RWNoYXJ0c01vZHVsZSB9IGZyb20gJ25neC1lY2hhcnRzJztcclxuaW1wb3J0ICogYXMgZWNoYXJ0cyBmcm9tICdlY2hhcnRzL2NvcmUnO1xyXG5pbXBvcnQgeyBUaXRsZUNvbXBvbmVudCwgVG9vbHRpcENvbXBvbmVudCwgR3JpZENvbXBvbmVudCwgTGVnZW5kQ29tcG9uZW50LCBEYXRhWm9vbUNvbXBvbmVudCwgVG9vbGJveENvbXBvbmVudCB9IGZyb20gJ2VjaGFydHMvY29tcG9uZW50cyc7XHJcbmltcG9ydCB7IExpbmVDaGFydCwgU2NhdHRlckNoYXJ0IH0gZnJvbSAnZWNoYXJ0cy9jaGFydHMnO1xyXG5pbXBvcnQgeyBDYW52YXNSZW5kZXJlciB9IGZyb20gJ2VjaGFydHMvcmVuZGVyZXJzJztcclxuZWNoYXJ0cy51c2UoW1xyXG4gIFRpdGxlQ29tcG9uZW50LFxyXG4gIFRvb2x0aXBDb21wb25lbnQsXHJcbiAgR3JpZENvbXBvbmVudCxcclxuICBMaW5lQ2hhcnQsXHJcbiAgQ2FudmFzUmVuZGVyZXIsXHJcbiAgTGVnZW5kQ29tcG9uZW50LFxyXG4gIERhdGFab29tQ29tcG9uZW50LFxyXG4gIFRvb2xib3hDb21wb25lbnQsXHJcbiAgU2NhdHRlckNoYXJ0XHJcbl0pO1xyXG5cclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICBLaXdpQ2hhcnRDb21wb25lbnRcclxuICBdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIE5neEVjaGFydHNNb2R1bGUuZm9yUm9vdCh7IGVjaGFydHMgfSlcclxuICBdLFxyXG4gIGV4cG9ydHM6IFtcclxuICAgIEtpd2lDaGFydENvbXBvbmVudFxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEtpd2lDaGFydE1vZHVsZSB7IH1cclxuIl19
|
|
@@ -42,6 +42,7 @@ var ShapeVariant;
|
|
|
42
42
|
ShapeVariant[ShapeVariant["TRACE"] = 0] = "TRACE";
|
|
43
43
|
})(ShapeVariant || (ShapeVariant = {}));
|
|
44
44
|
|
|
45
|
+
// Angular General
|
|
45
46
|
class KiwiChartComponent {
|
|
46
47
|
constructor(cd) {
|
|
47
48
|
this.cd = cd;
|
|
@@ -91,11 +92,28 @@ class KiwiChartComponent {
|
|
|
91
92
|
this.chartHover = new EventEmitter();
|
|
92
93
|
/**
|
|
93
94
|
* The object used by echarts to initially create the Chart.
|
|
95
|
+
* Has a default configuration that can be totally overrided using specific properties.
|
|
94
96
|
*
|
|
95
97
|
* @type {EChartsOption}
|
|
96
98
|
* @memberof KiwiChartComponent
|
|
97
99
|
*/
|
|
98
|
-
this.chartOption = {
|
|
100
|
+
this.chartOption = {
|
|
101
|
+
title: {
|
|
102
|
+
text: 'Kiwi Chart'
|
|
103
|
+
},
|
|
104
|
+
xAxis: {
|
|
105
|
+
name: 'X'
|
|
106
|
+
},
|
|
107
|
+
yAxis: {
|
|
108
|
+
name: 'Y'
|
|
109
|
+
},
|
|
110
|
+
series: [
|
|
111
|
+
{
|
|
112
|
+
type: TraceType.LINE,
|
|
113
|
+
data: [[0, 0]]
|
|
114
|
+
}
|
|
115
|
+
]
|
|
116
|
+
};
|
|
99
117
|
/**
|
|
100
118
|
* The instance of the Chart.
|
|
101
119
|
*
|
|
@@ -136,8 +154,10 @@ class KiwiChartComponent {
|
|
|
136
154
|
*/
|
|
137
155
|
interval(200)
|
|
138
156
|
.pipe(takeUntil(this.destroyed$))
|
|
139
|
-
.subscribe(
|
|
140
|
-
|
|
157
|
+
.subscribe({
|
|
158
|
+
next: () => {
|
|
159
|
+
this.cd.detectChanges();
|
|
160
|
+
}
|
|
141
161
|
});
|
|
142
162
|
}
|
|
143
163
|
onChartInit(ec) {
|
|
@@ -387,8 +407,8 @@ class KiwiChartComponent {
|
|
|
387
407
|
this.destroyed$.complete();
|
|
388
408
|
}
|
|
389
409
|
}
|
|
390
|
-
KiwiChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
391
|
-
KiwiChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
410
|
+
KiwiChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: KiwiChartComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
411
|
+
KiwiChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.1", type: KiwiChartComponent, selector: "kiwi-chart", inputs: { chart: "chart", width: "width", height: "height", darkTheme: "darkTheme", darkThemeBackground: "darkThemeBackground" }, outputs: { addPoint: "addPoint", chartHover: "chartHover" }, usesOnChanges: true, ngImport: i0, template: `
|
|
392
412
|
<div
|
|
393
413
|
echarts
|
|
394
414
|
[options]="chartOption"
|
|
@@ -400,7 +420,7 @@ KiwiChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", ver
|
|
|
400
420
|
[theme]="darkTheme ? 'dark' : ''"
|
|
401
421
|
></div>
|
|
402
422
|
`, isInline: true, styles: [""], dependencies: [{ kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.NgxEchartsDirective, selector: "echarts, [echarts]", inputs: ["options", "theme", "loading", "initOpts", "merge", "autoResize", "loadingType", "loadingOpts"], outputs: ["chartInit", "optionsError", "chartClick", "chartDblClick", "chartMouseDown", "chartMouseMove", "chartMouseUp", "chartMouseOver", "chartMouseOut", "chartGlobalOut", "chartContextMenu", "chartLegendSelectChanged", "chartLegendSelected", "chartLegendUnselected", "chartLegendScroll", "chartDataZoom", "chartDataRangeSelected", "chartTimelineChanged", "chartTimelinePlayChanged", "chartRestore", "chartDataViewChanged", "chartMagicTypeChanged", "chartPieSelectChanged", "chartPieSelected", "chartPieUnselected", "chartMapSelectChanged", "chartMapSelected", "chartMapUnselected", "chartAxisAreaSelected", "chartFocusNodeAdjacency", "chartUnfocusNodeAdjacency", "chartBrush", "chartBrushEnd", "chartBrushSelected", "chartRendered", "chartFinished"], exportAs: ["echarts"] }] });
|
|
403
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
423
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: KiwiChartComponent, decorators: [{
|
|
404
424
|
type: Component,
|
|
405
425
|
args: [{ selector: 'kiwi-chart', template: `
|
|
406
426
|
<div
|
|
@@ -443,11 +463,11 @@ echarts.use([
|
|
|
443
463
|
]);
|
|
444
464
|
class KiwiChartModule {
|
|
445
465
|
}
|
|
446
|
-
KiwiChartModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
447
|
-
KiwiChartModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
448
|
-
KiwiChartModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
466
|
+
KiwiChartModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: KiwiChartModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
467
|
+
KiwiChartModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.1", ngImport: i0, type: KiwiChartModule, declarations: [KiwiChartComponent], imports: [CommonModule, i2.NgxEchartsModule], exports: [KiwiChartComponent] });
|
|
468
|
+
KiwiChartModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: KiwiChartModule, imports: [CommonModule,
|
|
449
469
|
NgxEchartsModule.forRoot({ echarts })] });
|
|
450
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
470
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: KiwiChartModule, decorators: [{
|
|
451
471
|
type: NgModule,
|
|
452
472
|
args: [{
|
|
453
473
|
declarations: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kiwibit-chart.mjs","sources":["../../../../projects/kiwibit/chart/src/lib/constants/chart.constants.ts","../../../../projects/kiwibit/chart/src/lib/models/chart.models.ts","../../../../projects/kiwibit/chart/src/lib/chart.component.ts","../../../../projects/kiwibit/chart/src/lib/chart.module.ts","../../../../projects/kiwibit/chart/src/public-api.ts","../../../../projects/kiwibit/chart/src/kiwibit-chart.ts"],"sourcesContent":["export const ADD_POINT_IMG_OFF_LIGHT = \"image://data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABmJLR0QA/wD/AP+gvaeTAAADkUlEQVR4nO2bz0sUYRjHv8/otviDGDuWrhKdskBaQZi57MmLgVpIkJ06bH9AEdF/kF46dEg726liBSGwBEFnTm0oaF3s4lhdh1BhNuTpsDPLu+MvmHXm0ZzP6X2feWfn+3x33nf3fXlfIOV8Q0dd7O3tvaDr+igzDxPRLQCdANqSkRaZHQBbzPyViEqu65bW19crhzU+1ADDMO4S0QSAq3GoTJAfAJ5alvXhoItN4cDY2FiTruuTRPQSQEfc6hLgEoB7uVyu3XGcBQCsXtxngJ/846TUJYjR3d3dsrm5+VkN1nUB/7V/F7rRI6IpAG9bW1vX5ufnd+JW2giDg4Ntu7u7N5h5HEARQFa9rmna6NLSUimo1wzwB7zvqO/zP4loaHl5eTVu4XFgGEYfEc0BuKKEN1zX7Q0GRi2I6ro+ivrkvbOcPADYtr3CzLcBeEr4WkdHx3BQqRnAzMPqzUQ0dZaTD7BtewXAGzWm5lozgIjyaqO9vb2Z2NUlRziX/qCgKcHLaotsNvstTkVJkslk1kKh2pigGtCutlhcXNyOU1SSHJBLLVcN55xmqQcbhjFERNMA9gA8sizro4QOsTdA07TXqI47XQCmxHRIPZiZO5Vql5SOcz8GpAZIC5AmNUBagDSpAdICpEkNkBYgTWqAtABpUgOkBUgTeT3An89PoX7JOTKmafLxrfZDRFvMXIy6nhD5DfDn8yeSfCP40+rI6wnnvgtENoCZi0S0dZJiIuIQUTHqzZHHAL/PRV7JCfd5y7KO3KsQF2kXkBYgTWqAtABpUgOkBUiTGiAtQJrUAGkB0qQGSAuQJjVA6sGhqbQjpUNyg0SwntDQfL5RxPYINbqecFKkY4BSrttLVygU2vGfMDAwcDEU+hMUVAN+qS08z7sep6gkaW5uDufyOyiom6XLagtN0x7ErCtJxkP1L0FB3SxdCjUqGobRF6eqJPBzqPuVYeZarjUDXNctoXrAKCBLRHNn2QTlwMQFJbzhed5sUKlbijZN8w6A96HPqQCYBjCTyWTWTvsm6kKh0F6pVG4S0X1Uv3k1eTDziG3bBxsAAKZpTgJ4ErtSAZj5hW3bz9TYvlNjjuMs5HK5VgBmYsoSgIgmLMt6juOOzQFgx3E+9fT0rDJzP6rn7s4yG8z80LKsVwglDxxzdDafz2daWlpG/DM2eVSPzp72P0jbALYAlJm55HnebLlc/istKuW08g8wjAev/BoR3wAAAABJRU5ErkJggg==\";\r\nexport const ADD_POINT_IMG_OFF_DARK = \"image://data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABmJLR0QA/wD/AP+gvaeTAAADgUlEQVR4nO2bz04TURTGvzNtaQOVB1BgYVhZDbSUDixZYwLoTlzXB5CI8QUM4ANQXeOCqCkJiUuWtpNCIaG6gRWoeyx/CmGOC5hyZ/izmDJzgM5vdefMafudr/femd65BQKaG7rqZKVSadndORhjohGAUwB1AGjzSZtbdgHeBmiFmPNt7bF8IpE4vCz5UgMKhZXnBJoG+KE3On2CsEkmv8kM9n27+LSD+fn5UFdX9xQBr71X5x8E/tCvpyaJyFTjmjPxLhYPAAyaMAqr751xWw846fb44sioMSPHbH5ubY2s9/T07HqstSHW1tba9vaOHmuaNg4gC0bUlkA0puvJfP3QalQqlZbqv8NfjjH/G4RhXU+tea7cAwyj3MsmLwJ4oIQ34veiCWtirA+B3Z2DMVvxhNptLh4AMpnkKmn0FISaEu6uVg9HrIO6ASeXujOYkbvNxVtkMslVmPhkj5rnDQDQp6aETG3OU2U+wsT2Whhpq6kacF/NqdYiP72V5R/7+7F1e4Tqc4JqQFxNGRpKVD1V5SMX1FKv9dx9QLMRlvrgYrE8TMwfGTjWGK/6B1PfJXTI9QDmWT6ZdzpNQk5KhuQQ6FDanVIimn4OCAyQFiBNYIC0AGkCA6QFSBMYIC1AmsAAaQHSBAZIC5DG9XpAsVgeBnMO9iVn1xQLK+zypdsaI+t2PcF9D2CexTUV3yAdjawnNP0QcG2AxsgC2L5GLW7ZIpOzbl/seg44HXOuV3KcY14fSF25V8ErgiEgLUCawABpAdIEBkgLkCYwQFqANIEB0gKkCQyQFiBNYIDgZ6s/pbekRIgZoKwnNPR7vlHE9gg1up5wXQRzgNK27aVbWqrEcUcoFArtjtCO1VAN+KNmxKNHj7wU5S8RRy3812qpBiyrKWbIfOmpJh8hpnF7ACWrqZ0lcR52soZR7vVWmvcYRrkXBNtVhpnqtdYNaGuP5UHYPMtClE1evM0mKH+YaFHCG+GwuWAd2JaijR/Lz5joq+N9DsH4yMRz+/ux9Zu+iXppqRJvba09gYkXp9+8WjwYNDowkLzYAAAwCsszDJrwQav/EKZ0PfVWDZ27D+jXU5MAz/inyieYpjOZ5Dtn+NKnMcVieRTMMwC6PRXmPRsMmlC7vcqVj6NKpVLk+Dg0CpgjzNRHJxucb/oNUpWBbSJeZqZ8OGwupNPpI2lRATeV/+HNFJvPZJXuAAAAAElFTkSuQmCC\";\r\nexport const ADD_POINT_IMG_ON = \"image://data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABmJLR0QA/wD/AP+gvaeTAAADjUlEQVR4nO2by08TURTGvzNAK49oDCsRNqbFxPogtsQ/AhNAowsxLksTlxIxrtwZwJUJsa07E1wQNSUh8X+wrQFDNSklMQGVjRgMj7TIHBcww50WWEyZOTzmt7pz7pn2O1/n3pne3gIeJxvarzM0nvM1LPl7GegGcB3gVgCN7kizzSpACwA+E3NqrbmUyt0NlfZK3tOAyKv8bRANA7jghEoXmSPw43Ss/cNunRUG3Bnnmu+/C0NMeOS8Nvdg8IvsYnAQz0hX41p54nEsHgAINBA5N/e8Mq6wfdm/K8spElNC1/S3G/XrM18eXFt1VGmVXH0z3Vi3Xn+ZGH0ARQH41X4m6s32B1LGsWlAaDznq1/yfYMy5hn4UQO961Ps4rQb4g+azmS+Q9dpkoDzZpBQWD9bChkTozkEGpb8vbBOeMWjXDwApKPtU5rGNwEUzSAjcOqPr9s41Hbi6FZPJqbEUS7eIB1tnwLhtSXIqDQA4LA1Z3PMYW2uoW/CUguBIkZbvQu0qEnr+r+vDutyjSKXZqwRNucE1YAmNSX3MLTiqCoX2aUWs9aK54CTRq3UG4cT+S7SKQnCJjTqz0QDHyV0iF0BxBQHoQVAG3ROSOmQHAKtSrtNSsSJnwM8A6QFSOMZIC1AGs8AaQHSeAZIC5DGM0BagDSeAdICpLG9HhBO5LvAlLAsOVdBJD7LNk9dgEZRu+sJtq8AYoofVPFV0lrNesKJHwL2DdAoCmDh4KTYZp62fgKzhe05YHvM2V7JKR/zmVhw370KTuENAWkB0ngGSAuQxjNAWoA0ngHSAqTxDJAWII1ngLQAaTwDBN9b/So9LyVCzoCd9YSqvs9Xi9geoWrXEw4Kbw5Q2pa9dKHRXBOOCTdezp4uC/01GqoBP9WMeq32kpOi3GSjFmW10C+jpRhAWWsO3XdUlYtoNehTjxmcMfuMBjGnYIGincl8h9PinKYzme8Aw3KXIcCs1TRgrbmUAjCn5Pl1nSaPsgnGHyYA+MwgocC0PLFzqJ4Qz99i0Puy1ymBkNQ3MVbk0sxh30QdGs01Ndb4ruiEe9ufvK8spScTC+5uAACE4/kRAg04LVQCAobSseATNVbxHJBdDA4CNOKeLJcgGk4vBp5WhPfKDycKPQQeASPgrDKHIRTAGFAve2v3PoQTmTrgTA8Y3QSEsbXB+bA/IK0AWGAgS0CKaXki2x/ZkBblcVj5D1vBAfS1aXiGAAAAAElFTkSuQmCC\";","/**\r\n * Interface to define the Chart model.\r\n *\r\n * @export\r\n * @interface Chart\r\n */\r\nexport interface Chart {\r\n title: string;\r\n showLegend?: boolean;\r\n xAxisType: AxisType;\r\n xAxisName: string;\r\n xAxisUom?: string;\r\n xMin?: number;\r\n xMax?: number;\r\n yAxisType: AxisType;\r\n yAxisName: string;\r\n yAxisUom?: string;\r\n yMin?: number;\r\n yMax?: number;\r\n /**\r\n * The maximum decimals that can have the values on the x and y axes.\r\n * If omitted the default is 3 decimals.\r\n *\r\n * @type {number}\r\n * @memberof Chart\r\n */\r\n maxAxesDecimals?: number;\r\n /**\r\n * If the chart should have rendering animations.\r\n *\r\n * @type {boolean}\r\n * @memberof Chart\r\n */\r\n hasAnimations?: boolean;\r\n /**\r\n * How long the animation should last.\r\n * Expressed in milliseconds. If omitted the Default is 500 ms.\r\n *\r\n * @type {number}\r\n * @memberof Chart\r\n */\r\n animationDuration?: number;\r\n /**\r\n * The list of Shapes that the chart must render.\r\n * Each Shape corrisponds to a single chart component.\r\n *\r\n * @type {Shape[]}\r\n * @memberof Chart\r\n */\r\n shapes: Shape[];\r\n /**\r\n * Adds interaction with the chart, so that when clicking\r\n * everywhere in the chart area a point gets added and it's coordinate are \r\n * emitted with an event to the parent component.\r\n *\r\n * @type {boolean}\r\n * @memberof Chart\r\n */\r\n clickToAddPoint?: boolean;\r\n /**\r\n * Custom name for the \"clickToAddPoint\" event related button. \r\n *\r\n * @type {string}\r\n * @memberof Chart\r\n */\r\n addPointCustomName?: string;\r\n /**\r\n * Adds the possibility to use the scroll \r\n * to zoom in/out the chart area.\r\n *\r\n * @type {boolean}\r\n * @memberof Chart\r\n */\r\n scrollToZoom?: boolean;\r\n /**\r\n * Tells the chart to render or not the grid lines.\r\n *\r\n * @type {boolean}\r\n * @memberof Chart\r\n */\r\n showGrid?: boolean;\r\n}\r\n\r\nexport type Shape = Trace;\r\n\r\nexport interface Trace {\r\n name?: string;\r\n /**\r\n * The variant of the Shape, must be of type Trace.\r\n *\r\n * @type {ShapeVariant}\r\n * @memberof Trace\r\n */\r\n variant: ShapeVariant;\r\n color?: string;\r\n /**\r\n * The type of the Trace drawn by the chart.\r\n * Can be a line or a scatter. \r\n *\r\n * @type {TraceType}\r\n * @memberof Trace\r\n */\r\n type: TraceType;\r\n width?: number;\r\n /**\r\n * The list of points that define the Trace.\r\n *\r\n * @type {Point[]}\r\n * @memberof Trace\r\n */\r\n points: Point[];\r\n /**\r\n * Whether to show a smooth curve or a segmented curve.\r\n *\r\n * @type {boolean}\r\n * @memberof Trace\r\n */\r\n smooth?: boolean;\r\n /**\r\n * The style of the Trace.\r\n * Can be solid, dashed or dotted.\r\n *\r\n * @type {TraceStyle}\r\n * @memberof Trace\r\n */\r\n style?: TraceStyle;\r\n /**\r\n * Option to make the Trace selected/deselected by default.\r\n * A deselected Trace is obscured from the chart and can be toggled from the legend. \r\n *\r\n * @type {boolean}\r\n * @memberof Trace\r\n */\r\n selectedByDefault?: boolean;\r\n opacity?: number;\r\n}\r\n\r\nexport interface Point extends BasePoint {\r\n name?: string;\r\n /**\r\n * Symbol used to represent the point in the chart.\r\n *\r\n * @type {PointSymbol}\r\n * @memberof Point\r\n */\r\n symbol?: PointSymbol;\r\n symbolSize?: number;\r\n color?: string;\r\n}\r\n\r\nexport interface BasePoint {\r\n x: number;\r\n y: number\r\n}\r\n\r\nexport enum TraceType {\r\n LINE = \"line\",\r\n SCATTER = \"scatter\"\r\n}\r\n\r\nexport enum PointSymbol {\r\n NONE = \"none\",\r\n CIRCLE = \"circle\",\r\n TRIANGLE = \"triangle\",\r\n PIN = \"pin\",\r\n DIAMOND = \"diamond\"\r\n}\r\n\r\nexport enum TraceStyle {\r\n SOLID = \"solid\",\r\n DASHED = \"dashed\",\r\n DOTTED = \"dotted\"\r\n}\r\n\r\nexport enum AxisType {\r\n VALUE = \"value\"\r\n}\r\n\r\nexport enum ShapeVariant {\r\n TRACE\r\n}","import { ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { CustomSeriesOption, ECharts, EChartsOption, LineSeriesOption, ScatterSeriesOption, zrender } from 'echarts';\r\nimport { interval, Subject, takeUntil } from 'rxjs';\r\nimport { ADD_POINT_IMG_OFF_DARK, ADD_POINT_IMG_OFF_LIGHT, ADD_POINT_IMG_ON } from './constants/chart.constants';\r\nimport { Chart, Shape, ShapeVariant, Trace, Point, BasePoint } from './models/chart.models';\r\n@Component({\r\n selector: 'kiwi-chart',\r\n template: `\r\n <div \r\n echarts \r\n [options]=\"chartOption\" \r\n [ngStyle]=\"{\r\n 'width': width,\r\n 'height': height\r\n }\"\r\n (chartInit)=\"onChartInit($event)\"\r\n [theme]=\"darkTheme ? 'dark' : ''\"\r\n ></div> \r\n `,\r\n styles: [`\r\n `]\r\n})\r\nexport class KiwiChartComponent implements OnInit, OnChanges, OnDestroy {\r\n\r\n /**\r\n * The Chart Object rendered by the canvas. For all the available options refer \r\n * to Chart interface in the models folder.\r\n *\r\n * @type {(Chart | null)}\r\n * @memberof KiwiChartComponent\r\n */\r\n @Input() chart: Chart | null = null;\r\n\r\n /**\r\n * Width and Height of the chart area. The dimensions refer to the father component \r\n * into which the kiwi-chart is inserted. For example in an empty page the width/height \r\n * of the chart can take the whole available space in the page.\r\n *\r\n * @type {string}\r\n * @memberof KiwiChartComponent\r\n */\r\n @Input() width: string = '100%';\r\n @Input() height: string = '480px';\r\n\r\n /**\r\n * This property simply activates or not the dark theme of the chart\r\n * defined by the Echarts library. In addition the background color can be custom\r\n * so that the chart can match the background of the application in which it's used.\r\n *\r\n * @type {boolean}\r\n * @memberof KiwiChartComponent\r\n */\r\n @Input() darkTheme: boolean = false;\r\n @Input() darkThemeBackground?: string;\r\n\r\n /**\r\n * Output event used to emit to the father component the coordinates\r\n * of the point clicked in the chart area. This functionality to be used must\r\n * have the property \"clickToAddPoint\" in the Chart object set to true.\r\n *\r\n * @type {EventEmitter<BasePoint>}\r\n * @memberof KiwiChartComponent\r\n */\r\n @Output() addPoint: EventEmitter<BasePoint> = new EventEmitter<BasePoint>();\r\n\r\n /**\r\n * When the cursor hovers the chart area it emits to the father component the\r\n * x and y coordinates relative to the chart reference system.\r\n *\r\n * @type {EventEmitter<BasePoint>}\r\n * @memberof KiwiChartComponent\r\n */\r\n @Output() chartHover: EventEmitter<BasePoint> = new EventEmitter<BasePoint>();\r\n\r\n /**\r\n * The object used by echarts to initially create the Chart.\r\n *\r\n * @type {EChartsOption}\r\n * @memberof KiwiChartComponent\r\n */\r\n chartOption: EChartsOption = {};\r\n\r\n /**\r\n * The instance of the Chart.\r\n *\r\n * @type {(ECharts | null)}\r\n * @memberof KiwiChartComponent\r\n */\r\n echartsInstance: ECharts | null = null;\r\n\r\n /**\r\n * Used to perform actions (as point addition based on the cursor position) on the chart.\r\n *\r\n * @type {(zrender.ZRenderType | null)}\r\n * @memberof KiwiChartComponent\r\n */\r\n zr: zrender.ZRenderType | null = null;\r\n\r\n /**\r\n * Subject used to unsubscribe once the component gets destroyed.\r\n *\r\n * @private\r\n * @type {Subject<void>}\r\n * @memberof KiwiChartComponent\r\n */\r\n private destroyed$: Subject<void> = new Subject<void>();\r\n\r\n /**\r\n * Default number of decimals that can have\r\n * the values on the x and y axes.\r\n *\r\n * @private\r\n * @type {number}\r\n * @memberof KiwiChartComponent\r\n */\r\n private readonly MAX_DECIMALS: number = 3;\r\n\r\n constructor(\r\n private cd: ChangeDetectorRef\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n /** \r\n * This is a manual change detection running every 200ms, the memory should not be much afflicted.\r\n * It's necessary because when interacting with the chart (for example addPoint),\r\n * Angular loses the change detection and the point is not added in the chart canvas.\r\n */\r\n interval(200)\r\n .pipe(\r\n takeUntil(this.destroyed$)\r\n )\r\n .subscribe(() => {\r\n this.cd.detectChanges();\r\n });\r\n }\r\n\r\n onChartInit(ec: ECharts) {\r\n this.echartsInstance = ec;\r\n this.setupZrEventHandler(ec);\r\n }\r\n\r\n setupZrEventHandler(ec: ECharts) {\r\n this.zr = ec.getZr();\r\n /** \r\n * Intercepts the click event on the chart (if the clickToAddPoint property is set to true)\r\n * and emits the point coordinates to the father component.\r\n */\r\n this.zr.on('click', params => {\r\n let option: any = ec.getOption();\r\n let active = option?.toolbox?.[0]?.feature?.myAddPoint?.iconStatus;\r\n if (active && this.chart?.clickToAddPoint) {\r\n const pointInPixel = [params.offsetX, params.offsetY];\r\n const pointInGrid = ec.convertFromPixel('grid', pointInPixel);\r\n if (ec.containPixel('grid', pointInPixel) && pointInGrid) {\r\n let newPoint: { x: number, y: number } = {\r\n x: +pointInGrid[0].toFixed(3),\r\n y: +pointInGrid[1].toFixed(3)\r\n };\r\n this.addPoint.emit(newPoint);\r\n }\r\n }\r\n });\r\n /** \r\n * This is used perform custom actions when the mouse is hovering the chart area\r\n */\r\n this.zr.on('mousemove', params => {\r\n const pointInPixel = [params.offsetX, params.offsetY];\r\n const pointInGrid = ec.convertFromPixel('grid', pointInPixel);\r\n /* \r\n * Logic to emit to the father component the x and y cdinates when the\r\n * cursor is hovering the chart area .\r\n */\r\n if (ec.containPixel('grid', pointInPixel) && pointInGrid) {\r\n let newPoint: { x: number, y: number } = {\r\n x: +pointInGrid[0].toFixed(3),\r\n y: +pointInGrid[1].toFixed(3)\r\n };\r\n this.chartHover.emit(newPoint);\r\n }\r\n /* Logic to change the cursor icon when the \"Click to Add Point\" feature is active and viceversa. */\r\n const option: any = ec.getOption();\r\n const addPointIsActive = option?.toolbox?.[0]?.feature?.myAddPoint?.iconStatus;\r\n if (addPointIsActive) {\r\n this.zr?.setCursorStyle(\r\n ec.containPixel('grid', pointInPixel) ? 'copy' : 'default'\r\n );\r\n }\r\n });\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n let chart: Chart = changes['chart']?.currentValue;\r\n if (chart) {\r\n this.chartOption = {\r\n title: {\r\n text: chart.title,\r\n },\r\n grid: {\r\n width: '70%'\r\n },\r\n backgroundColor: this.darkTheme ? this.darkThemeBackground ?? '#303030' : 'transparent', tooltip: {\r\n axisPointer: {\r\n type: 'cross',\r\n crossStyle: {\r\n color: '#bebebe'\r\n }\r\n }\r\n },\r\n toolbox: {\r\n orient: 'horizontal',\r\n left: 'center',\r\n feature: {\r\n dataZoom: {\r\n brushStyle: {\r\n borderColor: '#000',\r\n borderWidth: 1,\r\n borderType: 'dashed'\r\n },\r\n },\r\n saveAsImage: {},\r\n restore: {},\r\n myAddPoint: {\r\n show: chart.clickToAddPoint ?? false,\r\n title: chart.addPointCustomName ?? 'Add Point',\r\n icon: this.darkTheme ? ADD_POINT_IMG_OFF_DARK : ADD_POINT_IMG_OFF_LIGHT,\r\n iconStatus: false,\r\n onclick: () => {\r\n let option: any = this.echartsInstance?.getOption();\r\n let status = option.toolbox[0].feature.myAddPoint.iconStatus;\r\n this.echartsInstance?.setOption({\r\n toolbox: {\r\n feature: {\r\n myAddPoint: {\r\n iconStatus: !status,\r\n icon: !status ? ADD_POINT_IMG_ON : this.darkTheme ? ADD_POINT_IMG_OFF_DARK : ADD_POINT_IMG_OFF_LIGHT\r\n }\r\n }\r\n }\r\n });\r\n }\r\n }\r\n },\r\n },\r\n dataZoom: [\r\n {\r\n type: 'inside',\r\n xAxisIndex: [0],\r\n throttle: 0,\r\n filterMode: 'none',\r\n disabled: !chart.scrollToZoom ?? true\r\n },\r\n {\r\n type: 'inside',\r\n yAxisIndex: [0],\r\n throttle: 0,\r\n filterMode: 'none',\r\n disabled: !chart.scrollToZoom ?? true\r\n },\r\n ],\r\n legend: {\r\n inactiveColor: this.darkTheme ? '#8b8b8b' : '#ccc',\r\n data: chart.shapes.map(\r\n (shape: Shape) => ({\r\n name: shape.name,\r\n icon: 'circle'\r\n })\r\n ),\r\n selected: chart.shapes.reduce((accumulator, shape: Shape) => ({ ...accumulator, [shape.name as string]: shape.selectedByDefault ?? true }), {}),\r\n show: chart.showLegend ?? false,\r\n orient: 'vertical',\r\n left: 'right',\r\n padding: [60, 20],\r\n type: 'scroll',\r\n textStyle: {\r\n width: 120,\r\n fontWeight: 'bold',\r\n overflow: 'break'\r\n }\r\n },\r\n xAxis: {\r\n type: chart.xAxisType,\r\n name: chart.xAxisUom ? `${chart.xAxisName} [ ${chart.xAxisUom} ]` : chart.xAxisName,\r\n nameLocation: 'middle',\r\n nameGap: 30,\r\n splitLine: {\r\n show: chart.showGrid ?? true,\r\n lineStyle: {\r\n color: this.darkTheme ? '#595959' : '#ccc'\r\n }\r\n },\r\n min: chart.xMin?.toFixed(chart.maxAxesDecimals ?? this.MAX_DECIMALS),\r\n max: chart.xMax?.toFixed(chart.maxAxesDecimals ?? this.MAX_DECIMALS),\r\n },\r\n yAxis: {\r\n type: chart.yAxisType,\r\n name: chart.yAxisUom ? `${chart.yAxisName} [ ${chart.yAxisUom} ]` : chart.yAxisName,\r\n nameLocation: 'middle',\r\n nameGap: 50,\r\n splitLine: {\r\n show: chart.showGrid ?? true,\r\n lineStyle: {\r\n color: this.darkTheme ? '#595959' : '#ccc'\r\n }\r\n },\r\n min: chart.yMin?.toFixed(chart.maxAxesDecimals ?? this.MAX_DECIMALS),\r\n max: chart.yMax?.toFixed(chart.maxAxesDecimals ?? this.MAX_DECIMALS),\r\n },\r\n series: this.createSeries(chart.shapes),\r\n animation: chart.hasAnimations,\r\n animationDuration: chart.animationDuration ?? 500,\r\n animationEasing: 'cubicOut'\r\n };\r\n }\r\n }\r\n\r\n createSeries(shapes: Shape[]): Array<LineSeriesOption | CustomSeriesOption | ScatterSeriesOption> {\r\n let series: Array<LineSeriesOption | CustomSeriesOption | ScatterSeriesOption> = [];\r\n shapes.forEach(\r\n (shape: Shape) => {\r\n switch (shape.variant) {\r\n case ShapeVariant.TRACE:\r\n series.push(this.createTrace(shape as Trace))\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n );\r\n return series;\r\n }\r\n\r\n createTrace(trace: Trace): LineSeriesOption | ScatterSeriesOption {\r\n return {\r\n type: trace.type,\r\n name: trace.name,\r\n data: trace.points.map(\r\n (point: Point) => ({\r\n value: [point.x, point.y],\r\n symbol: point.symbol ?? 'circle',\r\n name: point.name,\r\n symbolSize: point.symbolSize ?? 2,\r\n itemStyle: {\r\n color: point.color\r\n },\r\n emphasis: {\r\n disabled: true\r\n },\r\n label: {\r\n show: true,\r\n position: 'bottom',\r\n align: 'left',\r\n verticalAlign: 'bottom',\r\n formatter: () => `${point.name ?? ''}`,\r\n fontSize: 13,\r\n padding: [0, 0, 0, 10],\r\n width: 100,\r\n overflow: 'truncate',\r\n ellipsis: '...',\r\n fontWeight: 'bold',\r\n color: this.darkTheme ? '#fff' : '#000'\r\n },\r\n tooltip: {\r\n formatter: ({ value }: { value: number[] }) => `\r\n <strong>${this.chart?.xAxisName}:</strong> ${value[0].toFixed(3).replace(/[.,]000$/, \"\")}\r\n <br>\r\n <strong>${this.chart?.yAxisName}:</strong> ${value[1].toFixed(3).replace(/[.,]000$/, \"\")}\r\n `\r\n }\r\n })\r\n ),\r\n color: trace.color,\r\n lineStyle: {\r\n width: trace.width,\r\n type: trace.style,\r\n opacity: trace.opacity ?? 1\r\n },\r\n smooth: trace.smooth ?? false\r\n };\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroyed$.next();\r\n this.destroyed$.complete();\r\n }\r\n\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { KiwiChartComponent } from './chart.component';\r\nimport { NgxEchartsModule } from 'ngx-echarts';\r\nimport * as echarts from 'echarts/core';\r\nimport { TitleComponent, TooltipComponent, GridComponent, LegendComponent, DataZoomComponent, ToolboxComponent } from 'echarts/components';\r\nimport { LineChart, ScatterChart } from 'echarts/charts';\r\nimport { CanvasRenderer } from 'echarts/renderers';\r\necharts.use([\r\n TitleComponent,\r\n TooltipComponent,\r\n GridComponent,\r\n LineChart,\r\n CanvasRenderer,\r\n LegendComponent,\r\n DataZoomComponent,\r\n ToolboxComponent,\r\n ScatterChart\r\n]);\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n KiwiChartComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n NgxEchartsModule.forRoot({ echarts })\r\n ],\r\n exports: [\r\n KiwiChartComponent\r\n ]\r\n})\r\nexport class KiwiChartModule { }\r\n","/*\r\n * Public API Surface of chart\r\n */\r\n\r\nexport * from './lib/chart.component';\r\nexport * from './lib/chart.module';\r\nexport * from './lib/models/chart.models';\r\nexport * from './lib/constants/chart.constants';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"kiwibit-chart.mjs","sources":["../../../../projects/kiwibit/chart/src/lib/constants/chart.constants.ts","../../../../projects/kiwibit/chart/src/lib/models/chart.models.ts","../../../../projects/kiwibit/chart/src/lib/chart.component.ts","../../../../projects/kiwibit/chart/src/lib/chart.module.ts","../../../../projects/kiwibit/chart/src/public-api.ts","../../../../projects/kiwibit/chart/src/kiwibit-chart.ts"],"sourcesContent":["export const ADD_POINT_IMG_OFF_LIGHT = \"image://data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABmJLR0QA/wD/AP+gvaeTAAADkUlEQVR4nO2bz0sUYRjHv8/otviDGDuWrhKdskBaQZi57MmLgVpIkJ06bH9AEdF/kF46dEg726liBSGwBEFnTm0oaF3s4lhdh1BhNuTpsDPLu+MvmHXm0ZzP6X2feWfn+3x33nf3fXlfIOV8Q0dd7O3tvaDr+igzDxPRLQCdANqSkRaZHQBbzPyViEqu65bW19crhzU+1ADDMO4S0QSAq3GoTJAfAJ5alvXhoItN4cDY2FiTruuTRPQSQEfc6hLgEoB7uVyu3XGcBQCsXtxngJ/846TUJYjR3d3dsrm5+VkN1nUB/7V/F7rRI6IpAG9bW1vX5ufnd+JW2giDg4Ntu7u7N5h5HEARQFa9rmna6NLSUimo1wzwB7zvqO/zP4loaHl5eTVu4XFgGEYfEc0BuKKEN1zX7Q0GRi2I6ro+ivrkvbOcPADYtr3CzLcBeEr4WkdHx3BQqRnAzMPqzUQ0dZaTD7BtewXAGzWm5lozgIjyaqO9vb2Z2NUlRziX/qCgKcHLaotsNvstTkVJkslk1kKh2pigGtCutlhcXNyOU1SSHJBLLVcN55xmqQcbhjFERNMA9gA8sizro4QOsTdA07TXqI47XQCmxHRIPZiZO5Vql5SOcz8GpAZIC5AmNUBagDSpAdICpEkNkBYgTWqAtABpUgOkBUgTeT3An89PoX7JOTKmafLxrfZDRFvMXIy6nhD5DfDn8yeSfCP40+rI6wnnvgtENoCZi0S0dZJiIuIQUTHqzZHHAL/PRV7JCfd5y7KO3KsQF2kXkBYgTWqAtABpUgOkBUiTGiAtQJrUAGkB0qQGSAuQJjVA6sGhqbQjpUNyg0SwntDQfL5RxPYINbqecFKkY4BSrttLVygU2vGfMDAwcDEU+hMUVAN+qS08z7sep6gkaW5uDufyOyiom6XLagtN0x7ErCtJxkP1L0FB3SxdCjUqGobRF6eqJPBzqPuVYeZarjUDXNctoXrAKCBLRHNn2QTlwMQFJbzhed5sUKlbijZN8w6A96HPqQCYBjCTyWTWTvsm6kKh0F6pVG4S0X1Uv3k1eTDziG3bBxsAAKZpTgJ4ErtSAZj5hW3bz9TYvlNjjuMs5HK5VgBmYsoSgIgmLMt6juOOzQFgx3E+9fT0rDJzP6rn7s4yG8z80LKsVwglDxxzdDafz2daWlpG/DM2eVSPzp72P0jbALYAlJm55HnebLlc/istKuW08g8wjAev/BoR3wAAAABJRU5ErkJggg==\";\r\nexport const ADD_POINT_IMG_OFF_DARK = \"image://data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABmJLR0QA/wD/AP+gvaeTAAADgUlEQVR4nO2bz04TURTGvzNtaQOVB1BgYVhZDbSUDixZYwLoTlzXB5CI8QUM4ANQXeOCqCkJiUuWtpNCIaG6gRWoeyx/CmGOC5hyZ/izmDJzgM5vdefMafudr/femd65BQKaG7rqZKVSadndORhjohGAUwB1AGjzSZtbdgHeBmiFmPNt7bF8IpE4vCz5UgMKhZXnBJoG+KE3On2CsEkmv8kM9n27+LSD+fn5UFdX9xQBr71X5x8E/tCvpyaJyFTjmjPxLhYPAAyaMAqr751xWw846fb44sioMSPHbH5ubY2s9/T07HqstSHW1tba9vaOHmuaNg4gC0bUlkA0puvJfP3QalQqlZbqv8NfjjH/G4RhXU+tea7cAwyj3MsmLwJ4oIQ34veiCWtirA+B3Z2DMVvxhNptLh4AMpnkKmn0FISaEu6uVg9HrIO6ASeXujOYkbvNxVtkMslVmPhkj5rnDQDQp6aETG3OU2U+wsT2Whhpq6kacF/NqdYiP72V5R/7+7F1e4Tqc4JqQFxNGRpKVD1V5SMX1FKv9dx9QLMRlvrgYrE8TMwfGTjWGK/6B1PfJXTI9QDmWT6ZdzpNQk5KhuQQ6FDanVIimn4OCAyQFiBNYIC0AGkCA6QFSBMYIC1AmsAAaQHSBAZIC5DG9XpAsVgeBnMO9iVn1xQLK+zypdsaI+t2PcF9D2CexTUV3yAdjawnNP0QcG2AxsgC2L5GLW7ZIpOzbl/seg44HXOuV3KcY14fSF25V8ErgiEgLUCawABpAdIEBkgLkCYwQFqANIEB0gKkCQyQFiBNYIDgZ6s/pbekRIgZoKwnNPR7vlHE9gg1up5wXQRzgNK27aVbWqrEcUcoFArtjtCO1VAN+KNmxKNHj7wU5S8RRy3812qpBiyrKWbIfOmpJh8hpnF7ACWrqZ0lcR52soZR7vVWmvcYRrkXBNtVhpnqtdYNaGuP5UHYPMtClE1evM0mKH+YaFHCG+GwuWAd2JaijR/Lz5joq+N9DsH4yMRz+/ux9Zu+iXppqRJvba09gYkXp9+8WjwYNDowkLzYAAAwCsszDJrwQav/EKZ0PfVWDZ27D+jXU5MAz/inyieYpjOZ5Dtn+NKnMcVieRTMMwC6PRXmPRsMmlC7vcqVj6NKpVLk+Dg0CpgjzNRHJxucb/oNUpWBbSJeZqZ8OGwupNPpI2lRATeV/+HNFJvPZJXuAAAAAElFTkSuQmCC\";\r\nexport const ADD_POINT_IMG_ON = \"image://data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABmJLR0QA/wD/AP+gvaeTAAADjUlEQVR4nO2by08TURTGvzNAK49oDCsRNqbFxPogtsQ/AhNAowsxLksTlxIxrtwZwJUJsa07E1wQNSUh8X+wrQFDNSklMQGVjRgMj7TIHBcww50WWEyZOTzmt7pz7pn2O1/n3pne3gIeJxvarzM0nvM1LPl7GegGcB3gVgCN7kizzSpACwA+E3NqrbmUyt0NlfZK3tOAyKv8bRANA7jghEoXmSPw43Ss/cNunRUG3Bnnmu+/C0NMeOS8Nvdg8IvsYnAQz0hX41p54nEsHgAINBA5N/e8Mq6wfdm/K8spElNC1/S3G/XrM18eXFt1VGmVXH0z3Vi3Xn+ZGH0ARQH41X4m6s32B1LGsWlAaDznq1/yfYMy5hn4UQO961Ps4rQb4g+azmS+Q9dpkoDzZpBQWD9bChkTozkEGpb8vbBOeMWjXDwApKPtU5rGNwEUzSAjcOqPr9s41Hbi6FZPJqbEUS7eIB1tnwLhtSXIqDQA4LA1Z3PMYW2uoW/CUguBIkZbvQu0qEnr+r+vDutyjSKXZqwRNucE1YAmNSX3MLTiqCoX2aUWs9aK54CTRq3UG4cT+S7SKQnCJjTqz0QDHyV0iF0BxBQHoQVAG3ROSOmQHAKtSrtNSsSJnwM8A6QFSOMZIC1AGs8AaQHSeAZIC5DGM0BagDSeAdICpLG9HhBO5LvAlLAsOVdBJD7LNk9dgEZRu+sJtq8AYoofVPFV0lrNesKJHwL2DdAoCmDh4KTYZp62fgKzhe05YHvM2V7JKR/zmVhw370KTuENAWkB0ngGSAuQxjNAWoA0ngHSAqTxDJAWII1ngLQAaTwDBN9b/So9LyVCzoCd9YSqvs9Xi9geoWrXEw4Kbw5Q2pa9dKHRXBOOCTdezp4uC/01GqoBP9WMeq32kpOi3GSjFmW10C+jpRhAWWsO3XdUlYtoNehTjxmcMfuMBjGnYIGincl8h9PinKYzme8Aw3KXIcCs1TRgrbmUAjCn5Pl1nSaPsgnGHyYA+MwgocC0PLFzqJ4Qz99i0Puy1ymBkNQ3MVbk0sxh30QdGs01Ndb4ruiEe9ufvK8spScTC+5uAACE4/kRAg04LVQCAobSseATNVbxHJBdDA4CNOKeLJcgGk4vBp5WhPfKDycKPQQeASPgrDKHIRTAGFAve2v3PoQTmTrgTA8Y3QSEsbXB+bA/IK0AWGAgS0CKaXki2x/ZkBblcVj5D1vBAfS1aXiGAAAAAElFTkSuQmCC\";","/**\r\n * Interface to define the Chart model.\r\n *\r\n * @export\r\n * @interface Chart\r\n */\r\nexport interface Chart {\r\n title: string;\r\n showLegend?: boolean;\r\n xAxisType: AxisType;\r\n xAxisName: string;\r\n xAxisUom?: string;\r\n xMin?: number;\r\n xMax?: number;\r\n yAxisType: AxisType;\r\n yAxisName: string;\r\n yAxisUom?: string;\r\n yMin?: number;\r\n yMax?: number;\r\n /**\r\n * The maximum decimals that can have the values on the x and y axes.\r\n * If omitted the default is 3 decimals.\r\n *\r\n * @type {number}\r\n * @memberof Chart\r\n */\r\n maxAxesDecimals?: number;\r\n /**\r\n * If the chart should have rendering animations.\r\n *\r\n * @type {boolean}\r\n * @memberof Chart\r\n */\r\n hasAnimations?: boolean;\r\n /**\r\n * How long the animation should last.\r\n * Expressed in milliseconds. If omitted the Default is 500 ms.\r\n *\r\n * @type {number}\r\n * @memberof Chart\r\n */\r\n animationDuration?: number;\r\n /**\r\n * The list of Shapes that the chart must render.\r\n * Each Shape corrisponds to a single chart component.\r\n *\r\n * @type {Shape[]}\r\n * @memberof Chart\r\n */\r\n shapes: Shape[];\r\n /**\r\n * Adds interaction with the chart, so that when clicking\r\n * everywhere in the chart area a point gets added and it's coordinate are \r\n * emitted with an event to the parent component.\r\n *\r\n * @type {boolean}\r\n * @memberof Chart\r\n */\r\n clickToAddPoint?: boolean;\r\n /**\r\n * Custom name for the \"clickToAddPoint\" event related button. \r\n *\r\n * @type {string}\r\n * @memberof Chart\r\n */\r\n addPointCustomName?: string;\r\n /**\r\n * Adds the possibility to use the scroll \r\n * to zoom in/out the chart area.\r\n *\r\n * @type {boolean}\r\n * @memberof Chart\r\n */\r\n scrollToZoom?: boolean;\r\n /**\r\n * Tells the chart to render or not the grid lines.\r\n *\r\n * @type {boolean}\r\n * @memberof Chart\r\n */\r\n showGrid?: boolean;\r\n}\r\n\r\nexport type Shape = Trace;\r\n\r\nexport interface Trace {\r\n name?: string;\r\n /**\r\n * The variant of the Shape, must be of type Trace.\r\n *\r\n * @type {ShapeVariant}\r\n * @memberof Trace\r\n */\r\n variant: ShapeVariant;\r\n color?: string;\r\n /**\r\n * The type of the Trace drawn by the chart.\r\n * Can be a line or a scatter. \r\n *\r\n * @type {TraceType}\r\n * @memberof Trace\r\n */\r\n type: TraceType;\r\n width?: number;\r\n /**\r\n * The list of points that define the Trace.\r\n *\r\n * @type {Point[]}\r\n * @memberof Trace\r\n */\r\n points: Point[];\r\n /**\r\n * Whether to show a smooth curve or a segmented curve.\r\n *\r\n * @type {boolean}\r\n * @memberof Trace\r\n */\r\n smooth?: boolean;\r\n /**\r\n * The style of the Trace.\r\n * Can be solid, dashed or dotted.\r\n *\r\n * @type {TraceStyle}\r\n * @memberof Trace\r\n */\r\n style?: TraceStyle;\r\n /**\r\n * Option to make the Trace selected/deselected by default.\r\n * A deselected Trace is obscured from the chart and can be toggled from the legend. \r\n *\r\n * @type {boolean}\r\n * @memberof Trace\r\n */\r\n selectedByDefault?: boolean;\r\n opacity?: number;\r\n}\r\n\r\nexport interface Point extends BasePoint {\r\n name?: string;\r\n /**\r\n * Symbol used to represent the point in the chart.\r\n *\r\n * @type {PointSymbol}\r\n * @memberof Point\r\n */\r\n symbol?: PointSymbol;\r\n symbolSize?: number;\r\n color?: string;\r\n}\r\n\r\nexport interface BasePoint {\r\n x: number;\r\n y: number\r\n}\r\n\r\nexport enum TraceType {\r\n LINE = \"line\",\r\n SCATTER = \"scatter\"\r\n}\r\n\r\nexport enum PointSymbol {\r\n NONE = \"none\",\r\n CIRCLE = \"circle\",\r\n TRIANGLE = \"triangle\",\r\n PIN = \"pin\",\r\n DIAMOND = \"diamond\"\r\n}\r\n\r\nexport enum TraceStyle {\r\n SOLID = \"solid\",\r\n DASHED = \"dashed\",\r\n DOTTED = \"dotted\"\r\n}\r\n\r\nexport enum AxisType {\r\n VALUE = \"value\"\r\n}\r\n\r\nexport enum ShapeVariant {\r\n TRACE\r\n}","// Angular General\r\nimport { ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { interval, Subject, takeUntil } from 'rxjs';\r\n// Echarts\r\nimport { CustomSeriesOption, ECharts, EChartsOption, LineSeriesOption, ScatterSeriesOption, zrender } from 'echarts';\r\n// Kiwi Chart\r\nimport { ADD_POINT_IMG_OFF_DARK, ADD_POINT_IMG_OFF_LIGHT, ADD_POINT_IMG_ON } from './constants/chart.constants';\r\nimport { Chart, Shape, ShapeVariant, Trace, Point, BasePoint, TraceType } from './models/chart.models';\r\n@Component({\r\n selector: 'kiwi-chart',\r\n template: `\r\n <div \r\n echarts \r\n [options]=\"chartOption\" \r\n [ngStyle]=\"{\r\n 'width': width,\r\n 'height': height\r\n }\"\r\n (chartInit)=\"onChartInit($event)\"\r\n [theme]=\"darkTheme ? 'dark' : ''\"\r\n ></div> \r\n `,\r\n styles: [`\r\n `]\r\n})\r\nexport class KiwiChartComponent implements OnInit, OnChanges, OnDestroy {\r\n\r\n /**\r\n * The Chart Object rendered by the canvas. For all the available options refer \r\n * to Chart interface in the models folder.\r\n *\r\n * @type {(Chart | null)}\r\n * @memberof KiwiChartComponent\r\n */\r\n @Input() chart: Chart | null = null;\r\n\r\n /**\r\n * Width and Height of the chart area. The dimensions refer to the father component \r\n * into which the kiwi-chart is inserted. For example in an empty page the width/height \r\n * of the chart can take the whole available space in the page.\r\n *\r\n * @type {string}\r\n * @memberof KiwiChartComponent\r\n */\r\n @Input() width: string = '100%';\r\n @Input() height: string = '480px';\r\n\r\n /**\r\n * This property simply activates or not the dark theme of the chart\r\n * defined by the Echarts library. In addition the background color can be custom\r\n * so that the chart can match the background of the application in which it's used.\r\n *\r\n * @type {boolean}\r\n * @memberof KiwiChartComponent\r\n */\r\n @Input() darkTheme: boolean = false;\r\n @Input() darkThemeBackground?: string;\r\n\r\n /**\r\n * Output event used to emit to the father component the coordinates\r\n * of the point clicked in the chart area. This functionality to be used must\r\n * have the property \"clickToAddPoint\" in the Chart object set to true.\r\n *\r\n * @type {EventEmitter<BasePoint>}\r\n * @memberof KiwiChartComponent\r\n */\r\n @Output() addPoint: EventEmitter<BasePoint> = new EventEmitter<BasePoint>();\r\n\r\n /**\r\n * When the cursor hovers the chart area it emits to the father component the\r\n * x and y coordinates relative to the chart reference system.\r\n *\r\n * @type {EventEmitter<BasePoint>}\r\n * @memberof KiwiChartComponent\r\n */\r\n @Output() chartHover: EventEmitter<BasePoint> = new EventEmitter<BasePoint>();\r\n\r\n /**\r\n * The object used by echarts to initially create the Chart.\r\n * Has a default configuration that can be totally overrided using specific properties.\r\n *\r\n * @type {EChartsOption}\r\n * @memberof KiwiChartComponent\r\n */\r\n chartOption: EChartsOption = {\r\n title: {\r\n text: 'Kiwi Chart'\r\n },\r\n xAxis: {\r\n name: 'X'\r\n },\r\n yAxis: {\r\n name: 'Y'\r\n },\r\n series: [\r\n {\r\n type: TraceType.LINE,\r\n data: [[0, 0]]\r\n }\r\n ]\r\n };\r\n\r\n /**\r\n * The instance of the Chart.\r\n *\r\n * @type {(ECharts | null)}\r\n * @memberof KiwiChartComponent\r\n */\r\n echartsInstance: ECharts | null = null;\r\n\r\n /**\r\n * Used to perform actions (as point addition based on the cursor position) on the chart.\r\n *\r\n * @type {(zrender.ZRenderType | null)}\r\n * @memberof KiwiChartComponent\r\n */\r\n zr: zrender.ZRenderType | null = null;\r\n\r\n /**\r\n * Subject used to unsubscribe once the component gets destroyed.\r\n *\r\n * @private\r\n * @type {Subject<void>}\r\n * @memberof KiwiChartComponent\r\n */\r\n private destroyed$: Subject<void> = new Subject<void>();\r\n\r\n /**\r\n * Default number of decimals that can have\r\n * the values on the x and y axes.\r\n *\r\n * @private\r\n * @type {number}\r\n * @memberof KiwiChartComponent\r\n */\r\n private readonly MAX_DECIMALS: number = 3;\r\n\r\n constructor(\r\n private cd: ChangeDetectorRef\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n /** \r\n * This is a manual change detection running every 200ms, the memory should not be much afflicted.\r\n * It's necessary because when interacting with the chart (for example addPoint),\r\n * Angular loses the change detection and the point is not added in the chart canvas.\r\n */\r\n interval(200)\r\n .pipe(\r\n takeUntil(this.destroyed$)\r\n )\r\n .subscribe({\r\n next: () => {\r\n this.cd.detectChanges();\r\n }\r\n });\r\n }\r\n\r\n onChartInit(ec: ECharts) {\r\n this.echartsInstance = ec;\r\n this.setupZrEventHandler(ec);\r\n }\r\n\r\n setupZrEventHandler(ec: ECharts) {\r\n this.zr = ec.getZr();\r\n /** \r\n * Intercepts the click event on the chart (if the clickToAddPoint property is set to true)\r\n * and emits the point coordinates to the father component.\r\n */\r\n this.zr.on('click', params => {\r\n let option: any = ec.getOption();\r\n let active = option?.toolbox?.[0]?.feature?.myAddPoint?.iconStatus;\r\n if (active && this.chart?.clickToAddPoint) {\r\n const pointInPixel = [params.offsetX, params.offsetY];\r\n const pointInGrid = ec.convertFromPixel('grid', pointInPixel);\r\n if (ec.containPixel('grid', pointInPixel) && pointInGrid) {\r\n let newPoint: { x: number, y: number } = {\r\n x: +pointInGrid[0].toFixed(3),\r\n y: +pointInGrid[1].toFixed(3)\r\n };\r\n this.addPoint.emit(newPoint);\r\n }\r\n }\r\n });\r\n /** \r\n * This is used perform custom actions when the mouse is hovering the chart area\r\n */\r\n this.zr.on('mousemove', params => {\r\n const pointInPixel = [params.offsetX, params.offsetY];\r\n const pointInGrid = ec.convertFromPixel('grid', pointInPixel);\r\n /* \r\n * Logic to emit to the father component the x and y cdinates when the\r\n * cursor is hovering the chart area .\r\n */\r\n if (ec.containPixel('grid', pointInPixel) && pointInGrid) {\r\n let newPoint: { x: number, y: number } = {\r\n x: +pointInGrid[0].toFixed(3),\r\n y: +pointInGrid[1].toFixed(3)\r\n };\r\n this.chartHover.emit(newPoint);\r\n }\r\n /* Logic to change the cursor icon when the \"Click to Add Point\" feature is active and viceversa. */\r\n const option: any = ec.getOption();\r\n const addPointIsActive = option?.toolbox?.[0]?.feature?.myAddPoint?.iconStatus;\r\n if (addPointIsActive) {\r\n this.zr?.setCursorStyle(\r\n ec.containPixel('grid', pointInPixel) ? 'copy' : 'default'\r\n );\r\n }\r\n });\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n let chart: Chart = changes['chart']?.currentValue;\r\n if (chart) {\r\n this.chartOption = {\r\n title: {\r\n text: chart.title,\r\n },\r\n grid: {\r\n width: '70%'\r\n },\r\n backgroundColor: this.darkTheme ? this.darkThemeBackground ?? '#303030' : 'transparent', tooltip: {\r\n axisPointer: {\r\n type: 'cross',\r\n crossStyle: {\r\n color: '#bebebe'\r\n }\r\n }\r\n },\r\n toolbox: {\r\n orient: 'horizontal',\r\n left: 'center',\r\n feature: {\r\n dataZoom: {\r\n brushStyle: {\r\n borderColor: '#000',\r\n borderWidth: 1,\r\n borderType: 'dashed'\r\n },\r\n },\r\n saveAsImage: {},\r\n restore: {},\r\n myAddPoint: {\r\n show: chart.clickToAddPoint ?? false,\r\n title: chart.addPointCustomName ?? 'Add Point',\r\n icon: this.darkTheme ? ADD_POINT_IMG_OFF_DARK : ADD_POINT_IMG_OFF_LIGHT,\r\n iconStatus: false,\r\n onclick: () => {\r\n let option: any = this.echartsInstance?.getOption();\r\n let status = option.toolbox[0].feature.myAddPoint.iconStatus;\r\n this.echartsInstance?.setOption({\r\n toolbox: {\r\n feature: {\r\n myAddPoint: {\r\n iconStatus: !status,\r\n icon: !status ? ADD_POINT_IMG_ON : this.darkTheme ? ADD_POINT_IMG_OFF_DARK : ADD_POINT_IMG_OFF_LIGHT\r\n }\r\n }\r\n }\r\n });\r\n }\r\n }\r\n },\r\n },\r\n dataZoom: [\r\n {\r\n type: 'inside',\r\n xAxisIndex: [0],\r\n throttle: 0,\r\n filterMode: 'none',\r\n disabled: !chart.scrollToZoom ?? true\r\n },\r\n {\r\n type: 'inside',\r\n yAxisIndex: [0],\r\n throttle: 0,\r\n filterMode: 'none',\r\n disabled: !chart.scrollToZoom ?? true\r\n },\r\n ],\r\n legend: {\r\n inactiveColor: this.darkTheme ? '#8b8b8b' : '#ccc',\r\n data: chart.shapes.map(\r\n (shape: Shape) => ({\r\n name: shape.name,\r\n icon: 'circle'\r\n })\r\n ),\r\n selected: chart.shapes.reduce((accumulator, shape: Shape) => ({ ...accumulator, [shape.name as string]: shape.selectedByDefault ?? true }), {}),\r\n show: chart.showLegend ?? false,\r\n orient: 'vertical',\r\n left: 'right',\r\n padding: [60, 20],\r\n type: 'scroll',\r\n textStyle: {\r\n width: 120,\r\n fontWeight: 'bold',\r\n overflow: 'break'\r\n }\r\n },\r\n xAxis: {\r\n type: chart.xAxisType,\r\n name: chart.xAxisUom ? `${chart.xAxisName} [ ${chart.xAxisUom} ]` : chart.xAxisName,\r\n nameLocation: 'middle',\r\n nameGap: 30,\r\n splitLine: {\r\n show: chart.showGrid ?? true,\r\n lineStyle: {\r\n color: this.darkTheme ? '#595959' : '#ccc'\r\n }\r\n },\r\n min: chart.xMin?.toFixed(chart.maxAxesDecimals ?? this.MAX_DECIMALS),\r\n max: chart.xMax?.toFixed(chart.maxAxesDecimals ?? this.MAX_DECIMALS),\r\n },\r\n yAxis: {\r\n type: chart.yAxisType,\r\n name: chart.yAxisUom ? `${chart.yAxisName} [ ${chart.yAxisUom} ]` : chart.yAxisName,\r\n nameLocation: 'middle',\r\n nameGap: 50,\r\n splitLine: {\r\n show: chart.showGrid ?? true,\r\n lineStyle: {\r\n color: this.darkTheme ? '#595959' : '#ccc'\r\n }\r\n },\r\n min: chart.yMin?.toFixed(chart.maxAxesDecimals ?? this.MAX_DECIMALS),\r\n max: chart.yMax?.toFixed(chart.maxAxesDecimals ?? this.MAX_DECIMALS),\r\n },\r\n series: this.createSeries(chart.shapes),\r\n animation: chart.hasAnimations,\r\n animationDuration: chart.animationDuration ?? 500,\r\n animationEasing: 'cubicOut'\r\n };\r\n }\r\n }\r\n\r\n createSeries(shapes: Shape[]): Array<LineSeriesOption | CustomSeriesOption | ScatterSeriesOption> {\r\n let series: Array<LineSeriesOption | CustomSeriesOption | ScatterSeriesOption> = [];\r\n shapes.forEach(\r\n (shape: Shape) => {\r\n switch (shape.variant) {\r\n case ShapeVariant.TRACE:\r\n series.push(this.createTrace(shape as Trace))\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n );\r\n return series;\r\n }\r\n\r\n createTrace(trace: Trace): LineSeriesOption | ScatterSeriesOption {\r\n return {\r\n type: trace.type,\r\n name: trace.name,\r\n data: trace.points.map(\r\n (point: Point) => ({\r\n value: [point.x, point.y],\r\n symbol: point.symbol ?? 'circle',\r\n name: point.name,\r\n symbolSize: point.symbolSize ?? 2,\r\n itemStyle: {\r\n color: point.color\r\n },\r\n emphasis: {\r\n disabled: true\r\n },\r\n label: {\r\n show: true,\r\n position: 'bottom',\r\n align: 'left',\r\n verticalAlign: 'bottom',\r\n formatter: () => `${point.name ?? ''}`,\r\n fontSize: 13,\r\n padding: [0, 0, 0, 10],\r\n width: 100,\r\n overflow: 'truncate',\r\n ellipsis: '...',\r\n fontWeight: 'bold',\r\n color: this.darkTheme ? '#fff' : '#000'\r\n },\r\n tooltip: {\r\n formatter: ({ value }: { value: number[] }) => `\r\n <strong>${this.chart?.xAxisName}:</strong> ${value[0].toFixed(3).replace(/[.,]000$/, \"\")}\r\n <br>\r\n <strong>${this.chart?.yAxisName}:</strong> ${value[1].toFixed(3).replace(/[.,]000$/, \"\")}\r\n `\r\n }\r\n })\r\n ),\r\n color: trace.color,\r\n lineStyle: {\r\n width: trace.width,\r\n type: trace.style,\r\n opacity: trace.opacity ?? 1\r\n },\r\n smooth: trace.smooth ?? false\r\n };\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroyed$.next();\r\n this.destroyed$.complete();\r\n }\r\n\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { KiwiChartComponent } from './chart.component';\r\nimport { NgxEchartsModule } from 'ngx-echarts';\r\nimport * as echarts from 'echarts/core';\r\nimport { TitleComponent, TooltipComponent, GridComponent, LegendComponent, DataZoomComponent, ToolboxComponent } from 'echarts/components';\r\nimport { LineChart, ScatterChart } from 'echarts/charts';\r\nimport { CanvasRenderer } from 'echarts/renderers';\r\necharts.use([\r\n TitleComponent,\r\n TooltipComponent,\r\n GridComponent,\r\n LineChart,\r\n CanvasRenderer,\r\n LegendComponent,\r\n DataZoomComponent,\r\n ToolboxComponent,\r\n ScatterChart\r\n]);\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n KiwiChartComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n NgxEchartsModule.forRoot({ echarts })\r\n ],\r\n exports: [\r\n KiwiChartComponent\r\n ]\r\n})\r\nexport class KiwiChartModule { }\r\n","/*\r\n * Public API Surface of chart\r\n */\r\n\r\nexport * from './lib/chart.component';\r\nexport * from './lib/chart.module';\r\nexport * from './lib/models/chart.models';\r\nexport * from './lib/constants/chart.constants';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -42,6 +42,7 @@ var ShapeVariant;
|
|
|
42
42
|
ShapeVariant[ShapeVariant["TRACE"] = 0] = "TRACE";
|
|
43
43
|
})(ShapeVariant || (ShapeVariant = {}));
|
|
44
44
|
|
|
45
|
+
// Angular General
|
|
45
46
|
class KiwiChartComponent {
|
|
46
47
|
constructor(cd) {
|
|
47
48
|
this.cd = cd;
|
|
@@ -91,11 +92,28 @@ class KiwiChartComponent {
|
|
|
91
92
|
this.chartHover = new EventEmitter();
|
|
92
93
|
/**
|
|
93
94
|
* The object used by echarts to initially create the Chart.
|
|
95
|
+
* Has a default configuration that can be totally overrided using specific properties.
|
|
94
96
|
*
|
|
95
97
|
* @type {EChartsOption}
|
|
96
98
|
* @memberof KiwiChartComponent
|
|
97
99
|
*/
|
|
98
|
-
this.chartOption = {
|
|
100
|
+
this.chartOption = {
|
|
101
|
+
title: {
|
|
102
|
+
text: 'Kiwi Chart'
|
|
103
|
+
},
|
|
104
|
+
xAxis: {
|
|
105
|
+
name: 'X'
|
|
106
|
+
},
|
|
107
|
+
yAxis: {
|
|
108
|
+
name: 'Y'
|
|
109
|
+
},
|
|
110
|
+
series: [
|
|
111
|
+
{
|
|
112
|
+
type: TraceType.LINE,
|
|
113
|
+
data: [[0, 0]]
|
|
114
|
+
}
|
|
115
|
+
]
|
|
116
|
+
};
|
|
99
117
|
/**
|
|
100
118
|
* The instance of the Chart.
|
|
101
119
|
*
|
|
@@ -136,8 +154,10 @@ class KiwiChartComponent {
|
|
|
136
154
|
*/
|
|
137
155
|
interval(200)
|
|
138
156
|
.pipe(takeUntil(this.destroyed$))
|
|
139
|
-
.subscribe(
|
|
140
|
-
|
|
157
|
+
.subscribe({
|
|
158
|
+
next: () => {
|
|
159
|
+
this.cd.detectChanges();
|
|
160
|
+
}
|
|
141
161
|
});
|
|
142
162
|
}
|
|
143
163
|
onChartInit(ec) {
|
|
@@ -376,8 +396,8 @@ class KiwiChartComponent {
|
|
|
376
396
|
this.destroyed$.complete();
|
|
377
397
|
}
|
|
378
398
|
}
|
|
379
|
-
KiwiChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
380
|
-
KiwiChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
399
|
+
KiwiChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: KiwiChartComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
400
|
+
KiwiChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.1", type: KiwiChartComponent, selector: "kiwi-chart", inputs: { chart: "chart", width: "width", height: "height", darkTheme: "darkTheme", darkThemeBackground: "darkThemeBackground" }, outputs: { addPoint: "addPoint", chartHover: "chartHover" }, usesOnChanges: true, ngImport: i0, template: `
|
|
381
401
|
<div
|
|
382
402
|
echarts
|
|
383
403
|
[options]="chartOption"
|
|
@@ -389,7 +409,7 @@ KiwiChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", ver
|
|
|
389
409
|
[theme]="darkTheme ? 'dark' : ''"
|
|
390
410
|
></div>
|
|
391
411
|
`, isInline: true, styles: [""], dependencies: [{ kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.NgxEchartsDirective, selector: "echarts, [echarts]", inputs: ["options", "theme", "loading", "initOpts", "merge", "autoResize", "loadingType", "loadingOpts"], outputs: ["chartInit", "optionsError", "chartClick", "chartDblClick", "chartMouseDown", "chartMouseMove", "chartMouseUp", "chartMouseOver", "chartMouseOut", "chartGlobalOut", "chartContextMenu", "chartLegendSelectChanged", "chartLegendSelected", "chartLegendUnselected", "chartLegendScroll", "chartDataZoom", "chartDataRangeSelected", "chartTimelineChanged", "chartTimelinePlayChanged", "chartRestore", "chartDataViewChanged", "chartMagicTypeChanged", "chartPieSelectChanged", "chartPieSelected", "chartPieUnselected", "chartMapSelectChanged", "chartMapSelected", "chartMapUnselected", "chartAxisAreaSelected", "chartFocusNodeAdjacency", "chartUnfocusNodeAdjacency", "chartBrush", "chartBrushEnd", "chartBrushSelected", "chartRendered", "chartFinished"], exportAs: ["echarts"] }] });
|
|
392
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
412
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: KiwiChartComponent, decorators: [{
|
|
393
413
|
type: Component,
|
|
394
414
|
args: [{ selector: 'kiwi-chart', template: `
|
|
395
415
|
<div
|
|
@@ -432,11 +452,11 @@ echarts.use([
|
|
|
432
452
|
]);
|
|
433
453
|
class KiwiChartModule {
|
|
434
454
|
}
|
|
435
|
-
KiwiChartModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
436
|
-
KiwiChartModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
437
|
-
KiwiChartModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
455
|
+
KiwiChartModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: KiwiChartModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
456
|
+
KiwiChartModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.1", ngImport: i0, type: KiwiChartModule, declarations: [KiwiChartComponent], imports: [CommonModule, i2.NgxEchartsModule], exports: [KiwiChartComponent] });
|
|
457
|
+
KiwiChartModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: KiwiChartModule, imports: [CommonModule,
|
|
438
458
|
NgxEchartsModule.forRoot({ echarts })] });
|
|
439
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
459
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: KiwiChartModule, decorators: [{
|
|
440
460
|
type: NgModule,
|
|
441
461
|
args: [{
|
|
442
462
|
declarations: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kiwibit-chart.mjs","sources":["../../../../projects/kiwibit/chart/src/lib/constants/chart.constants.ts","../../../../projects/kiwibit/chart/src/lib/models/chart.models.ts","../../../../projects/kiwibit/chart/src/lib/chart.component.ts","../../../../projects/kiwibit/chart/src/lib/chart.module.ts","../../../../projects/kiwibit/chart/src/public-api.ts","../../../../projects/kiwibit/chart/src/kiwibit-chart.ts"],"sourcesContent":["export const ADD_POINT_IMG_OFF_LIGHT = \"image://data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABmJLR0QA/wD/AP+gvaeTAAADkUlEQVR4nO2bz0sUYRjHv8/otviDGDuWrhKdskBaQZi57MmLgVpIkJ06bH9AEdF/kF46dEg726liBSGwBEFnTm0oaF3s4lhdh1BhNuTpsDPLu+MvmHXm0ZzP6X2feWfn+3x33nf3fXlfIOV8Q0dd7O3tvaDr+igzDxPRLQCdANqSkRaZHQBbzPyViEqu65bW19crhzU+1ADDMO4S0QSAq3GoTJAfAJ5alvXhoItN4cDY2FiTruuTRPQSQEfc6hLgEoB7uVyu3XGcBQCsXtxngJ/846TUJYjR3d3dsrm5+VkN1nUB/7V/F7rRI6IpAG9bW1vX5ufnd+JW2giDg4Ntu7u7N5h5HEARQFa9rmna6NLSUimo1wzwB7zvqO/zP4loaHl5eTVu4XFgGEYfEc0BuKKEN1zX7Q0GRi2I6ro+ivrkvbOcPADYtr3CzLcBeEr4WkdHx3BQqRnAzMPqzUQ0dZaTD7BtewXAGzWm5lozgIjyaqO9vb2Z2NUlRziX/qCgKcHLaotsNvstTkVJkslk1kKh2pigGtCutlhcXNyOU1SSHJBLLVcN55xmqQcbhjFERNMA9gA8sizro4QOsTdA07TXqI47XQCmxHRIPZiZO5Vql5SOcz8GpAZIC5AmNUBagDSpAdICpEkNkBYgTWqAtABpUgOkBUgTeT3An89PoX7JOTKmafLxrfZDRFvMXIy6nhD5DfDn8yeSfCP40+rI6wnnvgtENoCZi0S0dZJiIuIQUTHqzZHHAL/PRV7JCfd5y7KO3KsQF2kXkBYgTWqAtABpUgOkBUiTGiAtQJrUAGkB0qQGSAuQJjVA6sGhqbQjpUNyg0SwntDQfL5RxPYINbqecFKkY4BSrttLVygU2vGfMDAwcDEU+hMUVAN+qS08z7sep6gkaW5uDufyOyiom6XLagtN0x7ErCtJxkP1L0FB3SxdCjUqGobRF6eqJPBzqPuVYeZarjUDXNctoXrAKCBLRHNn2QTlwMQFJbzhed5sUKlbijZN8w6A96HPqQCYBjCTyWTWTvsm6kKh0F6pVG4S0X1Uv3k1eTDziG3bBxsAAKZpTgJ4ErtSAZj5hW3bz9TYvlNjjuMs5HK5VgBmYsoSgIgmLMt6juOOzQFgx3E+9fT0rDJzP6rn7s4yG8z80LKsVwglDxxzdDafz2daWlpG/DM2eVSPzp72P0jbALYAlJm55HnebLlc/istKuW08g8wjAev/BoR3wAAAABJRU5ErkJggg==\";\r\nexport const ADD_POINT_IMG_OFF_DARK = \"image://data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABmJLR0QA/wD/AP+gvaeTAAADgUlEQVR4nO2bz04TURTGvzNtaQOVB1BgYVhZDbSUDixZYwLoTlzXB5CI8QUM4ANQXeOCqCkJiUuWtpNCIaG6gRWoeyx/CmGOC5hyZ/izmDJzgM5vdefMafudr/femd65BQKaG7rqZKVSadndORhjohGAUwB1AGjzSZtbdgHeBmiFmPNt7bF8IpE4vCz5UgMKhZXnBJoG+KE3On2CsEkmv8kM9n27+LSD+fn5UFdX9xQBr71X5x8E/tCvpyaJyFTjmjPxLhYPAAyaMAqr751xWw846fb44sioMSPHbH5ubY2s9/T07HqstSHW1tba9vaOHmuaNg4gC0bUlkA0puvJfP3QalQqlZbqv8NfjjH/G4RhXU+tea7cAwyj3MsmLwJ4oIQ34veiCWtirA+B3Z2DMVvxhNptLh4AMpnkKmn0FISaEu6uVg9HrIO6ASeXujOYkbvNxVtkMslVmPhkj5rnDQDQp6aETG3OU2U+wsT2Whhpq6kacF/NqdYiP72V5R/7+7F1e4Tqc4JqQFxNGRpKVD1V5SMX1FKv9dx9QLMRlvrgYrE8TMwfGTjWGK/6B1PfJXTI9QDmWT6ZdzpNQk5KhuQQ6FDanVIimn4OCAyQFiBNYIC0AGkCA6QFSBMYIC1AmsAAaQHSBAZIC5DG9XpAsVgeBnMO9iVn1xQLK+zypdsaI+t2PcF9D2CexTUV3yAdjawnNP0QcG2AxsgC2L5GLW7ZIpOzbl/seg44HXOuV3KcY14fSF25V8ErgiEgLUCawABpAdIEBkgLkCYwQFqANIEB0gKkCQyQFiBNYIDgZ6s/pbekRIgZoKwnNPR7vlHE9gg1up5wXQRzgNK27aVbWqrEcUcoFArtjtCO1VAN+KNmxKNHj7wU5S8RRy3812qpBiyrKWbIfOmpJh8hpnF7ACWrqZ0lcR52soZR7vVWmvcYRrkXBNtVhpnqtdYNaGuP5UHYPMtClE1evM0mKH+YaFHCG+GwuWAd2JaijR/Lz5joq+N9DsH4yMRz+/ux9Zu+iXppqRJvba09gYkXp9+8WjwYNDowkLzYAAAwCsszDJrwQav/EKZ0PfVWDZ27D+jXU5MAz/inyieYpjOZ5Dtn+NKnMcVieRTMMwC6PRXmPRsMmlC7vcqVj6NKpVLk+Dg0CpgjzNRHJxucb/oNUpWBbSJeZqZ8OGwupNPpI2lRATeV/+HNFJvPZJXuAAAAAElFTkSuQmCC\";\r\nexport const ADD_POINT_IMG_ON = \"image://data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABmJLR0QA/wD/AP+gvaeTAAADjUlEQVR4nO2by08TURTGvzNAK49oDCsRNqbFxPogtsQ/AhNAowsxLksTlxIxrtwZwJUJsa07E1wQNSUh8X+wrQFDNSklMQGVjRgMj7TIHBcww50WWEyZOTzmt7pz7pn2O1/n3pne3gIeJxvarzM0nvM1LPl7GegGcB3gVgCN7kizzSpACwA+E3NqrbmUyt0NlfZK3tOAyKv8bRANA7jghEoXmSPw43Ss/cNunRUG3Bnnmu+/C0NMeOS8Nvdg8IvsYnAQz0hX41p54nEsHgAINBA5N/e8Mq6wfdm/K8spElNC1/S3G/XrM18eXFt1VGmVXH0z3Vi3Xn+ZGH0ARQH41X4m6s32B1LGsWlAaDznq1/yfYMy5hn4UQO961Ps4rQb4g+azmS+Q9dpkoDzZpBQWD9bChkTozkEGpb8vbBOeMWjXDwApKPtU5rGNwEUzSAjcOqPr9s41Hbi6FZPJqbEUS7eIB1tnwLhtSXIqDQA4LA1Z3PMYW2uoW/CUguBIkZbvQu0qEnr+r+vDutyjSKXZqwRNucE1YAmNSX3MLTiqCoX2aUWs9aK54CTRq3UG4cT+S7SKQnCJjTqz0QDHyV0iF0BxBQHoQVAG3ROSOmQHAKtSrtNSsSJnwM8A6QFSOMZIC1AGs8AaQHSeAZIC5DGM0BagDSeAdICpLG9HhBO5LvAlLAsOVdBJD7LNk9dgEZRu+sJtq8AYoofVPFV0lrNesKJHwL2DdAoCmDh4KTYZp62fgKzhe05YHvM2V7JKR/zmVhw370KTuENAWkB0ngGSAuQxjNAWoA0ngHSAqTxDJAWII1ngLQAaTwDBN9b/So9LyVCzoCd9YSqvs9Xi9geoWrXEw4Kbw5Q2pa9dKHRXBOOCTdezp4uC/01GqoBP9WMeq32kpOi3GSjFmW10C+jpRhAWWsO3XdUlYtoNehTjxmcMfuMBjGnYIGincl8h9PinKYzme8Aw3KXIcCs1TRgrbmUAjCn5Pl1nSaPsgnGHyYA+MwgocC0PLFzqJ4Qz99i0Puy1ymBkNQ3MVbk0sxh30QdGs01Ndb4ruiEe9ufvK8spScTC+5uAACE4/kRAg04LVQCAobSseATNVbxHJBdDA4CNOKeLJcgGk4vBp5WhPfKDycKPQQeASPgrDKHIRTAGFAve2v3PoQTmTrgTA8Y3QSEsbXB+bA/IK0AWGAgS0CKaXki2x/ZkBblcVj5D1vBAfS1aXiGAAAAAElFTkSuQmCC\";","/**\r\n * Interface to define the Chart model.\r\n *\r\n * @export\r\n * @interface Chart\r\n */\r\nexport interface Chart {\r\n title: string;\r\n showLegend?: boolean;\r\n xAxisType: AxisType;\r\n xAxisName: string;\r\n xAxisUom?: string;\r\n xMin?: number;\r\n xMax?: number;\r\n yAxisType: AxisType;\r\n yAxisName: string;\r\n yAxisUom?: string;\r\n yMin?: number;\r\n yMax?: number;\r\n /**\r\n * The maximum decimals that can have the values on the x and y axes.\r\n * If omitted the default is 3 decimals.\r\n *\r\n * @type {number}\r\n * @memberof Chart\r\n */\r\n maxAxesDecimals?: number;\r\n /**\r\n * If the chart should have rendering animations.\r\n *\r\n * @type {boolean}\r\n * @memberof Chart\r\n */\r\n hasAnimations?: boolean;\r\n /**\r\n * How long the animation should last.\r\n * Expressed in milliseconds. If omitted the Default is 500 ms.\r\n *\r\n * @type {number}\r\n * @memberof Chart\r\n */\r\n animationDuration?: number;\r\n /**\r\n * The list of Shapes that the chart must render.\r\n * Each Shape corrisponds to a single chart component.\r\n *\r\n * @type {Shape[]}\r\n * @memberof Chart\r\n */\r\n shapes: Shape[];\r\n /**\r\n * Adds interaction with the chart, so that when clicking\r\n * everywhere in the chart area a point gets added and it's coordinate are \r\n * emitted with an event to the parent component.\r\n *\r\n * @type {boolean}\r\n * @memberof Chart\r\n */\r\n clickToAddPoint?: boolean;\r\n /**\r\n * Custom name for the \"clickToAddPoint\" event related button. \r\n *\r\n * @type {string}\r\n * @memberof Chart\r\n */\r\n addPointCustomName?: string;\r\n /**\r\n * Adds the possibility to use the scroll \r\n * to zoom in/out the chart area.\r\n *\r\n * @type {boolean}\r\n * @memberof Chart\r\n */\r\n scrollToZoom?: boolean;\r\n /**\r\n * Tells the chart to render or not the grid lines.\r\n *\r\n * @type {boolean}\r\n * @memberof Chart\r\n */\r\n showGrid?: boolean;\r\n}\r\n\r\nexport type Shape = Trace;\r\n\r\nexport interface Trace {\r\n name?: string;\r\n /**\r\n * The variant of the Shape, must be of type Trace.\r\n *\r\n * @type {ShapeVariant}\r\n * @memberof Trace\r\n */\r\n variant: ShapeVariant;\r\n color?: string;\r\n /**\r\n * The type of the Trace drawn by the chart.\r\n * Can be a line or a scatter. \r\n *\r\n * @type {TraceType}\r\n * @memberof Trace\r\n */\r\n type: TraceType;\r\n width?: number;\r\n /**\r\n * The list of points that define the Trace.\r\n *\r\n * @type {Point[]}\r\n * @memberof Trace\r\n */\r\n points: Point[];\r\n /**\r\n * Whether to show a smooth curve or a segmented curve.\r\n *\r\n * @type {boolean}\r\n * @memberof Trace\r\n */\r\n smooth?: boolean;\r\n /**\r\n * The style of the Trace.\r\n * Can be solid, dashed or dotted.\r\n *\r\n * @type {TraceStyle}\r\n * @memberof Trace\r\n */\r\n style?: TraceStyle;\r\n /**\r\n * Option to make the Trace selected/deselected by default.\r\n * A deselected Trace is obscured from the chart and can be toggled from the legend. \r\n *\r\n * @type {boolean}\r\n * @memberof Trace\r\n */\r\n selectedByDefault?: boolean;\r\n opacity?: number;\r\n}\r\n\r\nexport interface Point extends BasePoint {\r\n name?: string;\r\n /**\r\n * Symbol used to represent the point in the chart.\r\n *\r\n * @type {PointSymbol}\r\n * @memberof Point\r\n */\r\n symbol?: PointSymbol;\r\n symbolSize?: number;\r\n color?: string;\r\n}\r\n\r\nexport interface BasePoint {\r\n x: number;\r\n y: number\r\n}\r\n\r\nexport enum TraceType {\r\n LINE = \"line\",\r\n SCATTER = \"scatter\"\r\n}\r\n\r\nexport enum PointSymbol {\r\n NONE = \"none\",\r\n CIRCLE = \"circle\",\r\n TRIANGLE = \"triangle\",\r\n PIN = \"pin\",\r\n DIAMOND = \"diamond\"\r\n}\r\n\r\nexport enum TraceStyle {\r\n SOLID = \"solid\",\r\n DASHED = \"dashed\",\r\n DOTTED = \"dotted\"\r\n}\r\n\r\nexport enum AxisType {\r\n VALUE = \"value\"\r\n}\r\n\r\nexport enum ShapeVariant {\r\n TRACE\r\n}","import { ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { CustomSeriesOption, ECharts, EChartsOption, LineSeriesOption, ScatterSeriesOption, zrender } from 'echarts';\r\nimport { interval, Subject, takeUntil } from 'rxjs';\r\nimport { ADD_POINT_IMG_OFF_DARK, ADD_POINT_IMG_OFF_LIGHT, ADD_POINT_IMG_ON } from './constants/chart.constants';\r\nimport { Chart, Shape, ShapeVariant, Trace, Point, BasePoint } from './models/chart.models';\r\n@Component({\r\n selector: 'kiwi-chart',\r\n template: `\r\n <div \r\n echarts \r\n [options]=\"chartOption\" \r\n [ngStyle]=\"{\r\n 'width': width,\r\n 'height': height\r\n }\"\r\n (chartInit)=\"onChartInit($event)\"\r\n [theme]=\"darkTheme ? 'dark' : ''\"\r\n ></div> \r\n `,\r\n styles: [`\r\n `]\r\n})\r\nexport class KiwiChartComponent implements OnInit, OnChanges, OnDestroy {\r\n\r\n /**\r\n * The Chart Object rendered by the canvas. For all the available options refer \r\n * to Chart interface in the models folder.\r\n *\r\n * @type {(Chart | null)}\r\n * @memberof KiwiChartComponent\r\n */\r\n @Input() chart: Chart | null = null;\r\n\r\n /**\r\n * Width and Height of the chart area. The dimensions refer to the father component \r\n * into which the kiwi-chart is inserted. For example in an empty page the width/height \r\n * of the chart can take the whole available space in the page.\r\n *\r\n * @type {string}\r\n * @memberof KiwiChartComponent\r\n */\r\n @Input() width: string = '100%';\r\n @Input() height: string = '480px';\r\n\r\n /**\r\n * This property simply activates or not the dark theme of the chart\r\n * defined by the Echarts library. In addition the background color can be custom\r\n * so that the chart can match the background of the application in which it's used.\r\n *\r\n * @type {boolean}\r\n * @memberof KiwiChartComponent\r\n */\r\n @Input() darkTheme: boolean = false;\r\n @Input() darkThemeBackground?: string;\r\n\r\n /**\r\n * Output event used to emit to the father component the coordinates\r\n * of the point clicked in the chart area. This functionality to be used must\r\n * have the property \"clickToAddPoint\" in the Chart object set to true.\r\n *\r\n * @type {EventEmitter<BasePoint>}\r\n * @memberof KiwiChartComponent\r\n */\r\n @Output() addPoint: EventEmitter<BasePoint> = new EventEmitter<BasePoint>();\r\n\r\n /**\r\n * When the cursor hovers the chart area it emits to the father component the\r\n * x and y coordinates relative to the chart reference system.\r\n *\r\n * @type {EventEmitter<BasePoint>}\r\n * @memberof KiwiChartComponent\r\n */\r\n @Output() chartHover: EventEmitter<BasePoint> = new EventEmitter<BasePoint>();\r\n\r\n /**\r\n * The object used by echarts to initially create the Chart.\r\n *\r\n * @type {EChartsOption}\r\n * @memberof KiwiChartComponent\r\n */\r\n chartOption: EChartsOption = {};\r\n\r\n /**\r\n * The instance of the Chart.\r\n *\r\n * @type {(ECharts | null)}\r\n * @memberof KiwiChartComponent\r\n */\r\n echartsInstance: ECharts | null = null;\r\n\r\n /**\r\n * Used to perform actions (as point addition based on the cursor position) on the chart.\r\n *\r\n * @type {(zrender.ZRenderType | null)}\r\n * @memberof KiwiChartComponent\r\n */\r\n zr: zrender.ZRenderType | null = null;\r\n\r\n /**\r\n * Subject used to unsubscribe once the component gets destroyed.\r\n *\r\n * @private\r\n * @type {Subject<void>}\r\n * @memberof KiwiChartComponent\r\n */\r\n private destroyed$: Subject<void> = new Subject<void>();\r\n\r\n /**\r\n * Default number of decimals that can have\r\n * the values on the x and y axes.\r\n *\r\n * @private\r\n * @type {number}\r\n * @memberof KiwiChartComponent\r\n */\r\n private readonly MAX_DECIMALS: number = 3;\r\n\r\n constructor(\r\n private cd: ChangeDetectorRef\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n /** \r\n * This is a manual change detection running every 200ms, the memory should not be much afflicted.\r\n * It's necessary because when interacting with the chart (for example addPoint),\r\n * Angular loses the change detection and the point is not added in the chart canvas.\r\n */\r\n interval(200)\r\n .pipe(\r\n takeUntil(this.destroyed$)\r\n )\r\n .subscribe(() => {\r\n this.cd.detectChanges();\r\n });\r\n }\r\n\r\n onChartInit(ec: ECharts) {\r\n this.echartsInstance = ec;\r\n this.setupZrEventHandler(ec);\r\n }\r\n\r\n setupZrEventHandler(ec: ECharts) {\r\n this.zr = ec.getZr();\r\n /** \r\n * Intercepts the click event on the chart (if the clickToAddPoint property is set to true)\r\n * and emits the point coordinates to the father component.\r\n */\r\n this.zr.on('click', params => {\r\n let option: any = ec.getOption();\r\n let active = option?.toolbox?.[0]?.feature?.myAddPoint?.iconStatus;\r\n if (active && this.chart?.clickToAddPoint) {\r\n const pointInPixel = [params.offsetX, params.offsetY];\r\n const pointInGrid = ec.convertFromPixel('grid', pointInPixel);\r\n if (ec.containPixel('grid', pointInPixel) && pointInGrid) {\r\n let newPoint: { x: number, y: number } = {\r\n x: +pointInGrid[0].toFixed(3),\r\n y: +pointInGrid[1].toFixed(3)\r\n };\r\n this.addPoint.emit(newPoint);\r\n }\r\n }\r\n });\r\n /** \r\n * This is used perform custom actions when the mouse is hovering the chart area\r\n */\r\n this.zr.on('mousemove', params => {\r\n const pointInPixel = [params.offsetX, params.offsetY];\r\n const pointInGrid = ec.convertFromPixel('grid', pointInPixel);\r\n /* \r\n * Logic to emit to the father component the x and y cdinates when the\r\n * cursor is hovering the chart area .\r\n */\r\n if (ec.containPixel('grid', pointInPixel) && pointInGrid) {\r\n let newPoint: { x: number, y: number } = {\r\n x: +pointInGrid[0].toFixed(3),\r\n y: +pointInGrid[1].toFixed(3)\r\n };\r\n this.chartHover.emit(newPoint);\r\n }\r\n /* Logic to change the cursor icon when the \"Click to Add Point\" feature is active and viceversa. */\r\n const option: any = ec.getOption();\r\n const addPointIsActive = option?.toolbox?.[0]?.feature?.myAddPoint?.iconStatus;\r\n if (addPointIsActive) {\r\n this.zr?.setCursorStyle(\r\n ec.containPixel('grid', pointInPixel) ? 'copy' : 'default'\r\n );\r\n }\r\n });\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n let chart: Chart = changes['chart']?.currentValue;\r\n if (chart) {\r\n this.chartOption = {\r\n title: {\r\n text: chart.title,\r\n },\r\n grid: {\r\n width: '70%'\r\n },\r\n backgroundColor: this.darkTheme ? this.darkThemeBackground ?? '#303030' : 'transparent', tooltip: {\r\n axisPointer: {\r\n type: 'cross',\r\n crossStyle: {\r\n color: '#bebebe'\r\n }\r\n }\r\n },\r\n toolbox: {\r\n orient: 'horizontal',\r\n left: 'center',\r\n feature: {\r\n dataZoom: {\r\n brushStyle: {\r\n borderColor: '#000',\r\n borderWidth: 1,\r\n borderType: 'dashed'\r\n },\r\n },\r\n saveAsImage: {},\r\n restore: {},\r\n myAddPoint: {\r\n show: chart.clickToAddPoint ?? false,\r\n title: chart.addPointCustomName ?? 'Add Point',\r\n icon: this.darkTheme ? ADD_POINT_IMG_OFF_DARK : ADD_POINT_IMG_OFF_LIGHT,\r\n iconStatus: false,\r\n onclick: () => {\r\n let option: any = this.echartsInstance?.getOption();\r\n let status = option.toolbox[0].feature.myAddPoint.iconStatus;\r\n this.echartsInstance?.setOption({\r\n toolbox: {\r\n feature: {\r\n myAddPoint: {\r\n iconStatus: !status,\r\n icon: !status ? ADD_POINT_IMG_ON : this.darkTheme ? ADD_POINT_IMG_OFF_DARK : ADD_POINT_IMG_OFF_LIGHT\r\n }\r\n }\r\n }\r\n });\r\n }\r\n }\r\n },\r\n },\r\n dataZoom: [\r\n {\r\n type: 'inside',\r\n xAxisIndex: [0],\r\n throttle: 0,\r\n filterMode: 'none',\r\n disabled: !chart.scrollToZoom ?? true\r\n },\r\n {\r\n type: 'inside',\r\n yAxisIndex: [0],\r\n throttle: 0,\r\n filterMode: 'none',\r\n disabled: !chart.scrollToZoom ?? true\r\n },\r\n ],\r\n legend: {\r\n inactiveColor: this.darkTheme ? '#8b8b8b' : '#ccc',\r\n data: chart.shapes.map(\r\n (shape: Shape) => ({\r\n name: shape.name,\r\n icon: 'circle'\r\n })\r\n ),\r\n selected: chart.shapes.reduce((accumulator, shape: Shape) => ({ ...accumulator, [shape.name as string]: shape.selectedByDefault ?? true }), {}),\r\n show: chart.showLegend ?? false,\r\n orient: 'vertical',\r\n left: 'right',\r\n padding: [60, 20],\r\n type: 'scroll',\r\n textStyle: {\r\n width: 120,\r\n fontWeight: 'bold',\r\n overflow: 'break'\r\n }\r\n },\r\n xAxis: {\r\n type: chart.xAxisType,\r\n name: chart.xAxisUom ? `${chart.xAxisName} [ ${chart.xAxisUom} ]` : chart.xAxisName,\r\n nameLocation: 'middle',\r\n nameGap: 30,\r\n splitLine: {\r\n show: chart.showGrid ?? true,\r\n lineStyle: {\r\n color: this.darkTheme ? '#595959' : '#ccc'\r\n }\r\n },\r\n min: chart.xMin?.toFixed(chart.maxAxesDecimals ?? this.MAX_DECIMALS),\r\n max: chart.xMax?.toFixed(chart.maxAxesDecimals ?? this.MAX_DECIMALS),\r\n },\r\n yAxis: {\r\n type: chart.yAxisType,\r\n name: chart.yAxisUom ? `${chart.yAxisName} [ ${chart.yAxisUom} ]` : chart.yAxisName,\r\n nameLocation: 'middle',\r\n nameGap: 50,\r\n splitLine: {\r\n show: chart.showGrid ?? true,\r\n lineStyle: {\r\n color: this.darkTheme ? '#595959' : '#ccc'\r\n }\r\n },\r\n min: chart.yMin?.toFixed(chart.maxAxesDecimals ?? this.MAX_DECIMALS),\r\n max: chart.yMax?.toFixed(chart.maxAxesDecimals ?? this.MAX_DECIMALS),\r\n },\r\n series: this.createSeries(chart.shapes),\r\n animation: chart.hasAnimations,\r\n animationDuration: chart.animationDuration ?? 500,\r\n animationEasing: 'cubicOut'\r\n };\r\n }\r\n }\r\n\r\n createSeries(shapes: Shape[]): Array<LineSeriesOption | CustomSeriesOption | ScatterSeriesOption> {\r\n let series: Array<LineSeriesOption | CustomSeriesOption | ScatterSeriesOption> = [];\r\n shapes.forEach(\r\n (shape: Shape) => {\r\n switch (shape.variant) {\r\n case ShapeVariant.TRACE:\r\n series.push(this.createTrace(shape as Trace))\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n );\r\n return series;\r\n }\r\n\r\n createTrace(trace: Trace): LineSeriesOption | ScatterSeriesOption {\r\n return {\r\n type: trace.type,\r\n name: trace.name,\r\n data: trace.points.map(\r\n (point: Point) => ({\r\n value: [point.x, point.y],\r\n symbol: point.symbol ?? 'circle',\r\n name: point.name,\r\n symbolSize: point.symbolSize ?? 2,\r\n itemStyle: {\r\n color: point.color\r\n },\r\n emphasis: {\r\n disabled: true\r\n },\r\n label: {\r\n show: true,\r\n position: 'bottom',\r\n align: 'left',\r\n verticalAlign: 'bottom',\r\n formatter: () => `${point.name ?? ''}`,\r\n fontSize: 13,\r\n padding: [0, 0, 0, 10],\r\n width: 100,\r\n overflow: 'truncate',\r\n ellipsis: '...',\r\n fontWeight: 'bold',\r\n color: this.darkTheme ? '#fff' : '#000'\r\n },\r\n tooltip: {\r\n formatter: ({ value }: { value: number[] }) => `\r\n <strong>${this.chart?.xAxisName}:</strong> ${value[0].toFixed(3).replace(/[.,]000$/, \"\")}\r\n <br>\r\n <strong>${this.chart?.yAxisName}:</strong> ${value[1].toFixed(3).replace(/[.,]000$/, \"\")}\r\n `\r\n }\r\n })\r\n ),\r\n color: trace.color,\r\n lineStyle: {\r\n width: trace.width,\r\n type: trace.style,\r\n opacity: trace.opacity ?? 1\r\n },\r\n smooth: trace.smooth ?? false\r\n };\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroyed$.next();\r\n this.destroyed$.complete();\r\n }\r\n\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { KiwiChartComponent } from './chart.component';\r\nimport { NgxEchartsModule } from 'ngx-echarts';\r\nimport * as echarts from 'echarts/core';\r\nimport { TitleComponent, TooltipComponent, GridComponent, LegendComponent, DataZoomComponent, ToolboxComponent } from 'echarts/components';\r\nimport { LineChart, ScatterChart } from 'echarts/charts';\r\nimport { CanvasRenderer } from 'echarts/renderers';\r\necharts.use([\r\n TitleComponent,\r\n TooltipComponent,\r\n GridComponent,\r\n LineChart,\r\n CanvasRenderer,\r\n LegendComponent,\r\n DataZoomComponent,\r\n ToolboxComponent,\r\n ScatterChart\r\n]);\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n KiwiChartComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n NgxEchartsModule.forRoot({ echarts })\r\n ],\r\n exports: [\r\n KiwiChartComponent\r\n ]\r\n})\r\nexport class KiwiChartModule { }\r\n","/*\r\n * Public API Surface of chart\r\n */\r\n\r\nexport * from './lib/chart.component';\r\nexport * from './lib/chart.module';\r\nexport * from './lib/models/chart.models';\r\nexport * from './lib/constants/chart.constants';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"kiwibit-chart.mjs","sources":["../../../../projects/kiwibit/chart/src/lib/constants/chart.constants.ts","../../../../projects/kiwibit/chart/src/lib/models/chart.models.ts","../../../../projects/kiwibit/chart/src/lib/chart.component.ts","../../../../projects/kiwibit/chart/src/lib/chart.module.ts","../../../../projects/kiwibit/chart/src/public-api.ts","../../../../projects/kiwibit/chart/src/kiwibit-chart.ts"],"sourcesContent":["export const ADD_POINT_IMG_OFF_LIGHT = \"image://data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABmJLR0QA/wD/AP+gvaeTAAADkUlEQVR4nO2bz0sUYRjHv8/otviDGDuWrhKdskBaQZi57MmLgVpIkJ06bH9AEdF/kF46dEg726liBSGwBEFnTm0oaF3s4lhdh1BhNuTpsDPLu+MvmHXm0ZzP6X2feWfn+3x33nf3fXlfIOV8Q0dd7O3tvaDr+igzDxPRLQCdANqSkRaZHQBbzPyViEqu65bW19crhzU+1ADDMO4S0QSAq3GoTJAfAJ5alvXhoItN4cDY2FiTruuTRPQSQEfc6hLgEoB7uVyu3XGcBQCsXtxngJ/846TUJYjR3d3dsrm5+VkN1nUB/7V/F7rRI6IpAG9bW1vX5ufnd+JW2giDg4Ntu7u7N5h5HEARQFa9rmna6NLSUimo1wzwB7zvqO/zP4loaHl5eTVu4XFgGEYfEc0BuKKEN1zX7Q0GRi2I6ro+ivrkvbOcPADYtr3CzLcBeEr4WkdHx3BQqRnAzMPqzUQ0dZaTD7BtewXAGzWm5lozgIjyaqO9vb2Z2NUlRziX/qCgKcHLaotsNvstTkVJkslk1kKh2pigGtCutlhcXNyOU1SSHJBLLVcN55xmqQcbhjFERNMA9gA8sizro4QOsTdA07TXqI47XQCmxHRIPZiZO5Vql5SOcz8GpAZIC5AmNUBagDSpAdICpEkNkBYgTWqAtABpUgOkBUgTeT3An89PoX7JOTKmafLxrfZDRFvMXIy6nhD5DfDn8yeSfCP40+rI6wnnvgtENoCZi0S0dZJiIuIQUTHqzZHHAL/PRV7JCfd5y7KO3KsQF2kXkBYgTWqAtABpUgOkBUiTGiAtQJrUAGkB0qQGSAuQJjVA6sGhqbQjpUNyg0SwntDQfL5RxPYINbqecFKkY4BSrttLVygU2vGfMDAwcDEU+hMUVAN+qS08z7sep6gkaW5uDufyOyiom6XLagtN0x7ErCtJxkP1L0FB3SxdCjUqGobRF6eqJPBzqPuVYeZarjUDXNctoXrAKCBLRHNn2QTlwMQFJbzhed5sUKlbijZN8w6A96HPqQCYBjCTyWTWTvsm6kKh0F6pVG4S0X1Uv3k1eTDziG3bBxsAAKZpTgJ4ErtSAZj5hW3bz9TYvlNjjuMs5HK5VgBmYsoSgIgmLMt6juOOzQFgx3E+9fT0rDJzP6rn7s4yG8z80LKsVwglDxxzdDafz2daWlpG/DM2eVSPzp72P0jbALYAlJm55HnebLlc/istKuW08g8wjAev/BoR3wAAAABJRU5ErkJggg==\";\r\nexport const ADD_POINT_IMG_OFF_DARK = \"image://data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABmJLR0QA/wD/AP+gvaeTAAADgUlEQVR4nO2bz04TURTGvzNtaQOVB1BgYVhZDbSUDixZYwLoTlzXB5CI8QUM4ANQXeOCqCkJiUuWtpNCIaG6gRWoeyx/CmGOC5hyZ/izmDJzgM5vdefMafudr/femd65BQKaG7rqZKVSadndORhjohGAUwB1AGjzSZtbdgHeBmiFmPNt7bF8IpE4vCz5UgMKhZXnBJoG+KE3On2CsEkmv8kM9n27+LSD+fn5UFdX9xQBr71X5x8E/tCvpyaJyFTjmjPxLhYPAAyaMAqr751xWw846fb44sioMSPHbH5ubY2s9/T07HqstSHW1tba9vaOHmuaNg4gC0bUlkA0puvJfP3QalQqlZbqv8NfjjH/G4RhXU+tea7cAwyj3MsmLwJ4oIQ34veiCWtirA+B3Z2DMVvxhNptLh4AMpnkKmn0FISaEu6uVg9HrIO6ASeXujOYkbvNxVtkMslVmPhkj5rnDQDQp6aETG3OU2U+wsT2Whhpq6kacF/NqdYiP72V5R/7+7F1e4Tqc4JqQFxNGRpKVD1V5SMX1FKv9dx9QLMRlvrgYrE8TMwfGTjWGK/6B1PfJXTI9QDmWT6ZdzpNQk5KhuQQ6FDanVIimn4OCAyQFiBNYIC0AGkCA6QFSBMYIC1AmsAAaQHSBAZIC5DG9XpAsVgeBnMO9iVn1xQLK+zypdsaI+t2PcF9D2CexTUV3yAdjawnNP0QcG2AxsgC2L5GLW7ZIpOzbl/seg44HXOuV3KcY14fSF25V8ErgiEgLUCawABpAdIEBkgLkCYwQFqANIEB0gKkCQyQFiBNYIDgZ6s/pbekRIgZoKwnNPR7vlHE9gg1up5wXQRzgNK27aVbWqrEcUcoFArtjtCO1VAN+KNmxKNHj7wU5S8RRy3812qpBiyrKWbIfOmpJh8hpnF7ACWrqZ0lcR52soZR7vVWmvcYRrkXBNtVhpnqtdYNaGuP5UHYPMtClE1evM0mKH+YaFHCG+GwuWAd2JaijR/Lz5joq+N9DsH4yMRz+/ux9Zu+iXppqRJvba09gYkXp9+8WjwYNDowkLzYAAAwCsszDJrwQav/EKZ0PfVWDZ27D+jXU5MAz/inyieYpjOZ5Dtn+NKnMcVieRTMMwC6PRXmPRsMmlC7vcqVj6NKpVLk+Dg0CpgjzNRHJxucb/oNUpWBbSJeZqZ8OGwupNPpI2lRATeV/+HNFJvPZJXuAAAAAElFTkSuQmCC\";\r\nexport const ADD_POINT_IMG_ON = \"image://data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABmJLR0QA/wD/AP+gvaeTAAADjUlEQVR4nO2by08TURTGvzNAK49oDCsRNqbFxPogtsQ/AhNAowsxLksTlxIxrtwZwJUJsa07E1wQNSUh8X+wrQFDNSklMQGVjRgMj7TIHBcww50WWEyZOTzmt7pz7pn2O1/n3pne3gIeJxvarzM0nvM1LPl7GegGcB3gVgCN7kizzSpACwA+E3NqrbmUyt0NlfZK3tOAyKv8bRANA7jghEoXmSPw43Ss/cNunRUG3Bnnmu+/C0NMeOS8Nvdg8IvsYnAQz0hX41p54nEsHgAINBA5N/e8Mq6wfdm/K8spElNC1/S3G/XrM18eXFt1VGmVXH0z3Vi3Xn+ZGH0ARQH41X4m6s32B1LGsWlAaDznq1/yfYMy5hn4UQO961Ps4rQb4g+azmS+Q9dpkoDzZpBQWD9bChkTozkEGpb8vbBOeMWjXDwApKPtU5rGNwEUzSAjcOqPr9s41Hbi6FZPJqbEUS7eIB1tnwLhtSXIqDQA4LA1Z3PMYW2uoW/CUguBIkZbvQu0qEnr+r+vDutyjSKXZqwRNucE1YAmNSX3MLTiqCoX2aUWs9aK54CTRq3UG4cT+S7SKQnCJjTqz0QDHyV0iF0BxBQHoQVAG3ROSOmQHAKtSrtNSsSJnwM8A6QFSOMZIC1AGs8AaQHSeAZIC5DGM0BagDSeAdICpLG9HhBO5LvAlLAsOVdBJD7LNk9dgEZRu+sJtq8AYoofVPFV0lrNesKJHwL2DdAoCmDh4KTYZp62fgKzhe05YHvM2V7JKR/zmVhw370KTuENAWkB0ngGSAuQxjNAWoA0ngHSAqTxDJAWII1ngLQAaTwDBN9b/So9LyVCzoCd9YSqvs9Xi9geoWrXEw4Kbw5Q2pa9dKHRXBOOCTdezp4uC/01GqoBP9WMeq32kpOi3GSjFmW10C+jpRhAWWsO3XdUlYtoNehTjxmcMfuMBjGnYIGincl8h9PinKYzme8Aw3KXIcCs1TRgrbmUAjCn5Pl1nSaPsgnGHyYA+MwgocC0PLFzqJ4Qz99i0Puy1ymBkNQ3MVbk0sxh30QdGs01Ndb4ruiEe9ufvK8spScTC+5uAACE4/kRAg04LVQCAobSseATNVbxHJBdDA4CNOKeLJcgGk4vBp5WhPfKDycKPQQeASPgrDKHIRTAGFAve2v3PoQTmTrgTA8Y3QSEsbXB+bA/IK0AWGAgS0CKaXki2x/ZkBblcVj5D1vBAfS1aXiGAAAAAElFTkSuQmCC\";","/**\r\n * Interface to define the Chart model.\r\n *\r\n * @export\r\n * @interface Chart\r\n */\r\nexport interface Chart {\r\n title: string;\r\n showLegend?: boolean;\r\n xAxisType: AxisType;\r\n xAxisName: string;\r\n xAxisUom?: string;\r\n xMin?: number;\r\n xMax?: number;\r\n yAxisType: AxisType;\r\n yAxisName: string;\r\n yAxisUom?: string;\r\n yMin?: number;\r\n yMax?: number;\r\n /**\r\n * The maximum decimals that can have the values on the x and y axes.\r\n * If omitted the default is 3 decimals.\r\n *\r\n * @type {number}\r\n * @memberof Chart\r\n */\r\n maxAxesDecimals?: number;\r\n /**\r\n * If the chart should have rendering animations.\r\n *\r\n * @type {boolean}\r\n * @memberof Chart\r\n */\r\n hasAnimations?: boolean;\r\n /**\r\n * How long the animation should last.\r\n * Expressed in milliseconds. If omitted the Default is 500 ms.\r\n *\r\n * @type {number}\r\n * @memberof Chart\r\n */\r\n animationDuration?: number;\r\n /**\r\n * The list of Shapes that the chart must render.\r\n * Each Shape corrisponds to a single chart component.\r\n *\r\n * @type {Shape[]}\r\n * @memberof Chart\r\n */\r\n shapes: Shape[];\r\n /**\r\n * Adds interaction with the chart, so that when clicking\r\n * everywhere in the chart area a point gets added and it's coordinate are \r\n * emitted with an event to the parent component.\r\n *\r\n * @type {boolean}\r\n * @memberof Chart\r\n */\r\n clickToAddPoint?: boolean;\r\n /**\r\n * Custom name for the \"clickToAddPoint\" event related button. \r\n *\r\n * @type {string}\r\n * @memberof Chart\r\n */\r\n addPointCustomName?: string;\r\n /**\r\n * Adds the possibility to use the scroll \r\n * to zoom in/out the chart area.\r\n *\r\n * @type {boolean}\r\n * @memberof Chart\r\n */\r\n scrollToZoom?: boolean;\r\n /**\r\n * Tells the chart to render or not the grid lines.\r\n *\r\n * @type {boolean}\r\n * @memberof Chart\r\n */\r\n showGrid?: boolean;\r\n}\r\n\r\nexport type Shape = Trace;\r\n\r\nexport interface Trace {\r\n name?: string;\r\n /**\r\n * The variant of the Shape, must be of type Trace.\r\n *\r\n * @type {ShapeVariant}\r\n * @memberof Trace\r\n */\r\n variant: ShapeVariant;\r\n color?: string;\r\n /**\r\n * The type of the Trace drawn by the chart.\r\n * Can be a line or a scatter. \r\n *\r\n * @type {TraceType}\r\n * @memberof Trace\r\n */\r\n type: TraceType;\r\n width?: number;\r\n /**\r\n * The list of points that define the Trace.\r\n *\r\n * @type {Point[]}\r\n * @memberof Trace\r\n */\r\n points: Point[];\r\n /**\r\n * Whether to show a smooth curve or a segmented curve.\r\n *\r\n * @type {boolean}\r\n * @memberof Trace\r\n */\r\n smooth?: boolean;\r\n /**\r\n * The style of the Trace.\r\n * Can be solid, dashed or dotted.\r\n *\r\n * @type {TraceStyle}\r\n * @memberof Trace\r\n */\r\n style?: TraceStyle;\r\n /**\r\n * Option to make the Trace selected/deselected by default.\r\n * A deselected Trace is obscured from the chart and can be toggled from the legend. \r\n *\r\n * @type {boolean}\r\n * @memberof Trace\r\n */\r\n selectedByDefault?: boolean;\r\n opacity?: number;\r\n}\r\n\r\nexport interface Point extends BasePoint {\r\n name?: string;\r\n /**\r\n * Symbol used to represent the point in the chart.\r\n *\r\n * @type {PointSymbol}\r\n * @memberof Point\r\n */\r\n symbol?: PointSymbol;\r\n symbolSize?: number;\r\n color?: string;\r\n}\r\n\r\nexport interface BasePoint {\r\n x: number;\r\n y: number\r\n}\r\n\r\nexport enum TraceType {\r\n LINE = \"line\",\r\n SCATTER = \"scatter\"\r\n}\r\n\r\nexport enum PointSymbol {\r\n NONE = \"none\",\r\n CIRCLE = \"circle\",\r\n TRIANGLE = \"triangle\",\r\n PIN = \"pin\",\r\n DIAMOND = \"diamond\"\r\n}\r\n\r\nexport enum TraceStyle {\r\n SOLID = \"solid\",\r\n DASHED = \"dashed\",\r\n DOTTED = \"dotted\"\r\n}\r\n\r\nexport enum AxisType {\r\n VALUE = \"value\"\r\n}\r\n\r\nexport enum ShapeVariant {\r\n TRACE\r\n}","// Angular General\r\nimport { ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { interval, Subject, takeUntil } from 'rxjs';\r\n// Echarts\r\nimport { CustomSeriesOption, ECharts, EChartsOption, LineSeriesOption, ScatterSeriesOption, zrender } from 'echarts';\r\n// Kiwi Chart\r\nimport { ADD_POINT_IMG_OFF_DARK, ADD_POINT_IMG_OFF_LIGHT, ADD_POINT_IMG_ON } from './constants/chart.constants';\r\nimport { Chart, Shape, ShapeVariant, Trace, Point, BasePoint, TraceType } from './models/chart.models';\r\n@Component({\r\n selector: 'kiwi-chart',\r\n template: `\r\n <div \r\n echarts \r\n [options]=\"chartOption\" \r\n [ngStyle]=\"{\r\n 'width': width,\r\n 'height': height\r\n }\"\r\n (chartInit)=\"onChartInit($event)\"\r\n [theme]=\"darkTheme ? 'dark' : ''\"\r\n ></div> \r\n `,\r\n styles: [`\r\n `]\r\n})\r\nexport class KiwiChartComponent implements OnInit, OnChanges, OnDestroy {\r\n\r\n /**\r\n * The Chart Object rendered by the canvas. For all the available options refer \r\n * to Chart interface in the models folder.\r\n *\r\n * @type {(Chart | null)}\r\n * @memberof KiwiChartComponent\r\n */\r\n @Input() chart: Chart | null = null;\r\n\r\n /**\r\n * Width and Height of the chart area. The dimensions refer to the father component \r\n * into which the kiwi-chart is inserted. For example in an empty page the width/height \r\n * of the chart can take the whole available space in the page.\r\n *\r\n * @type {string}\r\n * @memberof KiwiChartComponent\r\n */\r\n @Input() width: string = '100%';\r\n @Input() height: string = '480px';\r\n\r\n /**\r\n * This property simply activates or not the dark theme of the chart\r\n * defined by the Echarts library. In addition the background color can be custom\r\n * so that the chart can match the background of the application in which it's used.\r\n *\r\n * @type {boolean}\r\n * @memberof KiwiChartComponent\r\n */\r\n @Input() darkTheme: boolean = false;\r\n @Input() darkThemeBackground?: string;\r\n\r\n /**\r\n * Output event used to emit to the father component the coordinates\r\n * of the point clicked in the chart area. This functionality to be used must\r\n * have the property \"clickToAddPoint\" in the Chart object set to true.\r\n *\r\n * @type {EventEmitter<BasePoint>}\r\n * @memberof KiwiChartComponent\r\n */\r\n @Output() addPoint: EventEmitter<BasePoint> = new EventEmitter<BasePoint>();\r\n\r\n /**\r\n * When the cursor hovers the chart area it emits to the father component the\r\n * x and y coordinates relative to the chart reference system.\r\n *\r\n * @type {EventEmitter<BasePoint>}\r\n * @memberof KiwiChartComponent\r\n */\r\n @Output() chartHover: EventEmitter<BasePoint> = new EventEmitter<BasePoint>();\r\n\r\n /**\r\n * The object used by echarts to initially create the Chart.\r\n * Has a default configuration that can be totally overrided using specific properties.\r\n *\r\n * @type {EChartsOption}\r\n * @memberof KiwiChartComponent\r\n */\r\n chartOption: EChartsOption = {\r\n title: {\r\n text: 'Kiwi Chart'\r\n },\r\n xAxis: {\r\n name: 'X'\r\n },\r\n yAxis: {\r\n name: 'Y'\r\n },\r\n series: [\r\n {\r\n type: TraceType.LINE,\r\n data: [[0, 0]]\r\n }\r\n ]\r\n };\r\n\r\n /**\r\n * The instance of the Chart.\r\n *\r\n * @type {(ECharts | null)}\r\n * @memberof KiwiChartComponent\r\n */\r\n echartsInstance: ECharts | null = null;\r\n\r\n /**\r\n * Used to perform actions (as point addition based on the cursor position) on the chart.\r\n *\r\n * @type {(zrender.ZRenderType | null)}\r\n * @memberof KiwiChartComponent\r\n */\r\n zr: zrender.ZRenderType | null = null;\r\n\r\n /**\r\n * Subject used to unsubscribe once the component gets destroyed.\r\n *\r\n * @private\r\n * @type {Subject<void>}\r\n * @memberof KiwiChartComponent\r\n */\r\n private destroyed$: Subject<void> = new Subject<void>();\r\n\r\n /**\r\n * Default number of decimals that can have\r\n * the values on the x and y axes.\r\n *\r\n * @private\r\n * @type {number}\r\n * @memberof KiwiChartComponent\r\n */\r\n private readonly MAX_DECIMALS: number = 3;\r\n\r\n constructor(\r\n private cd: ChangeDetectorRef\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n /** \r\n * This is a manual change detection running every 200ms, the memory should not be much afflicted.\r\n * It's necessary because when interacting with the chart (for example addPoint),\r\n * Angular loses the change detection and the point is not added in the chart canvas.\r\n */\r\n interval(200)\r\n .pipe(\r\n takeUntil(this.destroyed$)\r\n )\r\n .subscribe({\r\n next: () => {\r\n this.cd.detectChanges();\r\n }\r\n });\r\n }\r\n\r\n onChartInit(ec: ECharts) {\r\n this.echartsInstance = ec;\r\n this.setupZrEventHandler(ec);\r\n }\r\n\r\n setupZrEventHandler(ec: ECharts) {\r\n this.zr = ec.getZr();\r\n /** \r\n * Intercepts the click event on the chart (if the clickToAddPoint property is set to true)\r\n * and emits the point coordinates to the father component.\r\n */\r\n this.zr.on('click', params => {\r\n let option: any = ec.getOption();\r\n let active = option?.toolbox?.[0]?.feature?.myAddPoint?.iconStatus;\r\n if (active && this.chart?.clickToAddPoint) {\r\n const pointInPixel = [params.offsetX, params.offsetY];\r\n const pointInGrid = ec.convertFromPixel('grid', pointInPixel);\r\n if (ec.containPixel('grid', pointInPixel) && pointInGrid) {\r\n let newPoint: { x: number, y: number } = {\r\n x: +pointInGrid[0].toFixed(3),\r\n y: +pointInGrid[1].toFixed(3)\r\n };\r\n this.addPoint.emit(newPoint);\r\n }\r\n }\r\n });\r\n /** \r\n * This is used perform custom actions when the mouse is hovering the chart area\r\n */\r\n this.zr.on('mousemove', params => {\r\n const pointInPixel = [params.offsetX, params.offsetY];\r\n const pointInGrid = ec.convertFromPixel('grid', pointInPixel);\r\n /* \r\n * Logic to emit to the father component the x and y cdinates when the\r\n * cursor is hovering the chart area .\r\n */\r\n if (ec.containPixel('grid', pointInPixel) && pointInGrid) {\r\n let newPoint: { x: number, y: number } = {\r\n x: +pointInGrid[0].toFixed(3),\r\n y: +pointInGrid[1].toFixed(3)\r\n };\r\n this.chartHover.emit(newPoint);\r\n }\r\n /* Logic to change the cursor icon when the \"Click to Add Point\" feature is active and viceversa. */\r\n const option: any = ec.getOption();\r\n const addPointIsActive = option?.toolbox?.[0]?.feature?.myAddPoint?.iconStatus;\r\n if (addPointIsActive) {\r\n this.zr?.setCursorStyle(\r\n ec.containPixel('grid', pointInPixel) ? 'copy' : 'default'\r\n );\r\n }\r\n });\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n let chart: Chart = changes['chart']?.currentValue;\r\n if (chart) {\r\n this.chartOption = {\r\n title: {\r\n text: chart.title,\r\n },\r\n grid: {\r\n width: '70%'\r\n },\r\n backgroundColor: this.darkTheme ? this.darkThemeBackground ?? '#303030' : 'transparent', tooltip: {\r\n axisPointer: {\r\n type: 'cross',\r\n crossStyle: {\r\n color: '#bebebe'\r\n }\r\n }\r\n },\r\n toolbox: {\r\n orient: 'horizontal',\r\n left: 'center',\r\n feature: {\r\n dataZoom: {\r\n brushStyle: {\r\n borderColor: '#000',\r\n borderWidth: 1,\r\n borderType: 'dashed'\r\n },\r\n },\r\n saveAsImage: {},\r\n restore: {},\r\n myAddPoint: {\r\n show: chart.clickToAddPoint ?? false,\r\n title: chart.addPointCustomName ?? 'Add Point',\r\n icon: this.darkTheme ? ADD_POINT_IMG_OFF_DARK : ADD_POINT_IMG_OFF_LIGHT,\r\n iconStatus: false,\r\n onclick: () => {\r\n let option: any = this.echartsInstance?.getOption();\r\n let status = option.toolbox[0].feature.myAddPoint.iconStatus;\r\n this.echartsInstance?.setOption({\r\n toolbox: {\r\n feature: {\r\n myAddPoint: {\r\n iconStatus: !status,\r\n icon: !status ? ADD_POINT_IMG_ON : this.darkTheme ? ADD_POINT_IMG_OFF_DARK : ADD_POINT_IMG_OFF_LIGHT\r\n }\r\n }\r\n }\r\n });\r\n }\r\n }\r\n },\r\n },\r\n dataZoom: [\r\n {\r\n type: 'inside',\r\n xAxisIndex: [0],\r\n throttle: 0,\r\n filterMode: 'none',\r\n disabled: !chart.scrollToZoom ?? true\r\n },\r\n {\r\n type: 'inside',\r\n yAxisIndex: [0],\r\n throttle: 0,\r\n filterMode: 'none',\r\n disabled: !chart.scrollToZoom ?? true\r\n },\r\n ],\r\n legend: {\r\n inactiveColor: this.darkTheme ? '#8b8b8b' : '#ccc',\r\n data: chart.shapes.map(\r\n (shape: Shape) => ({\r\n name: shape.name,\r\n icon: 'circle'\r\n })\r\n ),\r\n selected: chart.shapes.reduce((accumulator, shape: Shape) => ({ ...accumulator, [shape.name as string]: shape.selectedByDefault ?? true }), {}),\r\n show: chart.showLegend ?? false,\r\n orient: 'vertical',\r\n left: 'right',\r\n padding: [60, 20],\r\n type: 'scroll',\r\n textStyle: {\r\n width: 120,\r\n fontWeight: 'bold',\r\n overflow: 'break'\r\n }\r\n },\r\n xAxis: {\r\n type: chart.xAxisType,\r\n name: chart.xAxisUom ? `${chart.xAxisName} [ ${chart.xAxisUom} ]` : chart.xAxisName,\r\n nameLocation: 'middle',\r\n nameGap: 30,\r\n splitLine: {\r\n show: chart.showGrid ?? true,\r\n lineStyle: {\r\n color: this.darkTheme ? '#595959' : '#ccc'\r\n }\r\n },\r\n min: chart.xMin?.toFixed(chart.maxAxesDecimals ?? this.MAX_DECIMALS),\r\n max: chart.xMax?.toFixed(chart.maxAxesDecimals ?? this.MAX_DECIMALS),\r\n },\r\n yAxis: {\r\n type: chart.yAxisType,\r\n name: chart.yAxisUom ? `${chart.yAxisName} [ ${chart.yAxisUom} ]` : chart.yAxisName,\r\n nameLocation: 'middle',\r\n nameGap: 50,\r\n splitLine: {\r\n show: chart.showGrid ?? true,\r\n lineStyle: {\r\n color: this.darkTheme ? '#595959' : '#ccc'\r\n }\r\n },\r\n min: chart.yMin?.toFixed(chart.maxAxesDecimals ?? this.MAX_DECIMALS),\r\n max: chart.yMax?.toFixed(chart.maxAxesDecimals ?? this.MAX_DECIMALS),\r\n },\r\n series: this.createSeries(chart.shapes),\r\n animation: chart.hasAnimations,\r\n animationDuration: chart.animationDuration ?? 500,\r\n animationEasing: 'cubicOut'\r\n };\r\n }\r\n }\r\n\r\n createSeries(shapes: Shape[]): Array<LineSeriesOption | CustomSeriesOption | ScatterSeriesOption> {\r\n let series: Array<LineSeriesOption | CustomSeriesOption | ScatterSeriesOption> = [];\r\n shapes.forEach(\r\n (shape: Shape) => {\r\n switch (shape.variant) {\r\n case ShapeVariant.TRACE:\r\n series.push(this.createTrace(shape as Trace))\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n );\r\n return series;\r\n }\r\n\r\n createTrace(trace: Trace): LineSeriesOption | ScatterSeriesOption {\r\n return {\r\n type: trace.type,\r\n name: trace.name,\r\n data: trace.points.map(\r\n (point: Point) => ({\r\n value: [point.x, point.y],\r\n symbol: point.symbol ?? 'circle',\r\n name: point.name,\r\n symbolSize: point.symbolSize ?? 2,\r\n itemStyle: {\r\n color: point.color\r\n },\r\n emphasis: {\r\n disabled: true\r\n },\r\n label: {\r\n show: true,\r\n position: 'bottom',\r\n align: 'left',\r\n verticalAlign: 'bottom',\r\n formatter: () => `${point.name ?? ''}`,\r\n fontSize: 13,\r\n padding: [0, 0, 0, 10],\r\n width: 100,\r\n overflow: 'truncate',\r\n ellipsis: '...',\r\n fontWeight: 'bold',\r\n color: this.darkTheme ? '#fff' : '#000'\r\n },\r\n tooltip: {\r\n formatter: ({ value }: { value: number[] }) => `\r\n <strong>${this.chart?.xAxisName}:</strong> ${value[0].toFixed(3).replace(/[.,]000$/, \"\")}\r\n <br>\r\n <strong>${this.chart?.yAxisName}:</strong> ${value[1].toFixed(3).replace(/[.,]000$/, \"\")}\r\n `\r\n }\r\n })\r\n ),\r\n color: trace.color,\r\n lineStyle: {\r\n width: trace.width,\r\n type: trace.style,\r\n opacity: trace.opacity ?? 1\r\n },\r\n smooth: trace.smooth ?? false\r\n };\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroyed$.next();\r\n this.destroyed$.complete();\r\n }\r\n\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { KiwiChartComponent } from './chart.component';\r\nimport { NgxEchartsModule } from 'ngx-echarts';\r\nimport * as echarts from 'echarts/core';\r\nimport { TitleComponent, TooltipComponent, GridComponent, LegendComponent, DataZoomComponent, ToolboxComponent } from 'echarts/components';\r\nimport { LineChart, ScatterChart } from 'echarts/charts';\r\nimport { CanvasRenderer } from 'echarts/renderers';\r\necharts.use([\r\n TitleComponent,\r\n TooltipComponent,\r\n GridComponent,\r\n LineChart,\r\n CanvasRenderer,\r\n LegendComponent,\r\n DataZoomComponent,\r\n ToolboxComponent,\r\n ScatterChart\r\n]);\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n KiwiChartComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n NgxEchartsModule.forRoot({ echarts })\r\n ],\r\n exports: [\r\n KiwiChartComponent\r\n ]\r\n})\r\nexport class KiwiChartModule { }\r\n","/*\r\n * Public API Surface of chart\r\n */\r\n\r\nexport * from './lib/chart.component';\r\nexport * from './lib/chart.module';\r\nexport * from './lib/models/chart.models';\r\nexport * from './lib/constants/chart.constants';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
package/lib/chart.component.d.ts
CHANGED
|
@@ -51,6 +51,7 @@ export declare class KiwiChartComponent implements OnInit, OnChanges, OnDestroy
|
|
|
51
51
|
chartHover: EventEmitter<BasePoint>;
|
|
52
52
|
/**
|
|
53
53
|
* The object used by echarts to initially create the Chart.
|
|
54
|
+
* Has a default configuration that can be totally overrided using specific properties.
|
|
54
55
|
*
|
|
55
56
|
* @type {EChartsOption}
|
|
56
57
|
* @memberof KiwiChartComponent
|
|
@@ -96,5 +97,5 @@ export declare class KiwiChartComponent implements OnInit, OnChanges, OnDestroy
|
|
|
96
97
|
createTrace(trace: Trace): LineSeriesOption | ScatterSeriesOption;
|
|
97
98
|
ngOnDestroy(): void;
|
|
98
99
|
static ɵfac: i0.ɵɵFactoryDeclaration<KiwiChartComponent, never>;
|
|
99
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<KiwiChartComponent, "kiwi-chart", never, { "chart": "chart"; "width": "width"; "height": "height"; "darkTheme": "darkTheme"; "darkThemeBackground": "darkThemeBackground"; }, { "addPoint": "addPoint"; "chartHover": "chartHover"; }, never, never, false>;
|
|
100
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<KiwiChartComponent, "kiwi-chart", never, { "chart": "chart"; "width": "width"; "height": "height"; "darkTheme": "darkTheme"; "darkThemeBackground": "darkThemeBackground"; }, { "addPoint": "addPoint"; "chartHover": "chartHover"; }, never, never, false, never>;
|
|
100
101
|
}
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kiwibit/chart",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "15.0.1",
|
|
4
4
|
"peerDependencies": {
|
|
5
|
-
"@angular/common": "^
|
|
6
|
-
"@angular/core": "^
|
|
5
|
+
"@angular/common": "^15.0.1",
|
|
6
|
+
"@angular/core": "^15.0.1"
|
|
7
7
|
},
|
|
8
8
|
"dependencies": {
|
|
9
9
|
"echarts": "^5.4.0",
|
|
10
|
-
"ngx-echarts": "^
|
|
10
|
+
"ngx-echarts": "^15.0.0",
|
|
11
11
|
"tslib": "^2.3.0"
|
|
12
12
|
},
|
|
13
13
|
"module": "fesm2015/kiwibit-chart.mjs",
|