@acorex/data-grid 6.5.28 → 6.5.31

Sign up to get free protection for your applications and to get access to all the features.
Files changed (70) hide show
  1. package/README.md +2 -2
  2. package/acorex-data-grid.d.ts +5 -0
  3. package/esm2020/acorex-data-grid.mjs +5 -0
  4. package/esm2020/lib/data-grid/columns/check-column.component.mjs +117 -0
  5. package/esm2020/lib/data-grid/columns/column.component.mjs +164 -0
  6. package/esm2020/lib/data-grid/columns/command-column.component.mjs +115 -0
  7. package/esm2020/lib/data-grid/columns/date-column.component.mjs +111 -0
  8. package/esm2020/lib/data-grid/columns/row-number-column.component.mjs +37 -0
  9. package/esm2020/lib/data-grid/columns/selection-column.component.mjs +42 -0
  10. package/esm2020/lib/data-grid/columns/text-column.component.mjs +89 -0
  11. package/esm2020/lib/data-grid/datagrid.component.mjs +667 -0
  12. package/esm2020/lib/data-grid/datagrid.events.mjs +2 -0
  13. package/esm2020/lib/data-grid/datagrid.module.mjs +145 -0
  14. package/esm2020/lib/data-grid/filters/filter.component.mjs +39 -0
  15. package/esm2020/lib/data-grid/templates/cell-template.component.mjs +53 -0
  16. package/esm2020/lib/data-grid/templates/detail-template.component.mjs +46 -0
  17. package/esm2020/lib/data-grid/templates/row-template.component.mjs +43 -0
  18. package/esm2020/lib/data-lov/data-lov-popup/data-lov-popup.component.mjs +114 -0
  19. package/esm2020/lib/data-lov/data-lov.component.mjs +165 -0
  20. package/esm2020/lib/data-lov/data-lov.module.mjs +23 -0
  21. package/esm2020/public-api.mjs +18 -0
  22. package/fesm2015/acorex-data-grid.mjs +1881 -0
  23. package/fesm2015/acorex-data-grid.mjs.map +1 -0
  24. package/fesm2020/acorex-data-grid.mjs +1881 -0
  25. package/fesm2020/acorex-data-grid.mjs.map +1 -0
  26. package/lib/data-grid/columns/check-column.component.d.ts +37 -0
  27. package/lib/data-grid/columns/column.component.d.ts +32 -0
  28. package/lib/data-grid/columns/command-column.component.d.ts +27 -0
  29. package/lib/data-grid/columns/date-column.component.d.ts +32 -0
  30. package/lib/data-grid/columns/row-number-column.component.d.ts +10 -0
  31. package/lib/data-grid/columns/selection-column.component.d.ts +12 -0
  32. package/lib/data-grid/columns/text-column.component.d.ts +25 -0
  33. package/lib/data-grid/datagrid.component.d.ts +142 -0
  34. package/{src/lib/data-grid/datagrid.events.ts → lib/data-grid/datagrid.events.d.ts} +20 -23
  35. package/lib/data-grid/datagrid.module.d.ts +23 -0
  36. package/lib/data-grid/filters/filter.component.d.ts +5 -0
  37. package/lib/data-grid/templates/cell-template.component.d.ts +22 -0
  38. package/lib/data-grid/templates/detail-template.component.d.ts +21 -0
  39. package/lib/data-grid/templates/row-template.component.d.ts +20 -0
  40. package/lib/data-lov/data-lov-popup/data-lov-popup.component.d.ts +33 -0
  41. package/lib/data-lov/data-lov.component.d.ts +43 -0
  42. package/lib/data-lov/data-lov.module.d.ts +12 -0
  43. package/package.json +36 -16
  44. package/{src/public-api.ts → public-api.d.ts} +17 -20
  45. package/karma.conf.js +0 -32
  46. package/ng-package.json +0 -12
  47. package/src/lib/data-grid/columns/check-column.component.ts +0 -113
  48. package/src/lib/data-grid/columns/column.component.ts +0 -182
  49. package/src/lib/data-grid/columns/command-column.component.ts +0 -101
  50. package/src/lib/data-grid/columns/date-column.component.ts +0 -118
  51. package/src/lib/data-grid/columns/row-number-column.component.ts +0 -36
  52. package/src/lib/data-grid/columns/selection-column.component.ts +0 -39
  53. package/src/lib/data-grid/columns/text-column.component.ts +0 -92
  54. package/src/lib/data-grid/datagrid.component.html +0 -27
  55. package/src/lib/data-grid/datagrid.component.ts +0 -769
  56. package/src/lib/data-grid/datagrid.module.ts +0 -81
  57. package/src/lib/data-grid/filters/filter.component.ts +0 -21
  58. package/src/lib/data-grid/templates/cell-template.component.ts +0 -47
  59. package/src/lib/data-grid/templates/detail-template.component.ts +0 -43
  60. package/src/lib/data-grid/templates/row-template.component.ts +0 -41
  61. package/src/lib/data-lov/data-lov-popup/data-lov-popup.component.html +0 -16
  62. package/src/lib/data-lov/data-lov-popup/data-lov-popup.component.ts +0 -130
  63. package/src/lib/data-lov/data-lov.component.html +0 -61
  64. package/src/lib/data-lov/data-lov.component.ts +0 -184
  65. package/src/lib/data-lov/data-lov.module.ts +0 -16
  66. package/src/test.ts +0 -28
  67. package/tsconfig.lib.json +0 -23
  68. package/tsconfig.lib.prod.json +0 -6
  69. package/tsconfig.spec.json +0 -17
  70. package/tslint.json +0 -17
