ontimize-web-ngx 15.0.0-beta.4 → 15.0.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/components/form/navigation/o-form.navigation.class.mjs +5 -2
- package/esm2020/lib/components/form/o-form.component.mjs +11 -2
- package/esm2020/lib/components/grid/o-grid.component.mjs +11 -1
- package/esm2020/lib/components/image/o-image.component.mjs +3 -3
- package/esm2020/lib/components/index.mjs +2 -1
- package/esm2020/lib/components/input/combo/combo-search/o-combo-search.component.mjs +3 -3
- package/esm2020/lib/components/input/currency-input/o-currency-input.component.mjs +4 -4
- package/esm2020/lib/components/input/file-input/o-file-input.component.mjs +2 -18
- package/esm2020/lib/components/input/o-form-service-component.class.mjs +7 -9
- package/esm2020/lib/components/o-service-component.class.mjs +3 -6
- package/esm2020/lib/components/table/column/cell-renderer/service/o-table-cell-renderer-service.component.mjs +26 -4
- package/esm2020/lib/components/table/extensions/header/table-menu/o-table-menu.component.mjs +20 -4
- package/esm2020/lib/components/table/o-table.component.mjs +4 -1
- package/esm2020/lib/components/tree/header/index.mjs +2 -0
- package/esm2020/lib/components/tree/header/tree-menu/o-tree-menu.component.mjs +33 -0
- package/esm2020/lib/components/tree/index.mjs +5 -0
- package/esm2020/lib/components/tree/o-tree-dao.service.mjs +43 -0
- package/esm2020/lib/components/tree/o-tree.component.mjs +523 -0
- package/esm2020/lib/components/tree/o-tree.datasource.mjs +79 -0
- package/esm2020/lib/components/tree/o-tree.module.mjs +24 -0
- package/esm2020/lib/components/tree/tree-node/tree-node.component.mjs +49 -0
- package/esm2020/lib/config/o-modules.mjs +8 -6
- package/esm2020/lib/directives/o-mat-error.directive.mjs +4 -1
- package/esm2020/lib/i18n/i18n.mjs +17 -8
- package/esm2020/lib/layouts/form-layout/o-form-layout-manager-base.class.mjs +1 -1
- package/esm2020/lib/ontimize-web-ngx.module.mjs +4 -3
- package/esm2020/lib/services/permissions/o-permissions.module.mjs +1 -3
- package/esm2020/lib/services/permissions/permissions.service.mjs +18 -8
- package/esm2020/lib/services/state/o-tree-component-state.class.mjs +4 -0
- package/esm2020/lib/services/state/o-tree-component-state.service.mjs +50 -0
- package/fesm2015/ontimize-web-ngx.mjs +6441 -5678
- package/fesm2015/ontimize-web-ngx.mjs.map +1 -1
- package/fesm2020/ontimize-web-ngx.mjs +6424 -5665
- package/fesm2020/ontimize-web-ngx.mjs.map +1 -1
- package/lib/components/form/o-form.component.d.ts +4 -1
- package/lib/components/grid/o-grid.component.d.ts +1 -0
- package/lib/components/index.d.ts +1 -0
- package/lib/components/input/file-input/o-file-input.component.d.ts +1 -1
- package/lib/components/table/extensions/header/table-menu/o-table-menu.component.d.ts +5 -0
- package/lib/components/table/o-table.component.d.ts +1 -1
- package/lib/components/tree/header/index.d.ts +1 -0
- package/lib/components/tree/header/tree-menu/o-tree-menu.component.d.ts +13 -0
- package/lib/components/tree/index.d.ts +4 -0
- package/lib/components/tree/o-tree-dao.service.d.ts +18 -0
- package/lib/components/tree/o-tree.component.d.ts +111 -0
- package/lib/components/tree/o-tree.datasource.d.ts +22 -0
- package/lib/components/tree/o-tree.module.d.ts +14 -0
- package/lib/components/tree/tree-node/tree-node.component.d.ts +14 -0
- package/lib/i18n/i18n.d.ts +9 -0
- package/lib/layouts/form-layout/o-form-layout-manager-base.class.d.ts +1 -0
- package/lib/ontimize-web-ngx.module.d.ts +2 -1
- package/lib/services/state/o-tree-component-state.class.d.ts +3 -0
- package/lib/services/state/o-tree-component-state.service.d.ts +13 -0
- package/package.json +1 -1
- package/theme.scss +2 -2
- package/theming/ontimize-style-v8.scss +2 -1
- package/theming/styles/density.scss +6 -2
- package/theming/styles/ontimize-v8/o-form-field-style.scss +6 -3
- package/theming/themes/ontimize-black-yellow.scss +13 -3
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './tree-menu/o-tree-menu.component';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90cmVlL2hlYWRlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1DQUFtQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi90cmVlLW1lbnUvby10cmVlLW1lbnUuY29tcG9uZW50JzsiXX0=
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, ViewChild } from '@angular/core';
|
|
2
|
+
import { MatMenu } from '@angular/material/menu';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
import * as i2 from "@angular/forms";
|
|
6
|
+
import * as i3 from "@angular/material/checkbox";
|
|
7
|
+
import * as i4 from "@angular/material/menu";
|
|
8
|
+
import * as i5 from "../../../../pipes/o-translate.pipe";
|
|
9
|
+
export class OTreeMenuComponent {
|
|
10
|
+
constructor() {
|
|
11
|
+
this.selectAllCheckbox = false;
|
|
12
|
+
this.selectAllCheckboxVisible = false;
|
|
13
|
+
this.onSelectCheckboxChange = new EventEmitter();
|
|
14
|
+
}
|
|
15
|
+
toggleShowCheckbox(event) {
|
|
16
|
+
this.onSelectCheckboxChange.emit(event.checked);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
OTreeMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OTreeMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
20
|
+
OTreeMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: OTreeMenuComponent, selector: "o-tree-menu", inputs: { selectAllCheckbox: ["select-all-checkbox", "selectAllCheckbox"], selectAllCheckboxVisible: ["select-all-checkbox-visible", "selectAllCheckboxVisible"] }, outputs: { onSelectCheckboxChange: "onSelectCheckboxChange" }, viewQueries: [{ propertyName: "matMenu", first: true, predicate: ["menu"], descendants: true, static: true }], ngImport: i0, template: "<mat-menu #menu=\"matMenu\" x-position=\"before\" class=\"o-tree-menu o-mat-menu\">\n <span mat-menu-item *ngIf=\"selectAllCheckbox\">\n <mat-checkbox (change)=\"toggleShowCheckbox($event)\" [(ngModel)]=\"selectAllCheckboxVisible\">\n {{ 'TREE.BUTTONS.SELECT' | oTranslate }}\n </mat-checkbox>\n </span>\n</mat-menu>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i4.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "pipe", type: i5.OTranslatePipe, name: "oTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
21
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OTreeMenuComponent, decorators: [{
|
|
22
|
+
type: Component,
|
|
23
|
+
args: [{ selector: 'o-tree-menu', changeDetection: ChangeDetectionStrategy.OnPush, inputs: [
|
|
24
|
+
'selectAllCheckbox: select-all-checkbox',
|
|
25
|
+
'selectAllCheckboxVisible: select-all-checkbox-visible',
|
|
26
|
+
], outputs: [
|
|
27
|
+
'onSelectCheckboxChange'
|
|
28
|
+
], template: "<mat-menu #menu=\"matMenu\" x-position=\"before\" class=\"o-tree-menu o-mat-menu\">\n <span mat-menu-item *ngIf=\"selectAllCheckbox\">\n <mat-checkbox (change)=\"toggleShowCheckbox($event)\" [(ngModel)]=\"selectAllCheckboxVisible\">\n {{ 'TREE.BUTTONS.SELECT' | oTranslate }}\n </mat-checkbox>\n </span>\n</mat-menu>\n" }]
|
|
29
|
+
}], propDecorators: { matMenu: [{
|
|
30
|
+
type: ViewChild,
|
|
31
|
+
args: ['menu', { static: true }]
|
|
32
|
+
}] } });
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10cmVlLW1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvdHJlZS9oZWFkZXIvdHJlZS1tZW51L28tdHJlZS1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RyZWUvaGVhZGVyL3RyZWUtbWVudS9vLXRyZWUtbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7O0FBZWpELE1BQU0sT0FBTyxrQkFBa0I7SUFaL0I7UUFnQkUsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQzFCLDZCQUF3QixHQUFHLEtBQUssQ0FBQztRQUUxQiwyQkFBc0IsR0FBMEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztLQU0zRTtJQUpDLGtCQUFrQixDQUFDLEtBQXdCO1FBQ3pDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xELENBQUM7OytHQVhVLGtCQUFrQjttR0FBbEIsa0JBQWtCLHFZQ2pCL0IsOFVBT0E7MkZEVWEsa0JBQWtCO2tCQVo5QixTQUFTOytCQUNFLGFBQWEsbUJBRU4sdUJBQXVCLENBQUMsTUFBTSxVQUN2Qzt3QkFDTix3Q0FBd0M7d0JBQ3hDLHVEQUF1RDtxQkFDeEQsV0FDUTt3QkFDUCx3QkFBd0I7cUJBQ3pCOzhCQUlELE9BQU87c0JBRE4sU0FBUzt1QkFBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdENoZWNrYm94Q2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuaW1wb3J0IHsgTWF0TWVudSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28tdHJlZS1tZW51JyxcbiAgdGVtcGxhdGVVcmw6ICcuL28tdHJlZS1tZW51LmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGlucHV0czogW1xuICAgICdzZWxlY3RBbGxDaGVja2JveDogc2VsZWN0LWFsbC1jaGVja2JveCcsXG4gICAgJ3NlbGVjdEFsbENoZWNrYm94VmlzaWJsZTogc2VsZWN0LWFsbC1jaGVja2JveC12aXNpYmxlJyxcbiAgXSxcbiAgb3V0cHV0czogW1xuICAgICdvblNlbGVjdENoZWNrYm94Q2hhbmdlJ1xuICBdXG59KVxuZXhwb3J0IGNsYXNzIE9UcmVlTWVudUNvbXBvbmVudCB7XG4gIEBWaWV3Q2hpbGQoJ21lbnUnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBtYXRNZW51OiBNYXRNZW51O1xuXG4gIHNlbGVjdEFsbENoZWNrYm94ID0gZmFsc2U7XG4gIHNlbGVjdEFsbENoZWNrYm94VmlzaWJsZSA9IGZhbHNlO1xuXG4gIHB1YmxpYyBvblNlbGVjdENoZWNrYm94Q2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgdG9nZ2xlU2hvd0NoZWNrYm94KGV2ZW50OiBNYXRDaGVja2JveENoYW5nZSkge1xuICAgIHRoaXMub25TZWxlY3RDaGVja2JveENoYW5nZS5lbWl0KGV2ZW50LmNoZWNrZWQpO1xuICB9XG5cbn1cblxuXG4iLCI8bWF0LW1lbnUgI21lbnU9XCJtYXRNZW51XCIgeC1wb3NpdGlvbj1cImJlZm9yZVwiIGNsYXNzPVwiby10cmVlLW1lbnUgby1tYXQtbWVudVwiPlxuICA8c3BhbiBtYXQtbWVudS1pdGVtICpuZ0lmPVwic2VsZWN0QWxsQ2hlY2tib3hcIj5cbiAgICA8bWF0LWNoZWNrYm94IChjaGFuZ2UpPVwidG9nZ2xlU2hvd0NoZWNrYm94KCRldmVudClcIiAgWyhuZ01vZGVsKV09XCJzZWxlY3RBbGxDaGVja2JveFZpc2libGVcIj5cbiAgICAgIHt7ICdUUkVFLkJVVFRPTlMuU0VMRUNUJyB8IG9UcmFuc2xhdGUgfX1cbiAgICA8L21hdC1jaGVja2JveD5cbiAgPC9zcGFuPlxuPC9tYXQtbWVudT5cbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export * from './o-tree.module';
|
|
2
|
+
export * from './o-tree.component';
|
|
3
|
+
export * from './tree-node/tree-node.component';
|
|
4
|
+
export * from './header/index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90cmVlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsZ0JBQWdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL28tdHJlZS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9vLXRyZWUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vdHJlZS1ub2RlL3RyZWUtbm9kZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9oZWFkZXIvaW5kZXgnO1xuXG4iXX0=
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject, of } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class OTreeDao {
|
|
5
|
+
constructor() {
|
|
6
|
+
this._isLoadingResults = false;
|
|
7
|
+
this.dataChange = new BehaviorSubject([]);
|
|
8
|
+
this.sqlTypesChange = new BehaviorSubject({});
|
|
9
|
+
this.rootLevelNodes = [];
|
|
10
|
+
this.flatNodeMap = new Map();
|
|
11
|
+
}
|
|
12
|
+
get data() { return this.dataChange.value; }
|
|
13
|
+
setDataArray(data) {
|
|
14
|
+
this.dataChange.next(data);
|
|
15
|
+
return of(data);
|
|
16
|
+
}
|
|
17
|
+
get isLoadingResults() {
|
|
18
|
+
return this._isLoadingResults;
|
|
19
|
+
}
|
|
20
|
+
set isLoadingResults(val) {
|
|
21
|
+
if (val) {
|
|
22
|
+
this.cleanTimer();
|
|
23
|
+
this.loadingTimer = setTimeout(() => {
|
|
24
|
+
this._isLoadingResults = val;
|
|
25
|
+
}, 500);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
this.cleanTimer();
|
|
29
|
+
this._isLoadingResults = val;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
cleanTimer() {
|
|
33
|
+
if (this.loadingTimer) {
|
|
34
|
+
clearTimeout(this.loadingTimer);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
OTreeDao.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OTreeDao, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
39
|
+
OTreeDao.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OTreeDao });
|
|
40
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OTreeDao, decorators: [{
|
|
41
|
+
type: Injectable
|
|
42
|
+
}] });
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10cmVlLWRhby5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvdHJlZS9vLXRyZWUtZGFvLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFLM0MsTUFBTSxPQUFPLFFBQVE7SUFEckI7UUFFWSxzQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFHN0MsZUFBVSxHQUFHLElBQUksZUFBZSxDQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLG1CQUFjLEdBQUcsSUFBSSxlQUFlLENBQVMsRUFBRSxDQUFDLENBQUM7UUFHakQsbUJBQWMsR0FBb0IsRUFBRSxDQUFDO1FBRXJDLGdCQUFXLEdBQUcsSUFBSSxHQUFHLEVBQXNCLENBQUM7S0E0QjdDO0lBaENDLElBQUksSUFBSSxLQUFZLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBTW5ELFlBQVksQ0FBQyxJQUFnQjtRQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBRUQsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQUksZ0JBQWdCLENBQUMsR0FBWTtRQUMvQixJQUFJLEdBQUcsRUFBRTtZQUNQLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2xDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxHQUFHLENBQUM7WUFDL0IsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ1Q7YUFBTTtZQUNMLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsR0FBRyxDQUFDO1NBQzlCO0lBQ0gsQ0FBQztJQUVTLFVBQVU7UUFDbEIsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JCLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDakM7SUFDSCxDQUFDOztxR0FyQ1UsUUFBUTt5R0FBUixRQUFROzJGQUFSLFFBQVE7a0JBRHBCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIG9mIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IE9UcmVlRmxhdE5vZGUgfSBmcm9tICcuL28tdHJlZS5jb21wb25lbnQnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgT1RyZWVEYW8ge1xuICBwcm90ZWN0ZWQgX2lzTG9hZGluZ1Jlc3VsdHM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJvdGVjdGVkIGxvYWRpbmdUaW1lcjtcbiAgLyoqIFN0cmVhbSB0aGF0IGVtaXRzIHdoZW5ldmVyIHRoZSBkYXRhIGhhcyBiZWVuIG1vZGlmaWVkLiAqL1xuICBkYXRhQ2hhbmdlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnlbXT4oW10pO1xuICBzcWxUeXBlc0NoYW5nZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8b2JqZWN0Pih7fSk7XG4gIGdldCBkYXRhKCk6IGFueVtdIHsgcmV0dXJuIHRoaXMuZGF0YUNoYW5nZS52YWx1ZTsgfVxuXG4gIHJvb3RMZXZlbE5vZGVzOiBPVHJlZUZsYXROb2RlW10gPSBbXTtcbiAgLyoqIE1hcCBmcm9tIGZsYXQgbm9kZSB0byBuZXN0ZWQgbm9kZS4gVGhpcyBoZWxwcyB1cyBmaW5kaW5nIHRoZSBuZXN0ZWQgbm9kZSB0byBiZSBtb2RpZmllZCAqL1xuICBmbGF0Tm9kZU1hcCA9IG5ldyBNYXA8T1RyZWVGbGF0Tm9kZSwgYW55PigpO1xuXG4gIHNldERhdGFBcnJheShkYXRhOiBBcnJheTxhbnk+KSB7XG4gICAgdGhpcy5kYXRhQ2hhbmdlLm5leHQoZGF0YSk7XG4gICAgcmV0dXJuIG9mKGRhdGEpO1xuICB9XG5cbiAgZ2V0IGlzTG9hZGluZ1Jlc3VsdHMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzTG9hZGluZ1Jlc3VsdHM7XG4gIH1cblxuICBzZXQgaXNMb2FkaW5nUmVzdWx0cyh2YWw6IGJvb2xlYW4pIHtcbiAgICBpZiAodmFsKSB7XG4gICAgICB0aGlzLmNsZWFuVGltZXIoKTtcbiAgICAgIHRoaXMubG9hZGluZ1RpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuX2lzTG9hZGluZ1Jlc3VsdHMgPSB2YWw7XG4gICAgICB9LCA1MDApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNsZWFuVGltZXIoKTtcbiAgICAgIHRoaXMuX2lzTG9hZGluZ1Jlc3VsdHMgPSB2YWw7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGNsZWFuVGltZXIoKSB7XG4gICAgaWYgKHRoaXMubG9hZGluZ1RpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5sb2FkaW5nVGltZXIpO1xuICAgIH1cbiAgfVxufVxuIl19
|