@coreui/angular-chartjs 4.7.8 → 5.0.0-alpha.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +1 -1
- package/esm2022/lib/chartjs.component.mjs +54 -25
- package/esm2022/lib/chartjs.module.mjs +4 -4
- package/fesm2022/coreui-angular-chartjs.mjs +55 -26
- package/fesm2022/coreui-angular-chartjs.mjs.map +1 -1
- package/lib/chartjs.component.d.ts +63 -17
- package/package.json +4 -4
package/LICENSE
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c)
|
|
3
|
+
Copyright (c) 2024 creativeLabs Łukasz Holeczek
|
|
4
4
|
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
package/README.md
CHANGED
|
@@ -171,4 +171,4 @@ Thanks to all the backers and sponsors! Support this project by [becoming a back
|
|
|
171
171
|
|
|
172
172
|
## Copyright and license
|
|
173
173
|
|
|
174
|
-
Copyright
|
|
174
|
+
Copyright 2024 creativeLabs Łukasz Holeczek. Code released under the [MIT License](https://github.com/coreui/coreui-angular/blob/main/LICENSE). Docs released under [Creative Commons](https://creativecommons.org/licenses/by/3.0/).
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { afterRender, AfterRenderPhase, booleanAttribute, ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, numberAttribute, Output, ViewChild } from '@angular/core';
|
|
2
2
|
import merge from 'lodash-es/merge';
|
|
3
|
-
import { Chart, registerables } from 'chart.js';
|
|
3
|
+
import { Chart as ChartJS, registerables } from 'chart.js';
|
|
4
4
|
import { customTooltips as cuiCustomTooltips } from '@coreui/chartjs';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
|
-
|
|
6
|
+
ChartJS.register(...registerables);
|
|
7
7
|
let nextId = 0;
|
|
8
8
|
export class ChartjsComponent {
|
|
9
9
|
get hostClasses() {
|
|
@@ -11,25 +11,54 @@ export class ChartjsComponent {
|
|
|
11
11
|
'chart-wrapper': this.wrapper
|
|
12
12
|
};
|
|
13
13
|
}
|
|
14
|
-
constructor(
|
|
15
|
-
this.elementRef = elementRef;
|
|
14
|
+
constructor(ngZone, renderer, changeDetectorRef) {
|
|
16
15
|
this.ngZone = ngZone;
|
|
17
16
|
this.renderer = renderer;
|
|
18
17
|
this.changeDetectorRef = changeDetectorRef;
|
|
18
|
+
/**
|
|
19
|
+
* Enables custom html based tooltips instead of standard tooltips.
|
|
20
|
+
* @type boolean
|
|
21
|
+
* @default true
|
|
22
|
+
*/
|
|
19
23
|
this.customTooltips = true;
|
|
24
|
+
/**
|
|
25
|
+
* ID attribute applied to the rendered canvas.
|
|
26
|
+
* @type string
|
|
27
|
+
*/
|
|
20
28
|
this.id = `c-chartjs-${nextId++}`;
|
|
29
|
+
/**
|
|
30
|
+
* The options object that is passed into the Chart.js chart.
|
|
31
|
+
*/
|
|
32
|
+
this.options = {};
|
|
33
|
+
/**
|
|
34
|
+
* The plugins array that is passed into the Chart.js chart
|
|
35
|
+
*/
|
|
21
36
|
this.plugins = [];
|
|
37
|
+
/**
|
|
38
|
+
* If true, will tear down and redraw chart on all updates.
|
|
39
|
+
* @type boolean
|
|
40
|
+
* @default false
|
|
41
|
+
*/
|
|
22
42
|
this.redraw = false;
|
|
43
|
+
/**
|
|
44
|
+
* Chart.js chart type.
|
|
45
|
+
* @type {'line' | 'bar' | 'radar' | 'doughnut' | 'polarArea' | 'bubble' | 'pie' | 'scatter'}
|
|
46
|
+
*/
|
|
23
47
|
this.type = 'bar';
|
|
48
|
+
/**
|
|
49
|
+
* Put the chart into the wrapper div element.
|
|
50
|
+
* @default true
|
|
51
|
+
*/
|
|
24
52
|
this.wrapper = true;
|
|
25
53
|
this.getDatasetAtEvent = new EventEmitter();
|
|
26
54
|
this.getElementAtEvent = new EventEmitter();
|
|
27
55
|
this.getElementsAtEvent = new EventEmitter();
|
|
28
56
|
this.chartRef = new EventEmitter();
|
|
29
|
-
afterNextRender(
|
|
57
|
+
// todo: verify afterRender / afterNextRender for chartjs (spec fails with 17.0.10)
|
|
58
|
+
afterRender(() => {
|
|
30
59
|
this.ctx = this.canvasElement?.nativeElement?.getContext('2d');
|
|
31
60
|
this.chartRender();
|
|
32
|
-
}, { phase: AfterRenderPhase.
|
|
61
|
+
}, { phase: AfterRenderPhase.Write });
|
|
33
62
|
}
|
|
34
63
|
ngAfterViewInit() {
|
|
35
64
|
this.chartRender();
|
|
@@ -58,14 +87,14 @@ export class ChartjsComponent {
|
|
|
58
87
|
this.chartRef.emit(undefined);
|
|
59
88
|
}
|
|
60
89
|
chartRender() {
|
|
61
|
-
if (!this.canvasElement?.nativeElement || !this.ctx) {
|
|
90
|
+
if (!this.canvasElement?.nativeElement || !this.ctx || this.chart) {
|
|
62
91
|
return;
|
|
63
92
|
}
|
|
64
93
|
this.ngZone.runOutsideAngular(() => {
|
|
65
94
|
const config = this.chartConfig();
|
|
66
95
|
if (config) {
|
|
67
|
-
|
|
68
|
-
|
|
96
|
+
this.chart = new ChartJS(this.ctx, config);
|
|
97
|
+
this.ngZone.run(() => {
|
|
69
98
|
this.renderer.setStyle(this.canvasElement.nativeElement, 'display', 'block');
|
|
70
99
|
this.changeDetectorRef.markForCheck();
|
|
71
100
|
this.chartRef.emit(this.chart);
|
|
@@ -79,9 +108,7 @@ export class ChartjsComponent {
|
|
|
79
108
|
}
|
|
80
109
|
if (this.redraw) {
|
|
81
110
|
this.chartDestroy();
|
|
82
|
-
|
|
83
|
-
this.chartRender();
|
|
84
|
-
});
|
|
111
|
+
this.chartRender();
|
|
85
112
|
return;
|
|
86
113
|
}
|
|
87
114
|
const config = this.chartConfig();
|
|
@@ -103,7 +130,9 @@ export class ChartjsComponent {
|
|
|
103
130
|
setTimeout(() => {
|
|
104
131
|
this.ngZone.runOutsideAngular(() => {
|
|
105
132
|
this.chart?.update();
|
|
106
|
-
this.
|
|
133
|
+
this.ngZone.run(() => {
|
|
134
|
+
this.changeDetectorRef.markForCheck();
|
|
135
|
+
});
|
|
107
136
|
});
|
|
108
137
|
});
|
|
109
138
|
}
|
|
@@ -117,7 +146,7 @@ export class ChartjsComponent {
|
|
|
117
146
|
};
|
|
118
147
|
}
|
|
119
148
|
chartOptions() {
|
|
120
|
-
return this.options;
|
|
149
|
+
return this.options ?? {};
|
|
121
150
|
}
|
|
122
151
|
chartConfig() {
|
|
123
152
|
this.chartCustomTooltips();
|
|
@@ -131,9 +160,7 @@ export class ChartjsComponent {
|
|
|
131
160
|
chartCustomTooltips() {
|
|
132
161
|
if (this.customTooltips) {
|
|
133
162
|
const options = this.options;
|
|
134
|
-
// @ts-ignore
|
|
135
163
|
const plugins = this.options?.plugins;
|
|
136
|
-
// @ts-ignore
|
|
137
164
|
const tooltip = this.options?.plugins?.tooltip;
|
|
138
165
|
this.options = merge({
|
|
139
166
|
...options,
|
|
@@ -151,14 +178,15 @@ export class ChartjsComponent {
|
|
|
151
178
|
}
|
|
152
179
|
}
|
|
153
180
|
;
|
|
154
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.
|
|
155
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.0.
|
|
181
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: ChartjsComponent, deps: [{ token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
182
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.0.9", type: ChartjsComponent, isStandalone: true, selector: "c-chart", inputs: { customTooltips: ["customTooltips", "customTooltips", booleanAttribute], data: "data", height: ["height", "height", (value) => numberAttribute(value, undefined)], id: "id", options: "options", plugins: "plugins", redraw: ["redraw", "redraw", booleanAttribute], type: "type", width: ["width", "width", (value) => numberAttribute(value, undefined)], wrapper: ["wrapper", "wrapper", booleanAttribute] }, outputs: { getDatasetAtEvent: "getDatasetAtEvent", getElementAtEvent: "getElementAtEvent", getElementsAtEvent: "getElementsAtEvent", chartRef: "chartRef" }, host: { properties: { "style.height.px": "this.height", "style.width.px": "this.width", "class": "this.hostClasses" } }, viewQueries: [{ propertyName: "canvasElement", first: true, predicate: ["canvasElement"], descendants: true }], exportAs: ["cChart"], usesOnChanges: true, ngImport: i0, template: "<canvas\n #canvasElement\n (click)=\"handleClick($event)\"\n [height]=\"height\"\n [id]=\"id\"\n [width]=\"width\"\n role=\"img\"\n style=\"display: none;\"\n>\n <ng-content />\n <!-- <ng-container *ngTemplateOutlet=\"fallbackContent\"/>-->\n</canvas>\n", styles: [":host.chart-wrapper{display:block}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
156
183
|
}
|
|
157
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.
|
|
184
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: ChartjsComponent, decorators: [{
|
|
158
185
|
type: Component,
|
|
159
|
-
args: [{ selector: 'c-chart', exportAs: 'cChart', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<canvas\n #canvasElement\n (click)=\"handleClick($event)\"\n [height]=\"height\"\n [id]=\"id\"\n [width]=\"width\"\n role=\"img\"\n style=\"display: none;\"\n>\n <ng-content
|
|
160
|
-
}], ctorParameters: () => [{ type: i0.
|
|
161
|
-
type: Input
|
|
186
|
+
args: [{ selector: 'c-chart', exportAs: 'cChart', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<canvas\n #canvasElement\n (click)=\"handleClick($event)\"\n [height]=\"height\"\n [id]=\"id\"\n [width]=\"width\"\n role=\"img\"\n style=\"display: none;\"\n>\n <ng-content />\n <!-- <ng-container *ngTemplateOutlet=\"fallbackContent\"/>-->\n</canvas>\n", styles: [":host.chart-wrapper{display:block}\n"] }]
|
|
187
|
+
}], ctorParameters: () => [{ type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }], propDecorators: { customTooltips: [{
|
|
188
|
+
type: Input,
|
|
189
|
+
args: [{ transform: booleanAttribute }]
|
|
162
190
|
}], data: [{
|
|
163
191
|
type: Input
|
|
164
192
|
}], height: [{
|
|
@@ -185,7 +213,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
|
|
|
185
213
|
type: Input,
|
|
186
214
|
args: [{ transform: (value) => numberAttribute(value, undefined) }]
|
|
187
215
|
}], wrapper: [{
|
|
188
|
-
type: Input
|
|
216
|
+
type: Input,
|
|
217
|
+
args: [{ transform: booleanAttribute }]
|
|
189
218
|
}], getDatasetAtEvent: [{
|
|
190
219
|
type: Output
|
|
191
220
|
}], getElementAtEvent: [{
|
|
@@ -201,4 +230,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
|
|
|
201
230
|
type: HostBinding,
|
|
202
231
|
args: ['class']
|
|
203
232
|
}] } });
|
|
204
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnRqcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci1jaGFydGpzL3NyYy9saWIvY2hhcnRqcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci1jaGFydGpzL3NyYy9saWIvY2hhcnRqcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsZUFBZSxFQUNmLGdCQUFnQixFQUVoQixnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFFTCxlQUFlLEVBR2YsTUFBTSxFQUdOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEtBQUssTUFBTSxpQkFBaUIsQ0FBQztBQUVwQyxPQUFPLEVBQUUsS0FBSyxFQUFtRCxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDakcsT0FBTyxFQUFFLGNBQWMsSUFBSSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUV0RSxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsYUFBYSxDQUFDLENBQUM7QUFFakMsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBWWYsTUFBTSxPQUFPLGdCQUFnQjtJQWdDM0IsSUFDSSxXQUFXO1FBQ2IsT0FBTztZQUNMLGVBQWUsRUFBRSxJQUFJLENBQUMsT0FBTztTQUM5QixDQUFDO0lBQ0osQ0FBQztJQUVELFlBQ1UsVUFBc0IsRUFDdEIsTUFBYyxFQUNkLFFBQW1CLEVBQ25CLGlCQUFvQztRQUhwQyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUF6Q3JDLG1CQUFjLEdBQUcsSUFBSSxDQUFD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aUJBQWlCOztzQkFDN0IsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLEtBQXNCLEVBQUUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLEVBQUU7Z0JBRTFFLEVBQUU7c0JBQVYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUVrQyxNQUFNO3NCQUE3QyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUU3QixJQUFJO3NCQUFaLEtBQUs7Z0JBRytFLEtBQUs7c0JBRHpGLFdBQVc7dUJBQUMsZ0JBQWdCOztzQkFDNUIsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLEtBQXNCLEVBQUUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLEVBQUU7Z0JBRTFFLE9BQU87c0JBQWYsS0FBSztnQkFFYSxpQkFBaUI7c0JBQW5DLE1BQU07Z0JBQ1ksaUJBQWlCO3NCQUFuQyxNQUFNO2dCQUNZLGtCQUFrQjtzQkFBcEMsTUFBTTtnQkFFWSxRQUFRO3NCQUExQixNQUFNO2dCQUVxQixhQUFhO3NCQUF4QyxTQUFTO3VCQUFDLGVBQWU7Z0JBTXRCLFdBQVc7c0JBRGQsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYWZ0ZXJOZXh0UmVuZGVyLFxuICBBZnRlclJlbmRlclBoYXNlLFxuICBBZnRlclZpZXdJbml0LFxuICBib29sZWFuQXR0cmlidXRlLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgbnVtYmVyQXR0cmlidXRlLFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBSZW5kZXJlcjIsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IG1lcmdlIGZyb20gJ2xvZGFzaC1lcy9tZXJnZSc7XG5cbmltcG9ydCB7IENoYXJ0LCBDaGFydENvbmZpZ3VyYXRpb24sIENoYXJ0VHlwZSwgRGVmYXVsdERhdGFQb2ludCwgcmVnaXN0ZXJhYmxlcyB9IGZyb20gJ2NoYXJ0LmpzJztcbmltcG9ydCB7IGN1c3RvbVRvb2x0aXBzIGFzIGN1aUN1c3RvbVRvb2x0aXBzIH0gZnJvbSAnQGNvcmV1aS9jaGFydGpzJztcblxuQ2hhcnQucmVnaXN0ZXIoLi4ucmVnaXN0ZXJhYmxlcyk7XG5cbmxldCBuZXh0SWQgPSAwO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjLWNoYXJ0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoYXJ0anMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGFydGpzLmNvbXBvbmVudC5zY3NzJ10sXG4gIGV4cG9ydEFzOiAnY0NoYXJ0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1ob3N0LW1ldGFkYXRhLXByb3BlcnR5XG4gIC8vIGhvc3Q6IHsgbmdTa2lwSHlkcmF0aW9uOiAndHJ1ZScgfVxufSlcbmV4cG9ydCBjbGFzcyBDaGFydGpzQ29tcG9uZW50PFRUeXBlIGV4dGVuZHMgQ2hhcnRUeXBlID0gQ2hhcnRUeXBlLCBURGF0YSA9IERlZmF1bHREYXRhUG9pbnQ8VFR5cGU+LCBUTGFiZWwgPSB1bmtub3duPiBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcblxuICBASW5wdXQoKSBjdXN0b21Ub29sdGlwcyA9IHRydWU7XG4gIEBJbnB1dCgpIGRhdGE/OiBDaGFydENvbmZpZ3VyYXRpb248VFR5cGUsIFREYXRhLCBUTGFiZWw+WydkYXRhJ107XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5oZWlnaHQucHgnKVxuICBASW5wdXQoeyB0cmFuc2Zvcm06ICh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyKSA9PiBudW1iZXJBdHRyaWJ1dGUodmFsdWUsIHVuZGVmaW5lZCkgfSkgaGVpZ2h0Pzogc3RyaW5nIHwgbnVtYmVyO1xuXG4gIEBJbnB1dCgpIGlkID0gYGMtY2hhcnRqcy0ke25leHRJZCsrfWA7XG4gIEBJbnB1dCgpIG9wdGlvbnM/OiBDaGFydENvbmZpZ3VyYXRpb248VFR5cGUsIFREYXRhLCBUTGFiZWw+WydvcHRpb25zJ107XG4gIEBJbnB1dCgpIHBsdWdpbnM6IENoYXJ0Q29uZmlndXJhdGlvbjxUVHlwZSwgVERhdGEsIFRMYWJlbD5bJ3BsdWdpbnMnXSA9IFtdO1xuXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSByZWRyYXc6IHN0cmluZyB8IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKSB0eXBlOiBDaGFydENvbmZpZ3VyYXRpb248VFR5cGUsIFREYXRhLCBUTGFiZWw+Wyd0eXBlJ10gPSAnYmFyJyBhcyBUVHlwZTtcblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLndpZHRoLnB4JylcbiAgQElucHV0KHsgdHJhbnNmb3JtOiAodmFsdWU6IHN0cmluZyB8IG51bWJlcikgPT4gbnVtYmVyQXR0cmlidXRlKHZhbHVlLCB1bmRlZmluZWQpIH0pIHdpZHRoPzogc3RyaW5nIHwgbnVtYmVyO1xuXG4gIEBJbnB1dCgpIHdyYXBwZXIgPSB0cnVlO1xuXG4gIEBPdXRwdXQoKSByZWFkb25seSBnZXREYXRhc2V0QXRFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgZ2V0RWxlbWVudEF0RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGdldEVsZW1lbnRzQXRFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBPdXRwdXQoKSByZWFkb25seSBjaGFydFJlZiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBWaWV3Q2hpbGQoJ2NhbnZhc0VsZW1lbnQnKSBjYW52YXNFbGVtZW50ITogRWxlbWVudFJlZjtcblxuICBjaGFydCE6IENoYXJ0PFRUeXBlLCBURGF0YSwgVExhYmVsPjtcbiAgY3R4ITogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICBnZXQgaG9zdENsYXNzZXMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdjaGFydC13cmFwcGVyJzogdGhpcy53cmFwcGVyXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHtcbiAgICBhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuICAgICAgdGhpcy5jdHggPSB0aGlzLmNhbnZhc0VsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQ/LmdldENvbnRleHQoJzJkJyk7XG4gICAgICB0aGlzLmNoYXJ0UmVuZGVyKCk7XG4gICAgfSwgeyBwaGFzZTogQWZ0ZXJSZW5kZXJQaGFzZS5SZWFkIH0pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY2hhcnRSZW5kZXIoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snZGF0YSddICYmICFjaGFuZ2VzWydkYXRhJ10uZmlyc3RDaGFuZ2UpIHtcbiAgICAgIHRoaXMuY2hhcnRVcGRhdGUoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmNoYXJ0RGVzdHJveSgpO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZUNsaWNrKCRldmVudDogTW91c2VFdmVudCkge1xuICAgIGlmICghdGhpcy5jaGFydCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGRhdGFzZXRBdEV2ZW50ID0gdGhpcy5jaGFydC5nZXRFbGVtZW50c0F0RXZlbnRGb3JNb2RlKCRldmVudCwgJ2RhdGFzZXQnLCB7IGludGVyc2VjdDogdHJ1ZSB9LCBmYWxzZSk7XG4gICAgdGhpcy5nZXREYXRhc2V0QXRFdmVudC5lbWl0KGRhdGFzZXRBdEV2ZW50KTtcblxuICAgIGNvbnN0IGVsZW1lbnRBdEV2ZW50ID0gdGhpcy5jaGFydC5nZXRFbGVtZW50c0F0RXZlbnRGb3JNb2RlKCRldmVudCwgJ25lYXJlc3QnLCB7IGludGVyc2VjdDogdHJ1ZSB9LCBmYWxzZSk7XG4gICAgdGhpcy5nZXRFbGVtZW50QXRFdmVudC5lbWl0KGVsZW1lbnRBdEV2ZW50KTtcblxuICAgIGNvbnN0IGVsZW1lbnRzQXRFdmVudCA9IHRoaXMuY2hhcnQuZ2V0RWxlbWVudHNBdEV2ZW50Rm9yTW9kZSgkZXZlbnQsICdpbmRleCcsIHsgaW50ZXJzZWN0OiB0cnVlIH0sIGZhbHNlKTtcbiAgICB0aGlzLmdldEVsZW1lbnRzQXRFdmVudC5lbWl0KGVsZW1lbnRzQXRFdmVudCk7XG4gIH1cblxuICBwdWJsaWMgY2hhcnREZXN0cm95KCkge1xuICAgIHRoaXMuY2hhcnQ/LmRlc3Ryb3koKTtcbiAgICB0aGlzLmNoYXJ0UmVmLmVtaXQodW5kZWZpbmVkKTtcbiAgfVxuXG4gIHB1YmxpYyBjaGFydFJlbmRlcigpIHtcbiAgICBpZiAoIXRoaXMuY2FudmFzRWxlbWVudD8ubmF0aXZlRWxlbWVudCB8fCAhdGhpcy5jdHgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBjb25zdCBjb25maWcgPSB0aGlzLmNoYXJ0Q29uZmlnKCk7XG4gICAgICBpZiAoY29uZmlnKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuY2hhcnQgPSBuZXcgQ2hhcnQodGhpcy5jdHgsIGNvbmZpZyk7XG4gICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmNhbnZhc0VsZW1lbnQubmF0aXZlRWxlbWVudCwgJ2Rpc3BsYXknLCAnYmxvY2snKTtcbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgIHRoaXMuY2hhcnRSZWYuZW1pdCh0aGlzLmNoYXJ0KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjaGFydFVwZGF0ZSgpIHtcbiAgICBpZiAoIXRoaXMuY2hhcnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yZWRyYXcpIHtcbiAgICAgIHRoaXMuY2hhcnREZXN0cm95KCk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5jaGFydFJlbmRlcigpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5jaGFydENvbmZpZygpO1xuXG4gICAgaWYgKHRoaXMub3B0aW9ucykge1xuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLmNoYXJ0Lm9wdGlvbnMgPz8ge30sIGNvbmZpZy5vcHRpb25zID8/IHt9KTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuY2hhcnQuY29uZmlnLmRhdGEpIHtcbiAgICAgIHRoaXMuY2hhcnQuY29uZmlnLmRhdGEgPSB7IC4uLmNvbmZpZy5kYXRhIH07XG4gICAgICB0aGlzLmNoYXJ0VXBkYXRlT3V0c2lkZUFuZ3VsYXIoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jaGFydCkge1xuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLmNoYXJ0LmNvbmZpZy5vcHRpb25zID8/IHt9LCBjb25maWcub3B0aW9ucyA/PyB7fSk7XG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMuY2hhcnQuY29uZmlnLnBsdWdpbnMgPz8gW10sIGNvbmZpZy5wbHVnaW5zID8/IFtdKTtcbiAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5jaGFydC5jb25maWcuZGF0YSwgY29uZmlnLmRhdGEpO1xuICAgIH1cblxuICAgIHRoaXMuY2hhcnRVcGRhdGVPdXRzaWRlQW5ndWxhcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGFydFVwZGF0ZU91dHNpZGVBbmd1bGFyKCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICB0aGlzLmNoYXJ0Py51cGRhdGUoKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGNoYXJ0VG9CYXNlNjRJbWFnZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmNoYXJ0Py50b0Jhc2U2NEltYWdlKCk7XG4gIH1cblxuICBwcml2YXRlIGNoYXJ0RGF0YUNvbmZpZygpOiBDaGFydENvbmZpZ3VyYXRpb248VFR5cGUsIFREYXRhLCBUTGFiZWw+WydkYXRhJ10ge1xuICAgIHJldHVybiB7XG4gICAgICBsYWJlbHM6IHRoaXMuZGF0YT8ubGFiZWxzID8/IFtdLFxuICAgICAgZGF0YXNldHM6IHRoaXMuZGF0YT8uZGF0YXNldHMgPz8gW11cbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjaGFydE9wdGlvbnMoKTogQ2hhcnRDb25maWd1cmF0aW9uPFRUeXBlLCBURGF0YSwgVExhYmVsPlsnb3B0aW9ucyddIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGFydENvbmZpZygpOiBDaGFydENvbmZpZ3VyYXRpb248VFR5cGUsIFREYXRhLCBUTGFiZWw+IHtcbiAgICB0aGlzLmNoYXJ0Q3VzdG9tVG9vbHRpcHMoKTtcbiAgICByZXR1cm4ge1xuICAgICAgZGF0YTogdGhpcy5jaGFydERhdGFDb25maWcoKSxcbiAgICAgIG9wdGlvbnM6IHRoaXMuY2hhcnRPcHRpb25zKCksXG4gICAgICBwbHVnaW5zOiB0aGlzLnBsdWdpbnMsXG4gICAgICB0eXBlOiB0aGlzLnR5cGVcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjaGFydEN1c3RvbVRvb2x0aXBzKCkge1xuICAgIGlmICh0aGlzLmN1c3RvbVRvb2x0aXBzKSB7XG4gICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5vcHRpb25zO1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgY29uc3QgcGx1Z2lucyA9IHRoaXMub3B0aW9ucz8ucGx1Z2lucztcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnN0IHRvb2x0aXAgPSB0aGlzLm9wdGlvbnM/LnBsdWdpbnM/LnRvb2x0aXA7XG4gICAgICB0aGlzLm9wdGlvbnMgPSBtZXJnZSh7XG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIHBsdWdpbnM6IHtcbiAgICAgICAgICAuLi5wbHVnaW5zLFxuICAgICAgICAgIHRvb2x0aXA6IHtcbiAgICAgICAgICAgIC4uLnRvb2x0aXAsXG4gICAgICAgICAgICBlbmFibGVkOiBmYWxzZSxcbiAgICAgICAgICAgIG1vZGU6ICdpbmRleCcsXG4gICAgICAgICAgICBwb3NpdGlvbjogJ25lYXJlc3QnLFxuICAgICAgICAgICAgZXh0ZXJuYWw6IGN1aUN1c3RvbVRvb2x0aXBzXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG59XG4iLCI8Y2FudmFzXG4gICNjYW52YXNFbGVtZW50XG4gIChjbGljayk9XCJoYW5kbGVDbGljaygkZXZlbnQpXCJcbiAgW2hlaWdodF09XCJoZWlnaHRcIlxuICBbaWRdPVwiaWRcIlxuICBbd2lkdGhdPVwid2lkdGhcIlxuICByb2xlPVwiaW1nXCJcbiAgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiXG4+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvY2FudmFzPlxuIl19
|
|
233
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnRqcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci1jaGFydGpzL3NyYy9saWIvY2hhcnRqcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci1jaGFydGpzL3NyYy9saWIvY2hhcnRqcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsV0FBVyxFQUNYLGdCQUFnQixFQUVoQixnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFFTCxlQUFlLEVBR2YsTUFBTSxFQUdOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEtBQUssTUFBTSxpQkFBaUIsQ0FBQztBQUdwQyxPQUFPLEVBQUUsS0FBSyxJQUFJLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsSUFBSSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUV0RSxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsYUFBYSxDQUFDLENBQUM7QUFFbkMsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBWWYsTUFBTSxPQUFPLGdCQUFnQjtJQWlGM0IsSUFDSSxXQUFXO1FBQ2IsT0FBTztZQUNMLGVBQWUsRUFBRSxJQUFJLENBQUMsT0FBTztTQUM5QixDQUFDO0lBQ0osQ0FBQztJQUVELFlBQ21CLE1BQWMsRUFDZCxRQUFtQixFQUNuQixpQkFBb0M7UUFGcEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQXpGdkQ7Ozs7V0FJRztRQUNxQyxtQkFBYyxHQUFZLElBQUksQ0FBQztRQW9CdkU7OztXQUdH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Q0FNN0QsZ0JBQWdCLDhjQzlHdEMseVFBWUE7OzJGRDhCYSxnQkFBZ0I7a0JBVjVCLFNBQVM7K0JBQ0UsU0FBUyxZQUdULFFBQVEsY0FDTixJQUFJLG1CQUNDLHVCQUF1QixDQUFDLE1BQU07bUlBV1AsY0FBYztzQkFBckQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFLN0IsSUFBSTtzQkFBWixLQUFLO2dCQWErRSxNQUFNO3NCQUQxRixXQUFXO3VCQUFDLGlCQUFpQjs7c0JBQzdCLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxLQUFzQixFQUFFLEVBQUUsQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxFQUFFO2dCQU0xRSxFQUFFO3NCQUFWLEtBQUs7Z0JBS0csT0FBTztzQkFBZixLQUFLO2dCQUtHLE9BQU87c0JBQWYsS0FBSztnQkFPa0MsTUFBTTtzQkFBN0MsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFNN0IsSUFBSTtzQkFBWixLQUFLO2dCQVErRSxLQUFLO3NCQUR6RixXQUFXO3VCQUFDLGdCQUFnQjs7c0JBQzVCLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxLQUFzQixFQUFFLEVBQUUsQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxFQUFFO2dCQU0zQyxPQUFPO3NCQUE5QyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUVuQixpQkFBaUI7c0JBQW5DLE1BQU07Z0JBQ1ksaUJBQWlCO3NCQUFuQyxNQUFNO2dCQUNZLGtCQUFrQjtzQkFBcEMsTUFBTTtnQkFFWSxRQUFRO3NCQUExQixNQUFNO2dCQUVxQixhQUFhO3NCQUF4QyxTQUFTO3VCQUFDLGVBQWU7Z0JBTXRCLFdBQVc7c0JBRGQsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYWZ0ZXJSZW5kZXIsXG4gIEFmdGVyUmVuZGVyUGhhc2UsXG4gIEFmdGVyVmlld0luaXQsXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBudW1iZXJBdHRyaWJ1dGUsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFJlbmRlcmVyMixcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgbWVyZ2UgZnJvbSAnbG9kYXNoLWVzL21lcmdlJztcblxuaW1wb3J0IHR5cGUgeyBDaGFydENvbmZpZ3VyYXRpb24sIENoYXJ0RGF0YSwgQ2hhcnRPcHRpb25zLCBDaGFydFR5cGUsIEludGVyYWN0aW9uSXRlbSwgUGx1Z2luIH0gZnJvbSAnY2hhcnQuanMnO1xuaW1wb3J0IHsgQ2hhcnQgYXMgQ2hhcnRKUywgcmVnaXN0ZXJhYmxlcyB9IGZyb20gJ2NoYXJ0LmpzJztcbmltcG9ydCB7IGN1c3RvbVRvb2x0aXBzIGFzIGN1aUN1c3RvbVRvb2x0aXBzIH0gZnJvbSAnQGNvcmV1aS9jaGFydGpzJztcblxuQ2hhcnRKUy5yZWdpc3RlciguLi5yZWdpc3RlcmFibGVzKTtcblxubGV0IG5leHRJZCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2MtY2hhcnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hhcnRqcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NoYXJ0anMuY29tcG9uZW50LnNjc3MnXSxcbiAgZXhwb3J0QXM6ICdjQ2hhcnQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWhvc3QtbWV0YWRhdGEtcHJvcGVydHlcbiAgLy8gaG9zdDogeyBuZ1NraXBIeWRyYXRpb246ICd0cnVlJyB9XG59KVxuZXhwb3J0IGNsYXNzIENoYXJ0anNDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgY3VzdG9tIGh0bWwgYmFzZWQgdG9vbHRpcHMgaW5zdGVhZCBvZiBzdGFuZGFyZCB0b29sdGlwcy5cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgY3VzdG9tVG9vbHRpcHM6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBUaGUgZGF0YSBvYmplY3QgdGhhdCBpcyBwYXNzZWQgaW50byB0aGUgQ2hhcnQuanMgY2hhcnQgKG1vcmUgaW5mbykuXG4gICAqL1xuICBASW5wdXQoKSBkYXRhPzogQ2hhcnREYXRhO1xuXG4gIC8qKlxuICAgKiBBIGZhbGxiYWNrIHdoZW4gdGhlIGNhbnZhcyBjYW5ub3QgYmUgcmVuZGVyZWQuIENhbiBiZSB1c2VkIGZvciBhY2Nlc3NpYmxlIGNoYXJ0IGRlc2NyaXB0aW9ucy5cbiAgICovXG4gIC8vIEBJbnB1dCgpIGZhbGxiYWNrQ29udGVudD86IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgLyoqXG4gICAqIEhlaWdodCBhdHRyaWJ1dGUgYXBwbGllZCB0byB0aGUgcmVuZGVyZWQgY2FudmFzLlxuICAgKiBAdHlwZSBudW1iZXIgfCB1bmRlZmluZWRcbiAgICogQGRlZmF1bHQgMTUwXG4gICAqL1xuICBASG9zdEJpbmRpbmcoJ3N0eWxlLmhlaWdodC5weCcpXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpID0+IG51bWJlckF0dHJpYnV0ZSh2YWx1ZSwgdW5kZWZpbmVkKSB9KSBoZWlnaHQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIElEIGF0dHJpYnV0ZSBhcHBsaWVkIHRvIHRoZSByZW5kZXJlZCBjYW52YXMuXG4gICAqIEB0eXBlIHN0cmluZ1xuICAgKi9cbiAgQElucHV0KCkgaWQ6IHN0cmluZyA9IGBjLWNoYXJ0anMtJHtuZXh0SWQrK31gO1xuXG4gIC8qKlxuICAgKiBUaGUgb3B0aW9ucyBvYmplY3QgdGhhdCBpcyBwYXNzZWQgaW50byB0aGUgQ2hhcnQuanMgY2hhcnQuXG4gICAqL1xuICBASW5wdXQoKSBvcHRpb25zPzogQ2hhcnRPcHRpb25zID0ge307XG5cbiAgLyoqXG4gICAqIFRoZSBwbHVnaW5zIGFycmF5IHRoYXQgaXMgcGFzc2VkIGludG8gdGhlIENoYXJ0LmpzIGNoYXJ0XG4gICAqL1xuICBASW5wdXQoKSBwbHVnaW5zOiBQbHVnaW5bXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBJZiB0cnVlLCB3aWxsIHRlYXIgZG93biBhbmQgcmVkcmF3IGNoYXJ0IG9uIGFsbCB1cGRhdGVzLlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgcmVkcmF3OiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIENoYXJ0LmpzIGNoYXJ0IHR5cGUuXG4gICAqIEB0eXBlIHsnbGluZScgfCAnYmFyJyB8ICdyYWRhcicgfCAnZG91Z2hudXQnIHwgJ3BvbGFyQXJlYScgfCAnYnViYmxlJyB8ICdwaWUnIHwgJ3NjYXR0ZXInfVxuICAgKi9cbiAgQElucHV0KCkgdHlwZTogQ2hhcnRUeXBlID0gJ2Jhcic7XG5cbiAgLyoqXG4gICAqIFdpZHRoIGF0dHJpYnV0ZSBhcHBsaWVkIHRvIHRoZSByZW5kZXJlZCBjYW52YXMuXG4gICAqIEB0eXBlIG51bWJlciB8IHVuZGVmaW5lZFxuICAgKiBAZGVmYXVsdCAzMDBcbiAgICovXG4gIEBIb3N0QmluZGluZygnc3R5bGUud2lkdGgucHgnKVxuICBASW5wdXQoeyB0cmFuc2Zvcm06ICh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyKSA9PiBudW1iZXJBdHRyaWJ1dGUodmFsdWUsIHVuZGVmaW5lZCkgfSkgd2lkdGg/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFB1dCB0aGUgY2hhcnQgaW50byB0aGUgd3JhcHBlciBkaXYgZWxlbWVudC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHdyYXBwZXIgPSB0cnVlO1xuXG4gIEBPdXRwdXQoKSByZWFkb25seSBnZXREYXRhc2V0QXRFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgZ2V0RWxlbWVudEF0RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGdldEVsZW1lbnRzQXRFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBPdXRwdXQoKSByZWFkb25seSBjaGFydFJlZiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBWaWV3Q2hpbGQoJ2NhbnZhc0VsZW1lbnQnKSBjYW52YXNFbGVtZW50ITogRWxlbWVudFJlZjtcblxuICBjaGFydCE6IENoYXJ0SlM7XG4gIGN0eCE6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgZ2V0IGhvc3RDbGFzc2VzKCkge1xuICAgIHJldHVybiB7XG4gICAgICAnY2hhcnQtd3JhcHBlcic6IHRoaXMud3JhcHBlclxuICAgIH07XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5nWm9uZTogTmdab25lLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHtcbiAgICAvLyB0b2RvOiB2ZXJpZnkgYWZ0ZXJSZW5kZXIgLyBhZnRlck5leHRSZW5kZXIgZm9yIGNoYXJ0anMgKHNwZWMgZmFpbHMgd2l0aCAxNy4wLjEwKVxuICAgIGFmdGVyUmVuZGVyKCgpID0+IHtcbiAgICAgIHRoaXMuY3R4ID0gdGhpcy5jYW52YXNFbGVtZW50Py5uYXRpdmVFbGVtZW50Py5nZXRDb250ZXh0KCcyZCcpO1xuICAgICAgdGhpcy5jaGFydFJlbmRlcigpO1xuICAgIH0sIHsgcGhhc2U6IEFmdGVyUmVuZGVyUGhhc2UuV3JpdGUgfSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jaGFydFJlbmRlcigpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydkYXRhJ10gJiYgIWNoYW5nZXNbJ2RhdGEnXS5maXJzdENoYW5nZSkge1xuICAgICAgdGhpcy5jaGFydFVwZGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuY2hhcnREZXN0cm95KCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlQ2xpY2soJGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLmNoYXJ0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZGF0YXNldEF0RXZlbnQ6IEludGVyYWN0aW9uSXRlbVtdID0gdGhpcy5jaGFydC5nZXRFbGVtZW50c0F0RXZlbnRGb3JNb2RlKCRldmVudCwgJ2RhdGFzZXQnLCB7IGludGVyc2VjdDogdHJ1ZSB9LCBmYWxzZSk7XG4gICAgdGhpcy5nZXREYXRhc2V0QXRFdmVudC5lbWl0KGRhdGFzZXRBdEV2ZW50KTtcblxuICAgIGNvbnN0IGVsZW1lbnRBdEV2ZW50OiBJbnRlcmFjdGlvbkl0ZW1bXSA9IHRoaXMuY2hhcnQuZ2V0RWxlbWVudHNBdEV2ZW50Rm9yTW9kZSgkZXZlbnQsICduZWFyZXN0JywgeyBpbnRlcnNlY3Q6IHRydWUgfSwgZmFsc2UpO1xuICAgIHRoaXMuZ2V0RWxlbWVudEF0RXZlbnQuZW1pdChlbGVtZW50QXRFdmVudCk7XG5cbiAgICBjb25zdCBlbGVtZW50c0F0RXZlbnQ6IEludGVyYWN0aW9uSXRlbVtdID0gdGhpcy5jaGFydC5nZXRFbGVtZW50c0F0RXZlbnRGb3JNb2RlKCRldmVudCwgJ2luZGV4JywgeyBpbnRlcnNlY3Q6IHRydWUgfSwgZmFsc2UpO1xuICAgIHRoaXMuZ2V0RWxlbWVudHNBdEV2ZW50LmVtaXQoZWxlbWVudHNBdEV2ZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBjaGFydERlc3Ryb3koKSB7XG4gICAgdGhpcy5jaGFydD8uZGVzdHJveSgpO1xuICAgIHRoaXMuY2hhcnRSZWYuZW1pdCh1bmRlZmluZWQpO1xuICB9XG5cbiAgcHVibGljIGNoYXJ0UmVuZGVyKCkge1xuICAgIGlmICghdGhpcy5jYW52YXNFbGVtZW50Py5uYXRpdmVFbGVtZW50IHx8ICF0aGlzLmN0eCB8fCB0aGlzLmNoYXJ0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgY29uc3QgY29uZmlnID0gdGhpcy5jaGFydENvbmZpZygpO1xuICAgICAgaWYgKGNvbmZpZykge1xuICAgICAgICB0aGlzLmNoYXJ0ID0gbmV3IENoYXJ0SlModGhpcy5jdHgsIGNvbmZpZyk7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmNhbnZhc0VsZW1lbnQubmF0aXZlRWxlbWVudCwgJ2Rpc3BsYXknLCAnYmxvY2snKTtcbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgIHRoaXMuY2hhcnRSZWYuZW1pdCh0aGlzLmNoYXJ0KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjaGFydFVwZGF0ZSgpIHtcbiAgICBpZiAoIXRoaXMuY2hhcnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yZWRyYXcpIHtcbiAgICAgIHRoaXMuY2hhcnREZXN0cm95KCk7XG4gICAgICB0aGlzLmNoYXJ0UmVuZGVyKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY29uZmlnOiBDaGFydENvbmZpZ3VyYXRpb24gPSB0aGlzLmNoYXJ0Q29uZmlnKCk7XG5cbiAgICBpZiAodGhpcy5vcHRpb25zKSB7XG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMuY2hhcnQub3B0aW9ucyA/PyB7fSwgY29uZmlnLm9wdGlvbnMgPz8ge30pO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5jaGFydC5jb25maWcuZGF0YSkge1xuICAgICAgdGhpcy5jaGFydC5jb25maWcuZGF0YSA9IHsgLi4uY29uZmlnLmRhdGEgfTtcbiAgICAgIHRoaXMuY2hhcnRVcGRhdGVPdXRzaWRlQW5ndWxhcigpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNoYXJ0KSB7XG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMuY2hhcnQuY29uZmlnLm9wdGlvbnMgPz8ge30sIGNvbmZpZy5vcHRpb25zID8/IHt9KTtcbiAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5jaGFydC5jb25maWcucGx1Z2lucyA/PyBbXSwgY29uZmlnLnBsdWdpbnMgPz8gW10pO1xuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLmNoYXJ0LmNvbmZpZy5kYXRhLCBjb25maWcuZGF0YSk7XG4gICAgfVxuXG4gICAgdGhpcy5jaGFydFVwZGF0ZU91dHNpZGVBbmd1bGFyKCk7XG4gIH1cblxuICBwcml2YXRlIGNoYXJ0VXBkYXRlT3V0c2lkZUFuZ3VsYXIoKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgIHRoaXMuY2hhcnQ/LnVwZGF0ZSgpO1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgY2hhcnRUb0Jhc2U2NEltYWdlKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuY2hhcnQ/LnRvQmFzZTY0SW1hZ2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hhcnREYXRhQ29uZmlnKCk6IENoYXJ0RGF0YSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxhYmVsczogdGhpcy5kYXRhPy5sYWJlbHMgPz8gW10sXG4gICAgICBkYXRhc2V0czogdGhpcy5kYXRhPy5kYXRhc2V0cyA/PyBbXVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGNoYXJ0T3B0aW9ucygpOiBDaGFydE9wdGlvbnMge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMgPz8ge307XG4gIH1cblxuICBwcml2YXRlIGNoYXJ0Q29uZmlnKCk6IENoYXJ0Q29uZmlndXJhdGlvbiB7XG4gICAgdGhpcy5jaGFydEN1c3RvbVRvb2x0aXBzKCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGE6IHRoaXMuY2hhcnREYXRhQ29uZmlnKCksXG4gICAgICBvcHRpb25zOiB0aGlzLmNoYXJ0T3B0aW9ucygpLFxuICAgICAgcGx1Z2luczogdGhpcy5wbHVnaW5zLFxuICAgICAgdHlwZTogdGhpcy50eXBlXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY2hhcnRDdXN0b21Ub29sdGlwcygpIHtcbiAgICBpZiAodGhpcy5jdXN0b21Ub29sdGlwcykge1xuICAgICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMub3B0aW9ucztcbiAgICAgIGNvbnN0IHBsdWdpbnMgPSB0aGlzLm9wdGlvbnM/LnBsdWdpbnM7XG4gICAgICBjb25zdCB0b29sdGlwID0gdGhpcy5vcHRpb25zPy5wbHVnaW5zPy50b29sdGlwO1xuICAgICAgdGhpcy5vcHRpb25zID0gbWVyZ2Uoe1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICBwbHVnaW5zOiB7XG4gICAgICAgICAgLi4ucGx1Z2lucyxcbiAgICAgICAgICB0b29sdGlwOiB7XG4gICAgICAgICAgICAuLi50b29sdGlwLFxuICAgICAgICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgICAgICAgICBtb2RlOiAnaW5kZXgnLFxuICAgICAgICAgICAgcG9zaXRpb246ICduZWFyZXN0JyxcbiAgICAgICAgICAgIGV4dGVybmFsOiBjdWlDdXN0b21Ub29sdGlwc1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9O1xufVxuIiwiPGNhbnZhc1xuICAjY2FudmFzRWxlbWVudFxuICAoY2xpY2spPVwiaGFuZGxlQ2xpY2soJGV2ZW50KVwiXG4gIFtoZWlnaHRdPVwiaGVpZ2h0XCJcbiAgW2lkXT1cImlkXCJcbiAgW3dpZHRoXT1cIndpZHRoXCJcbiAgcm9sZT1cImltZ1wiXG4gIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIlxuPlxuICA8bmctY29udGVudCAvPlxuICA8IS0tICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmFsbGJhY2tDb250ZW50XCIvPi0tPlxuPC9jYW52YXM+XG4iXX0=
|
|
@@ -2,11 +2,11 @@ import { NgModule } from '@angular/core';
|
|
|
2
2
|
import { ChartjsComponent } from './chartjs.component';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export class ChartjsModule {
|
|
5
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.
|
|
6
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.
|
|
7
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.
|
|
5
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: ChartjsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
6
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.9", ngImport: i0, type: ChartjsModule, imports: [ChartjsComponent], exports: [ChartjsComponent] }); }
|
|
7
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: ChartjsModule }); }
|
|
8
8
|
}
|
|
9
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.
|
|
9
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: ChartjsModule, decorators: [{
|
|
10
10
|
type: NgModule,
|
|
11
11
|
args: [{
|
|
12
12
|
imports: [
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { EventEmitter, AfterRenderPhase,
|
|
2
|
+
import { EventEmitter, AfterRenderPhase, afterRender, booleanAttribute, numberAttribute, Component, ChangeDetectionStrategy, Input, HostBinding, Output, ViewChild, NgModule } from '@angular/core';
|
|
3
3
|
import merge from 'lodash-es/merge';
|
|
4
4
|
import { registerables, Chart } from 'chart.js';
|
|
5
5
|
import { customTooltips } from '@coreui/chartjs';
|
|
@@ -12,25 +12,54 @@ class ChartjsComponent {
|
|
|
12
12
|
'chart-wrapper': this.wrapper
|
|
13
13
|
};
|
|
14
14
|
}
|
|
15
|
-
constructor(
|
|
16
|
-
this.elementRef = elementRef;
|
|
15
|
+
constructor(ngZone, renderer, changeDetectorRef) {
|
|
17
16
|
this.ngZone = ngZone;
|
|
18
17
|
this.renderer = renderer;
|
|
19
18
|
this.changeDetectorRef = changeDetectorRef;
|
|
19
|
+
/**
|
|
20
|
+
* Enables custom html based tooltips instead of standard tooltips.
|
|
21
|
+
* @type boolean
|
|
22
|
+
* @default true
|
|
23
|
+
*/
|
|
20
24
|
this.customTooltips = true;
|
|
25
|
+
/**
|
|
26
|
+
* ID attribute applied to the rendered canvas.
|
|
27
|
+
* @type string
|
|
28
|
+
*/
|
|
21
29
|
this.id = `c-chartjs-${nextId++}`;
|
|
30
|
+
/**
|
|
31
|
+
* The options object that is passed into the Chart.js chart.
|
|
32
|
+
*/
|
|
33
|
+
this.options = {};
|
|
34
|
+
/**
|
|
35
|
+
* The plugins array that is passed into the Chart.js chart
|
|
36
|
+
*/
|
|
22
37
|
this.plugins = [];
|
|
38
|
+
/**
|
|
39
|
+
* If true, will tear down and redraw chart on all updates.
|
|
40
|
+
* @type boolean
|
|
41
|
+
* @default false
|
|
42
|
+
*/
|
|
23
43
|
this.redraw = false;
|
|
44
|
+
/**
|
|
45
|
+
* Chart.js chart type.
|
|
46
|
+
* @type {'line' | 'bar' | 'radar' | 'doughnut' | 'polarArea' | 'bubble' | 'pie' | 'scatter'}
|
|
47
|
+
*/
|
|
24
48
|
this.type = 'bar';
|
|
49
|
+
/**
|
|
50
|
+
* Put the chart into the wrapper div element.
|
|
51
|
+
* @default true
|
|
52
|
+
*/
|
|
25
53
|
this.wrapper = true;
|
|
26
54
|
this.getDatasetAtEvent = new EventEmitter();
|
|
27
55
|
this.getElementAtEvent = new EventEmitter();
|
|
28
56
|
this.getElementsAtEvent = new EventEmitter();
|
|
29
57
|
this.chartRef = new EventEmitter();
|
|
30
|
-
afterNextRender(
|
|
58
|
+
// todo: verify afterRender / afterNextRender for chartjs (spec fails with 17.0.10)
|
|
59
|
+
afterRender(() => {
|
|
31
60
|
this.ctx = this.canvasElement?.nativeElement?.getContext('2d');
|
|
32
61
|
this.chartRender();
|
|
33
|
-
}, { phase: AfterRenderPhase.
|
|
62
|
+
}, { phase: AfterRenderPhase.Write });
|
|
34
63
|
}
|
|
35
64
|
ngAfterViewInit() {
|
|
36
65
|
this.chartRender();
|
|
@@ -59,14 +88,14 @@ class ChartjsComponent {
|
|
|
59
88
|
this.chartRef.emit(undefined);
|
|
60
89
|
}
|
|
61
90
|
chartRender() {
|
|
62
|
-
if (!this.canvasElement?.nativeElement || !this.ctx) {
|
|
91
|
+
if (!this.canvasElement?.nativeElement || !this.ctx || this.chart) {
|
|
63
92
|
return;
|
|
64
93
|
}
|
|
65
94
|
this.ngZone.runOutsideAngular(() => {
|
|
66
95
|
const config = this.chartConfig();
|
|
67
96
|
if (config) {
|
|
68
|
-
|
|
69
|
-
|
|
97
|
+
this.chart = new Chart(this.ctx, config);
|
|
98
|
+
this.ngZone.run(() => {
|
|
70
99
|
this.renderer.setStyle(this.canvasElement.nativeElement, 'display', 'block');
|
|
71
100
|
this.changeDetectorRef.markForCheck();
|
|
72
101
|
this.chartRef.emit(this.chart);
|
|
@@ -80,9 +109,7 @@ class ChartjsComponent {
|
|
|
80
109
|
}
|
|
81
110
|
if (this.redraw) {
|
|
82
111
|
this.chartDestroy();
|
|
83
|
-
|
|
84
|
-
this.chartRender();
|
|
85
|
-
});
|
|
112
|
+
this.chartRender();
|
|
86
113
|
return;
|
|
87
114
|
}
|
|
88
115
|
const config = this.chartConfig();
|
|
@@ -104,7 +131,9 @@ class ChartjsComponent {
|
|
|
104
131
|
setTimeout(() => {
|
|
105
132
|
this.ngZone.runOutsideAngular(() => {
|
|
106
133
|
this.chart?.update();
|
|
107
|
-
this.
|
|
134
|
+
this.ngZone.run(() => {
|
|
135
|
+
this.changeDetectorRef.markForCheck();
|
|
136
|
+
});
|
|
108
137
|
});
|
|
109
138
|
});
|
|
110
139
|
}
|
|
@@ -118,7 +147,7 @@ class ChartjsComponent {
|
|
|
118
147
|
};
|
|
119
148
|
}
|
|
120
149
|
chartOptions() {
|
|
121
|
-
return this.options;
|
|
150
|
+
return this.options ?? {};
|
|
122
151
|
}
|
|
123
152
|
chartConfig() {
|
|
124
153
|
this.chartCustomTooltips();
|
|
@@ -132,9 +161,7 @@ class ChartjsComponent {
|
|
|
132
161
|
chartCustomTooltips() {
|
|
133
162
|
if (this.customTooltips) {
|
|
134
163
|
const options = this.options;
|
|
135
|
-
// @ts-ignore
|
|
136
164
|
const plugins = this.options?.plugins;
|
|
137
|
-
// @ts-ignore
|
|
138
165
|
const tooltip = this.options?.plugins?.tooltip;
|
|
139
166
|
this.options = merge({
|
|
140
167
|
...options,
|
|
@@ -152,14 +179,15 @@ class ChartjsComponent {
|
|
|
152
179
|
}
|
|
153
180
|
}
|
|
154
181
|
;
|
|
155
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.
|
|
156
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.0.
|
|
182
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: ChartjsComponent, deps: [{ token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
183
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.0.9", type: ChartjsComponent, isStandalone: true, selector: "c-chart", inputs: { customTooltips: ["customTooltips", "customTooltips", booleanAttribute], data: "data", height: ["height", "height", (value) => numberAttribute(value, undefined)], id: "id", options: "options", plugins: "plugins", redraw: ["redraw", "redraw", booleanAttribute], type: "type", width: ["width", "width", (value) => numberAttribute(value, undefined)], wrapper: ["wrapper", "wrapper", booleanAttribute] }, outputs: { getDatasetAtEvent: "getDatasetAtEvent", getElementAtEvent: "getElementAtEvent", getElementsAtEvent: "getElementsAtEvent", chartRef: "chartRef" }, host: { properties: { "style.height.px": "this.height", "style.width.px": "this.width", "class": "this.hostClasses" } }, viewQueries: [{ propertyName: "canvasElement", first: true, predicate: ["canvasElement"], descendants: true }], exportAs: ["cChart"], usesOnChanges: true, ngImport: i0, template: "<canvas\n #canvasElement\n (click)=\"handleClick($event)\"\n [height]=\"height\"\n [id]=\"id\"\n [width]=\"width\"\n role=\"img\"\n style=\"display: none;\"\n>\n <ng-content />\n <!-- <ng-container *ngTemplateOutlet=\"fallbackContent\"/>-->\n</canvas>\n", styles: [":host.chart-wrapper{display:block}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
157
184
|
}
|
|
158
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.
|
|
185
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: ChartjsComponent, decorators: [{
|
|
159
186
|
type: Component,
|
|
160
|
-
args: [{ selector: 'c-chart', exportAs: 'cChart', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<canvas\n #canvasElement\n (click)=\"handleClick($event)\"\n [height]=\"height\"\n [id]=\"id\"\n [width]=\"width\"\n role=\"img\"\n style=\"display: none;\"\n>\n <ng-content
|
|
161
|
-
}], ctorParameters: () => [{ type: i0.
|
|
162
|
-
type: Input
|
|
187
|
+
args: [{ selector: 'c-chart', exportAs: 'cChart', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<canvas\n #canvasElement\n (click)=\"handleClick($event)\"\n [height]=\"height\"\n [id]=\"id\"\n [width]=\"width\"\n role=\"img\"\n style=\"display: none;\"\n>\n <ng-content />\n <!-- <ng-container *ngTemplateOutlet=\"fallbackContent\"/>-->\n</canvas>\n", styles: [":host.chart-wrapper{display:block}\n"] }]
|
|
188
|
+
}], ctorParameters: () => [{ type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }], propDecorators: { customTooltips: [{
|
|
189
|
+
type: Input,
|
|
190
|
+
args: [{ transform: booleanAttribute }]
|
|
163
191
|
}], data: [{
|
|
164
192
|
type: Input
|
|
165
193
|
}], height: [{
|
|
@@ -186,7 +214,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
|
|
|
186
214
|
type: Input,
|
|
187
215
|
args: [{ transform: (value) => numberAttribute(value, undefined) }]
|
|
188
216
|
}], wrapper: [{
|
|
189
|
-
type: Input
|
|
217
|
+
type: Input,
|
|
218
|
+
args: [{ transform: booleanAttribute }]
|
|
190
219
|
}], getDatasetAtEvent: [{
|
|
191
220
|
type: Output
|
|
192
221
|
}], getElementAtEvent: [{
|
|
@@ -204,11 +233,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
|
|
|
204
233
|
}] } });
|
|
205
234
|
|
|
206
235
|
class ChartjsModule {
|
|
207
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.
|
|
208
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.
|
|
209
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.
|
|
236
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: ChartjsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
237
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.9", ngImport: i0, type: ChartjsModule, imports: [ChartjsComponent], exports: [ChartjsComponent] }); }
|
|
238
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: ChartjsModule }); }
|
|
210
239
|
}
|
|
211
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.
|
|
240
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: ChartjsModule, decorators: [{
|
|
212
241
|
type: NgModule,
|
|
213
242
|
args: [{
|
|
214
243
|
imports: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coreui-angular-chartjs.mjs","sources":["../../../projects/coreui-angular-chartjs/src/lib/chartjs.component.ts","../../../projects/coreui-angular-chartjs/src/lib/chartjs.component.html","../../../projects/coreui-angular-chartjs/src/lib/chartjs.module.ts","../../../projects/coreui-angular-chartjs/src/public-api.ts","../../../projects/coreui-angular-chartjs/src/coreui-angular-chartjs.ts"],"sourcesContent":["import {\n afterNextRender,\n AfterRenderPhase,\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n NgZone,\n numberAttribute,\n OnChanges,\n OnDestroy,\n Output,\n Renderer2,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\n\nimport merge from 'lodash-es/merge';\n\nimport { Chart, ChartConfiguration, ChartType, DefaultDataPoint, registerables } from 'chart.js';\nimport { customTooltips as cuiCustomTooltips } from '@coreui/chartjs';\n\nChart.register(...registerables);\n\nlet nextId = 0;\n\n@Component({\n selector: 'c-chart',\n templateUrl: './chartjs.component.html',\n styleUrls: ['./chartjs.component.scss'],\n exportAs: 'cChart',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n // host: { ngSkipHydration: 'true' }\n})\nexport class ChartjsComponent<TType extends ChartType = ChartType, TData = DefaultDataPoint<TType>, TLabel = unknown> implements AfterViewInit, OnDestroy, OnChanges {\n\n @Input() customTooltips = true;\n @Input() data?: ChartConfiguration<TType, TData, TLabel>['data'];\n\n @HostBinding('style.height.px')\n @Input({ transform: (value: string | number) => numberAttribute(value, undefined) }) height?: string | number;\n\n @Input() id = `c-chartjs-${nextId++}`;\n @Input() options?: ChartConfiguration<TType, TData, TLabel>['options'];\n @Input() plugins: ChartConfiguration<TType, TData, TLabel>['plugins'] = [];\n\n @Input({ transform: booleanAttribute }) redraw: string | boolean = false;\n\n @Input() type: ChartConfiguration<TType, TData, TLabel>['type'] = 'bar' as TType;\n\n @HostBinding('style.width.px')\n @Input({ transform: (value: string | number) => numberAttribute(value, undefined) }) width?: string | number;\n\n @Input() wrapper = true;\n\n @Output() readonly getDatasetAtEvent = new EventEmitter<any>();\n @Output() readonly getElementAtEvent = new EventEmitter<any>();\n @Output() readonly getElementsAtEvent = new EventEmitter<any>();\n\n @Output() readonly chartRef = new EventEmitter<any>();\n\n @ViewChild('canvasElement') canvasElement!: ElementRef;\n\n chart!: Chart<TType, TData, TLabel>;\n ctx!: CanvasRenderingContext2D;\n\n @HostBinding('class')\n get hostClasses() {\n return {\n 'chart-wrapper': this.wrapper\n };\n }\n\n constructor(\n private elementRef: ElementRef,\n private ngZone: NgZone,\n private renderer: Renderer2,\n private changeDetectorRef: ChangeDetectorRef\n ) {\n afterNextRender(() => {\n this.ctx = this.canvasElement?.nativeElement?.getContext('2d');\n this.chartRender();\n }, { phase: AfterRenderPhase.Read });\n }\n\n ngAfterViewInit(): void {\n this.chartRender();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['data'] && !changes['data'].firstChange) {\n this.chartUpdate();\n }\n }\n\n ngOnDestroy(): void {\n this.chartDestroy();\n }\n\n public handleClick($event: MouseEvent) {\n if (!this.chart) {\n return;\n }\n\n const datasetAtEvent = this.chart.getElementsAtEventForMode($event, 'dataset', { intersect: true }, false);\n this.getDatasetAtEvent.emit(datasetAtEvent);\n\n const elementAtEvent = this.chart.getElementsAtEventForMode($event, 'nearest', { intersect: true }, false);\n this.getElementAtEvent.emit(elementAtEvent);\n\n const elementsAtEvent = this.chart.getElementsAtEventForMode($event, 'index', { intersect: true }, false);\n this.getElementsAtEvent.emit(elementsAtEvent);\n }\n\n public chartDestroy() {\n this.chart?.destroy();\n this.chartRef.emit(undefined);\n }\n\n public chartRender() {\n if (!this.canvasElement?.nativeElement || !this.ctx) {\n return;\n }\n\n this.ngZone.runOutsideAngular(() => {\n const config = this.chartConfig();\n if (config) {\n setTimeout(() => {\n this.chart = new Chart(this.ctx, config);\n this.renderer.setStyle(this.canvasElement.nativeElement, 'display', 'block');\n this.changeDetectorRef.markForCheck();\n this.chartRef.emit(this.chart);\n });\n }\n });\n }\n\n chartUpdate() {\n if (!this.chart) {\n return;\n }\n\n if (this.redraw) {\n this.chartDestroy();\n setTimeout(() => {\n this.chartRender();\n });\n return;\n }\n\n const config = this.chartConfig();\n\n if (this.options) {\n Object.assign(this.chart.options ?? {}, config.options ?? {});\n }\n\n if (!this.chart.config.data) {\n this.chart.config.data = { ...config.data };\n this.chartUpdateOutsideAngular();\n }\n\n if (this.chart) {\n Object.assign(this.chart.config.options ?? {}, config.options ?? {});\n Object.assign(this.chart.config.plugins ?? [], config.plugins ?? []);\n Object.assign(this.chart.config.data, config.data);\n }\n\n this.chartUpdateOutsideAngular();\n }\n\n private chartUpdateOutsideAngular() {\n setTimeout(() => {\n this.ngZone.runOutsideAngular(() => {\n this.chart?.update();\n this.changeDetectorRef.markForCheck();\n });\n });\n }\n\n public chartToBase64Image(): string | undefined {\n return this.chart?.toBase64Image();\n }\n\n private chartDataConfig(): ChartConfiguration<TType, TData, TLabel>['data'] {\n return {\n labels: this.data?.labels ?? [],\n datasets: this.data?.datasets ?? []\n };\n }\n\n private chartOptions(): ChartConfiguration<TType, TData, TLabel>['options'] {\n return this.options;\n }\n\n private chartConfig(): ChartConfiguration<TType, TData, TLabel> {\n this.chartCustomTooltips();\n return {\n data: this.chartDataConfig(),\n options: this.chartOptions(),\n plugins: this.plugins,\n type: this.type\n };\n }\n\n private chartCustomTooltips() {\n if (this.customTooltips) {\n const options = this.options;\n // @ts-ignore\n const plugins = this.options?.plugins;\n // @ts-ignore\n const tooltip = this.options?.plugins?.tooltip;\n this.options = merge({\n ...options,\n plugins: {\n ...plugins,\n tooltip: {\n ...tooltip,\n enabled: false,\n mode: 'index',\n position: 'nearest',\n external: cuiCustomTooltips\n }\n }\n });\n }\n };\n}\n","<canvas\n #canvasElement\n (click)=\"handleClick($event)\"\n [height]=\"height\"\n [id]=\"id\"\n [width]=\"width\"\n role=\"img\"\n style=\"display: none;\"\n>\n <ng-content></ng-content>\n</canvas>\n","import { NgModule } from '@angular/core';\nimport { ChartjsComponent } from './chartjs.component';\n\n@NgModule({\n imports: [\n ChartjsComponent\n ],\n exports: [\n ChartjsComponent\n ]\n})\nexport class ChartjsModule {}\n","/*\n * Public API Surface of coreui-angular-chartjs\n */\n\nexport * from './lib/chartjs.component';\nexport * from './lib/chartjs.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["cuiCustomTooltips"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"coreui-angular-chartjs.mjs","sources":["../../../projects/coreui-angular-chartjs/src/lib/chartjs.component.ts","../../../projects/coreui-angular-chartjs/src/lib/chartjs.component.html","../../../projects/coreui-angular-chartjs/src/lib/chartjs.module.ts","../../../projects/coreui-angular-chartjs/src/public-api.ts","../../../projects/coreui-angular-chartjs/src/coreui-angular-chartjs.ts"],"sourcesContent":["import {\n afterRender,\n AfterRenderPhase,\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n NgZone,\n numberAttribute,\n OnChanges,\n OnDestroy,\n Output,\n Renderer2,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\n\nimport merge from 'lodash-es/merge';\n\nimport type { ChartConfiguration, ChartData, ChartOptions, ChartType, InteractionItem, Plugin } from 'chart.js';\nimport { Chart as ChartJS, registerables } from 'chart.js';\nimport { customTooltips as cuiCustomTooltips } from '@coreui/chartjs';\n\nChartJS.register(...registerables);\n\nlet nextId = 0;\n\n@Component({\n selector: 'c-chart',\n templateUrl: './chartjs.component.html',\n styleUrls: ['./chartjs.component.scss'],\n exportAs: 'cChart',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n // host: { ngSkipHydration: 'true' }\n})\nexport class ChartjsComponent implements AfterViewInit, OnDestroy, OnChanges {\n\n /**\n * Enables custom html based tooltips instead of standard tooltips.\n * @type boolean\n * @default true\n */\n @Input({ transform: booleanAttribute }) customTooltips: boolean = true;\n\n /**\n * The data object that is passed into the Chart.js chart (more info).\n */\n @Input() data?: ChartData;\n\n /**\n * A fallback when the canvas cannot be rendered. Can be used for accessible chart descriptions.\n */\n // @Input() fallbackContent?: TemplateRef<any>;\n\n /**\n * Height attribute applied to the rendered canvas.\n * @type number | undefined\n * @default 150\n */\n @HostBinding('style.height.px')\n @Input({ transform: (value: string | number) => numberAttribute(value, undefined) }) height?: number;\n\n /**\n * ID attribute applied to the rendered canvas.\n * @type string\n */\n @Input() id: string = `c-chartjs-${nextId++}`;\n\n /**\n * The options object that is passed into the Chart.js chart.\n */\n @Input() options?: ChartOptions = {};\n\n /**\n * The plugins array that is passed into the Chart.js chart\n */\n @Input() plugins: Plugin[] = [];\n\n /**\n * If true, will tear down and redraw chart on all updates.\n * @type boolean\n * @default false\n */\n @Input({ transform: booleanAttribute }) redraw: boolean = false;\n\n /**\n * Chart.js chart type.\n * @type {'line' | 'bar' | 'radar' | 'doughnut' | 'polarArea' | 'bubble' | 'pie' | 'scatter'}\n */\n @Input() type: ChartType = 'bar';\n\n /**\n * Width attribute applied to the rendered canvas.\n * @type number | undefined\n * @default 300\n */\n @HostBinding('style.width.px')\n @Input({ transform: (value: string | number) => numberAttribute(value, undefined) }) width?: number;\n\n /**\n * Put the chart into the wrapper div element.\n * @default true\n */\n @Input({ transform: booleanAttribute }) wrapper = true;\n\n @Output() readonly getDatasetAtEvent = new EventEmitter<any>();\n @Output() readonly getElementAtEvent = new EventEmitter<any>();\n @Output() readonly getElementsAtEvent = new EventEmitter<any>();\n\n @Output() readonly chartRef = new EventEmitter<any>();\n\n @ViewChild('canvasElement') canvasElement!: ElementRef;\n\n chart!: ChartJS;\n ctx!: CanvasRenderingContext2D;\n\n @HostBinding('class')\n get hostClasses() {\n return {\n 'chart-wrapper': this.wrapper\n };\n }\n\n constructor(\n private readonly ngZone: NgZone,\n private readonly renderer: Renderer2,\n private readonly changeDetectorRef: ChangeDetectorRef\n ) {\n // todo: verify afterRender / afterNextRender for chartjs (spec fails with 17.0.10)\n afterRender(() => {\n this.ctx = this.canvasElement?.nativeElement?.getContext('2d');\n this.chartRender();\n }, { phase: AfterRenderPhase.Write });\n }\n\n ngAfterViewInit(): void {\n this.chartRender();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['data'] && !changes['data'].firstChange) {\n this.chartUpdate();\n }\n }\n\n ngOnDestroy(): void {\n this.chartDestroy();\n }\n\n public handleClick($event: MouseEvent) {\n if (!this.chart) {\n return;\n }\n\n const datasetAtEvent: InteractionItem[] = this.chart.getElementsAtEventForMode($event, 'dataset', { intersect: true }, false);\n this.getDatasetAtEvent.emit(datasetAtEvent);\n\n const elementAtEvent: InteractionItem[] = this.chart.getElementsAtEventForMode($event, 'nearest', { intersect: true }, false);\n this.getElementAtEvent.emit(elementAtEvent);\n\n const elementsAtEvent: InteractionItem[] = this.chart.getElementsAtEventForMode($event, 'index', { intersect: true }, false);\n this.getElementsAtEvent.emit(elementsAtEvent);\n }\n\n public chartDestroy() {\n this.chart?.destroy();\n this.chartRef.emit(undefined);\n }\n\n public chartRender() {\n if (!this.canvasElement?.nativeElement || !this.ctx || this.chart) {\n return;\n }\n\n this.ngZone.runOutsideAngular(() => {\n const config = this.chartConfig();\n if (config) {\n this.chart = new ChartJS(this.ctx, config);\n this.ngZone.run(() => {\n this.renderer.setStyle(this.canvasElement.nativeElement, 'display', 'block');\n this.changeDetectorRef.markForCheck();\n this.chartRef.emit(this.chart);\n });\n }\n });\n }\n\n chartUpdate() {\n if (!this.chart) {\n return;\n }\n\n if (this.redraw) {\n this.chartDestroy();\n this.chartRender();\n return;\n }\n\n const config: ChartConfiguration = this.chartConfig();\n\n if (this.options) {\n Object.assign(this.chart.options ?? {}, config.options ?? {});\n }\n\n if (!this.chart.config.data) {\n this.chart.config.data = { ...config.data };\n this.chartUpdateOutsideAngular();\n }\n\n if (this.chart) {\n Object.assign(this.chart.config.options ?? {}, config.options ?? {});\n Object.assign(this.chart.config.plugins ?? [], config.plugins ?? []);\n Object.assign(this.chart.config.data, config.data);\n }\n\n this.chartUpdateOutsideAngular();\n }\n\n private chartUpdateOutsideAngular() {\n setTimeout(() => {\n this.ngZone.runOutsideAngular(() => {\n this.chart?.update();\n this.ngZone.run(() => {\n this.changeDetectorRef.markForCheck();\n });\n });\n });\n }\n\n public chartToBase64Image(): string | undefined {\n return this.chart?.toBase64Image();\n }\n\n private chartDataConfig(): ChartData {\n return {\n labels: this.data?.labels ?? [],\n datasets: this.data?.datasets ?? []\n };\n }\n\n private chartOptions(): ChartOptions {\n return this.options ?? {};\n }\n\n private chartConfig(): ChartConfiguration {\n this.chartCustomTooltips();\n return {\n data: this.chartDataConfig(),\n options: this.chartOptions(),\n plugins: this.plugins,\n type: this.type\n };\n }\n\n private chartCustomTooltips() {\n if (this.customTooltips) {\n const options = this.options;\n const plugins = this.options?.plugins;\n const tooltip = this.options?.plugins?.tooltip;\n this.options = merge({\n ...options,\n plugins: {\n ...plugins,\n tooltip: {\n ...tooltip,\n enabled: false,\n mode: 'index',\n position: 'nearest',\n external: cuiCustomTooltips\n }\n }\n });\n }\n };\n}\n","<canvas\n #canvasElement\n (click)=\"handleClick($event)\"\n [height]=\"height\"\n [id]=\"id\"\n [width]=\"width\"\n role=\"img\"\n style=\"display: none;\"\n>\n <ng-content />\n <!-- <ng-container *ngTemplateOutlet=\"fallbackContent\"/>-->\n</canvas>\n","import { NgModule } from '@angular/core';\nimport { ChartjsComponent } from './chartjs.component';\n\n@NgModule({\n imports: [\n ChartjsComponent\n ],\n exports: [\n ChartjsComponent\n ]\n})\nexport class ChartjsModule {}\n","/*\n * Public API Surface of coreui-angular-chartjs\n */\n\nexport * from './lib/chartjs.component';\nexport * from './lib/chartjs.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["ChartJS","cuiCustomTooltips"],"mappings":"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"}
|
|
@@ -1,32 +1,76 @@
|
|
|
1
1
|
import { AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, NgZone, OnChanges, OnDestroy, Renderer2, SimpleChanges } from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import type { ChartData, ChartOptions, ChartType, Plugin } from 'chart.js';
|
|
3
|
+
import { Chart as ChartJS } from 'chart.js';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
|
-
export declare class ChartjsComponent
|
|
5
|
-
private
|
|
6
|
-
private
|
|
7
|
-
private
|
|
8
|
-
|
|
5
|
+
export declare class ChartjsComponent implements AfterViewInit, OnDestroy, OnChanges {
|
|
6
|
+
private readonly ngZone;
|
|
7
|
+
private readonly renderer;
|
|
8
|
+
private readonly changeDetectorRef;
|
|
9
|
+
/**
|
|
10
|
+
* Enables custom html based tooltips instead of standard tooltips.
|
|
11
|
+
* @type boolean
|
|
12
|
+
* @default true
|
|
13
|
+
*/
|
|
9
14
|
customTooltips: boolean;
|
|
10
|
-
|
|
11
|
-
|
|
15
|
+
/**
|
|
16
|
+
* The data object that is passed into the Chart.js chart (more info).
|
|
17
|
+
*/
|
|
18
|
+
data?: ChartData;
|
|
19
|
+
/**
|
|
20
|
+
* A fallback when the canvas cannot be rendered. Can be used for accessible chart descriptions.
|
|
21
|
+
*/
|
|
22
|
+
/**
|
|
23
|
+
* Height attribute applied to the rendered canvas.
|
|
24
|
+
* @type number | undefined
|
|
25
|
+
* @default 150
|
|
26
|
+
*/
|
|
27
|
+
height?: number;
|
|
28
|
+
/**
|
|
29
|
+
* ID attribute applied to the rendered canvas.
|
|
30
|
+
* @type string
|
|
31
|
+
*/
|
|
12
32
|
id: string;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
33
|
+
/**
|
|
34
|
+
* The options object that is passed into the Chart.js chart.
|
|
35
|
+
*/
|
|
36
|
+
options?: ChartOptions;
|
|
37
|
+
/**
|
|
38
|
+
* The plugins array that is passed into the Chart.js chart
|
|
39
|
+
*/
|
|
40
|
+
plugins: Plugin[];
|
|
41
|
+
/**
|
|
42
|
+
* If true, will tear down and redraw chart on all updates.
|
|
43
|
+
* @type boolean
|
|
44
|
+
* @default false
|
|
45
|
+
*/
|
|
46
|
+
redraw: boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Chart.js chart type.
|
|
49
|
+
* @type {'line' | 'bar' | 'radar' | 'doughnut' | 'polarArea' | 'bubble' | 'pie' | 'scatter'}
|
|
50
|
+
*/
|
|
51
|
+
type: ChartType;
|
|
52
|
+
/**
|
|
53
|
+
* Width attribute applied to the rendered canvas.
|
|
54
|
+
* @type number | undefined
|
|
55
|
+
* @default 300
|
|
56
|
+
*/
|
|
57
|
+
width?: number;
|
|
58
|
+
/**
|
|
59
|
+
* Put the chart into the wrapper div element.
|
|
60
|
+
* @default true
|
|
61
|
+
*/
|
|
18
62
|
wrapper: boolean;
|
|
19
63
|
readonly getDatasetAtEvent: EventEmitter<any>;
|
|
20
64
|
readonly getElementAtEvent: EventEmitter<any>;
|
|
21
65
|
readonly getElementsAtEvent: EventEmitter<any>;
|
|
22
66
|
readonly chartRef: EventEmitter<any>;
|
|
23
67
|
canvasElement: ElementRef;
|
|
24
|
-
chart:
|
|
68
|
+
chart: ChartJS;
|
|
25
69
|
ctx: CanvasRenderingContext2D;
|
|
26
70
|
get hostClasses(): {
|
|
27
71
|
'chart-wrapper': boolean;
|
|
28
72
|
};
|
|
29
|
-
constructor(
|
|
73
|
+
constructor(ngZone: NgZone, renderer: Renderer2, changeDetectorRef: ChangeDetectorRef);
|
|
30
74
|
ngAfterViewInit(): void;
|
|
31
75
|
ngOnChanges(changes: SimpleChanges): void;
|
|
32
76
|
ngOnDestroy(): void;
|
|
@@ -40,9 +84,11 @@ export declare class ChartjsComponent<TType extends ChartType = ChartType, TData
|
|
|
40
84
|
private chartOptions;
|
|
41
85
|
private chartConfig;
|
|
42
86
|
private chartCustomTooltips;
|
|
43
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<ChartjsComponent
|
|
44
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ChartjsComponent
|
|
87
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ChartjsComponent, never>;
|
|
88
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ChartjsComponent, "c-chart", ["cChart"], { "customTooltips": { "alias": "customTooltips"; "required": false; }; "data": { "alias": "data"; "required": false; }; "height": { "alias": "height"; "required": false; }; "id": { "alias": "id"; "required": false; }; "options": { "alias": "options"; "required": false; }; "plugins": { "alias": "plugins"; "required": false; }; "redraw": { "alias": "redraw"; "required": false; }; "type": { "alias": "type"; "required": false; }; "width": { "alias": "width"; "required": false; }; "wrapper": { "alias": "wrapper"; "required": false; }; }, { "getDatasetAtEvent": "getDatasetAtEvent"; "getElementAtEvent": "getElementAtEvent"; "getElementsAtEvent": "getElementsAtEvent"; "chartRef": "chartRef"; }, never, ["*"], true, never>;
|
|
89
|
+
static ngAcceptInputType_customTooltips: unknown;
|
|
45
90
|
static ngAcceptInputType_height: string | number;
|
|
46
91
|
static ngAcceptInputType_redraw: unknown;
|
|
47
92
|
static ngAcceptInputType_width: string | number;
|
|
93
|
+
static ngAcceptInputType_wrapper: unknown;
|
|
48
94
|
}
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@coreui/angular-chartjs",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.0-alpha.10",
|
|
4
4
|
"description": "Angular wrapper component for Chart.js",
|
|
5
|
-
"copyright": "Copyright
|
|
5
|
+
"copyright": "Copyright 2024 creativeLabs Łukasz Holeczek",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"homepage": "https://coreui.io/angular",
|
|
8
8
|
"author": {
|
|
@@ -28,8 +28,8 @@
|
|
|
28
28
|
"@angular/cdk": "^17.0.0",
|
|
29
29
|
"@angular/common": "^17.0.0",
|
|
30
30
|
"@angular/core": "^17.0.0",
|
|
31
|
-
"@coreui/chartjs": "^
|
|
32
|
-
"chart.js": "^
|
|
31
|
+
"@coreui/chartjs": "^4.0.0-0 || ^4.0.0",
|
|
32
|
+
"chart.js": "^4.4.1"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
35
|
"lodash-es": "^4.17.21",
|