@acorex/data-grid 6.5.29 → 6.5.32
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +2 -2
- package/acorex-data-grid.d.ts +5 -5
- package/esm2020/acorex-data-grid.mjs +4 -4
- package/esm2020/lib/data-grid/columns/check-column.component.mjs +117 -117
- package/esm2020/lib/data-grid/columns/column.component.mjs +164 -164
- package/esm2020/lib/data-grid/columns/command-column.component.mjs +115 -115
- package/esm2020/lib/data-grid/columns/date-column.component.mjs +111 -111
- package/esm2020/lib/data-grid/columns/row-number-column.component.mjs +37 -37
- package/esm2020/lib/data-grid/columns/selection-column.component.mjs +42 -42
- package/esm2020/lib/data-grid/columns/text-column.component.mjs +89 -89
- package/esm2020/lib/data-grid/datagrid.component.mjs +667 -667
- package/esm2020/lib/data-grid/datagrid.events.mjs +2 -2
- package/esm2020/lib/data-grid/datagrid.module.mjs +145 -145
- package/esm2020/lib/data-grid/filters/filter.component.mjs +39 -39
- package/esm2020/lib/data-grid/templates/cell-template.component.mjs +53 -53
- package/esm2020/lib/data-grid/templates/detail-template.component.mjs +46 -46
- package/esm2020/lib/data-grid/templates/row-template.component.mjs +43 -43
- package/esm2020/lib/data-lov/data-lov-popup/data-lov-popup.component.mjs +114 -114
- package/esm2020/lib/data-lov/data-lov.component.mjs +165 -165
- package/esm2020/lib/data-lov/data-lov.module.mjs +23 -23
- package/esm2020/public-api.mjs +18 -18
- package/fesm2015/acorex-data-grid.mjs +1833 -1833
- package/fesm2015/acorex-data-grid.mjs.map +1 -1
- package/fesm2020/acorex-data-grid.mjs +1833 -1833
- package/fesm2020/acorex-data-grid.mjs.map +1 -1
- package/lib/data-grid/columns/check-column.component.d.ts +37 -37
- package/lib/data-grid/columns/column.component.d.ts +32 -32
- package/lib/data-grid/columns/command-column.component.d.ts +27 -27
- package/lib/data-grid/columns/date-column.component.d.ts +32 -32
- package/lib/data-grid/columns/row-number-column.component.d.ts +10 -10
- package/lib/data-grid/columns/selection-column.component.d.ts +12 -12
- package/lib/data-grid/columns/text-column.component.d.ts +25 -25
- package/lib/data-grid/datagrid.component.d.ts +142 -142
- package/lib/data-grid/datagrid.events.d.ts +20 -20
- package/lib/data-grid/datagrid.module.d.ts +23 -23
- package/lib/data-grid/filters/filter.component.d.ts +5 -5
- package/lib/data-grid/templates/cell-template.component.d.ts +22 -22
- package/lib/data-grid/templates/detail-template.component.d.ts +21 -21
- package/lib/data-grid/templates/row-template.component.d.ts +20 -20
- package/lib/data-lov/data-lov-popup/data-lov-popup.component.d.ts +33 -33
- package/lib/data-lov/data-lov.component.d.ts +43 -43
- package/lib/data-lov/data-lov.module.d.ts +12 -12
- package/package.json +1 -1
- package/public-api.d.ts +17 -17
@@ -1,89 +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,
|
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=
|