@kiwibit/chart 1.0.11 → 1.0.12

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.
@@ -73,6 +73,15 @@ export class KiwiChartComponent {
73
73
  * @memberof KiwiChartComponent
74
74
  */
75
75
  this.destroyed$ = new Subject();
76
+ /**
77
+ * Default number of decimals that can have
78
+ * the values on the x and y axes.
79
+ *
80
+ * @private
81
+ * @type {number}
82
+ * @memberof KiwiChartComponent
83
+ */
84
+ this.MAX_DECIMALS = 3;
76
85
  }
77
86
  ngOnInit() {
78
87
  /**
@@ -132,7 +141,7 @@ export class KiwiChartComponent {
132
141
  text: chart.title,
133
142
  },
134
143
  grid: {
135
- width: '75%'
144
+ width: '70%'
136
145
  },
137
146
  backgroundColor: this.darkTheme ? this.darkThemeBackground ?? '#303030' : 'transparent', tooltip: {
138
147
  axisPointer: {
@@ -194,7 +203,6 @@ export class KiwiChartComponent {
194
203
  },
195
204
  ],
196
205
  legend: {
197
- width: '25%',
198
206
  inactiveColor: this.darkTheme ? '#8b8b8b' : '#ccc',
199
207
  data: chart.shapes.map((shape) => ({
200
208
  name: shape.name,
@@ -223,8 +231,8 @@ export class KiwiChartComponent {
223
231
  color: this.darkTheme ? '#595959' : '#ccc'
224
232
  }
225
233
  },
226
- min: chart.xMin,
227
- max: chart.xMax,
234
+ min: chart.xMin?.toFixed(chart.maxAxesDecimals ?? this.MAX_DECIMALS),
235
+ max: chart.xMax?.toFixed(chart.maxAxesDecimals ?? this.MAX_DECIMALS),
228
236
  },
229
237
  yAxis: {
230
238
  type: chart.yAxisType,
@@ -237,11 +245,13 @@ export class KiwiChartComponent {
237
245
  color: this.darkTheme ? '#595959' : '#ccc'
238
246
  }
239
247
  },
240
- min: chart.yMin,
241
- max: chart.yMax,
248
+ min: chart.yMin?.toFixed(chart.maxAxesDecimals ?? this.MAX_DECIMALS),
249
+ max: chart.yMax?.toFixed(chart.maxAxesDecimals ?? this.MAX_DECIMALS),
242
250
  },
243
251
  series: this.createSeries(chart.shapes),
244
252
  animation: chart.hasAnimations,
253
+ animationDuration: chart.animationDuration ?? 500,
254
+ animationEasing: 'cubicOut'
245
255
  };
246
256
  }
247
257
  }
@@ -353,4 +363,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
353
363
  }], addPoint: [{
354
364
  type: Output
355
365
  }] } });
356
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l3aWJpdC9jaGFydC9zcmMvbGliL2NoYXJ0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFnQyxNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBRXZJLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsdUJBQXVCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoSCxPQUFPLEVBQWdCLFlBQVksRUFBMkIsTUFBTSx1QkFBdUIsQ0FBQzs7OztBQWtCNUYsTUFBTSxPQUFPLGtCQUFrQjtJQTRFN0IsWUFDVSxFQUFxQjtRQUFyQixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQTNFL0I7Ozs7OztXQU1HO1FBQ00sVUFBSyxHQUFpQixJQUFJLENBQUM7UUFFcEM7Ozs7Ozs7V0FPRztRQUNNLFVBQUssR0FBVyxNQUFNLENBQUM7UUFDdkIsV0FBTSxHQUFXLE9BQU8sQ0FBQztRQUVsQzs7Ozs7OztXQU9HO1FBQ00sY0FBUyxHQUFZLEtBQUssQ0FBQztRQUdwQzs7Ozs7OztXQU9HO1FBQ08sYUFBUSxHQUE0QixJQUFJLFlBQVksRUFBYSxDQUFDO1FBRTVFOzs7OztXQUtHO1FBQ0gsZ0JBQVcsR0FBa0IsRUFBRSxDQUFDO1FBRWhDOzs7OztXQUtHO1FBQ0gsb0JBQWUsR0FBbUIsSUFBSSxDQUFDO1FBRXZDOzs7OztXQUtHO1FBQ0gsT0FBRSxHQUErQixJQUFJLENBQUM7UUFFdEM7Ozs7OztXQU1HO1FBQ0ssZUFBVSxHQUFrQixJQUFJLE9BQU8sRUFBUSxDQUFDO0lBSXBELENBQUM7SUFFTCxRQUFRO1FBQ047Ozs7V0FJRztRQUNI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QUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO2FBQ3pGO2lCQUNGO2FBQ0YsQ0FBQyxDQUNIO1lBQ0QsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO1lBQ2xCLFNBQVMsRUFBRTtnQkFDVCxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7Z0JBQ2xCLElBQUksRUFBRSxLQUFLLENBQUMsS0FBSzthQUNsQjtZQUNELE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxJQUFJLEtBQUs7U0FDOUIsQ0FBQztJQUNKLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzdCLENBQUM7OytHQTFVVSxrQkFBa0I7bUdBQWxCLGtCQUFrQiw0T0FmbkI7Ozs7Ozs7Ozs7O0dBV1Q7MkZBSVUsa0JBQWtCO2tCQWpCOUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsWUFBWTtvQkFDdEIsUUFBUSxFQUFFOzs7Ozs7Ozs7OztHQVdUO29CQUNELE1BQU0sRUFBRSxDQUFDO0dBQ1IsQ0FBQztpQkFDSDt3R0FVVSxLQUFLO3NCQUFiLEtBQUs7Z0JBVUcsS0FBSztzQkFBYixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFVRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFVSSxRQUFRO3NCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEN1c3RvbVNlcmllc09wdGlvbiwgRUNoYXJ0cywgRUNoYXJ0c09wdGlvbiwgTGluZVNlcmllc09wdGlvbiwgU2NhdHRlclNlcmllc09wdGlvbiwgenJlbmRlciB9IGZyb20gJ2VjaGFydHMnO1xyXG5pbXBvcnQgeyBpbnRlcnZhbCwgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEFERF9QT0lOVF9JTUdfT0ZGX0RBUkssIEFERF9QT0lOVF9JTUdfT0ZGX0xJR0hULCBBRERfUE9JTlRfSU1HX09OIH0gZnJvbSAnLi9jb25zdGFudHMvY2hhcnQuY29uc3RhbnRzJztcclxuaW1wb3J0IHsgQ2hhcnQsIFNoYXBlLCBTaGFwZVZhcmlhbnQsIFRyYWNlLCBQb2ludCwgQmFzZVBvaW50IH0gZnJvbSAnLi9tb2RlbHMvY2hhcnQubW9kZWxzJztcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdraXdpLWNoYXJ0JyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGRpdiBcclxuICAgICAgZWNoYXJ0cyBcclxuICAgICAgW29wdGlvbnNdPVwiY2hhcnRPcHRpb25cIiBcclxuICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICd3aWR0aCc6IHdpZHRoLFxyXG4gICAgICAgICdoZWlnaHQnOiBoZWlnaHRcclxuICAgICAgfVwiXHJcbiAgICAgIChjaGFydEluaXQpPVwib25DaGFydEluaXQoJGV2ZW50KVwiXHJcbiAgICAgIFt0aGVtZV09XCJkYXJrVGhlbWUgPyAnZGFyaycgOiAnJ1wiXHJcbiAgICA+PC9kaXY+IFxyXG4gIGAsXHJcbiAgc3R5bGVzOiBbYFxyXG4gIGBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBLaXdpQ2hhcnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIENoYXJ0IE9iamVjdCByZW5kZXJlZCBieSB0aGUgY2FudmFzLiBGb3IgYWxsIHRoZSBhdmFpbGFibGUgb3B0aW9ucyByZWZlciBcclxuICAgKiB0byBDaGFydCBpbnRlcmZhY2UgaW4gdGhlIG1vZGVscyBmb2xkZXIuXHJcbiAgICpcclxuICAgKiBAdHlwZSB7KENoYXJ0IHwgbnVsbCl9XHJcbiAgICogQG1lbWJlcm9mIEtpd2lDaGFydENvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGNoYXJ0OiBDaGFydCB8IG51bGwgPSBudWxsO1xyXG5cclxuICAvKipcclxuICAgKiBXaWR0aCBhbmQgSGVpZ2h0IG9mIHRoZSBjaGFydCBhcmVhLiBUaGUgZGltZW5zaW9ucyByZWZlciB0byB0aGUgZmF0aGVyIGNvbXBvbmVudCBcclxuICAgKiBpbnRvIHdoaWNoIHRoZSBraXdpLWNoYXJ0IGlzIGluc2VydGVkLiBGb3IgZXhhbXBsZSBpbiBhbiBlbXB0eSBwYWdlIHRoZSB3aWR0aC9oZWlnaHQgXHJcbiAgICogb2YgdGhlIGNoYXJ0IGNhbiB0YWtlIHRoZSB3aG9sZSBhdmFpbGFibGUgc3BhY2UgaW4gdGhlIHBhZ2UuXHJcbiAgICpcclxuICAgKiBAdHlwZSB7c3RyaW5nfVxyXG4gICAqIEBtZW1iZXJvZiBLaXdpQ2hhcnRDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSB3aWR0aDogc3RyaW5nID0gJzEwMCUnO1xyXG4gIEBJbnB1dCgpIGhlaWdodDogc3RyaW5nID0gJzQ4MHB4JztcclxuXHJcbiAgLyoqXHJcbiAgICogVGhpcyBwcm9wZXJ0eSBzaW1wbHkgYWN0aXZhdGVzIG9yIG5vdCB0aGUgZGFyayB0aGVtZSBvZiB0aGUgY2hhcnRcclxuICAgKiBkZWZpbmVkIGJ5IHRoZSBFY2hhcnRzIGxpYnJhcnkuIEluIGFkZGl0aW9uIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGNhbiBiZSBjdXN0b21cclxuICAgKiBzbyB0aGF0IHRoZSBjaGFydCBjYW4gbWF0Y2ggdGhlIGJhY2tncm91bmQgb2YgdGhlIGFwcGxpY2F0aW9uIGluIHdoaWNoIGl0J3MgdXNlZC5cclxuICAgKlxyXG4gICAqIEB0eXBlIHtib29sZWFufVxyXG4gICAqIEBtZW1iZXJvZiBLaXdpQ2hhcnRDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSBkYXJrVGhlbWU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBkYXJrVGhlbWVCYWNrZ3JvdW5kPzogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBPdXRwdXQgZXZlbnQgdXNlZCB0byBlbWl0IHRvIHRoZSBmYXRoZXIgY29tcG9uZW50IHRoZSBjb29yZGluYXRlc1xyXG4gICAqIG9mIHRoZSBwb2ludCBjbGlja2VkIGluIHRoZSBjaGFydCBhcmVhLiBUaGlzIGZ1bmN0aW9uYWxpdHkgdG8gYmUgdXNlZCBtdXN0XHJcbiAgICogaGF2ZSB0aGUgcHJvcGVydHkgXCJjbGlja1RvQWRkUG9pbnRcIiBpbiB0aGUgQ2hhcnQgb2JqZWN0IHNldCB0byB0cnVlLlxyXG4gICAqXHJcbiAgICogQHR5cGUge0V2ZW50RW1pdHRlcjxCYXNlUG9pbnQ+fVxyXG4gICAqIEBtZW1iZXJvZiBLaXdpQ2hhcnRDb21wb25lbnRcclxuICAgKi9cclxuICBAT3V0cHV0KCkgYWRkUG9pbnQ6IEV2ZW50RW1pdHRlcjxCYXNlUG9pbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxCYXNlUG9pbnQ+KCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBvYmplY3QgdXNlZCBieSBlY2hhcnRzIHRvIGluaXRpYWxseSBjcmVhdGUgdGhlIENoYXJ0LlxyXG4gICAqXHJcbiAgICogQHR5cGUge0VDaGFydHNPcHRpb259XHJcbiAgICogQG1lbWJlcm9mIEtpd2lDaGFydENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGNoYXJ0T3B0aW9uOiBFQ2hhcnRzT3B0aW9uID0ge307XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBpbnN0YW5jZSBvZiB0aGUgQ2hhcnQuXHJcbiAgICpcclxuICAgKiBAdHlwZSB7KEVDaGFydHMgfCBudWxsKX1cclxuICAgKiBAbWVtYmVyb2YgS2l3aUNoYXJ0Q29tcG9uZW50XHJcbiAgICovXHJcbiAgZWNoYXJ0c0luc3RhbmNlOiBFQ2hhcnRzIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIC8qKlxyXG4gICAqIFVzZWQgdG8gcGVyZm9ybSBhY3Rpb25zIChhcyBwb2ludCBhZGRpdGlvbiBiYXNlZCBvbiB0aGUgY3Vyc29yIHBvc2l0aW9uKSBvbiB0aGUgY2hhcnQuXHJcbiAgICpcclxuICAgKiBAdHlwZSB7KHpyZW5kZXIuWlJlbmRlclR5cGUgfCBudWxsKX1cclxuICAgKiBAbWVtYmVyb2YgS2l3aUNoYXJ0Q29tcG9uZW50XHJcbiAgICovXHJcbiAgenI6IHpyZW5kZXIuWlJlbmRlclR5cGUgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgLyoqXHJcbiAgICogU3ViamVjdCB1c2VkIHRvIHVuc3Vic2NyaWJlIG9uY2UgdGhlIGNvbXBvbmVudCBnZXRzIGRlc3Ryb3llZC5cclxuICAgKlxyXG4gICAqIEBwcml2YXRlXHJcbiAgICogQHR5cGUge1N1YmplY3Q8dm9pZD59XHJcbiAgICogQG1lbWJlcm9mIEtpd2lDaGFydENvbXBvbmVudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgZGVzdHJveWVkJDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWZcclxuICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIC8qKiBcclxuICAgICAqIFRoaXMgaXMgYSBtYW51YWwgY2hhbmdlIGRldGVjdGlvbiBydW5uaW5nIGV2ZXJ5IDIwMG1zLCB0aGUgbWVtb3J5IHNob3VsZCBub3QgYmUgbXVjaCBhZmZsaWN0ZWQuXHJcbiAgICAgKiBJdCdzIG5lY2Vzc2FyeSBiZWNhdXNlIHdoZW4gaW50ZXJhY3Rpbmcgd2l0aCB0aGUgY2hhcnQgKGZvciBleGFtcGxlIGFkZFBvaW50KSxcclxuICAgICAqIEFuZ3VsYXIgbG9zZXMgdGhlIGNoYW5nZSBkZXRlY3Rpb24gYW5kIHRoZSBwb2ludCBpcyBub3QgYWRkZWQgaW4gdGhlIGNoYXJ0IGNhbnZhcy5cclxuICAgICAqL1xyXG4gICAgaW50ZXJ2YWwoMjAwKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uQ2hhcnRJbml0KGVjOiBFQ2hhcnRzKSB7XHJcbiAgICB0aGlzLmVjaGFydHNJbnN0YW5jZSA9IGVjO1xyXG4gICAgdGhpcy5zZXR1cFpyRXZlbnRIYW5kbGVyKGVjKTtcclxuICB9XHJcblxyXG4gIHNldHVwWnJFdmVudEhhbmRsZXIoZWM6IEVDaGFydHMpIHtcclxuICAgIHRoaXMuenIgPSBlYy5nZXRacigpO1xyXG5cclxuICAgIC8qKiBcclxuICAgICAqIEludGVyY2VwdHMgdGhlIGNsaWNrIGV2ZW50IG9uIHRoZSBjaGFydCAoaWYgdGhlIGNsaWNrVG9BZGRQb2ludCBwcm9wZXJ0eSBpcyBzZXQgdG8gdHJ1ZSlcclxuICAgICAqIGFuZCBlbWl0cyB0aGUgcG9pbnQgY29vcmRpbmF0ZXMgdG8gdGhlIGZhdGhlciBjb21wb25lbnQuXHJcbiAgICAgKi9cclxuICAgIHRoaXMuenIub24oJ2NsaWNrJywgcGFyYW1zID0+IHtcclxuICAgICAgbGV0IG9wdGlvbjogYW55ID0gZWMuZ2V0T3B0aW9uKCk7XHJcbiAgICAgIGxldCBhY3RpdmUgPSBvcHRpb24/LnRvb2xib3g/LlswXT8uZmVhdHVyZT8ubXlBZGRQb2ludD8uaWNvblN0YXR1cztcclxuICAgICAgaWYgKGFjdGl2ZSAmJiB0aGlzLmNoYXJ0Py5jbGlja1RvQWRkUG9pbnQpIHtcclxuICAgICAgICBjb25zdCBwb2ludEluUGl4ZWwgPSBbcGFyYW1zLm9mZnNldFgsIHBhcmFtcy5vZmZzZXRZXTtcclxuICAgICAgICBjb25zdCBwb2ludEluR3JpZCA9IGVjLmNvbnZlcnRGcm9tUGl4ZWwoJ2dyaWQnLCBwb2ludEluUGl4ZWwpO1xyXG4gICAgICAgIGlmIChlYy5jb250YWluUGl4ZWwoJ2dyaWQnLCBwb2ludEluUGl4ZWwpICYmIHBvaW50SW5HcmlkKSB7XHJcbiAgICAgICAgICBsZXQgbmV3UG9pbnQ6IHsgeDogbnVtYmVyLCB5OiBudW1iZXIgfSA9IHtcclxuICAgICAgICAgICAgeDogK3BvaW50SW5HcmlkWzBdLnRvRml4ZWQoMyksXHJcbiAgICAgICAgICAgIHk6ICtwb2ludEluR3JpZFsxXS50b0ZpeGVkKDMpXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgdGhpcy5hZGRQb2ludC5lbWl0KG5ld1BvaW50KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIC8qKiBcclxuICAgICAqIFRoaXMgaXMgdXNlZCB0byBjaGFuZ2UgdGhlIGN1cnNvcidzIGljb24gd2hlbiB0aGUgc2VsZWN0ZWQgYWN0aW9uIGlzXHJcbiAgICAgKiBjbGljayB0byBhZGQgcG9pbnQgYW5kIHZpY2V2ZXJzYSBiYWNrIHRvIGRlZmF1bHQgaWNvbiB3aGVuIGl0J3Mgbm90IHNlbGVjdGVkLlxyXG4gICAgICovXHJcbiAgICB0aGlzLnpyLm9uKCdtb3VzZW1vdmUnLCBwYXJhbXMgPT4ge1xyXG4gICAgICBjb25zdCBwb2ludEluUGl4ZWwgPSBbcGFyYW1zLm9mZnNldFgsIHBhcmFtcy5vZmZzZXRZXTtcclxuICAgICAgY29uc3Qgb3B0aW9uOiBhbnkgPSBlYy5nZXRPcHRpb24oKTtcclxuICAgICAgY29uc3QgYWN0aXZlID0gb3B0aW9uPy50b29sYm94Py5bMF0/LmZlYXR1cmU/Lm15QWRkUG9pbnQ/Lmljb25TdGF0dXM7XHJcbiAgICAgIGlmIChhY3RpdmUpIHtcclxuICAgICAgICB0aGlzLnpyPy5zZXRDdXJzb3JTdHlsZShcclxuICAgICAgICAgIGVjLmNvbnRhaW5QaXhlbCgnZ3JpZCcsIHBvaW50SW5QaXhlbCkgPyAnY29weScgOiAnZGVmYXVsdCdcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGxldCBjaGFydDogQ2hhcnQgPSBjaGFuZ2VzWydjaGFydCddPy5jdXJyZW50VmFsdWU7XHJcbiAgICBpZiAoY2hhcnQpIHtcclxuICAgICAgdGhpcy5jaGFydE9wdGlvbiA9IHtcclxuICAgICAgICB0aXRsZToge1xyXG4gICAgICAgICAgdGV4dDogY2hhcnQudGl0bGUsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBncmlkOiB7XHJcbiAgICAgICAgICB3aWR0aDogJzc1JSdcclxuICAgICAgICB9LFxyXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhpcy5kYXJrVGhlbWUgPyB0aGlzLmRhcmtUaGVtZUJhY2tncm91bmQgPz8gJyMzMDMwMzAnIDogJ3RyYW5zcGFyZW50JywgdG9vbHRpcDoge1xyXG4gICAgICAgICAgYXhpc1BvaW50ZXI6IHtcclxuICAgICAgICAgICAgdHlwZTogJ2Nyb3NzJyxcclxuICAgICAgICAgICAgY3Jvc3NTdHlsZToge1xyXG4gICAgICAgICAgICAgIGNvbG9yOiAnI2JlYmViZSdcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdG9vbGJveDoge1xyXG4gICAgICAgICAgb3JpZW50OiAnaG9yaXpvbnRhbCcsXHJcbiAgICAgICAgICBsZWZ0OiAnY2VudGVyJyxcclxuICAgICAgICAgIGZlYXR1cmU6IHtcclxuICAgICAgICAgICAgZGF0YVpvb206IHtcclxuICAgICAgICAgICAgICBicnVzaFN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgICBib3JkZXJDb2xvcjogJyMwMDAnLFxyXG4gICAgICAgICAgICAgICAgYm9yZGVyV2lkdGg6IDEsXHJcbiAgICAgICAgICAgICAgICBib3JkZXJUeXBlOiAnZGFzaGVkJ1xyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHNhdmVBc0ltYWdlOiB7fSxcclxuICAgICAgICAgICAgcmVzdG9yZToge30sXHJcbiAgICAgICAgICAgIG15QWRkUG9pbnQ6IHtcclxuICAgICAgICAgICAgICBzaG93OiBjaGFydC5jbGlja1RvQWRkUG9pbnQgPz8gZmFsc2UsXHJcbiAgICAgICAgICAgICAgdGl0bGU6IGNoYXJ0LmFkZFBvaW50Q3VzdG9tTmFtZSA/PyAnQWRkIFBvaW50JyxcclxuICAgICAgICAgICAgICBpY29uOiB0aGlzLmRhcmtUaGVtZSA/IEFERF9QT0lOVF9JTUdfT0ZGX0RBUksgOiBBRERfUE9JTlRfSU1HX09GRl9MSUdIVCxcclxuICAgICAgICAgICAgICBpY29uU3RhdHVzOiBmYWxzZSxcclxuICAgICAgICAgICAgICBvbmNsaWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgb3B0aW9uOiBhbnkgPSB0aGlzLmVjaGFydHNJbnN0YW5jZT8uZ2V0T3B0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICBsZXQgc3RhdHVzID0gb3B0aW9uLnRvb2xib3hbMF0uZmVhdHVyZS5teUFkZFBvaW50Lmljb25TdGF0dXM7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVjaGFydHNJbnN0YW5jZT8uc2V0T3B0aW9uKHtcclxuICAgICAgICAgICAgICAgICAgdG9vbGJveDoge1xyXG4gICAgICAgICAgICAgICAgICAgIGZlYXR1cmU6IHtcclxuICAgICAgICAgICAgICAgICAgICAgIG15QWRkUG9pbnQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvblN0YXR1czogIXN0YXR1cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogIXN0YXR1cyA/IEFERF9QT0lOVF9JTUdfT04gOiB0aGlzLmRhcmtUaGVtZSA/IEFERF9QT0lOVF9JTUdfT0ZGX0RBUksgOiBBRERfUE9JTlRfSU1HX09GRl9MSUdIVFxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZGF0YVpvb206IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdHlwZTogJ2luc2lkZScsXHJcbiAgICAgICAgICAgIHhBeGlzSW5kZXg6IFswXSxcclxuICAgICAgICAgICAgdGhyb3R0bGU6IDAsXHJcbiAgICAgICAgICAgIGZpbHRlck1vZGU6ICdub25lJyxcclxuICAgICAgICAgICAgZGlzYWJsZWQ6ICFjaGFydC5zY3JvbGxUb1pvb20gPz8gdHJ1ZVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdHlwZTogJ2luc2lkZScsXHJcbiAgICAgICAgICAgIHlBeGlzSW5kZXg6IFswXSxcclxuICAgICAgICAgICAgdGhyb3R0bGU6IDAsXHJcbiAgICAgICAgICAgIGZpbHRlck1vZGU6ICdub25lJyxcclxuICAgICAgICAgICAgZGlzYWJsZWQ6ICFjaGFydC5zY3JvbGxUb1pvb20gPz8gdHJ1ZVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICBdLFxyXG4gICAgICAgIGxlZ2VuZDoge1xyXG4gICAgICAgICAgd2lkdGg6ICcyNSUnLFxyXG4gICAgICAgICAgaW5hY3RpdmVDb2xvcjogdGhpcy5kYXJrVGhlbWUgPyAnIzhiOGI4YicgOiAnI2NjYycsXHJcbiAgICAgICAgICBkYXRhOiBjaGFydC5zaGFwZXMubWFwKFxyXG4gICAgICAgICAgICAoc2hhcGU6IFNoYXBlKSA9PiAoe1xyXG4gICAgICAgICAgICAgIG5hbWU6IHNoYXBlLm5hbWUsXHJcbiAgICAgICAgICAgICAgaWNvbjogJ2NpcmNsZSdcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICksXHJcbiAgICAgICAgICBzZWxlY3RlZDogY2hhcnQuc2hhcGVzLnJlZHVjZSgoYWNjdW11bGF0b3IsIHNoYXBlOiBTaGFwZSkgPT4gKHsgLi4uYWNjdW11bGF0b3IsIFtzaGFwZS5uYW1lIGFzIHN0cmluZ106IHNoYXBlLnNlbGVjdGVkQnlEZWZhdWx0ID8/IHRydWUgfSksIHt9KSxcclxuICAgICAgICAgIHNob3c6IGNoYXJ0LnNob3dMZWdlbmQgPz8gZmFsc2UsXHJcbiAgICAgICAgICBvcmllbnQ6ICd2ZXJ0aWNhbCcsXHJcbiAgICAgICAgICBsZWZ0OiAncmlnaHQnLFxyXG4gICAgICAgICAgcGFkZGluZzogWzYwLCAyMF0sXHJcbiAgICAgICAgICB0eXBlOiAnc2Nyb2xsJyxcclxuICAgICAgICAgIHRleHRTdHlsZToge1xyXG4gICAgICAgICAgICB3aWR0aDogMTIwLFxyXG4gICAgICAgICAgICBmb250V2VpZ2h0OiAnYm9sZCcsXHJcbiAgICAgICAgICAgIG92ZXJmbG93OiAnYnJlYWsnXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICB4QXhpczoge1xyXG4gICAgICAgICAgdHlwZTogY2hhcnQueEF4aXNUeXBlLFxyXG4gICAgICAgICAgbmFtZTogY2hhcnQueEF4aXNVb20gPyBgJHtjaGFydC54QXhpc05hbWV9IFsgJHtjaGFydC54QXhpc1VvbX0gXWAgOiBjaGFydC54QXhpc05hbWUsXHJcbiAgICAgICAgICBuYW1lTG9jYXRpb246ICdtaWRkbGUnLFxyXG4gICAgICAgICAgbmFtZUdhcDogMzAsXHJcbiAgICAgICAgICBzcGxpdExpbmU6IHtcclxuICAgICAgICAgICAgc2hvdzogY2hhcnQuc2hvd0dyaWQgPz8gdHJ1ZSxcclxuICAgICAgICAgICAgbGluZVN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgY29sb3I6IHRoaXMuZGFya1RoZW1lID8gJyM1OTU5NTknIDogJyNjY2MnXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBtaW46IGNoYXJ0LnhNaW4sXHJcbiAgICAgICAgICBtYXg6IGNoYXJ0LnhNYXgsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB5QXhpczoge1xyXG4gICAgICAgICAgdHlwZTogY2hhcnQueUF4aXNUeXBlLFxyXG4gICAgICAgICAgbmFtZTogY2hhcnQueUF4aXNVb20gPyBgJHtjaGFydC55QXhpc05hbWV9IFsgJHtjaGFydC55QXhpc1VvbX0gXWAgOiBjaGFydC55QXhpc05hbWUsXHJcbiAgICAgICAgICBuYW1lTG9jYXRpb246ICdtaWRkbGUnLFxyXG4gICAgICAgICAgbmFtZUdhcDogNTAsXHJcbiAgICAgICAgICBzcGxpdExpbmU6IHtcclxuICAgICAgICAgICAgc2hvdzogY2hhcnQuc2hvd0dyaWQgPz8gdHJ1ZSxcclxuICAgICAgICAgICAgbGluZVN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgY29sb3I6IHRoaXMuZGFya1RoZW1lID8gJyM1OTU5NTknIDogJyNjY2MnXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBtaW46IGNoYXJ0LnlNaW4sXHJcbiAgICAgICAgICBtYXg6IGNoYXJ0LnlNYXgsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBzZXJpZXM6IHRoaXMuY3JlYXRlU2VyaWVzKGNoYXJ0LnNoYXBlcyksXHJcbiAgICAgICAgYW5pbWF0aW9uOiBjaGFydC5oYXNBbmltYXRpb25zLFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY3JlYXRlU2VyaWVzKHNoYXBlczogU2hhcGVbXSk6IEFycmF5PExpbmVTZXJpZXNPcHRpb24gfCBDdXN0b21TZXJpZXNPcHRpb24gfCBTY2F0dGVyU2VyaWVzT3B0aW9uPiB7XHJcbiAgICBsZXQgc2VyaWVzOiBBcnJheTxMaW5lU2VyaWVzT3B0aW9uIHwgQ3VzdG9tU2VyaWVzT3B0aW9uIHwgU2NhdHRlclNlcmllc09wdGlvbj4gPSBbXTtcclxuICAgIHNoYXBlcy5mb3JFYWNoKFxyXG4gICAgICAoc2hhcGU6IFNoYXBlKSA9PiB7XHJcbiAgICAgICAgc3dpdGNoIChzaGFwZS52YXJpYW50KSB7XHJcbiAgICAgICAgICBjYXNlIFNoYXBlVmFyaWFudC5UUkFDRTpcclxuICAgICAgICAgICAgc2VyaWVzLnB1c2godGhpcy5jcmVhdGVUcmFjZShzaGFwZSBhcyBUcmFjZSkpXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gICAgcmV0dXJuIHNlcmllcztcclxuICB9XHJcblxyXG4gIGNyZWF0ZVRyYWNlKHRyYWNlOiBUcmFjZSk6IExpbmVTZXJpZXNPcHRpb24gfCBTY2F0dGVyU2VyaWVzT3B0aW9uIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHR5cGU6IHRyYWNlLnR5cGUsXHJcbiAgICAgIG5hbWU6IHRyYWNlLm5hbWUsXHJcbiAgICAgIGRhdGE6IHRyYWNlLnBvaW50cy5tYXAoXHJcbiAgICAgICAgKHBvaW50OiBQb2ludCkgPT4gKHtcclxuICAgICAgICAgIHZhbHVlOiBbcG9pbnQueCwgcG9pbnQueV0sXHJcbiAgICAgICAgICBzeW1ib2w6IHBvaW50LnN5bWJvbCA/PyAnY2lyY2xlJyxcclxuICAgICAgICAgIG5hbWU6IHBvaW50Lm5hbWUsXHJcbiAgICAgICAgICBzeW1ib2xTaXplOiBwb2ludC5zeW1ib2xTaXplID8/IDIsXHJcbiAgICAgICAgICBpdGVtU3R5bGU6IHtcclxuICAgICAgICAgICAgY29sb3I6IHBvaW50LmNvbG9yXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZW1waGFzaXM6IHtcclxuICAgICAgICAgICAgZGlzYWJsZWQ6IHRydWVcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBsYWJlbDoge1xyXG4gICAgICAgICAgICBzaG93OiB0cnVlLFxyXG4gICAgICAgICAgICBwb3NpdGlvbjogJ2JvdHRvbScsXHJcbiAgICAgICAgICAgIGFsaWduOiAnbGVmdCcsXHJcbiAgICAgICAgICAgIHZlcnRpY2FsQWxpZ246ICdib3R0b20nLFxyXG4gICAgICAgICAgICBmb3JtYXR0ZXI6ICgpID0+IGAke3BvaW50Lm5hbWUgPz8gJyd9YCxcclxuICAgICAgICAgICAgZm9udFNpemU6IDEzLFxyXG4gICAgICAgICAgICBwYWRkaW5nOiBbMCwgMCwgMCwgMTBdLFxyXG4gICAgICAgICAgICB3aWR0aDogMTAwLFxyXG4gICAgICAgICAgICBvdmVyZmxvdzogJ3RydW5jYXRlJyxcclxuICAgICAgICAgICAgZWxsaXBzaXM6ICcuLi4nLFxyXG4gICAgICAgICAgICBmb250V2VpZ2h0OiAnYm9sZCcsXHJcbiAgICAgICAgICAgIGNvbG9yOiB0aGlzLmRhcmtUaGVtZSA/ICcjZmZmJyA6ICcjMDAwJ1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHRvb2x0aXA6IHtcclxuICAgICAgICAgICAgZm9ybWF0dGVyOiAoeyB2YWx1ZSB9OiB7IHZhbHVlOiBudW1iZXJbXSB9KSA9PiBgXHJcbiAgICAgICAgICAgICAgPHN0cm9uZz4ke3RoaXMuY2hhcnQ/LnhBeGlzTmFtZX06PC9zdHJvbmc+ICR7dmFsdWVbMF0udG9GaXhlZCgzKS5yZXBsYWNlKC9bLixdMDAwJC8sIFwiXCIpfVxyXG4gICAgICAgICAgICAgIDxicj5cclxuICAgICAgICAgICAgICA8c3Ryb25nPiR7dGhpcy5jaGFydD8ueUF4aXNOYW1lfTo8L3N0cm9uZz4gJHt2YWx1ZVsxXS50b0ZpeGVkKDMpLnJlcGxhY2UoL1suLF0wMDAkLywgXCJcIil9XHJcbiAgICAgICAgICAgIGBcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICApLFxyXG4gICAgICBjb2xvcjogdHJhY2UuY29sb3IsXHJcbiAgICAgIGxpbmVTdHlsZToge1xyXG4gICAgICAgIHdpZHRoOiB0cmFjZS53aWR0aCxcclxuICAgICAgICB0eXBlOiB0cmFjZS5zdHlsZVxyXG4gICAgICB9LFxyXG4gICAgICBzbW9vdGg6IHRyYWNlLnNtb290aCA/PyBmYWxzZVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5kZXN0cm95ZWQkLm5leHQoKTtcclxuICAgIHRoaXMuZGVzdHJveWVkJC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
366
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l3aWJpdC9jaGFydC9zcmMvbGliL2NoYXJ0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFnQyxNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBRXZJLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsdUJBQXVCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoSCxPQUFPLEVBQWdCLFlBQVksRUFBMkIsTUFBTSx1QkFBdUIsQ0FBQzs7OztBQWtCNUYsTUFBTSxPQUFPLGtCQUFrQjtJQXNGN0IsWUFDVSxFQUFxQjtRQUFyQixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQXJGL0I7Ozs7OztXQU1HO1FBQ00sVUFBSyxHQUFpQixJQUFJLENBQUM7UUFFcEM7Ozs7Ozs7V0FPRztRQUNNLFVBQUssR0FBVyxNQUFNLENBQUM7UUFDdkIsV0FBTSxHQUFXLE9BQU8sQ0FBQztRQUVsQzs7Ozs7OztXQU9HO1FBQ00sY0FBUyxHQUFZLEtBQUssQ0FBQztRQUdwQzs7Ozs7OztXQU9HO1FBQ08sYUFBUSxHQUE0QixJQUFJLFlBQVksRUFBYSxDQUFDO1FBRTVFOzs7OztXQUtHO1FBQ0gsZ0JBQVcsR0FBa0IsRUFBRSxDQUFDO1FBRWhDOzs7OztXQUtHO1FBQ0gsb0JBQWUsR0FBbUIsSUFBSSxDQUFDO1FBRXZDOzs7OztXQUtHO1FBQ0gsT0FBRSxHQUErQixJQUFJLENBQUM7UUFFdEM7Ozs7OztXQU1HO1FBQ0ssZUFBVSxHQUFrQixJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRXhEOzs7Ozs7O1dBT0c7UUFDYyxpQkFBWSxHQUFXLENBQUMs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O3NCQUFqQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFVSSxRQUFRO3NCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEN1c3RvbVNlcmllc09wdGlvbiwgRUNoYXJ0cywgRUNoYXJ0c09wdGlvbiwgTGluZVNlcmllc09wdGlvbiwgU2NhdHRlclNlcmllc09wdGlvbiwgenJlbmRlciB9IGZyb20gJ2VjaGFydHMnO1xyXG5pbXBvcnQgeyBpbnRlcnZhbCwgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEFERF9QT0lOVF9JTUdfT0ZGX0RBUkssIEFERF9QT0lOVF9JTUdfT0ZGX0xJR0hULCBBRERfUE9JTlRfSU1HX09OIH0gZnJvbSAnLi9jb25zdGFudHMvY2hhcnQuY29uc3RhbnRzJztcclxuaW1wb3J0IHsgQ2hhcnQsIFNoYXBlLCBTaGFwZVZhcmlhbnQsIFRyYWNlLCBQb2ludCwgQmFzZVBvaW50IH0gZnJvbSAnLi9tb2RlbHMvY2hhcnQubW9kZWxzJztcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdraXdpLWNoYXJ0JyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGRpdiBcclxuICAgICAgZWNoYXJ0cyBcclxuICAgICAgW29wdGlvbnNdPVwiY2hhcnRPcHRpb25cIiBcclxuICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICd3aWR0aCc6IHdpZHRoLFxyXG4gICAgICAgICdoZWlnaHQnOiBoZWlnaHRcclxuICAgICAgfVwiXHJcbiAgICAgIChjaGFydEluaXQpPVwib25DaGFydEluaXQoJGV2ZW50KVwiXHJcbiAgICAgIFt0aGVtZV09XCJkYXJrVGhlbWUgPyAnZGFyaycgOiAnJ1wiXHJcbiAgICA+PC9kaXY+IFxyXG4gIGAsXHJcbiAgc3R5bGVzOiBbYFxyXG4gIGBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBLaXdpQ2hhcnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIENoYXJ0IE9iamVjdCByZW5kZXJlZCBieSB0aGUgY2FudmFzLiBGb3IgYWxsIHRoZSBhdmFpbGFibGUgb3B0aW9ucyByZWZlciBcclxuICAgKiB0byBDaGFydCBpbnRlcmZhY2UgaW4gdGhlIG1vZGVscyBmb2xkZXIuXHJcbiAgICpcclxuICAgKiBAdHlwZSB7KENoYXJ0IHwgbnVsbCl9XHJcbiAgICogQG1lbWJlcm9mIEtpd2lDaGFydENvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGNoYXJ0OiBDaGFydCB8IG51bGwgPSBudWxsO1xyXG5cclxuICAvKipcclxuICAgKiBXaWR0aCBhbmQgSGVpZ2h0IG9mIHRoZSBjaGFydCBhcmVhLiBUaGUgZGltZW5zaW9ucyByZWZlciB0byB0aGUgZmF0aGVyIGNvbXBvbmVudCBcclxuICAgKiBpbnRvIHdoaWNoIHRoZSBraXdpLWNoYXJ0IGlzIGluc2VydGVkLiBGb3IgZXhhbXBsZSBpbiBhbiBlbXB0eSBwYWdlIHRoZSB3aWR0aC9oZWlnaHQgXHJcbiAgICogb2YgdGhlIGNoYXJ0IGNhbiB0YWtlIHRoZSB3aG9sZSBhdmFpbGFibGUgc3BhY2UgaW4gdGhlIHBhZ2UuXHJcbiAgICpcclxuICAgKiBAdHlwZSB7c3RyaW5nfVxyXG4gICAqIEBtZW1iZXJvZiBLaXdpQ2hhcnRDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSB3aWR0aDogc3RyaW5nID0gJzEwMCUnO1xyXG4gIEBJbnB1dCgpIGhlaWdodDogc3RyaW5nID0gJzQ4MHB4JztcclxuXHJcbiAgLyoqXHJcbiAgICogVGhpcyBwcm9wZXJ0eSBzaW1wbHkgYWN0aXZhdGVzIG9yIG5vdCB0aGUgZGFyayB0aGVtZSBvZiB0aGUgY2hhcnRcclxuICAgKiBkZWZpbmVkIGJ5IHRoZSBFY2hhcnRzIGxpYnJhcnkuIEluIGFkZGl0aW9uIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGNhbiBiZSBjdXN0b21cclxuICAgKiBzbyB0aGF0IHRoZSBjaGFydCBjYW4gbWF0Y2ggdGhlIGJhY2tncm91bmQgb2YgdGhlIGFwcGxpY2F0aW9uIGluIHdoaWNoIGl0J3MgdXNlZC5cclxuICAgKlxyXG4gICAqIEB0eXBlIHtib29sZWFufVxyXG4gICAqIEBtZW1iZXJvZiBLaXdpQ2hhcnRDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSBkYXJrVGhlbWU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBkYXJrVGhlbWVCYWNrZ3JvdW5kPzogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBPdXRwdXQgZXZlbnQgdXNlZCB0byBlbWl0IHRvIHRoZSBmYXRoZXIgY29tcG9uZW50IHRoZSBjb29yZGluYXRlc1xyXG4gICAqIG9mIHRoZSBwb2ludCBjbGlja2VkIGluIHRoZSBjaGFydCBhcmVhLiBUaGlzIGZ1bmN0aW9uYWxpdHkgdG8gYmUgdXNlZCBtdXN0XHJcbiAgICogaGF2ZSB0aGUgcHJvcGVydHkgXCJjbGlja1RvQWRkUG9pbnRcIiBpbiB0aGUgQ2hhcnQgb2JqZWN0IHNldCB0byB0cnVlLlxyXG4gICAqXHJcbiAgICogQHR5cGUge0V2ZW50RW1pdHRlcjxCYXNlUG9pbnQ+fVxyXG4gICAqIEBtZW1iZXJvZiBLaXdpQ2hhcnRDb21wb25lbnRcclxuICAgKi9cclxuICBAT3V0cHV0KCkgYWRkUG9pbnQ6IEV2ZW50RW1pdHRlcjxCYXNlUG9pbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxCYXNlUG9pbnQ+KCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBvYmplY3QgdXNlZCBieSBlY2hhcnRzIHRvIGluaXRpYWxseSBjcmVhdGUgdGhlIENoYXJ0LlxyXG4gICAqXHJcbiAgICogQHR5cGUge0VDaGFydHNPcHRpb259XHJcbiAgICogQG1lbWJlcm9mIEtpd2lDaGFydENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGNoYXJ0T3B0aW9uOiBFQ2hhcnRzT3B0aW9uID0ge307XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBpbnN0YW5jZSBvZiB0aGUgQ2hhcnQuXHJcbiAgICpcclxuICAgKiBAdHlwZSB7KEVDaGFydHMgfCBudWxsKX1cclxuICAgKiBAbWVtYmVyb2YgS2l3aUNoYXJ0Q29tcG9uZW50XHJcbiAgICovXHJcbiAgZWNoYXJ0c0luc3RhbmNlOiBFQ2hhcnRzIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIC8qKlxyXG4gICAqIFVzZWQgdG8gcGVyZm9ybSBhY3Rpb25zIChhcyBwb2ludCBhZGRpdGlvbiBiYXNlZCBvbiB0aGUgY3Vyc29yIHBvc2l0aW9uKSBvbiB0aGUgY2hhcnQuXHJcbiAgICpcclxuICAgKiBAdHlwZSB7KHpyZW5kZXIuWlJlbmRlclR5cGUgfCBudWxsKX1cclxuICAgKiBAbWVtYmVyb2YgS2l3aUNoYXJ0Q29tcG9uZW50XHJcbiAgICovXHJcbiAgenI6IHpyZW5kZXIuWlJlbmRlclR5cGUgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgLyoqXHJcbiAgICogU3ViamVjdCB1c2VkIHRvIHVuc3Vic2NyaWJlIG9uY2UgdGhlIGNvbXBvbmVudCBnZXRzIGRlc3Ryb3llZC5cclxuICAgKlxyXG4gICAqIEBwcml2YXRlXHJcbiAgICogQHR5cGUge1N1YmplY3Q8dm9pZD59XHJcbiAgICogQG1lbWJlcm9mIEtpd2lDaGFydENvbXBvbmVudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgZGVzdHJveWVkJDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIERlZmF1bHQgbnVtYmVyIG9mIGRlY2ltYWxzIHRoYXQgY2FuIGhhdmVcclxuICAgKiB0aGUgdmFsdWVzIG9uIHRoZSB4IGFuZCB5IGF4ZXMuXHJcbiAgICpcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqIEB0eXBlIHtudW1iZXJ9XHJcbiAgICogQG1lbWJlcm9mIEtpd2lDaGFydENvbXBvbmVudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgTUFYX0RFQ0lNQUxTOiBudW1iZXIgPSAzO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAvKiogXHJcbiAgICAgKiBUaGlzIGlzIGEgbWFudWFsIGNoYW5nZSBkZXRlY3Rpb24gcnVubmluZyBldmVyeSAyMDBtcywgdGhlIG1lbW9yeSBzaG91bGQgbm90IGJlIG11Y2ggYWZmbGljdGVkLlxyXG4gICAgICogSXQncyBuZWNlc3NhcnkgYmVjYXVzZSB3aGVuIGludGVyYWN0aW5nIHdpdGggdGhlIGNoYXJ0IChmb3IgZXhhbXBsZSBhZGRQb2ludCksXHJcbiAgICAgKiBBbmd1bGFyIGxvc2VzIHRoZSBjaGFuZ2UgZGV0ZWN0aW9uIGFuZCB0aGUgcG9pbnQgaXMgbm90IGFkZGVkIGluIHRoZSBjaGFydCBjYW52YXMuXHJcbiAgICAgKi9cclxuICAgIGludGVydmFsKDIwMClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJClcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkNoYXJ0SW5pdChlYzogRUNoYXJ0cykge1xyXG4gICAgdGhpcy5lY2hhcnRzSW5zdGFuY2UgPSBlYztcclxuICAgIHRoaXMuc2V0dXBackV2ZW50SGFuZGxlcihlYyk7XHJcbiAgfVxyXG5cclxuICBzZXR1cFpyRXZlbnRIYW5kbGVyKGVjOiBFQ2hhcnRzKSB7XHJcbiAgICB0aGlzLnpyID0gZWMuZ2V0WnIoKTtcclxuXHJcbiAgICAvKiogXHJcbiAgICAgKiBJbnRlcmNlcHRzIHRoZSBjbGljayBldmVudCBvbiB0aGUgY2hhcnQgKGlmIHRoZSBjbGlja1RvQWRkUG9pbnQgcHJvcGVydHkgaXMgc2V0IHRvIHRydWUpXHJcbiAgICAgKiBhbmQgZW1pdHMgdGhlIHBvaW50IGNvb3JkaW5hdGVzIHRvIHRoZSBmYXRoZXIgY29tcG9uZW50LlxyXG4gICAgICovXHJcbiAgICB0aGlzLnpyLm9uKCdjbGljaycsIHBhcmFtcyA9PiB7XHJcbiAgICAgIGxldCBvcHRpb246IGFueSA9IGVjLmdldE9wdGlvbigpO1xyXG4gICAgICBsZXQgYWN0aXZlID0gb3B0aW9uPy50b29sYm94Py5bMF0/LmZlYXR1cmU/Lm15QWRkUG9pbnQ/Lmljb25TdGF0dXM7XHJcbiAgICAgIGlmIChhY3RpdmUgJiYgdGhpcy5jaGFydD8uY2xpY2tUb0FkZFBvaW50KSB7XHJcbiAgICAgICAgY29uc3QgcG9pbnRJblBpeGVsID0gW3BhcmFtcy5vZmZzZXRYLCBwYXJhbXMub2Zmc2V0WV07XHJcbiAgICAgICAgY29uc3QgcG9pbnRJbkdyaWQgPSBlYy5jb252ZXJ0RnJvbVBpeGVsKCdncmlkJywgcG9pbnRJblBpeGVsKTtcclxuICAgICAgICBpZiAoZWMuY29udGFpblBpeGVsKCdncmlkJywgcG9pbnRJblBpeGVsKSAmJiBwb2ludEluR3JpZCkge1xyXG4gICAgICAgICAgbGV0IG5ld1BvaW50OiB7IHg6IG51bWJlciwgeTogbnVtYmVyIH0gPSB7XHJcbiAgICAgICAgICAgIHg6ICtwb2ludEluR3JpZFswXS50b0ZpeGVkKDMpLFxyXG4gICAgICAgICAgICB5OiArcG9pbnRJbkdyaWRbMV0udG9GaXhlZCgzKVxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIHRoaXMuYWRkUG9pbnQuZW1pdChuZXdQb2ludCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICAvKiogXHJcbiAgICAgKiBUaGlzIGlzIHVzZWQgdG8gY2hhbmdlIHRoZSBjdXJzb3IncyBpY29uIHdoZW4gdGhlIHNlbGVjdGVkIGFjdGlvbiBpc1xyXG4gICAgICogY2xpY2sgdG8gYWRkIHBvaW50IGFuZCB2aWNldmVyc2EgYmFjayB0byBkZWZhdWx0IGljb24gd2hlbiBpdCdzIG5vdCBzZWxlY3RlZC5cclxuICAgICAqL1xyXG4gICAgdGhpcy56ci5vbignbW91c2Vtb3ZlJywgcGFyYW1zID0+IHtcclxuICAgICAgY29uc3QgcG9pbnRJblBpeGVsID0gW3BhcmFtcy5vZmZzZXRYLCBwYXJhbXMub2Zmc2V0WV07XHJcbiAgICAgIGNvbnN0IG9wdGlvbjogYW55ID0gZWMuZ2V0T3B0aW9uKCk7XHJcbiAgICAgIGNvbnN0IGFjdGl2ZSA9IG9wdGlvbj8udG9vbGJveD8uWzBdPy5mZWF0dXJlPy5teUFkZFBvaW50Py5pY29uU3RhdHVzO1xyXG4gICAgICBpZiAoYWN0aXZlKSB7XHJcbiAgICAgICAgdGhpcy56cj8uc2V0Q3Vyc29yU3R5bGUoXHJcbiAgICAgICAgICBlYy5jb250YWluUGl4ZWwoJ2dyaWQnLCBwb2ludEluUGl4ZWwpID8gJ2NvcHknIDogJ2RlZmF1bHQnXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBsZXQgY2hhcnQ6IENoYXJ0ID0gY2hhbmdlc1snY2hhcnQnXT8uY3VycmVudFZhbHVlO1xyXG4gICAgaWYgKGNoYXJ0KSB7XHJcbiAgICAgIHRoaXMuY2hhcnRPcHRpb24gPSB7XHJcbiAgICAgICAgdGl0bGU6IHtcclxuICAgICAgICAgIHRleHQ6IGNoYXJ0LnRpdGxlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZ3JpZDoge1xyXG4gICAgICAgICAgd2lkdGg6ICc3MCUnXHJcbiAgICAgICAgfSxcclxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoaXMuZGFya1RoZW1lID8gdGhpcy5kYXJrVGhlbWVCYWNrZ3JvdW5kID8/ICcjMzAzMDMwJyA6ICd0cmFuc3BhcmVudCcsIHRvb2x0aXA6IHtcclxuICAgICAgICAgIGF4aXNQb2ludGVyOiB7XHJcbiAgICAgICAgICAgIHR5cGU6ICdjcm9zcycsXHJcbiAgICAgICAgICAgIGNyb3NzU3R5bGU6IHtcclxuICAgICAgICAgICAgICBjb2xvcjogJyNiZWJlYmUnXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHRvb2xib3g6IHtcclxuICAgICAgICAgIG9yaWVudDogJ2hvcml6b250YWwnLFxyXG4gICAgICAgICAgbGVmdDogJ2NlbnRlcicsXHJcbiAgICAgICAgICBmZWF0dXJlOiB7XHJcbiAgICAgICAgICAgIGRhdGFab29tOiB7XHJcbiAgICAgICAgICAgICAgYnJ1c2hTdHlsZToge1xyXG4gICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I6ICcjMDAwJyxcclxuICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoOiAxLFxyXG4gICAgICAgICAgICAgICAgYm9yZGVyVHlwZTogJ2Rhc2hlZCdcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzYXZlQXNJbWFnZToge30sXHJcbiAgICAgICAgICAgIHJlc3RvcmU6IHt9LFxyXG4gICAgICAgICAgICBteUFkZFBvaW50OiB7XHJcbiAgICAgICAgICAgICAgc2hvdzogY2hhcnQuY2xpY2tUb0FkZFBvaW50ID8/IGZhbHNlLFxyXG4gICAgICAgICAgICAgIHRpdGxlOiBjaGFydC5hZGRQb2ludEN1c3RvbU5hbWUgPz8gJ0FkZCBQb2ludCcsXHJcbiAgICAgICAgICAgICAgaWNvbjogdGhpcy5kYXJrVGhlbWUgPyBBRERfUE9JTlRfSU1HX09GRl9EQVJLIDogQUREX1BPSU5UX0lNR19PRkZfTElHSFQsXHJcbiAgICAgICAgICAgICAgaWNvblN0YXR1czogZmFsc2UsXHJcbiAgICAgICAgICAgICAgb25jbGljazogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IG9wdGlvbjogYW55ID0gdGhpcy5lY2hhcnRzSW5zdGFuY2U/LmdldE9wdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHN0YXR1cyA9IG9wdGlvbi50b29sYm94WzBdLmZlYXR1cmUubXlBZGRQb2ludC5pY29uU3RhdHVzO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lY2hhcnRzSW5zdGFuY2U/LnNldE9wdGlvbih7XHJcbiAgICAgICAgICAgICAgICAgIHRvb2xib3g6IHtcclxuICAgICAgICAgICAgICAgICAgICBmZWF0dXJlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBteUFkZFBvaW50OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb25TdGF0dXM6ICFzdGF0dXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246ICFzdGF0dXMgPyBBRERfUE9JTlRfSU1HX09OIDogdGhpcy5kYXJrVGhlbWUgPyBBRERfUE9JTlRfSU1HX09GRl9EQVJLIDogQUREX1BPSU5UX0lNR19PRkZfTElHSFRcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIGRhdGFab29tOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHR5cGU6ICdpbnNpZGUnLFxyXG4gICAgICAgICAgICB4QXhpc0luZGV4OiBbMF0sXHJcbiAgICAgICAgICAgIHRocm90dGxlOiAwLFxyXG4gICAgICAgICAgICBmaWx0ZXJNb2RlOiAnbm9uZScsXHJcbiAgICAgICAgICAgIGRpc2FibGVkOiAhY2hhcnQuc2Nyb2xsVG9ab29tID8/IHRydWVcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHR5cGU6ICdpbnNpZGUnLFxyXG4gICAgICAgICAgICB5QXhpc0luZGV4OiBbMF0sXHJcbiAgICAgICAgICAgIHRocm90dGxlOiAwLFxyXG4gICAgICAgICAgICBmaWx0ZXJNb2RlOiAnbm9uZScsXHJcbiAgICAgICAgICAgIGRpc2FibGVkOiAhY2hhcnQuc2Nyb2xsVG9ab29tID8/IHRydWVcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgXSxcclxuICAgICAgICBsZWdlbmQ6IHtcclxuICAgICAgICAgIGluYWN0aXZlQ29sb3I6IHRoaXMuZGFya1RoZW1lID8gJyM4YjhiOGInIDogJyNjY2MnLFxyXG4gICAgICAgICAgZGF0YTogY2hhcnQuc2hhcGVzLm1hcChcclxuICAgICAgICAgICAgKHNoYXBlOiBTaGFwZSkgPT4gKHtcclxuICAgICAgICAgICAgICBuYW1lOiBzaGFwZS5uYW1lLFxyXG4gICAgICAgICAgICAgIGljb246ICdjaXJjbGUnXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICApLFxyXG4gICAgICAgICAgc2VsZWN0ZWQ6IGNoYXJ0LnNoYXBlcy5yZWR1Y2UoKGFjY3VtdWxhdG9yLCBzaGFwZTogU2hhcGUpID0+ICh7IC4uLmFjY3VtdWxhdG9yLCBbc2hhcGUubmFtZSBhcyBzdHJpbmddOiBzaGFwZS5zZWxlY3RlZEJ5RGVmYXVsdCA/PyB0cnVlIH0pLCB7fSksXHJcbiAgICAgICAgICBzaG93OiBjaGFydC5zaG93TGVnZW5kID8/IGZhbHNlLFxyXG4gICAgICAgICAgb3JpZW50OiAndmVydGljYWwnLFxyXG4gICAgICAgICAgbGVmdDogJ3JpZ2h0JyxcclxuICAgICAgICAgIHBhZGRpbmc6IFs2MCwgMjBdLFxyXG4gICAgICAgICAgdHlwZTogJ3Njcm9sbCcsXHJcbiAgICAgICAgICB0ZXh0U3R5bGU6IHtcclxuICAgICAgICAgICAgd2lkdGg6IDEyMCxcclxuICAgICAgICAgICAgZm9udFdlaWdodDogJ2JvbGQnLFxyXG4gICAgICAgICAgICBvdmVyZmxvdzogJ2JyZWFrJ1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgeEF4aXM6IHtcclxuICAgICAgICAgIHR5cGU6IGNoYXJ0LnhBeGlzVHlwZSxcclxuICAgICAgICAgIG5hbWU6IGNoYXJ0LnhBeGlzVW9tID8gYCR7Y2hhcnQueEF4aXNOYW1lfSBbICR7Y2hhcnQueEF4aXNVb219IF1gIDogY2hhcnQueEF4aXNOYW1lLFxyXG4gICAgICAgICAgbmFtZUxvY2F0aW9uOiAnbWlkZGxlJyxcclxuICAgICAgICAgIG5hbWVHYXA6IDMwLFxyXG4gICAgICAgICAgc3BsaXRMaW5lOiB7XHJcbiAgICAgICAgICAgIHNob3c6IGNoYXJ0LnNob3dHcmlkID8/IHRydWUsXHJcbiAgICAgICAgICAgIGxpbmVTdHlsZToge1xyXG4gICAgICAgICAgICAgIGNvbG9yOiB0aGlzLmRhcmtUaGVtZSA/ICcjNTk1OTU5JyA6ICcjY2NjJ1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgbWluOiBjaGFydC54TWluPy50b0ZpeGVkKGNoYXJ0Lm1heEF4ZXNEZWNpbWFscyA/PyB0aGlzLk1BWF9ERUNJTUFMUyksXHJcbiAgICAgICAgICBtYXg6IGNoYXJ0LnhNYXg/LnRvRml4ZWQoY2hhcnQubWF4QXhlc0RlY2ltYWxzID8/IHRoaXMuTUFYX0RFQ0lNQUxTKSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHlBeGlzOiB7XHJcbiAgICAgICAgICB0eXBlOiBjaGFydC55QXhpc1R5cGUsXHJcbiAgICAgICAgICBuYW1lOiBjaGFydC55QXhpc1VvbSA/IGAke2NoYXJ0LnlBeGlzTmFtZX0gWyAke2NoYXJ0LnlBeGlzVW9tfSBdYCA6IGNoYXJ0LnlBeGlzTmFtZSxcclxuICAgICAgICAgIG5hbWVMb2NhdGlvbjogJ21pZGRsZScsXHJcbiAgICAgICAgICBuYW1lR2FwOiA1MCxcclxuICAgICAgICAgIHNwbGl0TGluZToge1xyXG4gICAgICAgICAgICBzaG93OiBjaGFydC5zaG93R3JpZCA/PyB0cnVlLFxyXG4gICAgICAgICAgICBsaW5lU3R5bGU6IHtcclxuICAgICAgICAgICAgICBjb2xvcjogdGhpcy5kYXJrVGhlbWUgPyAnIzU5NTk1OScgOiAnI2NjYydcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIG1pbjogY2hhcnQueU1pbj8udG9GaXhlZChjaGFydC5tYXhBeGVzRGVjaW1hbHMgPz8gdGhpcy5NQVhfREVDSU1BTFMpLFxyXG4gICAgICAgICAgbWF4OiBjaGFydC55TWF4Py50b0ZpeGVkKGNoYXJ0Lm1heEF4ZXNEZWNpbWFscyA/PyB0aGlzLk1BWF9ERUNJTUFMUyksXHJcbiAgICAgICAgfSxcclxuICAgICAgICBzZXJpZXM6IHRoaXMuY3JlYXRlU2VyaWVzKGNoYXJ0LnNoYXBlcyksXHJcbiAgICAgICAgYW5pbWF0aW9uOiBjaGFydC5oYXNBbmltYXRpb25zLFxyXG4gICAgICAgIGFuaW1hdGlvbkR1cmF0aW9uOiBjaGFydC5hbmltYXRpb25EdXJhdGlvbiA/PyA1MDAsXHJcbiAgICAgICAgYW5pbWF0aW9uRWFzaW5nOiAnY3ViaWNPdXQnXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjcmVhdGVTZXJpZXMoc2hhcGVzOiBTaGFwZVtdKTogQXJyYXk8TGluZVNlcmllc09wdGlvbiB8IEN1c3RvbVNlcmllc09wdGlvbiB8IFNjYXR0ZXJTZXJpZXNPcHRpb24+IHtcclxuICAgIGxldCBzZXJpZXM6IEFycmF5PExpbmVTZXJpZXNPcHRpb24gfCBDdXN0b21TZXJpZXNPcHRpb24gfCBTY2F0dGVyU2VyaWVzT3B0aW9uPiA9IFtdO1xyXG4gICAgc2hhcGVzLmZvckVhY2goXHJcbiAgICAgIChzaGFwZTogU2hhcGUpID0+IHtcclxuICAgICAgICBzd2l0Y2ggKHNoYXBlLnZhcmlhbnQpIHtcclxuICAgICAgICAgIGNhc2UgU2hhcGVWYXJpYW50LlRSQUNFOlxyXG4gICAgICAgICAgICBzZXJpZXMucHVzaCh0aGlzLmNyZWF0ZVRyYWNlKHNoYXBlIGFzIFRyYWNlKSlcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgICByZXR1cm4gc2VyaWVzO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlVHJhY2UodHJhY2U6IFRyYWNlKTogTGluZVNlcmllc09wdGlvbiB8IFNjYXR0ZXJTZXJpZXNPcHRpb24ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdHlwZTogdHJhY2UudHlwZSxcclxuICAgICAgbmFtZTogdHJhY2UubmFtZSxcclxuICAgICAgZGF0YTogdHJhY2UucG9pbnRzLm1hcChcclxuICAgICAgICAocG9pbnQ6IFBvaW50KSA9PiAoe1xyXG4gICAgICAgICAgdmFsdWU6IFtwb2ludC54LCBwb2ludC55XSxcclxuICAgICAgICAgIHN5bWJvbDogcG9pbnQuc3ltYm9sID8/ICdjaXJjbGUnLFxyXG4gICAgICAgICAgbmFtZTogcG9pbnQubmFtZSxcclxuICAgICAgICAgIHN5bWJvbFNpemU6IHBvaW50LnN5bWJvbFNpemUgPz8gMixcclxuICAgICAgICAgIGl0ZW1TdHlsZToge1xyXG4gICAgICAgICAgICBjb2xvcjogcG9pbnQuY29sb3JcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBlbXBoYXNpczoge1xyXG4gICAgICAgICAgICBkaXNhYmxlZDogdHJ1ZVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGxhYmVsOiB7XHJcbiAgICAgICAgICAgIHNob3c6IHRydWUsXHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnYm90dG9tJyxcclxuICAgICAgICAgICAgYWxpZ246ICdsZWZ0JyxcclxuICAgICAgICAgICAgdmVydGljYWxBbGlnbjogJ2JvdHRvbScsXHJcbiAgICAgICAgICAgIGZvcm1hdHRlcjogKCkgPT4gYCR7cG9pbnQubmFtZSA/PyAnJ31gLFxyXG4gICAgICAgICAgICBmb250U2l6ZTogMTMsXHJcbiAgICAgICAgICAgIHBhZGRpbmc6IFswLCAwLCAwLCAxMF0sXHJcbiAgICAgICAgICAgIHdpZHRoOiAxMDAsXHJcbiAgICAgICAgICAgIG92ZXJmbG93OiAndHJ1bmNhdGUnLFxyXG4gICAgICAgICAgICBlbGxpcHNpczogJy4uLicsXHJcbiAgICAgICAgICAgIGZvbnRXZWlnaHQ6ICdib2xkJyxcclxuICAgICAgICAgICAgY29sb3I6IHRoaXMuZGFya1RoZW1lID8gJyNmZmYnIDogJyMwMDAnXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgdG9vbHRpcDoge1xyXG4gICAgICAgICAgICBmb3JtYXR0ZXI6ICh7IHZhbHVlIH06IHsgdmFsdWU6IG51bWJlcltdIH0pID0+IGBcclxuICAgICAgICAgICAgICA8c3Ryb25nPiR7dGhpcy5jaGFydD8ueEF4aXNOYW1lfTo8L3N0cm9uZz4gJHt2YWx1ZVswXS50b0ZpeGVkKDMpLnJlcGxhY2UoL1suLF0wMDAkLywgXCJcIil9XHJcbiAgICAgICAgICAgICAgPGJyPlxyXG4gICAgICAgICAgICAgIDxzdHJvbmc+JHt0aGlzLmNoYXJ0Py55QXhpc05hbWV9Ojwvc3Ryb25nPiAke3ZhbHVlWzFdLnRvRml4ZWQoMykucmVwbGFjZSgvWy4sXTAwMCQvLCBcIlwiKX1cclxuICAgICAgICAgICAgYFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICksXHJcbiAgICAgIGNvbG9yOiB0cmFjZS5jb2xvcixcclxuICAgICAgbGluZVN0eWxlOiB7XHJcbiAgICAgICAgd2lkdGg6IHRyYWNlLndpZHRoLFxyXG4gICAgICAgIHR5cGU6IHRyYWNlLnN0eWxlXHJcbiAgICAgIH0sXHJcbiAgICAgIHNtb290aDogdHJhY2Uuc21vb3RoID8/IGZhbHNlXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLmRlc3Ryb3llZCQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95ZWQkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
@@ -25,4 +25,4 @@ export var ShapeVariant;
25
25
  (function (ShapeVariant) {
26
26
  ShapeVariant[ShapeVariant["TRACE"] = 0] = "TRACE";
27
27
  })(ShapeVariant || (ShapeVariant = {}));
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQubW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l3aWJpdC9jaGFydC9zcmMvbGliL21vZGVscy9jaGFydC5tb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBMElBLE1BQU0sQ0FBTixJQUFZLFNBR1g7QUFIRCxXQUFZLFNBQVM7SUFDakIsMEJBQWEsQ0FBQTtJQUNiLGdDQUFtQixDQUFBO0FBQ3ZCLENBQUMsRUFIVyxTQUFTLEtBQVQsU0FBUyxRQUdwQjtBQUVELE1BQU0sQ0FBTixJQUFZLFdBTVg7QUFORCxXQUFZLFdBQVc7SUFDbkIsNEJBQWEsQ0FBQTtJQUNiLGdDQUFpQixDQUFBO0lBQ2pCLG9DQUFxQixDQUFBO0lBQ3JCLDBCQUFXLENBQUE7SUFDWCxrQ0FBbUIsQ0FBQTtBQUN2QixDQUFDLEVBTlcsV0FBVyxLQUFYLFdBQVcsUUFNdEI7QUFFRCxNQUFNLENBQU4sSUFBWSxVQUlYO0FBSkQsV0FBWSxVQUFVO0lBQ2xCLDZCQUFlLENBQUE7SUFDZiwrQkFBaUIsQ0FBQTtJQUNqQiwrQkFBaUIsQ0FBQTtBQUNyQixDQUFDLEVBSlcsVUFBVSxLQUFWLFVBQVUsUUFJckI7QUFFRCxNQUFNLENBQU4sSUFBWSxRQUVYO0FBRkQsV0FBWSxRQUFRO0lBQ2hCLDJCQUFlLENBQUE7QUFDbkIsQ0FBQyxFQUZXLFFBQVEsS0FBUixRQUFRLFFBRW5CO0FBRUQsTUFBTSxDQUFOLElBQVksWUFFWDtBQUZELFdBQVksWUFBWTtJQUNwQixpREFBSyxDQUFBO0FBQ1QsQ0FBQyxFQUZXLFlBQVksS0FBWixZQUFZLFFBRXZCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEludGVyZmFjZSB0byBkZWZpbmUgdGhlIENoYXJ0IG1vZGVsLlxyXG4gKlxyXG4gKiBAZXhwb3J0XHJcbiAqIEBpbnRlcmZhY2UgQ2hhcnRcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ2hhcnQge1xyXG4gICAgdGl0bGU6IHN0cmluZztcclxuICAgIHNob3dMZWdlbmQ/OiBib29sZWFuO1xyXG4gICAgeEF4aXNUeXBlOiBBeGlzVHlwZTtcclxuICAgIHhBeGlzTmFtZTogc3RyaW5nO1xyXG4gICAgeEF4aXNVb20/OiBzdHJpbmc7XHJcbiAgICB4TWluPzogbnVtYmVyO1xyXG4gICAgeE1heD86IG51bWJlcjtcclxuICAgIHlBeGlzVHlwZTogQXhpc1R5cGU7XHJcbiAgICB5QXhpc05hbWU6IHN0cmluZztcclxuICAgIHlBeGlzVW9tPzogc3RyaW5nO1xyXG4gICAgeU1pbj86IG51bWJlcjtcclxuICAgIHlNYXg/OiBudW1iZXI7XHJcbiAgICAvKipcclxuICAgICAqIElmIHRoZSBjaGFydCBzaG91bGQgaGF2ZSByZW5kZXJpbmcgYW5pbWF0aW9ucy5cclxuICAgICAqXHJcbiAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cclxuICAgICAqIEBtZW1iZXJvZiBDaGFydFxyXG4gICAgICovXHJcbiAgICBoYXNBbmltYXRpb25zPzogYm9vbGVhbjtcclxuICAgIC8qKlxyXG4gICAgICogVGhlIGxpc3Qgb2YgU2hhcGVzIHRoYXQgdGhlIGNoYXJ0IG11c3QgcmVuZGVyLlxyXG4gICAgICogRWFjaCBTaGFwZSBjb3JyaXNwb25kcyB0byBhIHNpbmdsZSBjaGFydCBjb21wb25lbnQuXHJcbiAgICAgKlxyXG4gICAgICogQHR5cGUge1NoYXBlW119XHJcbiAgICAgKiBAbWVtYmVyb2YgQ2hhcnRcclxuICAgICAqL1xyXG4gICAgc2hhcGVzOiBTaGFwZVtdO1xyXG4gICAgLyoqXHJcbiAgICAgKiBBZGRzIGludGVyYWN0aW9uIHdpdGggdGhlIGNoYXJ0LCBzbyB0aGF0IHdoZW4gY2xpY2tpbmdcclxuICAgICAqIGV2ZXJ5d2hlcmUgaW4gdGhlIGNoYXJ0IGFyZWEgYSBwb2ludCBnZXRzIGFkZGVkIGFuZCBpdCdzIGNvb3JkaW5hdGUgYXJlIFxyXG4gICAgICogZW1pdHRlZCB3aXRoIGFuIGV2ZW50IHRvIHRoZSBwYXJlbnQgY29tcG9uZW50LlxyXG4gICAgICpcclxuICAgICAqIEB0eXBlIHtib29sZWFufVxyXG4gICAgICogQG1lbWJlcm9mIENoYXJ0XHJcbiAgICAgKi9cclxuICAgIGNsaWNrVG9BZGRQb2ludD86IGJvb2xlYW47XHJcbiAgICAvKipcclxuICAgICAqIEN1c3RvbSBuYW1lIGZvciB0aGUgXCJjbGlja1RvQWRkUG9pbnRcIiBldmVudCByZWxhdGVkIGJ1dHRvbi4gXHJcbiAgICAgKlxyXG4gICAgICogQHR5cGUge3N0cmluZ31cclxuICAgICAqIEBtZW1iZXJvZiBDaGFydFxyXG4gICAgICovXHJcbiAgICBhZGRQb2ludEN1c3RvbU5hbWU/OiBzdHJpbmc7XHJcbiAgICAvKipcclxuICAgICAqIEFkZHMgdGhlIHBvc3NpYmlsaXR5IHRvIHVzZSB0aGUgc2Nyb2xsIFxyXG4gICAgICogdG8gem9vbSBpbi9vdXQgdGhlIGNoYXJ0IGFyZWEuXHJcbiAgICAgKlxyXG4gICAgICogQHR5cGUge2Jvb2xlYW59XHJcbiAgICAgKiBAbWVtYmVyb2YgQ2hhcnRcclxuICAgICAqL1xyXG4gICAgc2Nyb2xsVG9ab29tPzogYm9vbGVhbjtcclxuICAgIC8qKlxyXG4gICAgICogVGVsbHMgdGhlIGNoYXJ0IHRvIHJlbmRlciBvciBub3QgdGhlIGdyaWQgbGluZXMuXHJcbiAgICAgKlxyXG4gICAgICogQHR5cGUge2Jvb2xlYW59XHJcbiAgICAgKiBAbWVtYmVyb2YgQ2hhcnRcclxuICAgICAqL1xyXG4gICAgc2hvd0dyaWQ/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBTaGFwZSA9IFRyYWNlO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUcmFjZSB7XHJcbiAgICBuYW1lPzogc3RyaW5nO1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgdmFyaWFudCBvZiB0aGUgU2hhcGUsIG11c3QgYmUgb2YgdHlwZSBUcmFjZS5cclxuICAgICAqXHJcbiAgICAgKiBAdHlwZSB7U2hhcGVWYXJpYW50fVxyXG4gICAgICogQG1lbWJlcm9mIFRyYWNlXHJcbiAgICAgKi9cclxuICAgIHZhcmlhbnQ6IFNoYXBlVmFyaWFudDtcclxuICAgIGNvbG9yPzogc3RyaW5nO1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgdHlwZSBvZiB0aGUgVHJhY2UgZHJhd24gYnkgdGhlIGNoYXJ0LlxyXG4gICAgICogQ2FuIGJlIGEgbGluZSBvciBhIHNjYXR0ZXIuIFxyXG4gICAgICpcclxuICAgICAqIEB0eXBlIHtUcmFjZVR5cGV9XHJcbiAgICAgKiBAbWVtYmVyb2YgVHJhY2VcclxuICAgICAqL1xyXG4gICAgdHlwZTogVHJhY2VUeXBlO1xyXG4gICAgd2lkdGg/OiBudW1iZXI7XHJcbiAgICAvKipcclxuICAgICAqIFRoZSBsaXN0IG9mIHBvaW50cyB0aGF0IGRlZmluZSB0aGUgVHJhY2UuXHJcbiAgICAgKlxyXG4gICAgICogQHR5cGUge1BvaW50W119XHJcbiAgICAgKiBAbWVtYmVyb2YgVHJhY2VcclxuICAgICAqL1xyXG4gICAgcG9pbnRzOiBQb2ludFtdO1xyXG4gICAgLyoqXHJcbiAgICAgKiBXaGV0aGVyIHRvIHNob3cgYSBzbW9vdGggY3VydmUgb3IgYSBzZWdtZW50ZWQgY3VydmUuXHJcbiAgICAgKlxyXG4gICAgICogQHR5cGUge2Jvb2xlYW59XHJcbiAgICAgKiBAbWVtYmVyb2YgVHJhY2VcclxuICAgICAqL1xyXG4gICAgc21vb3RoPzogYm9vbGVhbjtcclxuICAgIC8qKlxyXG4gICAgICogVGhlIHN0eWxlIG9mIHRoZSBUcmFjZS5cclxuICAgICAqIENhbiBiZSBzb2xpZCwgZGFzaGVkIG9yIGRvdHRlZC5cclxuICAgICAqXHJcbiAgICAgKiBAdHlwZSB7VHJhY2VTdHlsZX1cclxuICAgICAqIEBtZW1iZXJvZiBUcmFjZVxyXG4gICAgICovXHJcbiAgICBzdHlsZT86IFRyYWNlU3R5bGU7XHJcbiAgICAvKipcclxuICAgICAqIE9wdGlvbiB0byBtYWtlIHRoZSBUcmFjZSBzZWxlY3RlZC9kZXNlbGVjdGVkIGJ5IGRlZmF1bHQuXHJcbiAgICAgKiBBIGRlc2VsZWN0ZWQgVHJhY2UgaXMgb2JzY3VyZWQgZnJvbSB0aGUgY2hhcnQgYW5kIGNhbiBiZSB0b2dnbGVkIGZyb20gdGhlIGxlZ2VuZC4gICBcclxuICAgICAqXHJcbiAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cclxuICAgICAqIEBtZW1iZXJvZiBUcmFjZVxyXG4gICAgICovXHJcbiAgICBzZWxlY3RlZEJ5RGVmYXVsdD86IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUG9pbnQgZXh0ZW5kcyBCYXNlUG9pbnQge1xyXG4gICAgbmFtZT86IHN0cmluZztcclxuICAgIC8qKlxyXG4gICAgICogU3ltYm9sIHVzZWQgdG8gcmVwcmVzZW50IHRoZSBwb2ludCBpbiB0aGUgY2hhcnQuXHJcbiAgICAgKlxyXG4gICAgICogQHR5cGUge1BvaW50U3ltYm9sfVxyXG4gICAgICogQG1lbWJlcm9mIFBvaW50XHJcbiAgICAgKi9cclxuICAgIHN5bWJvbD86IFBvaW50U3ltYm9sO1xyXG4gICAgc3ltYm9sU2l6ZT86IG51bWJlcjtcclxuICAgIGNvbG9yPzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VQb2ludCB7XHJcbiAgICB4OiBudW1iZXI7XHJcbiAgICB5OiBudW1iZXJcclxufVxyXG5cclxuZXhwb3J0IGVudW0gVHJhY2VUeXBlIHtcclxuICAgIExJTkUgPSBcImxpbmVcIixcclxuICAgIFNDQVRURVIgPSBcInNjYXR0ZXJcIlxyXG59XHJcblxyXG5leHBvcnQgZW51bSBQb2ludFN5bWJvbCB7XHJcbiAgICBOT05FID0gXCJub25lXCIsXHJcbiAgICBDSVJDTEUgPSBcImNpcmNsZVwiLFxyXG4gICAgVFJJQU5HTEUgPSBcInRyaWFuZ2xlXCIsXHJcbiAgICBQSU4gPSBcInBpblwiLFxyXG4gICAgRElBTU9ORCA9IFwiZGlhbW9uZFwiXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIFRyYWNlU3R5bGUge1xyXG4gICAgU09MSUQgPSBcInNvbGlkXCIsXHJcbiAgICBEQVNIRUQgPSBcImRhc2hlZFwiLFxyXG4gICAgRE9UVEVEID0gXCJkb3R0ZWRcIlxyXG59XHJcblxyXG5leHBvcnQgZW51bSBBeGlzVHlwZSB7XHJcbiAgICBWQUxVRSA9IFwidmFsdWVcIlxyXG59XHJcblxyXG5leHBvcnQgZW51bSBTaGFwZVZhcmlhbnQge1xyXG4gICAgVFJBQ0VcclxufSJdfQ==
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQubW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l3aWJpdC9jaGFydC9zcmMvbGliL21vZGVscy9jaGFydC5tb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBMEpBLE1BQU0sQ0FBTixJQUFZLFNBR1g7QUFIRCxXQUFZLFNBQVM7SUFDakIsMEJBQWEsQ0FBQTtJQUNiLGdDQUFtQixDQUFBO0FBQ3ZCLENBQUMsRUFIVyxTQUFTLEtBQVQsU0FBUyxRQUdwQjtBQUVELE1BQU0sQ0FBTixJQUFZLFdBTVg7QUFORCxXQUFZLFdBQVc7SUFDbkIsNEJBQWEsQ0FBQTtJQUNiLGdDQUFpQixDQUFBO0lBQ2pCLG9DQUFxQixDQUFBO0lBQ3JCLDBCQUFXLENBQUE7SUFDWCxrQ0FBbUIsQ0FBQTtBQUN2QixDQUFDLEVBTlcsV0FBVyxLQUFYLFdBQVcsUUFNdEI7QUFFRCxNQUFNLENBQU4sSUFBWSxVQUlYO0FBSkQsV0FBWSxVQUFVO0lBQ2xCLDZCQUFlLENBQUE7SUFDZiwrQkFBaUIsQ0FBQTtJQUNqQiwrQkFBaUIsQ0FBQTtBQUNyQixDQUFDLEVBSlcsVUFBVSxLQUFWLFVBQVUsUUFJckI7QUFFRCxNQUFNLENBQU4sSUFBWSxRQUVYO0FBRkQsV0FBWSxRQUFRO0lBQ2hCLDJCQUFlLENBQUE7QUFDbkIsQ0FBQyxFQUZXLFFBQVEsS0FBUixRQUFRLFFBRW5CO0FBRUQsTUFBTSxDQUFOLElBQVksWUFFWDtBQUZELFdBQVksWUFBWTtJQUNwQixpREFBSyxDQUFBO0FBQ1QsQ0FBQyxFQUZXLFlBQVksS0FBWixZQUFZLFFBRXZCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEludGVyZmFjZSB0byBkZWZpbmUgdGhlIENoYXJ0IG1vZGVsLlxyXG4gKlxyXG4gKiBAZXhwb3J0XHJcbiAqIEBpbnRlcmZhY2UgQ2hhcnRcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ2hhcnQge1xyXG4gICAgdGl0bGU6IHN0cmluZztcclxuICAgIHNob3dMZWdlbmQ/OiBib29sZWFuO1xyXG4gICAgeEF4aXNUeXBlOiBBeGlzVHlwZTtcclxuICAgIHhBeGlzTmFtZTogc3RyaW5nO1xyXG4gICAgeEF4aXNVb20/OiBzdHJpbmc7XHJcbiAgICB4TWluPzogbnVtYmVyO1xyXG4gICAgeE1heD86IG51bWJlcjtcclxuICAgIHlBeGlzVHlwZTogQXhpc1R5cGU7XHJcbiAgICB5QXhpc05hbWU6IHN0cmluZztcclxuICAgIHlBeGlzVW9tPzogc3RyaW5nO1xyXG4gICAgeU1pbj86IG51bWJlcjtcclxuICAgIHlNYXg/OiBudW1iZXI7XHJcbiAgICAvKipcclxuICAgICAqIFRoZSBtYXhpbXVtIGRlY2ltYWxzIHRoYXQgY2FuIGhhdmUgdGhlIHZhbHVlcyBvbiB0aGUgeCBhbmQgeSBheGVzLlxyXG4gICAgICogSWYgb21pdHRlZCB0aGUgZGVmYXVsdCBpcyAzIGRlY2ltYWxzLlxyXG4gICAgICpcclxuICAgICAqIEB0eXBlIHtudW1iZXJ9XHJcbiAgICAgKiBAbWVtYmVyb2YgQ2hhcnRcclxuICAgICAqL1xyXG4gICAgbWF4QXhlc0RlY2ltYWxzPzogbnVtYmVyO1xyXG4gICAgLyoqXHJcbiAgICAgKiBJZiB0aGUgY2hhcnQgc2hvdWxkIGhhdmUgcmVuZGVyaW5nIGFuaW1hdGlvbnMuXHJcbiAgICAgKlxyXG4gICAgICogQHR5cGUge2Jvb2xlYW59XHJcbiAgICAgKiBAbWVtYmVyb2YgQ2hhcnRcclxuICAgICAqL1xyXG4gICAgaGFzQW5pbWF0aW9ucz86IGJvb2xlYW47XHJcbiAgICAvKipcclxuICAgICAqIEhvdyBsb25nIHRoZSBhbmltYXRpb24gc2hvdWxkIGxhc3QuXHJcbiAgICAgKiBFeHByZXNzZWQgaW4gbWlsbGlzZWNvbmRzLiBJZiBvbWl0dGVkIHRoZSBEZWZhdWx0IGlzIDUwMCBtcy5cclxuICAgICAqXHJcbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxyXG4gICAgICogQG1lbWJlcm9mIENoYXJ0XHJcbiAgICAgKi9cclxuICAgIGFuaW1hdGlvbkR1cmF0aW9uPzogbnVtYmVyO1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgbGlzdCBvZiBTaGFwZXMgdGhhdCB0aGUgY2hhcnQgbXVzdCByZW5kZXIuXHJcbiAgICAgKiBFYWNoIFNoYXBlIGNvcnJpc3BvbmRzIHRvIGEgc2luZ2xlIGNoYXJ0IGNvbXBvbmVudC5cclxuICAgICAqXHJcbiAgICAgKiBAdHlwZSB7U2hhcGVbXX1cclxuICAgICAqIEBtZW1iZXJvZiBDaGFydFxyXG4gICAgICovXHJcbiAgICBzaGFwZXM6IFNoYXBlW107XHJcbiAgICAvKipcclxuICAgICAqIEFkZHMgaW50ZXJhY3Rpb24gd2l0aCB0aGUgY2hhcnQsIHNvIHRoYXQgd2hlbiBjbGlja2luZ1xyXG4gICAgICogZXZlcnl3aGVyZSBpbiB0aGUgY2hhcnQgYXJlYSBhIHBvaW50IGdldHMgYWRkZWQgYW5kIGl0J3MgY29vcmRpbmF0ZSBhcmUgXHJcbiAgICAgKiBlbWl0dGVkIHdpdGggYW4gZXZlbnQgdG8gdGhlIHBhcmVudCBjb21wb25lbnQuXHJcbiAgICAgKlxyXG4gICAgICogQHR5cGUge2Jvb2xlYW59XHJcbiAgICAgKiBAbWVtYmVyb2YgQ2hhcnRcclxuICAgICAqL1xyXG4gICAgY2xpY2tUb0FkZFBvaW50PzogYm9vbGVhbjtcclxuICAgIC8qKlxyXG4gICAgICogQ3VzdG9tIG5hbWUgZm9yIHRoZSBcImNsaWNrVG9BZGRQb2ludFwiIGV2ZW50IHJlbGF0ZWQgYnV0dG9uLiBcclxuICAgICAqXHJcbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxyXG4gICAgICogQG1lbWJlcm9mIENoYXJ0XHJcbiAgICAgKi9cclxuICAgIGFkZFBvaW50Q3VzdG9tTmFtZT86IHN0cmluZztcclxuICAgIC8qKlxyXG4gICAgICogQWRkcyB0aGUgcG9zc2liaWxpdHkgdG8gdXNlIHRoZSBzY3JvbGwgXHJcbiAgICAgKiB0byB6b29tIGluL291dCB0aGUgY2hhcnQgYXJlYS5cclxuICAgICAqXHJcbiAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cclxuICAgICAqIEBtZW1iZXJvZiBDaGFydFxyXG4gICAgICovXHJcbiAgICBzY3JvbGxUb1pvb20/OiBib29sZWFuO1xyXG4gICAgLyoqXHJcbiAgICAgKiBUZWxscyB0aGUgY2hhcnQgdG8gcmVuZGVyIG9yIG5vdCB0aGUgZ3JpZCBsaW5lcy5cclxuICAgICAqXHJcbiAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cclxuICAgICAqIEBtZW1iZXJvZiBDaGFydFxyXG4gICAgICovXHJcbiAgICBzaG93R3JpZD86IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFNoYXBlID0gVHJhY2U7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFRyYWNlIHtcclxuICAgIG5hbWU/OiBzdHJpbmc7XHJcbiAgICAvKipcclxuICAgICAqIFRoZSB2YXJpYW50IG9mIHRoZSBTaGFwZSwgbXVzdCBiZSBvZiB0eXBlIFRyYWNlLlxyXG4gICAgICpcclxuICAgICAqIEB0eXBlIHtTaGFwZVZhcmlhbnR9XHJcbiAgICAgKiBAbWVtYmVyb2YgVHJhY2VcclxuICAgICAqL1xyXG4gICAgdmFyaWFudDogU2hhcGVWYXJpYW50O1xyXG4gICAgY29sb3I/OiBzdHJpbmc7XHJcbiAgICAvKipcclxuICAgICAqIFRoZSB0eXBlIG9mIHRoZSBUcmFjZSBkcmF3biBieSB0aGUgY2hhcnQuXHJcbiAgICAgKiBDYW4gYmUgYSBsaW5lIG9yIGEgc2NhdHRlci4gXHJcbiAgICAgKlxyXG4gICAgICogQHR5cGUge1RyYWNlVHlwZX1cclxuICAgICAqIEBtZW1iZXJvZiBUcmFjZVxyXG4gICAgICovXHJcbiAgICB0eXBlOiBUcmFjZVR5cGU7XHJcbiAgICB3aWR0aD86IG51bWJlcjtcclxuICAgIC8qKlxyXG4gICAgICogVGhlIGxpc3Qgb2YgcG9pbnRzIHRoYXQgZGVmaW5lIHRoZSBUcmFjZS5cclxuICAgICAqXHJcbiAgICAgKiBAdHlwZSB7UG9pbnRbXX1cclxuICAgICAqIEBtZW1iZXJvZiBUcmFjZVxyXG4gICAgICovXHJcbiAgICBwb2ludHM6IFBvaW50W107XHJcbiAgICAvKipcclxuICAgICAqIFdoZXRoZXIgdG8gc2hvdyBhIHNtb290aCBjdXJ2ZSBvciBhIHNlZ21lbnRlZCBjdXJ2ZS5cclxuICAgICAqXHJcbiAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cclxuICAgICAqIEBtZW1iZXJvZiBUcmFjZVxyXG4gICAgICovXHJcbiAgICBzbW9vdGg/OiBib29sZWFuO1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgc3R5bGUgb2YgdGhlIFRyYWNlLlxyXG4gICAgICogQ2FuIGJlIHNvbGlkLCBkYXNoZWQgb3IgZG90dGVkLlxyXG4gICAgICpcclxuICAgICAqIEB0eXBlIHtUcmFjZVN0eWxlfVxyXG4gICAgICogQG1lbWJlcm9mIFRyYWNlXHJcbiAgICAgKi9cclxuICAgIHN0eWxlPzogVHJhY2VTdHlsZTtcclxuICAgIC8qKlxyXG4gICAgICogT3B0aW9uIHRvIG1ha2UgdGhlIFRyYWNlIHNlbGVjdGVkL2Rlc2VsZWN0ZWQgYnkgZGVmYXVsdC5cclxuICAgICAqIEEgZGVzZWxlY3RlZCBUcmFjZSBpcyBvYnNjdXJlZCBmcm9tIHRoZSBjaGFydCBhbmQgY2FuIGJlIHRvZ2dsZWQgZnJvbSB0aGUgbGVnZW5kLiAgIFxyXG4gICAgICpcclxuICAgICAqIEB0eXBlIHtib29sZWFufVxyXG4gICAgICogQG1lbWJlcm9mIFRyYWNlXHJcbiAgICAgKi9cclxuICAgIHNlbGVjdGVkQnlEZWZhdWx0PzogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQb2ludCBleHRlbmRzIEJhc2VQb2ludCB7XHJcbiAgICBuYW1lPzogc3RyaW5nO1xyXG4gICAgLyoqXHJcbiAgICAgKiBTeW1ib2wgdXNlZCB0byByZXByZXNlbnQgdGhlIHBvaW50IGluIHRoZSBjaGFydC5cclxuICAgICAqXHJcbiAgICAgKiBAdHlwZSB7UG9pbnRTeW1ib2x9XHJcbiAgICAgKiBAbWVtYmVyb2YgUG9pbnRcclxuICAgICAqL1xyXG4gICAgc3ltYm9sPzogUG9pbnRTeW1ib2w7XHJcbiAgICBzeW1ib2xTaXplPzogbnVtYmVyO1xyXG4gICAgY29sb3I/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQmFzZVBvaW50IHtcclxuICAgIHg6IG51bWJlcjtcclxuICAgIHk6IG51bWJlclxyXG59XHJcblxyXG5leHBvcnQgZW51bSBUcmFjZVR5cGUge1xyXG4gICAgTElORSA9IFwibGluZVwiLFxyXG4gICAgU0NBVFRFUiA9IFwic2NhdHRlclwiXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIFBvaW50U3ltYm9sIHtcclxuICAgIE5PTkUgPSBcIm5vbmVcIixcclxuICAgIENJUkNMRSA9IFwiY2lyY2xlXCIsXHJcbiAgICBUUklBTkdMRSA9IFwidHJpYW5nbGVcIixcclxuICAgIFBJTiA9IFwicGluXCIsXHJcbiAgICBESUFNT05EID0gXCJkaWFtb25kXCJcclxufVxyXG5cclxuZXhwb3J0IGVudW0gVHJhY2VTdHlsZSB7XHJcbiAgICBTT0xJRCA9IFwic29saWRcIixcclxuICAgIERBU0hFRCA9IFwiZGFzaGVkXCIsXHJcbiAgICBET1RURUQgPSBcImRvdHRlZFwiXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIEF4aXNUeXBlIHtcclxuICAgIFZBTFVFID0gXCJ2YWx1ZVwiXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIFNoYXBlVmFyaWFudCB7XHJcbiAgICBUUkFDRVxyXG59Il19
@@ -110,6 +110,15 @@ class KiwiChartComponent {
110
110
  * @memberof KiwiChartComponent
111
111
  */
112
112
  this.destroyed$ = new Subject();
113
+ /**
114
+ * Default number of decimals that can have
115
+ * the values on the x and y axes.
116
+ *
117
+ * @private
118
+ * @type {number}
119
+ * @memberof KiwiChartComponent
120
+ */
121
+ this.MAX_DECIMALS = 3;
113
122
  }