@@ -0,0 +1,42 @@
1
+ import { AXGridDataColumn } from './column.component';
2
+ import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
3
+ import * as i0 from "@angular/core";
4
+ export class AXGridSelectionColumn extends AXGridDataColumn {
5
+ constructor() {
6
+ super();
7
+ this.pinned = 'start';
8
+ this.width = 40;
9
+ }
10
+ ngOnInit() { }
11
+ render() {
12
+ const col = super.render();
13
+ col.checkboxSelection = this.condition ? this.condition : true;
14
+ // col.headerCheckboxSelection = true;
15
+ col.pinned = this.pinned === 'start' ? 'right' : 'left';
16
+ col.filter = false;
17
+ col.resizable = true;
18
+ col.sortable = false;
19
+ col.minWidth = 5;
20
+ col.width = this.width;
21
+ col.floatingFilter = false;
22
+ return col;
23
+ }
24
+ }
25
+ AXGridSelectionColumn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXGridSelectionColumn, deps: [], target: i0.ɵɵFactoryTarget.Component });
26
+ AXGridSelectionColumn.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: AXGridSelectionColumn, selector: "ax-selection-column", inputs: { condition: "condition", pinned: "pinned", width: "width" }, providers: [{ provide: AXGridDataColumn, useExisting: AXGridSelectionColumn }], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXGridSelectionColumn, decorators: [{
28
+ type: Component,
29
+ args: [{
30
+ selector: 'ax-selection-column',
31
+ template: '',
32
+ providers: [{ provide: AXGridDataColumn, useExisting: AXGridSelectionColumn }],
33
+ changeDetection: ChangeDetectionStrategy.OnPush
34
+ }]
35
+ }], ctorParameters: function () { return []; }, propDecorators: { condition: [{
36
+ type: Input
37
+ }], pinned: [{
38
+ type: Input
39
+ }], width: [{
40
+ type: Input
41
+ }] } });
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLWNvbHVtbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvZGF0YS1ncmlkL3NyYy9saWIvZGF0YS1ncmlkL2NvbHVtbnMvc2VsZWN0aW9uLWNvbHVtbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBUTFFLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxnQkFBZ0I7SUFDekQ7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQVNWLFdBQU0sR0FBb0IsT0FBTyxDQUFDO1FBR2xDLFVBQUssR0FBVyxFQUFFLENBQUM7SUFYbkIsQ0FBQztJQUVELFFBQVEsS0FBVSxDQUFDO0lBV25CLE1BQU07UUFDSixNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDM0IsR0FBRyxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUMvRCx1Q0FBdUM7UUFDdkMsR0FBRyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDeEQsR0FBRyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDbkIsR0FBRyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDckIsR0FBRyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDckIsR0FBRyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFDakIsR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3ZCLEdBQUcsQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzNCLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQzs7bUhBNUJVLHFCQUFxQjt1R0FBckIscUJBQXFCLG9IQUhyQixDQUFDLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxxQkFBcUIsRUFBRSxDQUFDLGlEQURwRSxFQUFFOzRGQUlELHFCQUFxQjtrQkFOakMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixRQUFRLEVBQUUsRUFBRTtvQkFDWixTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLHVCQUF1QixFQUFFLENBQUM7b0JBQzlFLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNoRDswRUFTQyxTQUFTO3NCQURSLEtBQUs7Z0JBSU4sTUFBTTtzQkFETCxLQUFLO2dCQUlOLEtBQUs7c0JBREosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYR3JpZERhdGFDb2x1bW4gfSBmcm9tICcuL2NvbHVtbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtc2VsZWN0aW9uLWNvbHVtbicsXG4gIHRlbXBsYXRlOiAnJyxcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBBWEdyaWREYXRhQ29sdW1uLCB1c2VFeGlzdGluZzogQVhHcmlkU2VsZWN0aW9uQ29sdW1uIH1dLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBBWEdyaWRTZWxlY3Rpb25Db2x1bW4gZXh0ZW5kcyBBWEdyaWREYXRhQ29sdW1uIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge31cblxuICBASW5wdXQoKVxuICBjb25kaXRpb246IChwYXJhbXMpID0+IGJvb2xlYW47XG5cbiAgQElucHV0KClcbiAgcGlubmVkOiAnc3RhcnQnIHwgJ2VuZCcgPSAnc3RhcnQnO1xuXG4gIEBJbnB1dCgpXG4gIHdpZHRoOiBudW1iZXIgPSA0MDtcblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgY29sID0gc3VwZXIucmVuZGVyKCk7XG4gICAgY29sLmNoZWNrYm94U2VsZWN0aW9uID0gdGhpcy5jb25kaXRpb24gPyB0aGlzLmNvbmRpdGlvbiA6IHRydWU7XG4gICAgLy8gIGNvbC5oZWFkZXJDaGVja2JveFNlbGVjdGlvbiA9IHRydWU7XG4gICAgY29sLnBpbm5lZCA9IHRoaXMucGlubmVkID09PSAnc3RhcnQnID8gJ3JpZ2h0JyA6ICdsZWZ0JztcbiAgICBjb2wuZmlsdGVyID0gZmFsc2U7XG4gICAgY29sLnJlc2l6YWJsZSA9IHRydWU7XG4gICAgY29sLnNvcnRhYmxlID0gZmFsc2U7XG4gICAgY29sLm1pbldpZHRoID0gNTtcbiAgICBjb2wud2lkdGggPSB0aGlzLndpZHRoO1xuICAgIGNvbC5mbG9hdGluZ0ZpbHRlciA9IGZhbHNlO1xuICAgIHJldHVybiBjb2w7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,89 @@
1
+ import { AXGridDataColumn } from './column.component';
2
+ import { ChangeDetectionStrategy, Component, ViewChild } from '@angular/core';
3
+ import { AXTextBoxComponent } from '@acorex/components';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../filters/filter.component";
6
+ import * as i2 from "@acorex/components";
7
+ export class AXGridTextColumn extends AXGridDataColumn {
8
+ constructor() {
9
+ super();
10
+ }
11
+ render() {
12
+ const col = super.render();
13
+ // if (this.allowFiltering) {
14
+ // col.filterFramework = TextFilterRenderer;
15
+ // }
16
+ col.filter = 'agTextColumnFilter';
17
+ return col;
18
+ }
19
+ }
20
+ AXGridTextColumn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXGridTextColumn, deps: [], target: i0.ɵɵFactoryTarget.Component });
21
+ AXGridTextColumn.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: AXGridTextColumn, selector: "ax-text-column", providers: [{ provide: AXGridDataColumn, useExisting: AXGridTextColumn }], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXGridTextColumn, decorators: [{
23
+ type: Component,
24
+ args: [{
25
+ selector: 'ax-text-column',
26
+ template: '',
27
+ providers: [{ provide: AXGridDataColumn, useExisting: AXGridTextColumn }],
28
+ changeDetection: ChangeDetectionStrategy.OnPush
29
+ }]
30
+ }], ctorParameters: function () { return []; } });
31
+ export class TextFilterRenderer {
32
+ constructor() {
33
+ this.value = null;
34
+ }
35
+ agInit(params) {
36
+ this.params = params;
37
+ this.valueGetter = (params.valueGetter);
38
+ }
39
+ isFilterActive() {
40
+ return this.value !== null && this.value !== undefined;
41
+ }
42
+ doesFilterPass(params) {
43
+ return this.value === this.valueGetter(params.node);
44
+ }
45
+ getModel() {
46
+ return { value: this.value };
47
+ }
48
+ setModel(model) {
49
+ ;
50
+ this.onChange(model ? model.value : null);
51
+ }
52
+ ngAfterViewInit(params) {
53
+ window.setTimeout(() => {
54
+ this.input.focus();
55
+ });
56
+ }
57
+ onChange(newValue) {
58
+ if (this.value !== newValue) {
59
+ this.value = newValue;
60
+ if (this.value === '') {
61
+ this.value = null;
62
+ }
63
+ this.params.filterChangedCallback();
64
+ }
65
+ }
66
+ }
67
+ TextFilterRenderer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: TextFilterRenderer, deps: [], target: i0.ɵɵFactoryTarget.Component });
68
+ TextFilterRenderer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: TextFilterRenderer, selector: "ng-component", viewQueries: [{ propertyName: "input", first: true, predicate: AXTextBoxComponent, descendants: true, static: true }], ngImport: i0, template: `
69
+ <ax-data-grid-filter>
70
+ <ax-text-box label='Filter' allowClear='true' (textChange)='onChange($event)'>
71
+ </ax-text-box>
72
+ </ax-data-grid-filter>
73
+ `, isInline: true, components: [{ type: i1.AXDataGridFilterComponent, selector: "ax-data-grid-filter" }, { type: i2.AXTextBoxComponent, selector: "ax-text-box", inputs: ["mask", "type", "showMask", "maxLength", "maskGuid", "maskPlaceholder", "maskKeepCharPositions"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
74
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: TextFilterRenderer, decorators: [{
75
+ type: Component,
76
+ args: [{
77
+ template: `
78
+ <ax-data-grid-filter>
79
+ <ax-text-box label='Filter' allowClear='true' (textChange)='onChange($event)'>
80
+ </ax-text-box>
81
+ </ax-data-grid-filter>
82
+ `,
83
+ changeDetection: ChangeDetectionStrategy.OnPush
84
+ }]
85
+ }], propDecorators: { input: [{
86
+ type: ViewChild,
87
+ args: [AXTextBoxComponent, { static: true }]
88
+ }] } });
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1jb2x1bW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2RhdGEtZ3JpZC9zcmMvbGliL2RhdGEtZ3JpZC9jb2x1bW5zL3RleHQtY29sdW1uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFRdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7QUFTeEQsTUFBTSxPQUFPLGdCQUFpQixTQUFRLGdCQUFnQjtJQUNwRDtRQUNFLEtBQUssRUFBRSxDQUFDO0lBQ1YsQ0FBQztJQUVELE1BQU07UUFDSixNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDM0IsNkJBQTZCO1FBQzdCLDhDQUE4QztRQUM5QyxJQUFJO1FBQ0osR0FBRyxDQUFDLE1BQU0sR0FBRyxvQkFBb0IsQ0FBQztRQUNsQyxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7OzhHQVpVLGdCQUFnQjtrR0FBaEIsZ0JBQWdCLHlDQUhoQixDQUFDLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLGlEQUQvRCxFQUFFOzRGQUlELGdCQUFnQjtrQkFONUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixRQUFRLEVBQUUsRUFBRTtvQkFDWixTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLGtCQUFrQixFQUFFLENBQUM7b0JBQ3pFLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNoRDs7QUF5QkQsTUFBTSxPQUFPLGtCQUFrQjtJQVQvQjtRQVVTLFVBQUssR0FBWSxJQUFJLENBQUM7S0EyQzlCO0lBckNDLE1BQU0sQ0FBQyxNQUFxQjtRQUMxQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBUSxDQUFDO0lBQ2pELENBQUM7SUFFRCxjQUFjO1FBQ1osT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsY0FBYyxDQUFDLE1BQTZCO1FBQzFDLE9BQU8sSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBVTtRQUNqQixDQUFDO1FBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxlQUFlLENBQUMsTUFBK0I7UUFDN0MsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDckIsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxRQUFRLENBQUMsUUFBUTtRQUNmLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxRQUFRLEVBQUU7WUFDM0IsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUM7WUFDdEIsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLEVBQUUsRUFBRTtnQkFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7YUFDbkI7WUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLHFCQUFxQixFQUFFLENBQUM7U0FDckM7SUFDSCxDQUFDOztnSEEzQ1Usa0JBQWtCO29HQUFsQixrQkFBa0IsMkZBSWxCLGtCQUFrQiw4REFabkI7Ozs7O0dBS1Q7NEZBR1Usa0JBQWtCO2tCQVQ5QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRTs7Ozs7R0FLVDtvQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQ7OEJBTVMsS0FBSztzQkFEWixTQUFTO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYR3JpZERhdGFDb2x1bW4gfSBmcm9tICcuL2NvbHVtbi5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgSUZpbHRlclBhcmFtcyxcbiAgUm93Tm9kZSxcbiAgSURvZXNGaWx0ZXJQYXNzUGFyYW1zLFxuICBJQWZ0ZXJHdWlBdHRhY2hlZFBhcmFtc1xufSBmcm9tICdhZy1ncmlkLWNvbW11bml0eSc7XG5pbXBvcnQgeyBJRmlsdGVyQW5ndWxhckNvbXAgfSBmcm9tICdhZy1ncmlkLWFuZ3VsYXInO1xuaW1wb3J0IHsgQVhUZXh0Qm94Q29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC10ZXh0LWNvbHVtbicsXG4gIHRlbXBsYXRlOiAnJyxcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBBWEdyaWREYXRhQ29sdW1uLCB1c2VFeGlzdGluZzogQVhHcmlkVGV4dENvbHVtbiB9XSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQVhHcmlkVGV4dENvbHVtbiBleHRlbmRzIEFYR3JpZERhdGFDb2x1bW4ge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IGNvbCA9IHN1cGVyLnJlbmRlcigpO1xuICAgIC8vIGlmICh0aGlzLmFsbG93RmlsdGVyaW5nKSB7XG4gICAgLy8gICBjb2wuZmlsdGVyRnJhbWV3b3JrID0gVGV4dEZpbHRlclJlbmRlcmVyO1xuICAgIC8vIH1cbiAgICBjb2wuZmlsdGVyID0gJ2FnVGV4dENvbHVtbkZpbHRlcic7XG4gICAgcmV0dXJuIGNvbDtcbiAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGU6IGBcbiAgICA8YXgtZGF0YS1ncmlkLWZpbHRlcj5cbiAgICAgIDxheC10ZXh0LWJveCBsYWJlbD0nRmlsdGVyJyBhbGxvd0NsZWFyPSd0cnVlJyAodGV4dENoYW5nZSk9J29uQ2hhbmdlKCRldmVudCknPlxuICAgICAgPC9heC10ZXh0LWJveD5cbiAgICA8L2F4LWRhdGEtZ3JpZC1maWx0ZXI+XG4gIGAsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFRleHRGaWx0ZXJSZW5kZXJlciBpbXBsZW1lbnRzIElGaWx0ZXJBbmd1bGFyQ29tcCB7XG4gIHB1YmxpYyB2YWx1ZT86IHN0cmluZyA9IG51bGw7XG4gIHByaXZhdGUgcGFyYW1zOiBJRmlsdGVyUGFyYW1zO1xuICBwcml2YXRlIHZhbHVlR2V0dGVyOiAocm93Tm9kZTogUm93Tm9kZSkgPT4gYW55O1xuICBAVmlld0NoaWxkKEFYVGV4dEJveENvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcbiAgcHJpdmF0ZSBpbnB1dDogQVhUZXh0Qm94Q29tcG9uZW50O1xuXG4gIGFnSW5pdChwYXJhbXM6IElGaWx0ZXJQYXJhbXMpOiB2b2lkIHtcbiAgICB0aGlzLnBhcmFtcyA9IHBhcmFtcztcbiAgICB0aGlzLnZhbHVlR2V0dGVyID0gKHBhcmFtcy52YWx1ZUdldHRlcikgYXMgYW55O1xuICB9XG5cbiAgaXNGaWx0ZXJBY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUgIT09IG51bGwgJiYgdGhpcy52YWx1ZSAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgZG9lc0ZpbHRlclBhc3MocGFyYW1zOiBJRG9lc0ZpbHRlclBhc3NQYXJhbXMpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZSA9PT0gdGhpcy52YWx1ZUdldHRlcihwYXJhbXMubm9kZSk7XG4gIH1cblxuICBnZXRNb2RlbCgpOiBhbnkge1xuICAgIHJldHVybiB7IHZhbHVlOiB0aGlzLnZhbHVlIH07XG4gIH1cblxuICBzZXRNb2RlbChtb2RlbDogYW55KTogdm9pZCB7XG4gICAgO1xuICAgIHRoaXMub25DaGFuZ2UobW9kZWwgPyBtb2RlbC52YWx1ZSA6IG51bGwpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KHBhcmFtczogSUFmdGVyR3VpQXR0YWNoZWRQYXJhbXMpOiB2b2lkIHtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmlucHV0LmZvY3VzKCk7XG4gICAgfSk7XG4gIH1cblxuICBvbkNoYW5nZShuZXdWYWx1ZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLnZhbHVlICE9PSBuZXdWYWx1ZSkge1xuICAgICAgdGhpcy52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgaWYgKHRoaXMudmFsdWUgPT09ICcnKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xuICAgICAgfVxuICAgICAgdGhpcy5wYXJhbXMuZmlsdGVyQ2hhbmdlZENhbGxiYWNrKCk7XG4gICAgfVxuICB9XG59XG4iXX0=