igniteui-angular-extras 18.2.4 → 19.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/README.md +38 -0
  2. package/fesm2022/igniteui-angular-extras.mjs +1232 -1319
  3. package/fesm2022/igniteui-angular-extras.mjs.map +1 -1
  4. package/lib/context-menu/chart-dialog/chart-dialog.component.d.ts +1 -1
  5. package/lib/context-menu/context-menu.component.d.ts +1 -1
  6. package/lib/context-menu/igx-context-menu.directive.d.ts +1 -1
  7. package/lib/directives/chart-integration/chart-integration.directive.d.ts +1 -1
  8. package/lib/directives/conditional-formatting/conditional-formatting.directive.d.ts +1 -1
  9. package/lib/page-header/page-header.component.d.ts +1 -1
  10. package/lib/pipes/svg.pipe.d.ts +1 -1
  11. package/package.json +6 -8
  12. package/public-api.d.ts +4 -1
  13. package/esm2022/igniteui-angular-extras.mjs +0 -5
  14. package/esm2022/images/charts.mjs +0 -408
  15. package/esm2022/images/conditions.mjs +0 -95
  16. package/esm2022/lib/context-menu/chart-dialog/chart-dialog.component.mjs +0 -70
  17. package/esm2022/lib/context-menu/context-menu.component.mjs +0 -176
  18. package/esm2022/lib/context-menu/igx-context-menu.directive.mjs +0 -154
  19. package/esm2022/lib/directives/chart-integration/chart-integration.directive.mjs +0 -312
  20. package/esm2022/lib/directives/chart-integration/chart-types.mjs +0 -28
  21. package/esm2022/lib/directives/chart-integration/initializers.mjs +0 -103
  22. package/esm2022/lib/directives/conditional-formatting/conditional-formatting.directive.mjs +0 -307
  23. package/esm2022/lib/igniteui-angular-extras.module.mjs +0 -116
  24. package/esm2022/lib/page-header/page-header.component.mjs +0 -14
  25. package/esm2022/lib/pipes/svg.pipe.mjs +0 -20
  26. package/esm2022/public-api.mjs +0 -22
  27. package/lib/igniteui-angular-extras.module.d.ts +0 -16