114
123
  ngOnInit() {
115
124
  /**
@@ -164,7 +173,7 @@ class KiwiChartComponent {
164
173
  });
165
174
  }
166
175
  ngOnChanges(changes) {
167
- var _a, _b, _c, _d, _e, _f, _g, _h, _j;
176
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
168
177
  let chart = (_a = changes['chart']) === null || _a === void 0 ? void 0 : _a.currentValue;
169
178
  if (chart) {
170
179
  this.chartOption = {
@@ -172,7 +181,7 @@ class KiwiChartComponent {
172
181
  text: chart.title,
173
182
  },
174
183
  grid: {
175
- width: '75%'
184
+ width: '70%'
176
185
  },
177
186
  backgroundColor: this.darkTheme ? (_b = this.darkThemeBackground) !== null && _b !== void 0 ? _b : '#303030' : 'transparent', tooltip: {
178
187
  axisPointer: {
@@ -235,7 +244,6 @@ class KiwiChartComponent {
235
244
  },
236
245
  ],
237
246
  legend: {
238
- width: '25%',
239
247
  inactiveColor: this.darkTheme ? '#8b8b8b' : '#ccc',
240
248
  data: chart.shapes.map((shape) => ({
241
249
  name: shape.name,
@@ -264,8 +272,8 @@ class KiwiChartComponent {
264
272
  color: this.darkTheme ? '#595959' : '#ccc'
265
273
  }
266
274
  },
267
- min: chart.xMin,
268
- max: chart.xMax,
275
+ min: (_j = chart.xMin) === null || _j === void 0 ? void 0 : _j.toFixed((_k = chart.maxAxesDecimals) !== null && _k !== void 0 ? _k : this.MAX_DECIMALS),
276
+ max: (_l = chart.xMax) === null || _l === void 0 ? void 0 : _l.toFixed((_m = chart.maxAxesDecimals) !== null && _m !== void 0 ? _m : this.MAX_DECIMALS),
269
277
  },
270
278
  yAxis: {
271
279
  type: chart.yAxisType,
@@ -273,16 +281,18 @@ class KiwiChartComponent {
273
281
  nameLocation: 'middle',
274
282
  nameGap: 50,
275
283
  splitLine: {
276
- show: (_j = chart.showGrid) !== null && _j !== void 0 ? _j : true,
284
+ show: (_o = chart.showGrid) !== null && _o !== void 0 ? _o : true,
277
285
  lineStyle: {
278
286
  color: this.darkTheme ? '#595959' : '#ccc'
279
287
  }
280
288
  },
281
- min: chart.yMin,
282
- max: chart.yMax,
289
+ min: (_p = chart.yMin) === null || _p === void 0 ? void 0 : _p.toFixed((_q = chart.maxAxesDecimals) !== null && _q !== void 0 ? _q : this.MAX_DECIMALS),
290
+ max: (_r = chart.yMax) === null || _r === void 0 ? void 0 : _r.toFixed((_s = chart.maxAxesDecimals) !== null && _s !== void 0 ? _s : this.MAX_DECIMALS),
283
291
  },
284
292
  series: this.createSeries(chart.shapes),
285
293
  animation: chart.hasAnimations,
294
+ animationDuration: (_t = chart.animationDuration) !== null && _t !== void 0 ? _t : 500,
295
+ animationEasing: 'cubicOut'
286
296
  };
287
297
  }
288
298
  }
@@ -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 * 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 * 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}\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 * 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 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 /** \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 /** \r\n * This is used to change the cursor's icon when the selected action is\r\n * click to add point and viceversa back to default icon when it's not selected.\r\n */\r\n this.zr.on('mousemove', params => {\r\n const pointInPixel = [params.offsetX, params.offsetY];\r\n const option: any = ec.getOption();\r\n const active = option?.toolbox?.[0]?.feature?.myAddPoint?.iconStatus;\r\n if (active) {\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: '75%'\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 width: '25%',\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,\r\n max: chart.xMax,\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,\r\n max: chart.yMax,\r\n },\r\n series: this.createSeries(chart.shapes),\r\n animation: chart.hasAnimations,\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 },\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}\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 * 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 /** \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 /** \r\n * This is used to change the cursor's icon when the selected action is\r\n * click to add point and viceversa back to default icon when it's not selected.\r\n */\r\n this.zr.on('mousemove', params => {\r\n const pointInPixel = [params.offsetX, params.offsetY];\r\n const option: any = ec.getOption();\r\n const active = option?.toolbox?.[0]?.feature?.myAddPoint?.iconStatus;\r\n if (active) {\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 },\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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"}
@@ -110,6 +110,15 @@ class KiwiChartComponent {
110
110
  * @memberof KiwiChartComponent
111
111
  */
112
112
  this.destroyed$ = new Subject();
113
+ /**
114
+ * Default number of decimals that can have
115
+ * the values on the x and y axes.
116
+ *
117
+ * @private
118
+ * @type {number}
119
+ * @memberof KiwiChartComponent
120
+ */
121
+ this.MAX_DECIMALS = 3;
113
122
  }
114
123
  ngOnInit() {
115
124
  /**
@@ -169,7 +178,7 @@ class KiwiChartComponent {
169
178
  text: chart.title,
170
179
  },
171
180
  grid: {
172
- width: '75%'
181
+ width: '70%'
173
182
  },
174
183
  backgroundColor: this.darkTheme ? this.darkThemeBackground ?? '#303030' : 'transparent', tooltip: {
175
184
  axisPointer: {
@@ -231,7 +240,6 @@ class KiwiChartComponent {
231
240
  },
232
241
  ],
233
242
  legend: {
234
- width: '25%',
235
243
  inactiveColor: this.darkTheme ? '#8b8b8b' : '#ccc',
236
244
  data: chart.shapes.map((shape) => ({
237
245
  name: shape.name,
@@ -260,8 +268,8 @@ class KiwiChartComponent {
260
268
  color: this.darkTheme ? '#595959' : '#ccc'
261
269
  }
262
270
  },
263
- min: chart.xMin,
264
- max: chart.xMax,
271
+ min: chart.xMin?.toFixed(chart.maxAxesDecimals ?? this.MAX_DECIMALS),
272
+ max: chart.xMax?.toFixed(chart.maxAxesDecimals ?? this.MAX_DECIMALS),
265
273
  },
266
274
  yAxis: {
267
275
  type: chart.yAxisType,
@@ -274,11 +282,13 @@ class KiwiChartComponent {
274
282
  color: this.darkTheme ? '#595959' : '#ccc'
275
283
  }
276
284
  },
277
- min: chart.yMin,
278
- max: chart.yMax,
285
+ min: chart.yMin?.toFixed(chart.maxAxesDecimals ?? this.MAX_DECIMALS),
286
+ max: chart.yMax?.toFixed(chart.maxAxesDecimals ?? this.MAX_DECIMALS),
279
287
  },
280
288
  series: this.createSeries(chart.shapes),
281
289
  animation: chart.hasAnimations,
290
+ animationDuration: chart.animationDuration ?? 500,
291
+ animationEasing: 'cubicOut'
282
292
  };
283
293
  }
284
294
  }
@@ -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 * 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 * 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}\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 * 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 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 /** \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 /** \r\n * This is used to change the cursor's icon when the selected action is\r\n * click to add point and viceversa back to default icon when it's not selected.\r\n */\r\n this.zr.on('mousemove', params => {\r\n const pointInPixel = [params.offsetX, params.offsetY];\r\n const option: any = ec.getOption();\r\n const active = option?.toolbox?.[0]?.feature?.myAddPoint?.iconStatus;\r\n if (active) {\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: '75%'\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 width: '25%',\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,\r\n max: chart.xMax,\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,\r\n max: chart.yMax,\r\n },\r\n series: this.createSeries(chart.shapes),\r\n animation: chart.hasAnimations,\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 },\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}\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 * 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 /** \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 /** \r\n * This is used to change the cursor's icon when the selected action is\r\n * click to add point and viceversa back to default icon when it's not selected.\r\n */\r\n this.zr.on('mousemove', params => {\r\n const pointInPixel = [params.offsetX, params.offsetY];\r\n const option: any = ec.getOption();\r\n const active = option?.toolbox?.[0]?.feature?.myAddPoint?.iconStatus;\r\n if (active) {\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 },\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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"}
@@ -70,6 +70,15 @@ export declare class KiwiChartComponent implements OnInit, OnChanges, OnDestroy
70
70
  * @memberof KiwiChartComponent
71
71
  */
72
72
  private destroyed$;
73
+ /**
74
+ * Default number of decimals that can have
75
+ * the values on the x and y axes.
76
+ *
77
+ * @private
78
+ * @type {number}
79
+ * @memberof KiwiChartComponent
80
+ */
81
+ private readonly MAX_DECIMALS;
73
82
  constructor(cd: ChangeDetectorRef);
74
83
  ngOnInit(): void;
75
84
  onChartInit(ec: ECharts): void;
@@ -17,6 +17,14 @@ export interface Chart {
17
17
  yAxisUom?: string;
18
18
  yMin?: number;
19
19
  yMax?: number;
20
+ /**
21
+ * The maximum decimals that can have the values on the x and y axes.
22
+ * If omitted the default is 3 decimals.
23
+ *
24
+ * @type {number}
25
+ * @memberof Chart
26
+ */
27
+ maxAxesDecimals?: number;
20
28
  /**
21
29
  * If the chart should have rendering animations.
22
30
  *
@@ -24,6 +32,14 @@ export interface Chart {
24
32
  * @memberof Chart
25
33
  */
26
34
  hasAnimations?: boolean;
35
+ /**
36
+ * How long the animation should last.
37
+ * Expressed in milliseconds. If omitted the Default is 500 ms.
38
+ *
39
+ * @type {number}
40
+ * @memberof Chart
41
+ */
42
+ animationDuration?: number;
27
43
  /**
28
44
  * The list of Shapes that the chart must render.
29
45
  * Each Shape corrisponds to a single chart component.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kiwibit/chart",
3
- "version": "1.0.11",
3
+ "version": "1.0.12",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.2.0",
6
6
  "@angular/core": "^13.2.0"