@@ -1,154 +0,0 @@
1
- import { Directive, EventEmitter, Optional, Output } from '@angular/core';
2
- import { AbsoluteScrollStrategy, AutoPositionStrategy, HorizontalAlignment, VerticalAlignment } from 'igniteui-angular';
3
- import { Subject } from 'rxjs';
4
- import { debounceTime, filter, merge, takeUntil } from 'rxjs/operators';
5
- import { IgxContextMenuComponent } from './context-menu.component';
6
- import { ResizeObserver } from '@juggle/resize-observer';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "igniteui-angular";
9
- import * as i2 from "../directives/conditional-formatting/conditional-formatting.directive";
10
- import * as i3 from "../directives/chart-integration/chart-integration.directive";
11
- export class IgxContextMenuDirective {
12
- constructor(grid, textFormatter, chartsDirective, overlayService) {
13
- this.grid = grid;
14
- this.textFormatter = textFormatter;
15
- this.chartsDirective = chartsDirective;
16
- this.overlayService = overlayService;
17
- this.onButtonClose = new EventEmitter();
18
- this.formatters = [];
19
- this.charts = [];
20
- this.gridResizeNotify = new Subject();
21
- this._collapsed = true;
22
- this.destroy$ = new Subject();
23
- this._analyticsBtnSettings = {
24
- closeOnOutsideClick: false,
25
- modal: false
26
- };
27
- }
28
- ngOnInit() {
29
- this.gridResizeNotify.pipe(takeUntil(this.destroy$))
30
- .subscribe(() => {
31
- if (this._id && !this._collapsed) {
32
- this.renderButton();
33
- }
34
- });
35
- }
36
- ngAfterViewInit() {
37
- this.setUpGridListeners();
38
- if (this.textFormatter) {
39
- this.textFormatter.onFormattersReady.pipe(takeUntil(this.destroy$))
40
- .subscribe(names => this.formatters = names);
41
- }
42
- if (this.chartsDirective) {
43
- this.chartsDirective.onChartTypesDetermined.pipe(takeUntil(this.destroy$))
44
- .subscribe((args) => this.charts = args.chartsForCreation);
45
- }
46
- this.overlayService.opening.pipe(takeUntil(this.destroy$))
47
- .subscribe((args) => {
48
- if (args.componentRef) {
49
- const instance = args.componentRef.instance;
50
- instance.contextDirective = this;
51
- }
52
- });
53
- }
54
- ngOnDestroy() {
55
- this.destroy$.next(true);
56
- this.destroy$.complete();
57
- if (!this._collapsed) {
58
- this.close();
59
- }
60
- }
61
- setUpGridListeners() {
62
- this.contentObserver = new ResizeObserver(() => this.gridResizeNotify.next());
63
- this.contentObserver.observe(this.grid.nativeElement);
64
- this.grid.rangeSelected.pipe(takeUntil(this.destroy$))
65
- .subscribe((args) => {
66
- this._range = args;
67
- if (this.chartsDirective) {
68
- if (this.grid.getSelectedRanges().length === 1) {
69
- this.chartsDirective.chartData = this.grid.getSelectedData();
70
- }
71
- else {
72
- this.chartsDirective.chartData = [];
73
- }
74
- }
75
- if (!this._collapsed) {
76
- this.onButtonClose.emit();
77
- }
78
- this.renderButton();
79
- });
80
- this.grid.verticalScrollContainer.chunkLoad.pipe(merge(this.grid.parentVirtDir.chunkLoad, this.grid.filteringDone, this.grid.columnResized, this.grid.columnVisibilityChanged.pipe(debounceTime(30))), filter(() => this._range), takeUntil(this.destroy$)).subscribe(() => {
81
- this.onButtonClose.emit();
82
- this.renderButton();
83
- });
84
- }
85
- renderButton() {
86
- if (!this._range) {
87
- return;
88
- }
89
- let rowIndex = this._range.rowEnd;
90
- let colIndex = +this._range.columnEnd;
91
- while (colIndex >= this._range.columnStart && !this.grid.navigation.isColumnFullyVisible(colIndex)) {
92
- colIndex--;
93
- }
94
- while (rowIndex >= this._range.rowStart && this.grid.navigation.shouldPerformVerticalScroll(rowIndex, -1)) {
95
- rowIndex--;
96
- }
97
- const field = this.grid.visibleColumns[colIndex] ? this.grid.visibleColumns[colIndex].field : '';
98
- const cell = this.grid.gridAPI.get_cell_by_index(rowIndex, field);
99
- if (!cell || !this.isWithInRange(cell.row.key, cell.column.index - 1)) {
100
- this.close();
101
- return;
102
- }
103
- this._analyticsBtnSettings.positionStrategy = new AutoPositionStrategy({
104
- horizontalDirection: HorizontalAlignment.Right,
105
- horizontalStartPoint: HorizontalAlignment.Right,
106
- verticalStartPoint: VerticalAlignment.Bottom,
107
- verticalDirection: VerticalAlignment.Bottom, closeAnimation: null
108
- });
109
- this._analyticsBtnSettings.target = cell.nativeElement;
110
- this._analyticsBtnSettings.scrollStrategy = new AbsoluteScrollStrategy();
111
- const info = this.overlayService.getOverlayById(this._id);
112
- if (info) {
113
- info.settings.positionStrategy = this._analyticsBtnSettings.positionStrategy;
114
- }
115
- this._collapsed ? this.show() : this.overlayService.reposition(this._id);
116
- }
117
- show() {
118
- if (!this._collapsed) {
119
- return;
120
- }
121
- this._collapsed = false;
122
- this._id = this._id ? this._id :
123
- this.overlayService.attach(IgxContextMenuComponent, this._analyticsBtnSettings);
124
- this.overlayService.show(this._id);
125
- }
126
- close() {
127
- if (this._collapsed) {
128
- return;
129
- }
130
- this._collapsed = true;
131
- this.overlayService.hide(this._id);
132
- this.onButtonClose.emit();
133
- this._id = undefined;
134
- }
135
- isWithInRange(rInex, cIndex) {
136
- return rInex >= this._range.rowStart && rInex <= this._range.rowEnd
137
- && cIndex >= this._range.columnStart && cIndex <= this._range.columnEnd;
138
- }
139
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: IgxContextMenuDirective, deps: [{ token: i1.IgxGridComponent }, { token: i2.IgxConditionalFormattingDirective, optional: true }, { token: i3.IgxChartIntegrationDirective, optional: true }, { token: i1.IgxOverlayService }], target: i0.ɵɵFactoryTarget.Directive }); }
140
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.12", type: IgxContextMenuDirective, selector: "[igxContextMenu]", outputs: { onButtonClose: "onButtonClose" }, ngImport: i0 }); }
141
- }
142
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: IgxContextMenuDirective, decorators: [{
143
- type: Directive,
144
- args: [{
145
- selector: '[igxContextMenu]'
146
- }]
147
- }], ctorParameters: () => [{ type: i1.IgxGridComponent }, { type: i2.IgxConditionalFormattingDirective, decorators: [{
148
- type: Optional
149
- }] }, { type: i3.IgxChartIntegrationDirective, decorators: [{
150
- type: Optional
151
- }] }, { type: i1.IgxOverlayService }], propDecorators: { onButtonClose: [{
152
- type: Output
153
- }] } });
154
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWd4LWNvbnRleHQtbWVudS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyLWV4dHJhcy9zcmMvbGliL2NvbnRleHQtbWVudS9pZ3gtY29udGV4dC1tZW51LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDNUcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLG9CQUFvQixFQUFFLG1CQUFtQixFQUN2QixpQkFBaUIsRUFBbUIsTUFBTSxrQkFBa0IsQ0FBQztBQUNoSCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd4RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7O0FBS3pELE1BQU0sT0FBTyx1QkFBdUI7SUFnQmhDLFlBQW1CLElBQXNCLEVBQ1YsYUFBZ0QsRUFDaEQsZUFBNkMsRUFDeEQsY0FBaUM7UUFIbEMsU0FBSSxHQUFKLElBQUksQ0FBa0I7UUFDVixrQkFBYSxHQUFiLGFBQWEsQ0FBbUM7UUFDaEQsb0JBQWUsR0FBZixlQUFlLENBQThCO1FBQ3hELG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQWpCcEMsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRWxELGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDaEIsV0FBTSxHQUFHLEVBQUUsQ0FBQztRQUNaLHFCQUFnQixHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFJdEMsZUFBVSxHQUFHLElBQUks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SUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLEdBQUcsR0FBRyxTQUFTLENBQUM7SUFDekIsQ0FBQztJQUVPLGFBQWEsQ0FBQyxLQUFLLEVBQUUsTUFBTTtRQUMvQixPQUFPLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNO2VBQzVELE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7SUFDaEYsQ0FBQzsrR0F4SVEsdUJBQXVCO21HQUF2Qix1QkFBdUI7OzRGQUF2Qix1QkFBdUI7a0JBSG5DLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGtCQUFrQjtpQkFDL0I7OzBCQWtCZ0IsUUFBUTs7MEJBQ1IsUUFBUTt5RUFoQkosYUFBYTtzQkFBN0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIERpcmVjdGl2ZSwgRXZlbnRFbWl0dGVyLCBPcHRpb25hbCwgT3V0cHV0LCBPbkluaXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBYnNvbHV0ZVNjcm9sbFN0cmF0ZWd5LCBBdXRvUG9zaXRpb25TdHJhdGVneSwgSG9yaXpvbnRhbEFsaWdubWVudCwgSWd4R3JpZENvbXBvbmVudCxcclxuICAgIElneE92ZXJsYXlTZXJ2aWNlLCBPdmVybGF5Q2FuY2VsYWJsZUV2ZW50QXJncywgVmVydGljYWxBbGlnbm1lbnQsIE92ZXJsYXlTZXR0aW5ncyB9IGZyb20gJ2lnbml0ZXVpLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZmlsdGVyLCBtZXJnZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBJZ3hDaGFydEludGVncmF0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9jaGFydC1pbnRlZ3JhdGlvbi9jaGFydC1pbnRlZ3JhdGlvbi5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBJZ3hDb25kaXRpb25hbEZvcm1hdHRpbmdEaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2NvbmRpdGlvbmFsLWZvcm1hdHRpbmcvY29uZGl0aW9uYWwtZm9ybWF0dGluZy5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBJZ3hDb250ZXh0TWVudUNvbXBvbmVudCB9IGZyb20gJy4vY29udGV4dC1tZW51LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlc2l6ZU9ic2VydmVyIH0gZnJvbSAnQGp1Z2dsZS9yZXNpemUtb2JzZXJ2ZXInO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogJ1tpZ3hDb250ZXh0TWVudV0nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJZ3hDb250ZXh0TWVudURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgICBAT3V0cHV0KCkgcHVibGljIG9uQnV0dG9uQ2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgICBwdWJsaWMgZm9ybWF0dGVycyA9IFtdO1xyXG4gICAgcHVibGljIGNoYXJ0cyA9IFtdO1xyXG4gICAgcHVibGljIGdyaWRSZXNpemVOb3RpZnkgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gICAgcHJpdmF0ZSBjb250ZW50T2JzZXJ2ZXI6IFJlc2l6ZU9ic2VydmVyO1xyXG4gICAgcHJpdmF0ZSBfcmFuZ2U7XHJcbiAgICBwcml2YXRlIF9pZDtcclxuICAgIHByaXZhdGUgX2NvbGxhcHNlZCA9IHRydWU7XHJcbiAgICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuICAgIHByaXZhdGUgX2FuYWx5dGljc0J0blNldHRpbmdzOiBPdmVybGF5U2V0dGluZ3MgPSB7XHJcbiAgICAgICAgY2xvc2VPbk91dHNpZGVDbGljazogZmFsc2UsXHJcbiAgICAgICAgbW9kYWw6IGZhbHNlXHJcbiAgICB9O1xyXG4gICAgY29uc3RydWN0b3IocHVibGljIGdyaWQ6IElneEdyaWRDb21wb25lbnQsXHJcbiAgICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBwdWJsaWMgdGV4dEZvcm1hdHRlcjogSWd4Q29uZGl0aW9uYWxGb3JtYXR0aW5nRGlyZWN0aXZlLFxyXG4gICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgcHVibGljIGNoYXJ0c0RpcmVjdGl2ZTogSWd4Q2hhcnRJbnRlZ3JhdGlvbkRpcmVjdGl2ZSxcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgb3ZlcmxheVNlcnZpY2U6IElneE92ZXJsYXlTZXJ2aWNlKSB7IH1cclxuXHJcbiAgICBwdWJsaWMgbmdPbkluaXQgKCkge1xyXG4gICAgICAgIHRoaXMuZ3JpZFJlc2l6ZU5vdGlmeS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9pZCAmJiAhdGhpcy5fY29sbGFwc2VkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJCdXR0b24oKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgICAgIHRoaXMuc2V0VXBHcmlkTGlzdGVuZXJzKCk7XHJcbiAgICAgICAgaWYgKHRoaXMudGV4dEZvcm1hdHRlcikge1xyXG4gICAgICAgICAgICB0aGlzLnRleHRGb3JtYXR0ZXIub25Gb3JtYXR0ZXJzUmVhZHkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKG5hbWVzID0+IHRoaXMuZm9ybWF0dGVycyA9IG5hbWVzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuY2hhcnRzRGlyZWN0aXZlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhcnRzRGlyZWN0aXZlLm9uQ2hhcnRUeXBlc0RldGVybWluZWQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChhcmdzKSA9PiB0aGlzLmNoYXJ0cyA9IGFyZ3MuY2hhcnRzRm9yQ3JlYXRpb24pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm92ZXJsYXlTZXJ2aWNlLm9wZW5pbmcucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGFyZ3M6IE92ZXJsYXlDYW5jZWxhYmxlRXZlbnRBcmdzKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoYXJncy5jb21wb25lbnRSZWYpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnN0YW5jZSA9IChhcmdzLmNvbXBvbmVudFJlZi5pbnN0YW5jZSBhcyBJZ3hDb250ZXh0TWVudUNvbXBvbmVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuY29udGV4dERpcmVjdGl2ZSA9IHRoaXM7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICAgICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gICAgICAgIGlmICghdGhpcy5fY29sbGFwc2VkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzZXRVcEdyaWRMaXN0ZW5lcnMoKSB7XHJcbiAgICAgICAgdGhpcy5jb250ZW50T2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT4gdGhpcy5ncmlkUmVzaXplTm90aWZ5Lm5leHQoKSk7XHJcbiAgICAgICAgdGhpcy5jb250ZW50T2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmdyaWQubmF0aXZlRWxlbWVudCk7XHJcblxyXG4gICAgICAgIHRoaXMuZ3JpZC5yYW5nZVNlbGVjdGVkLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChhcmdzKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9yYW5nZSA9IGFyZ3M7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jaGFydHNEaXJlY3RpdmUgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCB0aGlzLmdyaWQuZ2V0U2VsZWN0ZWRSYW5nZXMoKS5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFydHNEaXJlY3RpdmUuY2hhcnREYXRhID0gdGhpcy5ncmlkLmdldFNlbGVjdGVkRGF0YSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhcnRzRGlyZWN0aXZlLmNoYXJ0RGF0YSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5fY29sbGFwc2VkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkJ1dHRvbkNsb3NlLmVtaXQoKTtcclxuICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlckJ1dHRvbigpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmdyaWQudmVydGljYWxTY3JvbGxDb250YWluZXIuY2h1bmtMb2FkLnBpcGUoXHJcbiAgICAgICAgICAgIG1lcmdlKHRoaXMuZ3JpZC5wYXJlbnRWaXJ0RGlyLmNodW5rTG9hZCwgdGhpcy5ncmlkLmZpbHRlcmluZ0RvbmUsIHRoaXMuZ3JpZC5jb2x1bW5SZXNpemVkLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkLmNvbHVtblZpc2liaWxpdHlDaGFuZ2VkLnBpcGUoZGVib3VuY2VUaW1lKDMwKSkpLFxyXG4gICAgICAgICAgICBmaWx0ZXIoKCkgPT4gdGhpcy5fcmFuZ2UpLCB0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uQnV0dG9uQ2xvc2UuZW1pdCgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJCdXR0b24oKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgXHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSByZW5kZXJCdXR0b24oKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9yYW5nZSkgeyByZXR1cm47IH1cclxuICAgICAgICBsZXQgcm93SW5kZXggPSB0aGlzLl9yYW5nZS5yb3dFbmQ7XHJcbiAgICAgICAgbGV0IGNvbEluZGV4ID0gK3RoaXMuX3JhbmdlLmNvbHVtbkVuZDtcclxuICAgICAgICB3aGlsZSAoY29sSW5kZXggPj0gdGhpcy5fcmFuZ2UuY29sdW1uU3RhcnQgJiYgIXRoaXMuZ3JpZC5uYXZpZ2F0aW9uLmlzQ29sdW1uRnVsbHlWaXNpYmxlKGNvbEluZGV4KSkge1xyXG4gICAgICAgICAgICBjb2xJbmRleC0tO1xyXG4gICAgICAgIH1cclxuICAgICAgICB3aGlsZSAocm93SW5kZXggPj0gdGhpcy5fcmFuZ2Uucm93U3RhcnQgJiYgdGhpcy5ncmlkLm5hdmlnYXRpb24uc2hvdWxkUGVyZm9ybVZlcnRpY2FsU2Nyb2xsKHJvd0luZGV4LCAtMSkpIHtcclxuICAgICAgICAgICAgcm93SW5kZXgtLTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLmdyaWQudmlzaWJsZUNvbHVtbnNbY29sSW5kZXhdID8gdGhpcy5ncmlkLnZpc2libGVDb2x1bW5zW2NvbEluZGV4XS5maWVsZCA6ICcnO1xyXG4gICAgICAgIGNvbnN0IGNlbGwgPSB0aGlzLmdyaWQuZ3JpZEFQSS5nZXRfY2VsbF9ieV9pbmRleChyb3dJbmRleCwgZmllbGQpO1xyXG4gICAgICAgIGlmICghY2VsbCB8fCAhdGhpcy5pc1dpdGhJblJhbmdlKGNlbGwucm93LmtleSwgY2VsbC5jb2x1bW4uaW5kZXggLSAxKSkge1xyXG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fYW5hbHl0aWNzQnRuU2V0dGluZ3MucG9zaXRpb25TdHJhdGVneSA9IG5ldyBBdXRvUG9zaXRpb25TdHJhdGVneSh7XHJcbiAgICAgICAgICAgIGhvcml6b250YWxEaXJlY3Rpb246IEhvcml6b250YWxBbGlnbm1lbnQuUmlnaHQsXHJcbiAgICAgICAgICAgIGhvcml6b250YWxTdGFydFBvaW50OiBIb3Jpem9udGFsQWxpZ25tZW50LlJpZ2h0LFxyXG4gICAgICAgICAgICB2ZXJ0aWNhbFN0YXJ0UG9pbnQ6IFZlcnRpY2FsQWxpZ25tZW50LkJvdHRvbSxcclxuICAgICAgICAgICAgdmVydGljYWxEaXJlY3Rpb246IFZlcnRpY2FsQWxpZ25tZW50LkJvdHRvbSwgY2xvc2VBbmltYXRpb246IG51bGxcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLl9hbmFseXRpY3NCdG5TZXR0aW5ncy50YXJnZXQgPSBjZWxsLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgICAgdGhpcy5fYW5hbHl0aWNzQnRuU2V0dGluZ3Muc2Nyb2xsU3RyYXRlZ3kgPSBuZXcgQWJzb2x1dGVTY3JvbGxTdHJhdGVneSgpO1xyXG4gICAgICAgIGNvbnN0IGluZm8gPSB0aGlzLm92ZXJsYXlTZXJ2aWNlLmdldE92ZXJsYXlCeUlkKHRoaXMuX2lkKTtcclxuICAgICAgICBpZiAoaW5mbykge1xyXG4gICAgICAgICAgICBpbmZvLnNldHRpbmdzLnBvc2l0aW9uU3RyYXRlZ3kgPSB0aGlzLl9hbmFseXRpY3NCdG5TZXR0aW5ncy5wb3NpdGlvblN0cmF0ZWd5O1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9jb2xsYXBzZWQgPyB0aGlzLnNob3coKSA6IHRoaXMub3ZlcmxheVNlcnZpY2UucmVwb3NpdGlvbih0aGlzLl9pZCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzaG93KCkge1xyXG4gICAgICAgIGlmICghdGhpcy5fY29sbGFwc2VkKSB7IHJldHVybjsgfVxyXG4gICAgICAgIHRoaXMuX2NvbGxhcHNlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuX2lkID0gdGhpcy5faWQgPyB0aGlzLl9pZCA6XHJcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVNlcnZpY2UuYXR0YWNoKElneENvbnRleHRNZW51Q29tcG9uZW50LCB0aGlzLl9hbmFseXRpY3NCdG5TZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5vdmVybGF5U2VydmljZS5zaG93KHRoaXMuX2lkKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNsb3NlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLl9jb2xsYXBzZWQpIHsgcmV0dXJuOyB9XHJcbiAgICAgICAgdGhpcy5fY29sbGFwc2VkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm92ZXJsYXlTZXJ2aWNlLmhpZGUodGhpcy5faWQpO1xyXG4gICAgICAgIHRoaXMub25CdXR0b25DbG9zZS5lbWl0KCk7XHJcbiAgICAgICAgdGhpcy5faWQgPSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBpc1dpdGhJblJhbmdlKHJJbmV4LCBjSW5kZXgpIHtcclxuICAgICAgICByZXR1cm4gckluZXggPj0gdGhpcy5fcmFuZ2Uucm93U3RhcnQgJiYgckluZXggPD0gdGhpcy5fcmFuZ2Uucm93RW5kXHJcbiAgICAgICAgICAgICYmIGNJbmRleCA+PSB0aGlzLl9yYW5nZS5jb2x1bW5TdGFydCAmJiBjSW5kZXggPD0gdGhpcy5fcmFuZ2UuY29sdW1uRW5kO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -1,312 +0,0 @@
1
- import { Directive, EventEmitter, Input, Output } from '@angular/core';
2
- import { IgxAreaSeriesComponent, IgxBarSeriesComponent, IgxBubbleSeriesComponent, IgxColumnSeriesComponent, IgxDataChartComponent, IgxItemLegendComponent, IgxLegendComponent, IgxLineSeriesComponent, IgxPieChartComponent, IgxScatterLineSeriesComponent, IgxScatterSeriesComponent, IgxSizeScaleComponent, IgxStacked100AreaSeriesComponent, IgxStacked100BarSeriesComponent, IgxStacked100ColumnSeriesComponent, IgxStacked100LineSeriesComponent, IgxStackedAreaSeriesComponent, IgxStackedBarSeriesComponent, IgxStackedColumnSeriesComponent, IgxStackedLineSeriesComponent } from 'igniteui-angular-charts';
3
- import { CHART_TYPE } from './chart-types';
4
- import { IgxDataChartInitializer, IgxPieChartInitializer, IgxStackedDataChartInitializer } from './initializers';
5
- import * as i0 from "@angular/core";
6
- export class IgxChartIntegrationDirective {
7
- get chartData() {
8
- return this._chartData;
9
- }
10
- set chartData(selectedData) {
11
- const charts = new Set(this._dataChartTypes);
12
- const dataModel = selectedData.length ? selectedData[0] : {};
13
- this._labelMemberPaths = Object.keys(dataModel).filter(key => typeof dataModel[key] === 'string');
14
- this._valueMemberPaths = Object.keys(dataModel).filter(key => typeof dataModel[key] === 'number');
15
- this._chartData = selectedData.map((dataRecord, index) => this.addIndexMemberPath(dataRecord, index + 1));
16
- const args = {
17
- chartsAvailabilty: new Map(),
18
- chartsForCreation: []
19
- };
20
- if (selectedData.length === 0 || this._valueMemberPaths.length === 0) {
21
- this.onChartTypesDetermined.emit(args);
22
- return;
23
- }
24
- if (selectedData.length === 1) {
25
- charts.forEach((chart, _, set) => {
26
- const isColumnChart = chart.indexOf('Column') !== -1;
27
- const isBarChart = chart.indexOf('Bar') !== -1;
28
- const isPieChart = chart.indexOf('Pie') !== -1;
29
- if (!(isColumnChart || isBarChart || isPieChart)) {
30
- set.delete(chart);
31
- }
32
- });
33
- }
34
- // Config pie chart
35
- const cannotCreatePieChart = selectedData.some(record => record[this._valueMemberPaths[0]] <= 0);
36
- if (cannotCreatePieChart) {
37
- charts.delete(CHART_TYPE.PIE);
38
- }
39
- // Config scatter chart member paths
40
- const canCreateScatterChart = this._valueMemberPaths.length >= 2;
41
- const canCreateBubbleChart = this._valueMemberPaths.length >= 3;
42
- if (!canCreateScatterChart) {
43
- charts.delete(CHART_TYPE.SCATTER_BUBBLE);
44
- charts.delete(CHART_TYPE.SCATTER_LINE);
45
- charts.delete(CHART_TYPE.SCATTER_POINT);
46
- }
47
- if (!canCreateBubbleChart) {
48
- charts.delete(CHART_TYPE.SCATTER_BUBBLE);
49
- }
50
- args.chartsAvailabilty = this.chartTypesAvailability;
51
- args.chartsForCreation = [...charts];
52
- this.onChartTypesDetermined.emit(args);
53
- }
54
- set scatterChartYAxisValueMemberPath(path) {
55
- this._scatterChartYAxisValueMemberPath = path;
56
- }
57
- get scatterChartYAxisValueMemberPath() {
58
- return this._scatterChartYAxisValueMemberPath &&
59
- this._valueMemberPaths.indexOf(this._scatterChartYAxisValueMemberPath) !== -1 ?
60
- this._scatterChartYAxisValueMemberPath : this._valueMemberPaths[0];
61
- }
62
- set bubbleChartRadiusMemberPath(path) {
63
- this._bubbleChartRadiusMemberPath = path;
64
- }
65
- get bubbleChartRadiusMemberPath() {
66
- return this._bubbleChartRadiusMemberPath &&
67
- this._valueMemberPaths.indexOf(this._bubbleChartRadiusMemberPath) !== -1 ?
68
- this._bubbleChartRadiusMemberPath : this._valueMemberPaths[1];
69
- }
70
- get _labelMemberPath() {
71
- return this.defaultLabelMemberPath && this._chartData.some(r => r[this.defaultLabelMemberPath] !== undefined) ?
72
- this.defaultLabelMemberPath : this._labelMemberPaths.length > 0 ? this._labelMemberPaths[0] : 'Index';
73
- }
74
- get pieChartOptions() {
75
- return {
76
- width: '85%',
77
- height: '75%',
78
- dataSource: this.chartData,
79
- valueMemberPath: this._valueMemberPaths[0],
80
- legendLabelMemberPath: this._labelMemberPath,
81
- labelMemberPath: this._labelMemberPath,
82
- };
83
- }
84
- get dataChartOptions() {
85
- return {
86
- width: '100%',
87
- height: '85%',
88
- autoMarginWidth: 50,
89
- isVerticalZoomEnabled: true,
90
- isHorizontalZoomEnabled: true,
91
- dataSource: this.chartData
92
- };
93
- }
94
- constructor(factoryResolver) {
95
- this.factoryResolver = factoryResolver;
96
- this.onChartTypesDetermined = new EventEmitter();
97
- this.onChartCreationDone = new EventEmitter();
98
- this.useLegend = true;
99
- this.defaultLabelMemberPath = undefined;
100
- this.chartTypesAvailability = new Map();
101
- this.customChartComponentOptions = new Map();
102
- this.dataCharts = new Map();
103
- this._scatterChartYAxisValueMemberPath = undefined;
104
- this._bubbleChartRadiusMemberPath = undefined;
105
- this._valueMemberPaths = [];
106
- this._labelMemberPaths = [];
107
- this._sizeScale = new IgxSizeScaleComponent();
108
- this._dataChartTypes = new Set();
109
- this.dataChartSeriesOptionsModel = {
110
- isHighlightingEnabled: true,
111
- areaFillOpacity: .4,
112
- markerType: 3,
113
- showDefaultTooltip: true
114
- };
115
- this.scatterChartSeriesOptionsModel = {
116
- markerType: 3,
117
- showDefaultTooltip: true
118
- };
119
- this.bubbleChartSeriesOptionsModel = {
120
- radiusScale: this._sizeScale
121
- };
122
- this.dataCharts.set(CHART_TYPE.COLUMN_GROUPED, IgxColumnSeriesComponent);
123
- this.dataCharts.set(CHART_TYPE.AREA_GROUPED, IgxAreaSeriesComponent);
124
- this.dataCharts.set(CHART_TYPE.LINE_GROUPED, IgxLineSeriesComponent);
125
- this.dataCharts.set(CHART_TYPE.BAR_GROUPED, IgxBarSeriesComponent);
126
- this.dataCharts.set(CHART_TYPE.COLUMN_STACKED, IgxStackedColumnSeriesComponent);
127
- this.dataCharts.set(CHART_TYPE.AREA_STACKED, IgxStackedAreaSeriesComponent);
128
- this.dataCharts.set(CHART_TYPE.LINE_STACKED, IgxStackedLineSeriesComponent);
129
- this.dataCharts.set(CHART_TYPE.BAR_STACKED, IgxStackedBarSeriesComponent);
130
- this.dataCharts.set(CHART_TYPE.COLUMN_100_STACKED, IgxStacked100ColumnSeriesComponent);
131
- this.dataCharts.set(CHART_TYPE.AREA_100_STACKED, IgxStacked100AreaSeriesComponent);
132
- this.dataCharts.set(CHART_TYPE.LINE_100_STACKED, IgxStacked100LineSeriesComponent);
133
- this.dataCharts.set(CHART_TYPE.BAR_100_STACKED, IgxStacked100BarSeriesComponent);
134
- this.dataCharts.set(CHART_TYPE.SCATTER_POINT, IgxScatterSeriesComponent);
135
- this.dataCharts.set(CHART_TYPE.SCATTER_BUBBLE, IgxBubbleSeriesComponent);
136
- this.dataCharts.set(CHART_TYPE.SCATTER_LINE, IgxScatterLineSeriesComponent);
137
- this.dataCharts.set(CHART_TYPE.PIE, IgxPieChartComponent);
138
- const iterable = this.dataCharts.keys();
139
- for (let head = iterable.next().value; head !== undefined; head = iterable.next().value) {
140
- this._dataChartTypes.add(head);
141
- this.chartTypesAvailability.set(head, true);
142
- this.customChartComponentOptions.set(head, {});
143
- }
144
- }
145
- getAvailableCharts() {
146
- const res = [];
147
- this.chartTypesAvailability.forEach((isAvailable, chartType) => {
148
- if (isAvailable) {
149
- res.push(chartType);
150
- }
151
- });
152
- return res;
153
- }
154
- disableCharts(types) {
155
- types.forEach(type => {
156
- if (this.chartTypesAvailability.get(type)) {
157
- this.chartTypesAvailability.set(type, false);
158
- }
159
- });
160
- }
161
- enableCharts(types) {
162
- types.forEach(type => {
163
- if (!this.chartTypesAvailability.get(type)) {
164
- this.chartTypesAvailability.set(type, true);
165
- }
166
- });
167
- }
168
- chartFactory(type, viewContainerRef) {
169
- if (!this.chartTypesAvailability.get(type)) {
170
- return;
171
- }
172
- let componentFactory;
173
- let componentRef;
174
- this._sizeScale.maximumValue = 60;
175
- this._sizeScale.minimumValue = 10;
176
- const chartType = this.dataCharts.get(type);
177
- if (type === CHART_TYPE.PIE) {
178
- componentFactory = this.factoryResolver.resolveComponentFactory(IgxPieChartComponent);
179
- componentRef = viewContainerRef.createComponent(componentFactory);
180
- }
181
- else {
182
- componentFactory = this.factoryResolver.resolveComponentFactory(IgxDataChartComponent);
183
- componentRef = viewContainerRef.createComponent(componentFactory);
184
- }
185
- const options = this.getChartOptions(type);
186
- const initializer = this.getInitializer(type, chartType);
187
- if (this.useLegend) {
188
- const legendType = type === CHART_TYPE.PIE ? IgxItemLegendComponent : IgxLegendComponent;
189
- const legendFactory = this.factoryResolver.resolveComponentFactory(legendType);
190
- const legendComponentRef = viewContainerRef.createComponent(legendFactory);
191
- options.chartOptions['legend'] = legendComponentRef.instance;
192
- }
193
- const chart = initializer.initChart(componentRef.instance, options);
194
- this.onChartCreationDone.emit(chart);
195
- }
196
- getInitializer(chartType, componentClassRef) {
197
- if (chartType.includes('Pie')) {
198
- return new IgxPieChartInitializer();
199
- }
200
- else if (chartType.includes('Stacked')) {
201
- return new IgxStackedDataChartInitializer(componentClassRef);
202
- }
203
- else {
204
- return new IgxDataChartInitializer(componentClassRef);
205
- }
206
- }
207
- getChartOptions(type) {
208
- const chartComponentOptions = {};
209
- return type === CHART_TYPE.PIE ? this.addPieChartDataOptions(chartComponentOptions) :
210
- this.addDataChartDataOptions(type, chartComponentOptions, type.includes('Stacked'));
211
- }
212
- addPieChartDataOptions(chartComponentOptions) {
213
- // tslint:disable-next-line: max-line-length
214
- chartComponentOptions.chartOptions = Object.assign(this.pieChartOptions, this.customChartComponentOptions.get(CHART_TYPE.PIE).chartOptions);
215
- return chartComponentOptions;
216
- }
217
- addDataChartDataOptions(type, chartComponentOptions, stacked) {
218
- chartComponentOptions.chartOptions = Object.assign(this.dataChartOptions, this.customChartComponentOptions.get(type));
219
- if (type.indexOf('Scatter') !== -1) {
220
- this.addScatterChartDataOptions(type, chartComponentOptions);
221
- }
222
- else {
223
- // tslint:disable-next-line: max-line-length
224
- chartComponentOptions.seriesModel = Object.assign(this.dataChartSeriesOptionsModel, this.customChartComponentOptions.get(type).seriesModel);
225
- this.setAxisLabelOption(type, chartComponentOptions);
226
- const options = [];
227
- this._valueMemberPaths.forEach(valueMemberPath => {
228
- const dataOptions = {
229
- title: valueMemberPath,
230
- valueMemberPath
231
- };
232
- if (stacked) {
233
- options.push({ ...dataOptions });
234
- }
235
- else {
236
- options.push({ ...dataOptions, ...chartComponentOptions.seriesModel });
237
- }
238
- });
239
- stacked ? chartComponentOptions.stackedFragmentOptions = options :
240
- chartComponentOptions.seriesOptions = options;
241
- }
242
- return chartComponentOptions;
243
- }
244
- addScatterChartDataOptions(scatterChart, chartComponentOptions) {
245
- // tslint:disable-next-line: max-line-length
246
- chartComponentOptions.seriesModel = Object.assign(this.scatterChartSeriesOptionsModel, this.customChartComponentOptions.get(scatterChart).seriesModel);
247
- chartComponentOptions.seriesModel['yMemberPath'] = this.scatterChartYAxisValueMemberPath;
248
- if (scatterChart === CHART_TYPE.SCATTER_BUBBLE) {
249
- chartComponentOptions.seriesModel = Object.assign(chartComponentOptions.seriesModel, this.bubbleChartSeriesOptionsModel);
250
- chartComponentOptions.seriesModel['radiusMemberPath'] = this.bubbleChartRadiusMemberPath;
251
- }
252
- const model = chartComponentOptions.seriesModel;
253
- const seriesOptions = [];
254
- this._valueMemberPaths.filter(v => !(v === model['yMemberPath'] ||
255
- v === model['radiusMemberPath'])).forEach(valueMemberPath => {
256
- const dataOptions = {
257
- title: `${model['yMemberPath']} vs ${valueMemberPath}`,
258
- xMemberPath: valueMemberPath,
259
- labelMemberPath: this._labelMemberPath
260
- };
261
- seriesOptions.push({ ...dataOptions, ...model });
262
- });
263
- chartComponentOptions.seriesOptions = seriesOptions;
264
- }
265
- addIndexMemberPath(dataRecord, index) {
266
- dataRecord = { ...{ [this._labelMemberPath]: index }, ...dataRecord };
267
- return dataRecord;
268
- }
269
- setAxisLabelOption(type, options) {
270
- if (type.indexOf('Bar') !== -1) {
271
- options.yAxisOptions = Object.assign({
272
- label: this._labelMemberPath
273
- }, this.customChartComponentOptions.get(type).yAxisOptions);
274
- }
275
- else {
276
- options.xAxisOptions = Object.assign({
277
- label: this._labelMemberPath
278
- }, this.customChartComponentOptions.get(type).xAxisOptions);
279
- }
280
- }
281
- setChartComponentOptions(chart, optionsType, options) {
282
- if (!this.customChartComponentOptions.get(chart)[optionsType]) {
283
- this.customChartComponentOptions.get(chart)[optionsType] = {};
284
- }
285
- Object.keys(options).forEach(property => {
286
- this.customChartComponentOptions.get(chart)[optionsType][property] = options[property];
287
- });
288
- }
289
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: IgxChartIntegrationDirective, deps: [{ token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Directive }); }
290
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.12", type: IgxChartIntegrationDirective, selector: "[igxChartIntegration]", inputs: { chartData: "chartData", useLegend: "useLegend", defaultLabelMemberPath: "defaultLabelMemberPath", scatterChartYAxisValueMemberPath: "scatterChartYAxisValueMemberPath", bubbleChartRadiusMemberPath: "bubbleChartRadiusMemberPath" }, outputs: { onChartTypesDetermined: "onChartTypesDetermined", onChartCreationDone: "onChartCreationDone" }, ngImport: i0 }); }
291
- }
292
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: IgxChartIntegrationDirective, decorators: [{
293
- type: Directive,
294
- args: [{
295
- selector: '[igxChartIntegration]'
296
- }]
297
- }], ctorParameters: () => [{ type: i0.ComponentFactoryResolver }], propDecorators: { chartData: [{
298
- type: Input
299
- }], onChartTypesDetermined: [{
300
- type: Output
301
- }], onChartCreationDone: [{
302
- type: Output
303
- }], useLegend: [{
304
- type: Input
305
- }], defaultLabelMemberPath: [{
306
- type: Input
307
- }], scatterChartYAxisValueMemberPath: [{
308
- type: Input
309
- }], bubbleChartRadiusMemberPath: [{
310
- type: Input
311
- }] } });
312
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtaW50ZWdyYXRpb24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci1leHRyYXMvc3JjL2xpYi9kaXJlY3RpdmVzL2NoYXJ0LWludGVncmF0aW9uL2NoYXJ0LWludGVncmF0aW9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTRELFNBQVMsRUFDeEUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQTBCLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFDSCxzQkFBc0IsRUFBRSxxQkFBcUIsRUFBRSx3QkFBd0IsRUFBRSx3QkFBd0IsRUFDakcscUJBQXFCLEVBQUUsc0JBQXNCLEVBQUUsa0JBQWtCLEVBQUUsc0JBQXNCLEVBQUUsb0JBQW9CLEVBQy9HLDZCQUE2QixFQUFFLHlCQUF5QixFQUFFLHFCQUFxQixFQUFFLGdDQUFnQyxFQUNqSCwrQkFBK0IsRUFBRSxrQ0FBa0MsRUFBRSxnQ0FBZ0MsRUFDckcsNkJBQTZCLEVBQUUsNEJBQTRCLEVBQUUsK0JBQStCLEVBQzVGLDZCQUE2QixFQUNoQyxNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBRSxVQUFVLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBNEMsdUJBQXVCLEVBQ3RFLHNCQUFzQixFQUFFLDhCQUE4QixFQUFZLE1BQU0sZ0JBQWdCLENBQUM7O0FBVTdGLE1BQU0sT0FBTyw0QkFBNEI7SUFDckMsSUFDVyxTQUFTO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBVyxTQUFTLENBQUMsWUFBbUI7UUFDcEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzdDLE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMs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cG9uZW50RmFjdG9yeSwgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBDb21wb25lbnRSZWYsIERpcmVjdGl2ZSxcclxuICAgIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVHlwZSwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gICAgSWd4QXJlYVNlcmllc0NvbXBvbmVudCwgSWd4QmFyU2VyaWVzQ29tcG9uZW50LCBJZ3hCdWJibGVTZXJpZXNDb21wb25lbnQsIElneENvbHVtblNlcmllc0NvbXBvbmVudCxcclxuICAgIElneERhdGFDaGFydENvbXBvbmVudCwgSWd4SXRlbUxlZ2VuZENvbXBvbmVudCwgSWd4TGVnZW5kQ29tcG9uZW50LCBJZ3hMaW5lU2VyaWVzQ29tcG9uZW50LCBJZ3hQaWVDaGFydENvbXBvbmVudCxcclxuICAgIElneFNjYXR0ZXJMaW5lU2VyaWVzQ29tcG9uZW50LCBJZ3hTY2F0dGVyU2VyaWVzQ29tcG9uZW50LCBJZ3hTaXplU2NhbGVDb21wb25lbnQsIElneFN0YWNrZWQxMDBBcmVhU2VyaWVzQ29tcG9uZW50LFxyXG4gICAgSWd4U3RhY2tlZDEwMEJhclNlcmllc0NvbXBvbmVudCwgSWd4U3RhY2tlZDEwMENvbHVtblNlcmllc0NvbXBvbmVudCwgSWd4U3RhY2tlZDEwMExpbmVTZXJpZXNDb21wb25lbnQsXHJcbiAgICBJZ3hTdGFja2VkQXJlYVNlcmllc0NvbXBvbmVudCwgSWd4U3RhY2tlZEJhclNlcmllc0NvbXBvbmVudCwgSWd4U3RhY2tlZENvbHVtblNlcmllc0NvbXBvbmVudCxcclxuICAgIElneFN0YWNrZWRMaW5lU2VyaWVzQ29tcG9uZW50XHJcbn0gZnJvbSAnaWduaXRldWktYW5ndWxhci1jaGFydHMnO1xyXG5pbXBvcnQgeyBDSEFSVF9UWVBFLCBPUFRJT05TX1RZUEUgfSBmcm9tICcuL2NoYXJ0LXR5cGVzJztcclxuaW1wb3J0IHsgQ2hhcnRJbml0aWFsaXplciwgSUNoYXJ0Q29tcG9uZW50T3B0aW9ucywgSWd4RGF0YUNoYXJ0SW5pdGlhbGl6ZXIsXHJcbiAgICBJZ3hQaWVDaGFydEluaXRpYWxpemVyLCBJZ3hTdGFja2VkRGF0YUNoYXJ0SW5pdGlhbGl6ZXIsIElPcHRpb25zIH0gZnJvbSAnLi9pbml0aWFsaXplcnMnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJRGV0ZXJtaW5lZENoYXJ0VHlwZXNBcmdzIHtcclxuICAgIGNoYXJ0c0F2YWlsYWJpbHR5OiBNYXA8Q0hBUlRfVFlQRSwgYm9vbGVhbj47XHJcbiAgICBjaGFydHNGb3JDcmVhdGlvbjogQ0hBUlRfVFlQRVtdO1xyXG59XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICAgIHNlbGVjdG9yOiAnW2lneENoYXJ0SW50ZWdyYXRpb25dJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgSWd4Q2hhcnRJbnRlZ3JhdGlvbkRpcmVjdGl2ZSB7XHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGdldCBjaGFydERhdGEoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NoYXJ0RGF0YTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2V0IGNoYXJ0RGF0YShzZWxlY3RlZERhdGE6IGFueVtdKSB7XHJcbiAgICAgICAgY29uc3QgY2hhcnRzID0gbmV3IFNldCh0aGlzLl9kYXRhQ2hhcnRUeXBlcyk7XHJcbiAgICAgICAgY29uc3QgZGF0YU1vZGVsID0gc2VsZWN0ZWREYXRhLmxlbmd0aCA/IHNlbGVjdGVkRGF0YVswXSA6IHt9O1xyXG4gICAgICAgIHRoaXMuX2xhYmVsTWVtYmVyUGF0aHMgPSBPYmplY3Qua2V5cyhkYXRhTW9kZWwpLmZpbHRlcihrZXkgPT4gdHlwZW9mIGRhdGFNb2RlbFtrZXldID09PSAnc3RyaW5nJyk7XHJcbiAgICAgICAgdGhpcy5fdmFsdWVNZW1iZXJQYXRocyA9IE9iamVjdC5rZXlzKGRhdGFNb2RlbCkuZmlsdGVyKGtleSA9PiB0eXBlb2YgZGF0YU1vZGVsW2tleV0gPT09ICdudW1iZXInKTtcclxuICAgICAgICB0aGlzLl9jaGFydERhdGEgPSBzZWxlY3RlZERhdGEubWFwKChkYXRhUmVjb3JkLCBpbmRleCkgPT4gdGhpcy5hZGRJbmRleE1lbWJlclBhdGgoZGF0YVJlY29yZCwgaW5kZXggKyAxKSk7XHJcbiAgICAgICAgY29uc3QgYXJnczogSURldGVybWluZWRDaGFydFR5cGVzQXJncyA9IHtcclxuICAgICAgICAgICAgY2hhcnRzQXZhaWxhYmlsdHk6IG5ldyBNYXA8Q0hBUlRfVFlQRSwgYm9vbGVhbj4oKSxcclxuICAgICAgICAgICAgY2hhcnRzRm9yQ3JlYXRpb246IFtdXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgaWYgKHNlbGVjdGVkRGF0YS5sZW5ndGggPT09IDAgfHwgdGhpcy5fdmFsdWVNZW1iZXJQYXRocy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgdGhpcy5vbkNoYXJ0VHlwZXNEZXRlcm1pbmVkLmVtaXQoYXJncyk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHNlbGVjdGVkRGF0YS5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgICAgY2hhcnRzLmZvckVhY2goKGNoYXJ0LCBfLCBzZXQpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGlzQ29sdW1uQ2hhcnQgPSBjaGFydC5pbmRleE9mKCdDb2x1bW4nKSAhPT0gLTE7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBpc0JhckNoYXJ0ID0gY2hhcnQuaW5kZXhPZignQmFyJykgIT09IC0xO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgaXNQaWVDaGFydCA9IGNoYXJ0LmluZGV4T2YoJ1BpZScpICE9PSAtMTtcclxuICAgICAgICAgICAgICAgIGlmICghKGlzQ29sdW1uQ2hhcnQgfHwgaXNCYXJDaGFydCB8fCBpc1BpZUNoYXJ0KSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHNldC5kZWxldGUoY2hhcnQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gQ29uZmlnIHBpZSBjaGFydFxyXG4gICAgICAgIGNvbnN0IGNhbm5vdENyZWF0ZVBpZUNoYXJ0ID0gc2VsZWN0ZWREYXRhLnNvbWUocmVjb3JkID0+IHJlY29yZFt0aGlzLl92YWx1ZU1lbWJlclBhdGhzWzBdXSA8PSAwKTtcclxuICAgICAgICBpZiAoY2Fubm90Q3JlYXRlUGllQ2hhcnQpIHtcclxuICAgICAgICAgICAgY2hhcnRzLmRlbGV0ZShDSEFSVF9UWVBFLlBJRSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIENvbmZpZyBzY2F0dGVyIGNoYXJ0IG1lbWJlciBwYXRoc1xyXG4gICAgICAgIGNvbnN0IGNhbkNyZWF0ZVNjYXR0ZXJDaGFydCA9IHRoaXMuX3ZhbHVlTWVtYmVyUGF0aHMubGVuZ3RoID49IDI7XHJcbiAgICAgICAgY29uc3QgY2FuQ3JlYXRlQnViYmxlQ2hhcnQgPSB0aGlzLl92YWx1ZU1lbWJlclBhdGhzLmxlbmd0aCA+PSAzO1xyXG4gICAgICAgIGlmICghY2FuQ3JlYXRlU2NhdHRlckNoYXJ0KSB7XHJcbiAgICAgICAgICAgIGNoYXJ0cy5kZWxldGUoQ0hBUlRfVFlQRS5TQ0FUVEVSX0JVQkJMRSk7XHJcbiAgICAgICAgICAgIGNoYXJ0cy5kZWxldGUoQ0hBUlRfVFlQRS5TQ0FUVEVSX0xJTkUpO1xyXG4gICAgICAgICAgICBjaGFydHMuZGVsZXRlKENIQVJUX1RZUEUuU0NBVFRFUl9QT0lOVCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghY2FuQ3JlYXRlQnViYmxlQ2hhcnQpIHtcclxuICAgICAgICAgICAgY2hhcnRzLmRlbGV0ZShDSEFSVF9UWVBFLlNDQVRURVJfQlVCQkxFKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGFyZ3MuY2hhcnRzQXZhaWxhYmlsdHkgPSB0aGlzLmNoYXJ0VHlwZXNBdmFpbGFiaWxpdHk7XHJcbiAgICAgICAgYXJncy5jaGFydHNGb3JDcmVhdGlvbiA9IFsuLi5jaGFydHNdO1xyXG4gICAgICAgIHRoaXMub25DaGFydFR5cGVzRGV0ZXJtaW5lZC5lbWl0KGFyZ3MpO1xyXG4gICAgfVxyXG5cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIG9uQ2hhcnRUeXBlc0RldGVybWluZWQgPSBuZXcgRXZlbnRFbWl0dGVyPElEZXRlcm1pbmVkQ2hhcnRUeXBlc0FyZ3M+KCk7XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgb25DaGFydENyZWF0aW9uRG9uZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgdXNlTGVnZW5kID0gdHJ1ZTtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGRlZmF1bHRMYWJlbE1lbWJlclBhdGg6IHN0cmluZyA9IHVuZGVmaW5lZDtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNldCBzY2F0dGVyQ2hhcnRZQXhpc1ZhbHVlTWVtYmVyUGF0aChwYXRoOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLl9zY2F0dGVyQ2hhcnRZQXhpc1ZhbHVlTWVtYmVyUGF0aCA9IHBhdGg7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBzY2F0dGVyQ2hhcnRZQXhpc1ZhbHVlTWVtYmVyUGF0aCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc2NhdHRlckNoYXJ0WUF4aXNWYWx1ZU1lbWJlclBhdGggJiZcclxuICAgICAgICAgICAgdGhpcy5fdmFsdWVNZW1iZXJQYXRocy5pbmRleE9mKHRoaXMuX3NjYXR0ZXJDaGFydFlBeGlzVmFsdWVNZW1iZXJQYXRoKSAhPT0gLTEgP1xyXG4gICAgICAgICAgICB0aGlzLl9zY2F0dGVyQ2hhcnRZQXhpc1ZhbHVlTWVtYmVyUGF0aCA6IHRoaXMuX3ZhbHVlTWVtYmVyUGF0aHNbMF07XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzZXQgYnViYmxlQ2hhcnRSYWRpdXNNZW1iZXJQYXRoKHBhdGg6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuX2J1YmJsZUNoYXJ0UmFkaXVzTWVtYmVyUGF0aCA9IHBhdGg7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBidWJibGVDaGFydFJhZGl1c01lbWJlclBhdGgoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2J1YmJsZUNoYXJ0UmFkaXVzTWVtYmVyUGF0aCAmJlxyXG4gICAgICAgICAgICB0aGlzLl92YWx1ZU1lbWJlclBhdGhzLmluZGV4T2YodGhpcy5fYnViYmxlQ2hhcnRSYWRpdXNNZW1iZXJQYXRoKSAhPT0gLTEgP1xyXG4gICAgICAgICAgICB0aGlzLl9idWJibGVDaGFydFJhZGl1c01lbWJlclBhdGggOiB0aGlzLl92YWx1ZU1lbWJlclBhdGhzWzFdO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY2hhcnRUeXBlc0F2YWlsYWJpbGl0eSA9IG5ldyBNYXA8Q0hBUlRfVFlQRSwgYm9vbGVhbj4oKTtcclxuICAgIHByaXZhdGUgY3VzdG9tQ2hhcnRDb21wb25lbnRPcHRpb25zID0gbmV3IE1hcDxDSEFSVF9UWVBFLCBJQ2hhcnRDb21wb25lbnRPcHRpb25zPigpO1xyXG4gICAgcHJpdmF0ZSBkYXRhQ2hhcnRzID0gbmV3IE1hcDxzdHJpbmcsIFR5cGU8YW55Pj4oKTtcclxuICAgIHByaXZhdGUgX3NjYXR0ZXJDaGFydFlBeGlzVmFsdWVNZW1iZXJQYXRoID0gdW5kZWZpbmVkO1xyXG4gICAgcHJpdmF0ZSBfYnViYmxlQ2hhcnRSYWRpdXNNZW1iZXJQYXRoID0gdW5kZWZpbmVkO1xyXG4gICAgcHJpdmF0ZSBfdmFsdWVNZW1iZXJQYXRocyA9IFtdO1xyXG4gICAgcHJpdmF0ZSBfbGFiZWxNZW1iZXJQYXRocyA9IFtdO1xyXG4gICAgcHJpdmF0ZSBfY2hhcnREYXRhOiBhbnlbXTtcclxuICAgIHByaXZhdGUgX3NpemVTY2FsZSA9IG5ldyBJZ3hTaXplU2NhbGVDb21wb25lbnQoKTtcclxuICAgIHByaXZhdGUgX2RhdGFDaGFydFR5cGVzID0gbmV3IFNldDxDSEFSVF9UWVBFPigpO1xyXG4gICAgcHJpdmF0ZSBnZXQgX2xhYmVsTWVtYmVyUGF0aCgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRMYWJlbE1lbWJlclBhdGggJiYgdGhpcy5fY2hhcnREYXRhLnNvbWUociA9PiByW3RoaXMuZGVmYXVsdExhYmVsTWVtYmVyUGF0aF0gIT09IHVuZGVmaW5lZCkgP1xyXG4gICAgICAgICAgICB0aGlzLmRlZmF1bHRMYWJlbE1lbWJlclBhdGggOiB0aGlzLl9sYWJlbE1lbWJlclBhdGhzLmxlbmd0aCA+IDAgPyB0aGlzLl9sYWJlbE1lbWJlclBhdGhzWzBdIDogJ0luZGV4JztcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldCBwaWVDaGFydE9wdGlvbnMoKTogSU9wdGlvbnMge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHdpZHRoOiAnODUlJyxcclxuICAgICAgICAgICAgaGVpZ2h0OiAnNzUlJyxcclxuICAgICAgICAgICAgZGF0YVNvdXJjZTogdGhpcy5jaGFydERhdGEsXHJcbiAgICAgICAgICAgIHZhbHVlTWVtYmVyUGF0aDogdGhpcy5fdmFsdWVNZW1iZXJQYXRoc1swXSxcclxuICAgICAgICAgICAgbGVnZW5kTGFiZWxNZW1iZXJQYXRoOiB0aGlzLl9sYWJlbE1lbWJlclBhdGgsXHJcbiAgICAgICAgICAgIGxhYmVsTWVtYmVyUGF0aDogdGhpcy5fbGFiZWxNZW1iZXJQYXRoLFxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBkYXRhQ2hhcnRTZXJpZXNPcHRpb25zTW9kZWw6IElPcHRpb25zID0ge1xyXG4gICAgICAgIGlzSGlnaGxpZ2h0aW5nRW5hYmxlZDogdHJ1ZSxcclxuICAgICAgICBhcmVhRmlsbE9wYWNpdHk6IC40LFxyXG4gICAgICAgIG1hcmtlclR5cGU6IDMsXHJcbiAgICAgICAgc2hvd0RlZmF1bHRUb29sdGlwOiB0cnVlXHJcbiAgICB9O1xyXG5cclxuICAgIHByaXZhdGUgc2NhdHRlckNoYXJ0U2VyaWVzT3B0aW9uc01vZGVsOiBJT3B0aW9ucyA9IHtcclxuICAgICAgICBtYXJrZXJUeXBlOiAzLFxyXG4gICAgICAgIHNob3dEZWZhdWx0VG9vbHRpcDogdHJ1ZVxyXG4gICAgfTtcclxuXHJcbiAgICBwcml2YXRlIGJ1YmJsZUNoYXJ0U2VyaWVzT3B0aW9uc01vZGVsOiBJT3B0aW9ucyA9IHtcclxuICAgICAgICByYWRpdXNTY2FsZTogdGhpcy5fc2l6ZVNjYWxlXHJcbiAgICB9O1xyXG5cclxuICAgIHByaXZhdGUgZ2V0IGRhdGFDaGFydE9wdGlvbnMoKTogSU9wdGlvbnMge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXHJcbiAgICAgICAgICAgIGhlaWdodDogJzg1JScsXHJcbiAgICAgICAgICAgIGF1dG9NYXJnaW5XaWR0aDogNTAsXHJcbiAgICAgICAgICAgIGlzVmVydGljYWxab29tRW5hYmxlZDogdHJ1ZSxcclxuICAgICAgICAgICAgaXNIb3Jpem9udGFsWm9vbUVuYWJsZWQ6IHRydWUsXHJcbiAgICAgICAgICAgIGRhdGFTb3VyY2U6IHRoaXMuY2hhcnREYXRhXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIpIHtcclxuICAgICAgICB0aGlzLmRhdGFDaGFydHMuc2V0KENIQVJUX1RZUEUuQ09MVU1OX0dST1VQRUQsIElneENvbHVtblNlcmllc0NvbXBvbmVudCk7XHJcbiAgICAgICAgdGhpcy5kYXRhQ2hhcnRzLnNldChDSEFSVF9UWVBFLkFSRUFfR1JPVVBFRCwgSWd4QXJlYVNlcmllc0NvbXBvbmVudCk7XHJcbiAgICAgICAgdGhpcy5kYXRhQ2hhcnRzLnNldChDSEFSVF9UWVBFLkxJTkVfR1JPVVBFRCwgSWd4TGluZVNlcmllc0NvbXBvbmVudCk7XHJcbiAgICAgICAgdGhpcy5kYXRhQ2hhcnRzLnNldChDSEFSVF9UWVBFLkJBUl9HUk9VUEVELCBJZ3hCYXJTZXJpZXNDb21wb25lbnQpO1xyXG5cclxuICAgICAgICB0aGlzLmRhdGFDaGFydHMuc2V0KENIQVJUX1RZUEUuQ09MVU1OX1NUQUNLRUQsIElneFN0YWNrZWRDb2x1bW5TZXJpZXNDb21wb25lbnQpO1xyXG4gICAgICAgIHRoaXMuZGF0YUNoYXJ0cy5zZXQoQ0hBUlRfVFlQRS5BUkVBX1NUQUNLRUQsIElneFN0YWNrZWRBcmVhU2VyaWVzQ29tcG9uZW50KTtcclxuICAgICAgICB0aGlzLmRhdGFDaGFydHMuc2V0KENIQVJUX1RZUEUuTElORV9TVEFDS0VELCBJZ3hTdGFja2VkTGluZVNlcmllc0NvbXBvbmVudCk7XHJcbiAgICAgICAgdGhpcy5kYXRhQ2hhcnRzLnNldChDSEFSVF9UWVBFLkJBUl9TVEFDS0VELCBJZ3hTdGFja2VkQmFyU2VyaWVzQ29tcG9uZW50KTtcclxuXHJcbiAgICAgICAgdGhpcy5kYXRhQ2hhcnRzLnNldChDSEFSVF9UWVBFLkNPTFVNTl8xMDBfU1RBQ0tFRCwgSWd4U3RhY2tlZDEwMENvbHVtblNlcmllc0NvbXBvbmVudCk7XHJcbiAgICAgICAgdGhpcy5kYXRhQ2hhcnRzLnNldChDSEFSVF9UWVBFLkFSRUFfMTAwX1NUQUNLRUQsIElneFN0YWNrZWQxMDBBcmVhU2VyaWVzQ29tcG9uZW50KTtcclxuICAgICAgICB0aGlzLmRhdGFDaGFydHMuc2V0KENIQVJUX1RZUEUuTElORV8xMDBfU1RBQ0tFRCwgSWd4U3RhY2tlZDEwMExpbmVTZXJpZXNDb21wb25lbnQpO1xyXG4gICAgICAgIHRoaXMuZGF0YUNoYXJ0cy5zZXQoQ0hBUlRfVFlQRS5CQVJfMTAwX1NUQUNLRUQsIElneFN0YWNrZWQxMDBCYXJTZXJpZXNDb21wb25lbnQpO1xyXG5cclxuICAgICAgICB0aGlzLmRhdGFDaGFydHMuc2V0KENIQVJUX1RZUEUuU0NBVFRFUl9QT0lOVCwgSWd4U2NhdHRlclNlcmllc0NvbXBvbmVudCk7XHJcbiAgICAgICAgdGhpcy5kYXRhQ2hhcnRzLnNldChDSEFSVF9UWVBFLlNDQVRURVJfQlVCQkxFLCBJZ3hCdWJibGVTZXJpZXNDb21wb25lbnQpO1xyXG4gICAgICAgIHRoaXMuZGF0YUNoYXJ0cy5zZXQoQ0hBUlRfVFlQRS5TQ0FUVEVSX0xJTkUsIElneFNjYXR0ZXJMaW5lU2VyaWVzQ29tcG9uZW50KTtcclxuXHJcbiAgICAgICAgdGhpcy5kYXRhQ2hhcnRzLnNldChDSEFSVF9UWVBFLlBJRSwgSWd4UGllQ2hhcnRDb21wb25lbnQpO1xyXG4gICAgICAgIGNvbnN0IGl0ZXJhYmxlID0gdGhpcy5kYXRhQ2hhcnRzLmtleXMoKTtcclxuICAgICAgICBmb3IgKGxldCBoZWFkID0gaXRlcmFibGUubmV4dCgpLnZhbHVlOyBoZWFkICE9PSB1bmRlZmluZWQ7IGhlYWQgPSBpdGVyYWJsZS5uZXh0KCkudmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5fZGF0YUNoYXJ0VHlwZXMuYWRkKGhlYWQpO1xyXG4gICAgICAgICAgICB0aGlzLmNoYXJ0VHlwZXNBdmFpbGFiaWxpdHkuc2V0KGhlYWQsIHRydWUpO1xyXG4gICAgICAgICAgICB0aGlzLmN1c3RvbUNoYXJ0Q29tcG9uZW50T3B0aW9ucy5zZXQoaGVhZCwge30pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0QXZhaWxhYmxlQ2hhcnRzKCkge1xyXG4gICAgICAgIGNvbnN0IHJlcyA9IFtdO1xyXG4gICAgICAgIHRoaXMuY2hhcnRUeXBlc0F2YWlsYWJpbGl0eS5mb3JFYWNoKChpc0F2YWlsYWJsZSwgY2hhcnRUeXBlKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChpc0F2YWlsYWJsZSkge1xyXG4gICAgICAgICAgICAgICAgcmVzLnB1c2goY2hhcnRUeXBlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiByZXM7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGRpc2FibGVDaGFydHModHlwZXM6IENIQVJUX1RZUEVbXSkge1xyXG4gICAgICAgIHR5cGVzLmZvckVhY2godHlwZSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNoYXJ0VHlwZXNBdmFpbGFiaWxpdHkuZ2V0KHR5cGUpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoYXJ0VHlwZXNBdmFpbGFiaWxpdHkuc2V0KHR5cGUsIGZhbHNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBlbmFibGVDaGFydHModHlwZXM6IENIQVJUX1RZUEVbXSkge1xyXG4gICAgICAgIHR5cGVzLmZvckVhY2godHlwZSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5jaGFydFR5cGVzQXZhaWxhYmlsaXR5LmdldCh0eXBlKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFydFR5cGVzQXZhaWxhYmlsaXR5LnNldCh0eXBlLCB0cnVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBjaGFydEZhY3RvcnkodHlwZTogQ0hBUlRfVFlQRSwgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge1xyXG4gICAgICAgIGlmICghdGhpcy5jaGFydFR5cGVzQXZhaWxhYmlsaXR5LmdldCh0eXBlKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBjb21wb25lbnRGYWN0b3J5OiBDb21wb25lbnRGYWN0b3J5PGFueT47XHJcbiAgICAgICAgbGV0IGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPGFueT47XHJcbiAgICAgICAgdGhpcy5fc2l6ZVNjYWxlLm1heGltdW1WYWx1ZSA9IDYwO1xyXG4gICAgICAgIHRoaXMuX3NpemVTY2FsZS5taW5pbXVtVmFsdWUgPSAxMDtcclxuICAgICAgICBjb25zdCBjaGFydFR5cGUgPSB0aGlzLmRhdGFDaGFydHMuZ2V0KHR5cGUpO1xyXG5cclxuICAgICAgICBpZiAodHlwZSA9PT0gQ0hBUlRfVFlQRS5QSUUpIHtcclxuICAgICAgICAgICAgY29tcG9uZW50RmFjdG9yeSA9IHRoaXMuZmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KElneFBpZUNoYXJ0Q29tcG9uZW50KTtcclxuICAgICAgICAgICAgY29tcG9uZW50UmVmID0gdmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50RmFjdG9yeSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29tcG9uZW50RmFjdG9yeSA9IHRoaXMuZmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KElneERhdGFDaGFydENvbXBvbmVudCk7XHJcbiAgICAgICAgICAgIGNvbXBvbmVudFJlZiA9IHZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudEZhY3RvcnkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBvcHRpb25zOiBJQ2hhcnRDb21wb25lbnRPcHRpb25zID0gdGhpcy5nZXRDaGFydE9wdGlvbnModHlwZSk7XHJcbiAgICAgICAgY29uc3QgaW5pdGlhbGl6ZXI6IENoYXJ0SW5pdGlhbGl6ZXIgPSB0aGlzLmdldEluaXRpYWxpemVyKHR5cGUsIGNoYXJ0VHlwZSk7XHJcbiAgICAgICAgaWYgKHRoaXMudXNlTGVnZW5kKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxlZ2VuZFR5cGUgPSB0eXBlID09PSBDSEFSVF9UWVBFLlBJRSA/IElneEl0ZW1MZWdlbmRDb21wb25lbnQgOiBJZ3hMZWdlbmRDb21wb25lbnQ7XHJcbiAgICAgICAgICAgIGNvbnN0IGxlZ2VuZEZhY3RvcnkgPSB0aGlzLmZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShsZWdlbmRUeXBlIGFzIGFueSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGxlZ2VuZENvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPGFueT4gPSB2aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChsZWdlbmRGYWN0b3J5KTtcclxuICAgICAgICAgICAgb3B0aW9ucy5jaGFydE9wdGlvbnNbJ2xlZ2VuZCddID0gbGVnZW5kQ29tcG9uZW50UmVmLmluc3RhbmNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBjaGFydCA9IGluaXRpYWxpemVyLmluaXRDaGFydChjb21wb25lbnRSZWYuaW5zdGFuY2UsIG9wdGlvbnMpO1xyXG4gICAgICAgIHRoaXMub25DaGFydENyZWF0aW9uRG9uZS5lbWl0KGNoYXJ0KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldEluaXRpYWxpemVyKGNoYXJ0VHlwZTogQ0hBUlRfVFlQRSwgY29tcG9uZW50Q2xhc3NSZWYpOiBDaGFydEluaXRpYWxpemVyIHtcclxuICAgICAgICBpZiAoY2hhcnRUeXBlLmluY2x1ZGVzKCdQaWUnKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IElneFBpZUNoYXJ0SW5pdGlhbGl6ZXIoKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGNoYXJ0VHlwZS5pbmNsdWRlcygnU3RhY2tlZCcpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgSWd4U3RhY2tlZERhdGFDaGFydEluaXRpYWxpemVyKGNvbXBvbmVudENsYXNzUmVmKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IElneERhdGFDaGFydEluaXRpYWxpemVyKGNvbXBvbmVudENsYXNzUmVmKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRDaGFydE9wdGlvbnModHlwZTogQ0hBUlRfVFlQRSk6IElDaGFydENvbXBvbmVudE9wdGlvbnMge1xyXG4gICAgICAgIGNvbnN0IGNoYXJ0Q29tcG9uZW50T3B0aW9uczogSUNoYXJ0Q29tcG9uZW50T3B0aW9ucyA9IHt9O1xyXG4gICAgICAgIHJldHVybiB0eXBlID09PSBDSEFSVF9UWVBFLlBJRSA/IHRoaXMuYWRkUGllQ2hhcnREYXRhT3B0aW9ucyhjaGFydENvbXBvbmVudE9wdGlvbnMpIDpcclxuICAgICAgICAgICAgdGhpcy5hZGREYXRhQ2hhcnREYXRhT3B0aW9ucyh0eXBlLCBjaGFydENvbXBvbmVudE9wdGlvbnMsIHR5cGUuaW5jbHVkZXMoJ1N0YWNrZWQnKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhZGRQaWVDaGFydERhdGFPcHRpb25zKGNoYXJ0Q29tcG9uZW50T3B0aW9uczogSUNoYXJ0Q29tcG9uZW50T3B0aW9ucykge1xyXG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbWF4LWxpbmUtbGVuZ3RoXHJcbiAgICAgICAgY2hhcnRDb21wb25lbnRPcHRpb25zLmNoYXJ0T3B0aW9ucyA9IE9iamVjdC5hc3NpZ24odGhpcy5waWVDaGFydE9wdGlvbnMsIHRoaXMuY3VzdG9tQ2hhcnRDb21wb25lbnRPcHRpb25zLmdldChDSEFSVF9UWVBFLlBJRSkuY2hhcnRPcHRpb25zKTtcclxuICAgICAgICByZXR1cm4gY2hhcnRDb21wb25lbnRPcHRpb25zO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYWRkRGF0YUNoYXJ0RGF0YU9wdGlvbnModHlwZTogQ0hBUlRfVFlQRSwgY2hhcnRDb21wb25lbnRPcHRpb25zOiBJQ2hhcnRDb21wb25lbnRPcHRpb25zLCBzdGFja2VkOiBib29sZWFuKSB7XHJcbiAgICAgICAgY2hhcnRDb21wb25lbnRPcHRpb25zLmNoYXJ0T3B0aW9ucyA9IE9iamVjdC5hc3NpZ24odGhpcy5kYXRhQ2hhcnRPcHRpb25zLCB0aGlzLmN1c3RvbUNoYXJ0Q29tcG9uZW50T3B0aW9ucy5nZXQodHlwZSkpO1xyXG4gICAgICAgIGlmICh0eXBlLmluZGV4T2YoJ1NjYXR0ZXInKSAhPT0gLTEpIHtcclxuICAgICAgICAgICAgdGhpcy5hZGRTY2F0dGVyQ2hhcnREYXRhT3B0aW9ucyh0eXBlLCBjaGFydENvbXBvbmVudE9wdGlvbnMpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbWF4LWxpbmUtbGVuZ3RoXHJcbiAgICAgICAgICAgIGNoYXJ0Q29tcG9uZW50T3B0aW9ucy5zZXJpZXNNb2RlbCA9IE9iamVjdC5hc3NpZ24odGhpcy5kYXRhQ2hhcnRTZXJpZXNPcHRpb25zTW9kZWwsIHRoaXMuY3VzdG9tQ2hhcnRDb21wb25lbnRPcHRpb25zLmdldCh0eXBlKS5zZXJpZXNNb2RlbCk7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0QXhpc0xhYmVsT3B0aW9uKHR5cGUsIGNoYXJ0Q29tcG9uZW50T3B0aW9ucyk7XHJcbiAgICAgICAgICAgIGNvbnN0IG9wdGlvbnM6IElPcHRpb25zW10gPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5fdmFsdWVNZW1iZXJQYXRocy5mb3JFYWNoKHZhbHVlTWVtYmVyUGF0aCA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhT3B0aW9ucyA9IHtcclxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdmFsdWVNZW1iZXJQYXRoLFxyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlTWVtYmVyUGF0aFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIGlmIChzdGFja2VkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5wdXNoKHsgLi4uZGF0YU9wdGlvbnMgfSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMucHVzaCh7IC4uLmRhdGFPcHRpb25zLCAuLi5jaGFydENvbXBvbmVudE9wdGlvbnMuc2VyaWVzTW9kZWwgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBzdGFja2VkID8gY2hhcnRDb21wb25lbnRPcHRpb25zLnN0YWNrZWRGcmFnbWVudE9wdGlvbnMgPSBvcHRpb25zIDpcclxuICAgICAgICAgICAgY2hhcnRDb21wb25lbnRPcHRpb25zLnNlcmllc09wdGlvbnMgPSBvcHRpb25zO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gY2hhcnRDb21wb25lbnRPcHRpb25zO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYWRkU2NhdHRlckNoYXJ0RGF0YU9wdGlvbnMoc2NhdHRlckNoYXJ0OiBDSEFSVF9UWVBFLCBjaGFydENvbXBvbmVudE9wdGlvbnM6IElDaGFydENvbXBvbmVudE9wdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbWF4LWxpbmUtbGVuZ3RoXHJcbiAgICAgICAgY2hhcnRDb21wb25lbnRPcHRpb25zLnNlcmllc01vZGVsID0gT2JqZWN0LmFzc2lnbih0aGlzLnNjYXR0ZXJDaGFydFNlcmllc09wdGlvbnNNb2RlbCwgdGhpcy5jdXN0b21DaGFydENvbXBvbmVudE9wdGlvbnMuZ2V0KHNjYXR0ZXJDaGFydCkuc2VyaWVzTW9kZWwpO1xyXG4gICAgICAgIGNoYXJ0Q29tcG9uZW50T3B0aW9ucy5zZXJpZXNNb2RlbFsneU1lbWJlclBhdGgnXSA9IHRoaXMuc2NhdHRlckNoYXJ0WUF4aXNWYWx1ZU1lbWJlclBhdGg7XHJcbiAgICAgICAgaWYgKHNjYXR0ZXJDaGFydCA9PT0gQ0hBUlRfVFlQRS5TQ0FUVEVSX0JVQkJMRSkge1xyXG4gICAgICAgICAgICBjaGFydENvbXBvbmVudE9wdGlvbnMuc2VyaWVzTW9kZWwgPSBPYmplY3QuYXNzaWduKGNoYXJ0Q29tcG9uZW50T3B0aW9ucy5zZXJpZXNNb2RlbCwgdGhpcy5idWJibGVDaGFydFNlcmllc09wdGlvbnNNb2RlbCk7XHJcbiAgICAgICAgICAgIGNoYXJ0Q29tcG9uZW50T3B0aW9ucy5zZXJpZXNNb2RlbFsncmFkaXVzTWVtYmVyUGF0aCddID0gdGhpcy5idWJibGVDaGFydFJhZGl1c01lbWJlclBhdGg7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBtb2RlbCA9IGNoYXJ0Q29tcG9uZW50T3B0aW9ucy5zZXJpZXNNb2RlbDtcclxuICAgICAgICBjb25zdCBzZXJpZXNPcHRpb25zOiBJT3B0aW9uc1tdID0gW107XHJcbiAgICAgICAgdGhpcy5fdmFsdWVNZW1iZXJQYXRocy5maWx0ZXIodiA9PiAhKHYgPT09IG1vZGVsWyd5TWVtYmVyUGF0aCddIHx8XHJcbiAgICAgICAgICAgIHYgPT09IG1vZGVsWydyYWRpdXNNZW1iZXJQYXRoJ10pKS5mb3JFYWNoKHZhbHVlTWVtYmVyUGF0aCA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhT3B0aW9ucyA9IHtcclxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogYCR7bW9kZWxbJ3lNZW1iZXJQYXRoJ119IHZzICR7dmFsdWVNZW1iZXJQYXRofWAsXHJcbiAgICAgICAgICAgICAgICAgICAgeE1lbWJlclBhdGg6IHZhbHVlTWVtYmVyUGF0aCxcclxuICAgICAgICAgICAgICAgICAgICBsYWJlbE1lbWJlclBhdGg6IHRoaXMuX2xhYmVsTWVtYmVyUGF0aFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIHNlcmllc09wdGlvbnMucHVzaCh7IC4uLmRhdGFPcHRpb25zLCAuLi5tb2RlbCB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgY2hhcnRDb21wb25lbnRPcHRpb25zLnNlcmllc09wdGlvbnMgPSBzZXJpZXNPcHRpb25zO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYWRkSW5kZXhNZW1iZXJQYXRoKGRhdGFSZWNvcmQsIGluZGV4KSB7XHJcbiAgICAgICAgZGF0YVJlY29yZCA9IHsgLi4ueyBbdGhpcy5fbGFiZWxNZW1iZXJQYXRoXTogaW5kZXggfSwgLi4uZGF0YVJlY29yZCB9O1xyXG4gICAgICAgIHJldHVybiBkYXRhUmVjb3JkO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2V0QXhpc0xhYmVsT3B0aW9uKHR5cGU6IENIQVJUX1RZUEUsIG9wdGlvbnM6IElDaGFydENvbXBvbmVudE9wdGlvbnMpIHtcclxuICAgICAgICBpZiAodHlwZS5pbmRleE9mKCdCYXInKSAhPT0gLTEpIHtcclxuICAgICAgICAgICAgb3B0aW9ucy55QXhpc09wdGlvbnMgPSBPYmplY3QuYXNzaWduKHtcclxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLl9sYWJlbE1lbWJlclBhdGhcclxuICAgICAgICAgICAgfSwgdGhpcy5jdXN0b21DaGFydENvbXBvbmVudE9wdGlvbnMuZ2V0KHR5cGUpLnlBeGlzT3B0aW9ucyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgb3B0aW9ucy54QXhpc09wdGlvbnMgPSBPYmplY3QuYXNzaWduKHtcclxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLl9sYWJlbE1lbWJlclBhdGhcclxuICAgICAgICAgICAgfSwgdGhpcy5jdXN0b21DaGFydENvbXBvbmVudE9wdGlvbnMuZ2V0KHR5cGUpLnhBeGlzT3B0aW9ucyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZXRDaGFydENvbXBvbmVudE9wdGlvbnMoY2hhcnQ6IENIQVJUX1RZUEUsIG9wdGlvbnNUeXBlOiBPUFRJT05TX1RZUEUsIG9wdGlvbnM6IElPcHRpb25zKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmN1c3RvbUNoYXJ0Q29tcG9uZW50T3B0aW9ucy5nZXQoY2hhcnQpW29wdGlvbnNUeXBlXSkge1xyXG4gICAgICAgICAgICB0aGlzLmN1c3RvbUNoYXJ0Q29tcG9uZW50T3B0aW9ucy5nZXQoY2hhcnQpW29wdGlvbnNUeXBlXSA9IHt9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBPYmplY3Qua2V5cyhvcHRpb25zKS5mb3JFYWNoKHByb3BlcnR5ID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tQ2hhcnRDb21wb25lbnRPcHRpb25zLmdldChjaGFydClbb3B0aW9uc1R5cGVdW3Byb3BlcnR5XSA9IG9wdGlvbnNbcHJvcGVydHldO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxufVxyXG4iXX0=
@@ -1,28 +0,0 @@
1
- export var CHART_TYPE;
2
- (function (CHART_TYPE) {
3
- CHART_TYPE["PIE"] = "Pie";
4
- CHART_TYPE["COLUMN_GROUPED"] = "ColumnGrouped";
5
- CHART_TYPE["AREA_GROUPED"] = "AreaGrouped";
6
- CHART_TYPE["LINE_GROUPED"] = "LineGrouped";
7
- CHART_TYPE["BAR_GROUPED"] = "BarGrouped";
8
- CHART_TYPE["COLUMN_STACKED"] = "ColumnStacked";
9
- CHART_TYPE["AREA_STACKED"] = "AreaStacked";
10
- CHART_TYPE["LINE_STACKED"] = "LineStacked";
11
- CHART_TYPE["BAR_STACKED"] = "BarStacked";
12
- CHART_TYPE["COLUMN_100_STACKED"] = "Column100Stacked";
13
- CHART_TYPE["AREA_100_STACKED"] = "Area100Stacked";
14
- CHART_TYPE["LINE_100_STACKED"] = "Line100Stacked";
15
- CHART_TYPE["BAR_100_STACKED"] = "Bar100Stacked";
16
- CHART_TYPE["SCATTER_POINT"] = "ScatterPoint";
17
- CHART_TYPE["SCATTER_BUBBLE"] = "ScatterBubble";
18
- CHART_TYPE["SCATTER_LINE"] = "ScatterLine";
19
- })(CHART_TYPE || (CHART_TYPE = {}));
20
- export var OPTIONS_TYPE;
21
- (function (OPTIONS_TYPE) {
22
- OPTIONS_TYPE["CHART"] = "chartOptions";
23
- OPTIONS_TYPE["SERIES"] = "seriesModel";
24
- OPTIONS_TYPE["X_AXIS"] = "xAxisOptions";
25
- OPTIONS_TYPE["Y_AXIS"] = "yAxisOptions";
26
- OPTIONS_TYPE["STACKED_SERIES"] = "stackedFragmentOptions";
27
- })(OPTIONS_TYPE || (OPTIONS_TYPE = {}));
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtdHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyLWV4dHJhcy9zcmMvbGliL2RpcmVjdGl2ZXMvY2hhcnQtaW50ZWdyYXRpb24vY2hhcnQtdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksVUFpQlg7QUFqQkQsV0FBWSxVQUFVO0lBQ2xCLHlCQUFVLENBQUE7SUFDViw4Q0FBZ0MsQ0FBQTtJQUNoQywwQ0FBNEIsQ0FBQTtJQUM1QiwwQ0FBNEIsQ0FBQTtJQUM1Qix3Q0FBMEIsQ0FBQTtJQUMxQiw4Q0FBZ0MsQ0FBQTtJQUNoQywwQ0FBNEIsQ0FBQTtJQUM1QiwwQ0FBNEIsQ0FBQTtJQUM1Qix3Q0FBMEIsQ0FBQTtJQUMxQixxREFBdUMsQ0FBQTtJQUN2QyxpREFBbUMsQ0FBQTtJQUNuQyxpREFBbUMsQ0FBQTtJQUNuQywrQ0FBaUMsQ0FBQTtJQUNqQyw0Q0FBOEIsQ0FBQTtJQUM5Qiw4Q0FBZ0MsQ0FBQTtJQUNoQywwQ0FBNEIsQ0FBQTtBQUNoQyxDQUFDLEVBakJXLFVBQVUsS0FBVixVQUFVLFFBaUJyQjtBQUVELE1BQU0sQ0FBTixJQUFZLFlBTVg7QUFORCxXQUFZLFlBQVk7SUFDcEIsc0NBQXNCLENBQUE7SUFDdEIsc0NBQXNCLENBQUE7SUFDdEIsdUNBQXVCLENBQUE7SUFDdkIsdUNBQXVCLENBQUE7SUFDdkIseURBQXlDLENBQUE7QUFDN0MsQ0FBQyxFQU5XLFlBQVksS0FBWixZQUFZLFFBTXZCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gQ0hBUlRfVFlQRSB7XHJcbiAgICBQSUU9ICdQaWUnLFxyXG4gICAgQ09MVU1OX0dST1VQRUQgPSAnQ29sdW1uR3JvdXBlZCcsXHJcbiAgICBBUkVBX0dST1VQRUQgPSAnQXJlYUdyb3VwZWQnLFxyXG4gICAgTElORV9HUk9VUEVEID0gJ0xpbmVHcm91cGVkJyxcclxuICAgIEJBUl9HUk9VUEVEID0gJ0Jhckdyb3VwZWQnLFxyXG4gICAgQ09MVU1OX1NUQUNLRUQgPSAnQ29sdW1uU3RhY2tlZCcsXHJcbiAgICBBUkVBX1NUQUNLRUQgPSAnQXJlYVN0YWNrZWQnLFxyXG4gICAgTElORV9TVEFDS0VEID0gJ0xpbmVTdGFja2VkJyxcclxuICAgIEJBUl9TVEFDS0VEID0gJ0JhclN0YWNrZWQnLFxyXG4gICAgQ09MVU1OXzEwMF9TVEFDS0VEID0gJ0NvbHVtbjEwMFN0YWNrZWQnLFxyXG4gICAgQVJFQV8xMDBfU1RBQ0tFRCA9ICdBcmVhMTAwU3RhY2tlZCcsXHJcbiAgICBMSU5FXzEwMF9TVEFDS0VEID0gJ0xpbmUxMDBTdGFja2VkJyxcclxuICAgIEJBUl8xMDBfU1RBQ0tFRCA9ICdCYXIxMDBTdGFja2VkJyxcclxuICAgIFNDQVRURVJfUE9JTlQgPSAnU2NhdHRlclBvaW50JyxcclxuICAgIFNDQVRURVJfQlVCQkxFID0gJ1NjYXR0ZXJCdWJibGUnLFxyXG4gICAgU0NBVFRFUl9MSU5FID0gJ1NjYXR0ZXJMaW5lJ1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBPUFRJT05TX1RZUEUge1xyXG4gICAgQ0hBUlQgPSAnY2hhcnRPcHRpb25zJyxcclxuICAgIFNFUklFUyA9ICdzZXJpZXNNb2RlbCcsXHJcbiAgICBYX0FYSVMgPSAneEF4aXNPcHRpb25zJyxcclxuICAgIFlfQVhJUyA9ICd5QXhpc09wdGlvbnMnLFxyXG4gICAgU1RBQ0tFRF9TRVJJRVMgPSAnc3RhY2tlZEZyYWdtZW50T3B0aW9ucydcclxufVxyXG4iXX0=