info-library 2.10.87 → 2.14.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/controls/alert/alert.component.d.ts +3 -0
- package/controls/autocomplete/autocomplete.component.d.ts +5 -2
- package/controls/big-checkbox/big-checkbox.component.d.ts +3 -0
- package/controls/card/card.component.d.ts +3 -0
- package/controls/card-menu/card-menu.component.d.ts +3 -0
- package/controls/checkbox/checkbox.component.d.ts +3 -0
- package/controls/chips/chips.component.d.ts +3 -0
- package/controls/date/date.component.d.ts +3 -0
- package/controls/date-month/date-month.component.d.ts +3 -0
- package/controls/editor/editor.component.d.ts +3 -0
- package/controls/grid/grid.component.d.ts +5 -0
- package/controls/input/input.component.d.ts +3 -0
- package/controls/input-list/input-list.component.d.ts +3 -0
- package/controls/list-checkbox/list-checkbox.component.d.ts +3 -0
- package/controls/message/message.component.d.ts +3 -0
- package/controls/multi-select/multi-select.component.d.ts +3 -0
- package/controls/paginator/paginator.component.d.ts +3 -0
- package/controls/select/select.component.d.ts +3 -0
- package/controls/timeline/timeline.component.d.ts +3 -0
- package/directives/mask.directive.d.ts +3 -0
- package/directives/unmask.directive.d.ts +3 -0
- package/esm2020/controls/alert/alert.component.mjs +74 -0
- package/esm2020/controls/autocomplete/autocomplete.component.mjs +258 -0
- package/esm2020/controls/big-checkbox/big-checkbox.component.mjs +298 -0
- package/esm2020/controls/card/card.component.mjs +77 -0
- package/esm2020/controls/card-menu/card-menu.component.mjs +145 -0
- package/esm2020/controls/checkbox/checkbox.component.mjs +93 -0
- package/esm2020/controls/chips/chips.component.mjs +113 -0
- package/esm2020/controls/date/date.component.mjs +141 -0
- package/esm2020/controls/date-month/date-month.component.mjs +148 -0
- package/esm2020/controls/editor/editor.component.mjs +135 -0
- package/esm2020/controls/grid/grid.component.mjs +1800 -0
- package/esm2020/controls/input/input.component.mjs +314 -0
- package/esm2020/controls/input-list/input-list.component.mjs +258 -0
- package/esm2020/controls/list-checkbox/list-checkbox.component.mjs +238 -0
- package/esm2020/controls/message/message.component.mjs +50 -0
- package/esm2020/controls/multi-select/multi-select.component.mjs +161 -0
- package/esm2020/controls/paginator/paginator.component.mjs +178 -0
- package/esm2020/controls/select/select.component.mjs +180 -0
- package/esm2020/controls/timeline/timeline.component.mjs +117 -0
- package/esm2020/directives/mask.directive.mjs +125 -0
- package/esm2020/directives/unmask.directive.mjs +28 -0
- package/esm2020/enum/dialog-buttons.enum.mjs +9 -0
- package/esm2020/enum/index.mjs +4 -0
- package/esm2020/enum/modal-action.enum.mjs +12 -0
- package/esm2020/enum/page-action.enum.mjs +10 -0
- package/esm2020/global-config.mjs +4 -0
- package/esm2020/info-library.mjs +5 -0
- package/esm2020/info-library.module.mjs +278 -0
- package/esm2020/layouts/dialog/dialog.component.mjs +188 -0
- package/esm2020/layouts/loading/loading.component.mjs +42 -0
- package/esm2020/layouts/main/main.component.mjs +276 -0
- package/esm2020/layouts/modal/modal.component.mjs +258 -0
- package/esm2020/layouts/pagebar/pagebar.component.mjs +404 -0
- package/esm2020/layouts/sidebar/sidebar.component.mjs +395 -0
- package/esm2020/layouts/topbar/topbar.component.mjs +863 -0
- package/esm2020/layouts/topmenu/topmenu.component.mjs +165 -0
- package/esm2020/model/app-config.model.mjs +14 -0
- package/esm2020/model/data-access.model.mjs +35 -0
- package/esm2020/model/dialog-result.model.mjs +8 -0
- package/esm2020/model/dialog.model.mjs +16 -0
- package/esm2020/model/form-prop.model.mjs +35 -0
- package/esm2020/model/grid-button.model.mjs +21 -0
- package/esm2020/model/index.mjs +15 -0
- package/esm2020/model/last-search.model.mjs +9 -0
- package/esm2020/model/login.model.mjs +9 -0
- package/esm2020/model/method-grid-button.model.mjs +9 -0
- package/esm2020/model/notification.model.mjs +9 -0
- package/esm2020/model/pagebar-buttons.model.mjs +15 -0
- package/esm2020/model/permission.model.mjs +3 -0
- package/esm2020/model/platform.model.mjs +21 -0
- package/esm2020/model/session.model.mjs +8 -0
- package/esm2020/pipe/index.mjs +3 -0
- package/esm2020/pipe/mask.pipe.mjs +34 -0
- package/esm2020/pipe/translate.pipe.mjs +26 -0
- package/esm2020/public_api.mjs +36 -0
- package/esm2020/service/authentication.service.mjs +358 -0
- package/esm2020/service/configuration.service.mjs +59 -0
- package/esm2020/service/data.service.mjs +112 -0
- package/esm2020/service/index.mjs +6 -0
- package/esm2020/service/theme.service.mjs +79 -0
- package/esm2020/service/translate.service.mjs +53 -0
- package/esm2020/utils/utilities.mjs +142 -0
- package/fesm2015/info-library.mjs +9326 -0
- package/fesm2015/info-library.mjs.map +1 -0
- package/fesm2020/info-library.mjs +8474 -0
- package/fesm2020/info-library.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/info-library.module.d.ts +58 -0
- package/layouts/dialog/dialog.component.d.ts +5 -0
- package/layouts/loading/loading.component.d.ts +3 -0
- package/layouts/main/main.component.d.ts +6 -0
- package/layouts/modal/modal.component.d.ts +3 -0
- package/layouts/pagebar/pagebar.component.d.ts +5 -0
- package/layouts/sidebar/sidebar.component.d.ts +4 -1
- package/layouts/topbar/topbar.component.d.ts +4 -1
- package/layouts/topmenu/topmenu.component.d.ts +3 -0
- package/package.json +28 -13
- package/pipe/mask.pipe.d.ts +3 -0
- package/pipe/translate.pipe.d.ts +3 -0
- package/service/authentication.service.d.ts +5 -0
- package/service/configuration.service.d.ts +3 -0
- package/service/data.service.d.ts +3 -0
- package/service/theme.service.d.ts +3 -0
- package/service/translate.service.d.ts +3 -0
- package/utils/utilities.d.ts +3 -0
- package/bundles/info-library.umd.js +0 -9740
- package/bundles/info-library.umd.js.map +0 -1
- package/bundles/info-library.umd.min.js +0 -2
- package/bundles/info-library.umd.min.js.map +0 -1
- package/esm2015/controls/alert/alert.component.js +0 -43
- package/esm2015/controls/autocomplete/autocomplete.component.js +0 -386
- package/esm2015/controls/big-checkbox/big-checkbox.component.js +0 -282
- package/esm2015/controls/card/card.component.js +0 -64
- package/esm2015/controls/card-menu/card-menu.component.js +0 -90
- package/esm2015/controls/checkbox/checkbox.component.js +0 -130
- package/esm2015/controls/chips/chips.component.js +0 -124
- package/esm2015/controls/date/date.component.js +0 -167
- package/esm2015/controls/date-month/date-month.component.js +0 -181
- package/esm2015/controls/editor/editor.component.js +0 -237
- package/esm2015/controls/grid/grid.component.js +0 -1391
- package/esm2015/controls/input/input.component.js +0 -196
- package/esm2015/controls/input-list/input-list.component.js +0 -160
- package/esm2015/controls/list-checkbox/list-checkbox.component.js +0 -151
- package/esm2015/controls/message/message.component.js +0 -47
- package/esm2015/controls/multi-select/multi-select.component.js +0 -213
- package/esm2015/controls/paginator/paginator.component.js +0 -151
- package/esm2015/controls/select/select.component.js +0 -231
- package/esm2015/controls/timeline/timeline.component.js +0 -73
- package/esm2015/directives/mask.directive.js +0 -202
- package/esm2015/directives/unmask.directive.js +0 -51
- package/esm2015/enum/dialog-buttons.enum.js +0 -20
- package/esm2015/enum/index.js +0 -9
- package/esm2015/enum/modal-action.enum.js +0 -26
- package/esm2015/enum/page-action.enum.js +0 -22
- package/esm2015/global-config.js +0 -11
- package/esm2015/info-library.js +0 -27
- package/esm2015/info-library.module.js +0 -174
- package/esm2015/layouts/dialog/dialog.component.js +0 -173
- package/esm2015/layouts/loading/loading.component.js +0 -42
- package/esm2015/layouts/main/main.component.js +0 -312
- package/esm2015/layouts/modal/modal.component.js +0 -232
- package/esm2015/layouts/pagebar/pagebar.component.js +0 -286
- package/esm2015/layouts/sidebar/sidebar.component.js +0 -231
- package/esm2015/layouts/topbar/topbar.component.js +0 -413
- package/esm2015/layouts/topmenu/topmenu.component.js +0 -181
- package/esm2015/model/app-config.model.js +0 -39
- package/esm2015/model/data-access.model.js +0 -65
- package/esm2015/model/dialog-result.model.js +0 -23
- package/esm2015/model/dialog.model.js +0 -47
- package/esm2015/model/form-prop.model.js +0 -61
- package/esm2015/model/grid-button.model.js +0 -62
- package/esm2015/model/index.js +0 -20
- package/esm2015/model/last-search.model.js +0 -24
- package/esm2015/model/login.model.js +0 -27
- package/esm2015/model/method-grid-button.model.js +0 -27
- package/esm2015/model/notification.model.js +0 -34
- package/esm2015/model/pagebar-buttons.model.js +0 -39
- package/esm2015/model/permission.model.js +0 -16
- package/esm2015/model/platform.model.js +0 -56
- package/esm2015/model/session.model.js +0 -53
- package/esm2015/pipe/index.js +0 -8
- package/esm2015/pipe/mask.pipe.js +0 -47
- package/esm2015/pipe/translate.pipe.js +0 -45
- package/esm2015/public_api.js +0 -41
- package/esm2015/service/authentication.service.js +0 -732
- package/esm2015/service/configuration.service.js +0 -107
- package/esm2015/service/data.service.js +0 -292
- package/esm2015/service/index.js +0 -11
- package/esm2015/service/theme.service.js +0 -133
- package/esm2015/service/translate.service.js +0 -105
- package/esm2015/utils/utilities.js +0 -256
- package/fesm2015/info-library.js +0 -8792
- package/fesm2015/info-library.js.map +0 -1
- package/info-library.d.ts +0 -21
- package/info-library.metadata.json +0 -1
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview added by tsickle
|
|
3
|
-
* Generated from: controls/alert/alert.component.ts
|
|
4
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
5
|
-
*/
|
|
6
|
-
import { Component, Input } from "@angular/core";
|
|
7
|
-
export class InfoAlertComponent {
|
|
8
|
-
constructor() {
|
|
9
|
-
this.messages = [];
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* @return {?}
|
|
13
|
-
*/
|
|
14
|
-
onClose() {
|
|
15
|
-
this.messages = [];
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
InfoAlertComponent.decorators = [
|
|
19
|
-
{ type: Component, args: [{
|
|
20
|
-
selector: 'info-alert',
|
|
21
|
-
template: `
|
|
22
|
-
<div *ngIf="messages != [] && messages.length > 0">
|
|
23
|
-
<div class="alert" #alert >
|
|
24
|
-
<h5>{{ 'Atencao' | translate }}</h5>
|
|
25
|
-
<ng-content></ng-content>
|
|
26
|
-
<ul>
|
|
27
|
-
<li *ngFor="let m of messages"><mat-icon>error_outline</mat-icon><label [innerHTML]="m | translate"></label></li>
|
|
28
|
-
</ul>
|
|
29
|
-
<a class="close" (click)="onClose()"><i class="material-icons">clear</i></a>
|
|
30
|
-
</div>
|
|
31
|
-
</div>
|
|
32
|
-
`,
|
|
33
|
-
styles: [":host{bottom:70px;display:block;margin-left:280px;min-width:350px;position:fixed;right:30px;z-index:100}:host:last-child{margin-bottom:0}:host .alert{box-shadow:0 5px 5px 2px rgba(0,0,0,.25);padding:1.04762rem 1.57143rem;position:relative}:host .alert h5{border-bottom:1px solid hsla(0,0%,100%,.1);margin:0 -20px 5px;padding-bottom:10px;text-align:center}:host .alert ul{list-style:none;margin:0;padding:0}:host .alert ul li{border-bottom:1px solid hsla(0,0%,100%,.1);padding:7px 5px}:host .alert ul li:last-child{border-bottom:none}:host .alert .close{color:#fff;font-size:20px;line-height:1;position:absolute;right:10px;top:15px;transition:background .2s ease-in-out,color .2s ease-in-out}:host .alert .close:hover{color:#ddd;cursor:pointer}:host .alert .close .material-icons{color:inherit;font-size:inherit;margin:0;vertical-align:top}:host .alert /deep/ .material-icons{color:main-color(A100);margin:0 1.57143rem 0 0;vertical-align:top}"]
|
|
34
|
-
}] }
|
|
35
|
-
];
|
|
36
|
-
InfoAlertComponent.propDecorators = {
|
|
37
|
-
messages: [{ type: Input }]
|
|
38
|
-
};
|
|
39
|
-
if (false) {
|
|
40
|
-
/** @type {?} */
|
|
41
|
-
InfoAlertComponent.prototype.messages;
|
|
42
|
-
}
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkY6L2Rldi9JbmZvIFV0aWxpdGllcy9JbmZvIExpYnJhcnkgLSBBbmd1bGFyL3Byb2plY3RzL2luZm8tbGlicmFyeS9zcmMvIiwic291cmNlcyI6WyJjb250cm9scy9hbGVydC9hbGVydC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQWtCakQsTUFBTSxPQUFPLGtCQUFrQjtJQWhCL0I7UUFrQmEsYUFBUSxHQUFhLEVBQUUsQ0FBQztJQUtyQyxDQUFDOzs7O0lBSEcsT0FBTztRQUNILElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7OztZQXRCSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLFlBQVk7Z0JBQ3RCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7S0FXVDs7YUFFSjs7O3VCQUdJLEtBQUs7Ozs7SUFBTixzQ0FBaUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdpbmZvLWFsZXJ0JyxcclxuICAgIHRlbXBsYXRlOiBgXHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIm1lc3NhZ2VzICE9IFtdICYmIG1lc3NhZ2VzLmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFsZXJ0XCIgI2FsZXJ0ID5cclxuICAgICAgICAgICAgICAgIDxoNT57eyAnQXRlbmNhbycgfCB0cmFuc2xhdGUgfX08L2g1PlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgbSBvZiBtZXNzYWdlc1wiPjxtYXQtaWNvbj5lcnJvcl9vdXRsaW5lPC9tYXQtaWNvbj48bGFiZWwgW2lubmVySFRNTF09XCJtIHwgdHJhbnNsYXRlXCI+PC9sYWJlbD48L2xpPlxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiY2xvc2VcIiAoY2xpY2spPVwib25DbG9zZSgpXCI+PGkgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPmNsZWFyPC9pPjwvYT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICBgLFxyXG4gICAgc3R5bGVVcmxzOiBbJ2FsZXJ0LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEluZm9BbGVydENvbXBvbmVudCB7XHJcblxyXG4gICAgQElucHV0KCkgbWVzc2FnZXM6IHN0cmluZ1tdID0gW107XHJcblxyXG4gICAgb25DbG9zZSgpIHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VzID0gW107XHJcbiAgICB9XHJcbn0iXX0=
|
|
@@ -1,386 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview added by tsickle
|
|
3
|
-
* Generated from: controls/autocomplete/autocomplete.component.ts
|
|
4
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
5
|
-
*/
|
|
6
|
-
import { Component, Input, forwardRef, Output, EventEmitter } from "@angular/core";
|
|
7
|
-
import { FormControl, NG_VALUE_ACCESSOR } from "@angular/forms";
|
|
8
|
-
import { debounceTime, switchMap, distinctUntilChanged } from 'rxjs/operators';
|
|
9
|
-
import { InfoDataService } from "../../service/data.service";
|
|
10
|
-
import { Observable } from "rxjs";
|
|
11
|
-
export class InfoAutoCompleteComponent {
|
|
12
|
-
/**
|
|
13
|
-
* @param {?} _dataAcess
|
|
14
|
-
*/
|
|
15
|
-
constructor(_dataAcess) {
|
|
16
|
-
this._dataAcess = _dataAcess;
|
|
17
|
-
this.control = new FormControl();
|
|
18
|
-
this.placeholder = '';
|
|
19
|
-
this.name = '';
|
|
20
|
-
this.required = false;
|
|
21
|
-
this.selectfirst = false;
|
|
22
|
-
this.disablednoregisters = false;
|
|
23
|
-
this.getdataonchange = false;
|
|
24
|
-
this.getdataonchangetime = 500;
|
|
25
|
-
this.api = null;
|
|
26
|
-
this.method = 'getchavevalor';
|
|
27
|
-
this.maxlist = 10;
|
|
28
|
-
this.startwith = false;
|
|
29
|
-
this.minchar = 1;
|
|
30
|
-
this.onselecteditem = new EventEmitter();
|
|
31
|
-
this.selectedValue = null;
|
|
32
|
-
this.initialized = false;
|
|
33
|
-
this._loading = false;
|
|
34
|
-
this._params = null;
|
|
35
|
-
this._disabled = null;
|
|
36
|
-
this._data = [];
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* @return {?}
|
|
40
|
-
*/
|
|
41
|
-
get loading() {
|
|
42
|
-
return this._loading;
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* @param {?} value
|
|
46
|
-
* @return {?}
|
|
47
|
-
*/
|
|
48
|
-
set loading(value) {
|
|
49
|
-
this._loading = value;
|
|
50
|
-
if (this._disabled == null)
|
|
51
|
-
this._disabled = false;
|
|
52
|
-
else if (this._disabled.toString() == '')
|
|
53
|
-
this._disabled = true;
|
|
54
|
-
if (this._disabled == false)
|
|
55
|
-
this.setDisabledState(this.loading);
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* @return {?}
|
|
59
|
-
*/
|
|
60
|
-
get params() {
|
|
61
|
-
return this._params;
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* @param {?} value
|
|
65
|
-
* @return {?}
|
|
66
|
-
*/
|
|
67
|
-
set params(value) {
|
|
68
|
-
this._params = value;
|
|
69
|
-
if (this.initialized)
|
|
70
|
-
this.getData().subscribe((/**
|
|
71
|
-
* @param {?} a
|
|
72
|
-
* @return {?}
|
|
73
|
-
*/
|
|
74
|
-
a => { this.data = a.data; this.loading = false; }));
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* @param {?} value
|
|
78
|
-
* @return {?}
|
|
79
|
-
*/
|
|
80
|
-
set disabled(value) {
|
|
81
|
-
if (this._disabled == null)
|
|
82
|
-
this._disabled = value;
|
|
83
|
-
if (value)
|
|
84
|
-
this.control.disable();
|
|
85
|
-
else
|
|
86
|
-
this.control.enable();
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* @return {?}
|
|
90
|
-
*/
|
|
91
|
-
get data() {
|
|
92
|
-
return this._data;
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* @param {?} value
|
|
96
|
-
* @return {?}
|
|
97
|
-
*/
|
|
98
|
-
set data(value) {
|
|
99
|
-
this._data = value;
|
|
100
|
-
if (this.getdataonchange)
|
|
101
|
-
return;
|
|
102
|
-
setTimeout((/**
|
|
103
|
-
* @return {?}
|
|
104
|
-
*/
|
|
105
|
-
() => {
|
|
106
|
-
if (this.selectedValue != null)
|
|
107
|
-
if ((this._data == null || (this._data != null && this._data.length == 0)) && !this.loading) {
|
|
108
|
-
this.writeValue(null);
|
|
109
|
-
this.selectedValue = null;
|
|
110
|
-
}
|
|
111
|
-
else
|
|
112
|
-
this.writeValue(this.selectedValue.Id == null ? this.selectedValue : this.selectedValue.Id);
|
|
113
|
-
else if (this.selectfirst && this.data != null && this.data.length > 0)
|
|
114
|
-
this.writeValue(this.data[0].Id);
|
|
115
|
-
if (this.disablednoregisters)
|
|
116
|
-
this.setDisabledState((this.data == null || this.data.length == 0));
|
|
117
|
-
}), 1000);
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* @return {?}
|
|
121
|
-
*/
|
|
122
|
-
ngOnInit() {
|
|
123
|
-
if (this.minchar == null || this.minchar < 0)
|
|
124
|
-
this.minchar = 1;
|
|
125
|
-
this.name = this.placeholder.replace(/ /g, '') + Math.floor(Math.random() * 1000).toString();
|
|
126
|
-
if (!this.getdataonchange) {
|
|
127
|
-
this.getData().subscribe((/**
|
|
128
|
-
* @param {?} a
|
|
129
|
-
* @return {?}
|
|
130
|
-
*/
|
|
131
|
-
a => { this.data = a.data; this.loading = false; }));
|
|
132
|
-
this.control.valueChanges.subscribe((/**
|
|
133
|
-
* @param {?} value
|
|
134
|
-
* @return {?}
|
|
135
|
-
*/
|
|
136
|
-
value => { this.options = this.filter(value); }));
|
|
137
|
-
}
|
|
138
|
-
else {
|
|
139
|
-
this.control.valueChanges.pipe(debounceTime(this.getdataonchangetime), distinctUntilChanged(), switchMap((/**
|
|
140
|
-
* @param {?} value
|
|
141
|
-
* @return {?}
|
|
142
|
-
*/
|
|
143
|
-
value => this.getData(value)))).subscribe((/**
|
|
144
|
-
* @param {?} a
|
|
145
|
-
* @return {?}
|
|
146
|
-
*/
|
|
147
|
-
a => this.data = this.options = a.data));
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
/**
|
|
151
|
-
* @param {?} value
|
|
152
|
-
* @return {?}
|
|
153
|
-
*/
|
|
154
|
-
filter(value) {
|
|
155
|
-
if (value == null || value.length < this.minchar)
|
|
156
|
-
return [];
|
|
157
|
-
/** @type {?} */
|
|
158
|
-
let filterValue = value.Nome == null ? value.toString().toLowerCase() : value.Nome;
|
|
159
|
-
if (this.startwith)
|
|
160
|
-
return this.data.filter((/**
|
|
161
|
-
* @param {?} option
|
|
162
|
-
* @return {?}
|
|
163
|
-
*/
|
|
164
|
-
option => option.Nome.toLowerCase().indexOf(filterValue) === 0 || (option.Aux == null ? "" : option.Aux.toLowerCase() == filterValue))).slice(0, this.maxlist);
|
|
165
|
-
else
|
|
166
|
-
return this.data.filter((/**
|
|
167
|
-
* @param {?} option
|
|
168
|
-
* @return {?}
|
|
169
|
-
*/
|
|
170
|
-
option => option.Nome.toLowerCase().indexOf(filterValue) > -1 || (option.Aux == null ? "" : option.Aux.toLowerCase().indexOf(filterValue) > -1))).slice(0, this.maxlist);
|
|
171
|
-
}
|
|
172
|
-
/**
|
|
173
|
-
* @param {?=} value
|
|
174
|
-
* @return {?}
|
|
175
|
-
*/
|
|
176
|
-
getData(value = null) {
|
|
177
|
-
this.initialized = true;
|
|
178
|
-
if (this.api == null || this.api == '')
|
|
179
|
-
return new Observable();
|
|
180
|
-
this.loading = !this.getdataonchange;
|
|
181
|
-
this.data = [];
|
|
182
|
-
/** @type {?} */
|
|
183
|
-
let parameters = this.params || '';
|
|
184
|
-
if (this.getdataonchange) {
|
|
185
|
-
if (value == null || value == '')
|
|
186
|
-
return new Observable();
|
|
187
|
-
if (parameters != null && parameters != '')
|
|
188
|
-
parameters += '&';
|
|
189
|
-
parameters += `nome=${value.Nome == null ? value.toString().toLowerCase() : value.Nome}&take=${this.maxlist}`;
|
|
190
|
-
/** @type {?} */
|
|
191
|
-
let model = parameters.split("&").map((/**
|
|
192
|
-
* @param {?} c
|
|
193
|
-
* @return {?}
|
|
194
|
-
*/
|
|
195
|
-
c => ({ [c.split("=")[0].charAt(0).toUpperCase() + c.split("=")[0].substring(1)]: c.split("=")[1] }))).reduce((/**
|
|
196
|
-
* @param {?} a
|
|
197
|
-
* @param {?} b
|
|
198
|
-
* @return {?}
|
|
199
|
-
*/
|
|
200
|
-
(a, b) => (Object.assign(Object.assign({}, a), b))));
|
|
201
|
-
return this._dataAcess.post(this.api, model, this.method);
|
|
202
|
-
}
|
|
203
|
-
return this._dataAcess.get(this.api, this.method, parameters);
|
|
204
|
-
}
|
|
205
|
-
/**
|
|
206
|
-
* @param {?} value
|
|
207
|
-
* @return {?}
|
|
208
|
-
*/
|
|
209
|
-
onBlur(value) {
|
|
210
|
-
setTimeout((/**
|
|
211
|
-
* @return {?}
|
|
212
|
-
*/
|
|
213
|
-
() => {
|
|
214
|
-
if (this.selectedValue != null && this.selectedValue.Id != null)
|
|
215
|
-
return;
|
|
216
|
-
if (!value && this.selectedValue != null && this.selectedValue.trim() == '')
|
|
217
|
-
this.writeValue(null);
|
|
218
|
-
else {
|
|
219
|
-
/** @type {?} */
|
|
220
|
-
let first = this.filter(value);
|
|
221
|
-
if (first != null && first.length > 0)
|
|
222
|
-
this.writeValue(first[0].Id);
|
|
223
|
-
else
|
|
224
|
-
this.writeValue(null);
|
|
225
|
-
}
|
|
226
|
-
}), 300);
|
|
227
|
-
}
|
|
228
|
-
/**
|
|
229
|
-
* @param {?} value
|
|
230
|
-
* @return {?}
|
|
231
|
-
*/
|
|
232
|
-
onFocus(value) {
|
|
233
|
-
if (this.minchar != null && this.minchar == 0 && (value == null || value == ''))
|
|
234
|
-
setTimeout((/**
|
|
235
|
-
* @return {?}
|
|
236
|
-
*/
|
|
237
|
-
() => { this.control.setValue(''); }), 200);
|
|
238
|
-
}
|
|
239
|
-
/**
|
|
240
|
-
* @param {?} model
|
|
241
|
-
* @return {?}
|
|
242
|
-
*/
|
|
243
|
-
displayFn(model) {
|
|
244
|
-
if (model == null || model.Nome == null)
|
|
245
|
-
return '';
|
|
246
|
-
/** @type {?} */
|
|
247
|
-
let indexSmall = model.Nome.indexOf('<small');
|
|
248
|
-
return indexSmall > -1 ? model.Nome.substring(0, indexSmall).trim() : model.Nome;
|
|
249
|
-
}
|
|
250
|
-
/**
|
|
251
|
-
* @param {?} value
|
|
252
|
-
* @return {?}
|
|
253
|
-
*/
|
|
254
|
-
writeValue(value) {
|
|
255
|
-
/** @type {?} */
|
|
256
|
-
let obj = this.data.find((/**
|
|
257
|
-
* @param {?} r
|
|
258
|
-
* @return {?}
|
|
259
|
-
*/
|
|
260
|
-
r => r.Id == value));
|
|
261
|
-
this.control.setValue(obj);
|
|
262
|
-
if (value != null && obj == null)
|
|
263
|
-
this.selectedValue = value;
|
|
264
|
-
if (this.onChange != null)
|
|
265
|
-
this.onChange(value);
|
|
266
|
-
if (this.onselecteditem != null)
|
|
267
|
-
this.onselecteditem.emit(this.data == null ? null : this.data.find((/**
|
|
268
|
-
* @param {?} r
|
|
269
|
-
* @return {?}
|
|
270
|
-
*/
|
|
271
|
-
r => r.Id == value)));
|
|
272
|
-
}
|
|
273
|
-
/**
|
|
274
|
-
* @param {?} fn
|
|
275
|
-
* @return {?}
|
|
276
|
-
*/
|
|
277
|
-
registerOnChange(fn) {
|
|
278
|
-
this.onChange = fn;
|
|
279
|
-
}
|
|
280
|
-
/**
|
|
281
|
-
* @param {?} fn
|
|
282
|
-
* @return {?}
|
|
283
|
-
*/
|
|
284
|
-
registerOnTouched(fn) {
|
|
285
|
-
this.onTouched = fn;
|
|
286
|
-
}
|
|
287
|
-
/**
|
|
288
|
-
* @param {?} isDisabled
|
|
289
|
-
* @return {?}
|
|
290
|
-
*/
|
|
291
|
-
setDisabledState(isDisabled) {
|
|
292
|
-
this.disabled = this.disablednoregisters && (this.data == null || this.data.length == 0) ? true : isDisabled;
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
InfoAutoCompleteComponent.decorators = [
|
|
296
|
-
{ type: Component, args: [{
|
|
297
|
-
selector: 'info-autocomplete',
|
|
298
|
-
template: "<mat-form-field>\r\n <input matInput type=\"text\" [(ngModel)]=\"selectedValue\" [placeholder]=\"placeholder | translate\" [formControl]=\"control\" [matAutocomplete]=\"auto\" \r\n [required]=\"required\" (blur)=\"onBlur($event.target.value)\" (focus)=\"onFocus($event.target.value)\" #inputAuto>\r\n\r\n <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"displayFn\">\r\n <mat-option *ngFor=\"let option of options\" [value]=\"option\" (onSelectionChange)=\"writeValue(option.Id)\" [innerHTML]=\"option.Nome\" >\r\n </mat-option>\r\n </mat-autocomplete>\r\n \r\n <mat-icon matSuffix style=\"color: #aaa\">spellcheck</mat-icon>\r\n</mat-form-field>\r\n\r\n<section class=\"select-loading\">\r\n <mat-progress-bar color=\"primary\" mode=\"indeterminate\" *ngIf=\"loading\"></mat-progress-bar>\r\n</section>",
|
|
299
|
-
providers: [{
|
|
300
|
-
provide: NG_VALUE_ACCESSOR,
|
|
301
|
-
useExisting: forwardRef((/**
|
|
302
|
-
* @return {?}
|
|
303
|
-
*/
|
|
304
|
-
() => InfoAutoCompleteComponent)),
|
|
305
|
-
multi: true
|
|
306
|
-
}],
|
|
307
|
-
styles: [":host .select-loading{bottom:15px;height:1px;opacity:.3;position:relative}:host .select-loading .mat-progress-bar{height:1px;margin:0}:host mat-option small{font-style:italic;margin-left:10px}"]
|
|
308
|
-
}] }
|
|
309
|
-
];
|
|
310
|
-
/** @nocollapse */
|
|
311
|
-
InfoAutoCompleteComponent.ctorParameters = () => [
|
|
312
|
-
{ type: InfoDataService }
|
|
313
|
-
];
|
|
314
|
-
InfoAutoCompleteComponent.propDecorators = {
|
|
315
|
-
placeholder: [{ type: Input }],
|
|
316
|
-
name: [{ type: Input }],
|
|
317
|
-
required: [{ type: Input }],
|
|
318
|
-
selectfirst: [{ type: Input }],
|
|
319
|
-
disablednoregisters: [{ type: Input }],
|
|
320
|
-
getdataonchange: [{ type: Input }],
|
|
321
|
-
getdataonchangetime: [{ type: Input }],
|
|
322
|
-
api: [{ type: Input }],
|
|
323
|
-
method: [{ type: Input }],
|
|
324
|
-
maxlist: [{ type: Input }],
|
|
325
|
-
startwith: [{ type: Input }],
|
|
326
|
-
minchar: [{ type: Input }],
|
|
327
|
-
onselecteditem: [{ type: Output }],
|
|
328
|
-
loading: [{ type: Input }],
|
|
329
|
-
params: [{ type: Input }],
|
|
330
|
-
disabled: [{ type: Input }],
|
|
331
|
-
data: [{ type: Input }]
|
|
332
|
-
};
|
|
333
|
-
if (false) {
|
|
334
|
-
/** @type {?} */
|
|
335
|
-
InfoAutoCompleteComponent.prototype.control;
|
|
336
|
-
/** @type {?} */
|
|
337
|
-
InfoAutoCompleteComponent.prototype.placeholder;
|
|
338
|
-
/** @type {?} */
|
|
339
|
-
InfoAutoCompleteComponent.prototype.name;
|
|
340
|
-
/** @type {?} */
|
|
341
|
-
InfoAutoCompleteComponent.prototype.required;
|
|
342
|
-
/** @type {?} */
|
|
343
|
-
InfoAutoCompleteComponent.prototype.selectfirst;
|
|
344
|
-
/** @type {?} */
|
|
345
|
-
InfoAutoCompleteComponent.prototype.disablednoregisters;
|
|
346
|
-
/** @type {?} */
|
|
347
|
-
InfoAutoCompleteComponent.prototype.getdataonchange;
|
|
348
|
-
/** @type {?} */
|
|
349
|
-
InfoAutoCompleteComponent.prototype.getdataonchangetime;
|
|
350
|
-
/** @type {?} */
|
|
351
|
-
InfoAutoCompleteComponent.prototype.api;
|
|
352
|
-
/** @type {?} */
|
|
353
|
-
InfoAutoCompleteComponent.prototype.method;
|
|
354
|
-
/** @type {?} */
|
|
355
|
-
InfoAutoCompleteComponent.prototype.maxlist;
|
|
356
|
-
/** @type {?} */
|
|
357
|
-
InfoAutoCompleteComponent.prototype.startwith;
|
|
358
|
-
/** @type {?} */
|
|
359
|
-
InfoAutoCompleteComponent.prototype.minchar;
|
|
360
|
-
/** @type {?} */
|
|
361
|
-
InfoAutoCompleteComponent.prototype.onselecteditem;
|
|
362
|
-
/** @type {?} */
|
|
363
|
-
InfoAutoCompleteComponent.prototype.options;
|
|
364
|
-
/** @type {?} */
|
|
365
|
-
InfoAutoCompleteComponent.prototype.selectedValue;
|
|
366
|
-
/** @type {?} */
|
|
367
|
-
InfoAutoCompleteComponent.prototype.onChange;
|
|
368
|
-
/** @type {?} */
|
|
369
|
-
InfoAutoCompleteComponent.prototype.onTouched;
|
|
370
|
-
/** @type {?} */
|
|
371
|
-
InfoAutoCompleteComponent.prototype.initialized;
|
|
372
|
-
/** @type {?} */
|
|
373
|
-
InfoAutoCompleteComponent.prototype._loading;
|
|
374
|
-
/** @type {?} */
|
|
375
|
-
InfoAutoCompleteComponent.prototype._params;
|
|
376
|
-
/** @type {?} */
|
|
377
|
-
InfoAutoCompleteComponent.prototype._disabled;
|
|
378
|
-
/** @type {?} */
|
|
379
|
-
InfoAutoCompleteComponent.prototype._data;
|
|
380
|
-
/**
|
|
381
|
-
* @type {?}
|
|
382
|
-
* @private
|
|
383
|
-
*/
|
|
384
|
-
InfoAutoCompleteComponent.prototype._dataAcess;
|
|
385
|
-
}
|
|
386
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJGOi9kZXYvSW5mbyBVdGlsaXRpZXMvSW5mbyBMaWJyYXJ5IC0gQW5ndWxhci9wcm9qZWN0cy9pbmZvLWxpYnJhcnkvc3JjLyIsInNvdXJjZXMiOlsiY29udHJvbHMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxVQUFVLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsV0FBVyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFhbEMsTUFBTSxPQUFPLHlCQUF5Qjs7OztJQWtHbEMsWUFBb0IsVUFBMkI7UUFBM0IsZUFBVSxHQUFWLFVBQVUsQ0FBaUI7UUFqRy9DLFlBQU8sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBRW5CLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLFNBQUksR0FBRyxFQUFFLENBQUM7UUFDVixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLHdCQUFtQixHQUFHLEtBQUssQ0FBQztRQUM1QixvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUN4Qix3QkFBbUIsR0FBRyxHQUFHLENBQUM7UUFDMUIsUUFBRyxHQUFRLElBQUksQ0FBQztRQUNoQixXQUFNLEdBQUcsZUFBZSxDQUFDO1FBQ3pCLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFDYixjQUFTLEdBQUcs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RUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxTQUFTLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQzs7Z0JBRTFHLEtBQUssR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUc7Ozs7WUFBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUMsQ0FBQyxNQUFNOzs7OztZQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsaUNBQUssQ0FBQyxHQUFLLENBQUMsRUFBRSxFQUFDO1lBQzNLLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzdEO1FBRUQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDbEUsQ0FBQzs7Ozs7SUFFRCxNQUFNLENBQUMsS0FBSztRQUNSLFVBQVU7OztRQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLElBQUksSUFBSTtnQkFDM0QsT0FBTztZQUVYLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FB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QyxVQUFVLENBQUM7SUFDakgsQ0FBQzs7O1lBeE5KLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsbUJBQW1CO2dCQUM3QixvMkJBQTBDO2dCQUUxQyxTQUFTLEVBQUUsQ0FBQzt3QkFDUixPQUFPLEVBQUUsaUJBQWlCO3dCQUMxQixXQUFXLEVBQUUsVUFBVTs7O3dCQUFDLEdBQUcsRUFBRSxDQUFDLHlCQUF5QixFQUFDO3dCQUN4RCxLQUFLLEVBQUUsSUFBSTtxQkFDZCxDQUFDOzthQUNMOzs7O1lBYlEsZUFBZTs7OzBCQWlCbkIsS0FBSzttQkFDTCxLQUFLO3VCQUNMLEtBQUs7MEJBQ0wsS0FBSztrQ0FDTCxLQUFLOzhCQUNMLEtBQUs7a0NBQ0wsS0FBSztrQkFDTCxLQUFLO3FCQUNMLEtBQUs7c0JBQ0wsS0FBSzt3QkFDTCxLQUFLO3NCQUNMLEtBQUs7NkJBRUwsTUFBTTtzQkFXTixLQUFLO3FCQW1CTCxLQUFLO3VCQWFMLEtBQUs7bUJBWUwsS0FBSzs7OztJQXRFTiw0Q0FBNEI7O0lBRTVCLGdEQUEwQjs7SUFDMUIseUNBQW1COztJQUNuQiw2Q0FBMEI7O0lBQzFCLGdEQUE2Qjs7SUFDN0Isd0RBQXFDOztJQUNyQyxvREFBaUM7O0lBQ2pDLHdEQUFtQzs7SUFDbkMsd0NBQXlCOztJQUN6QiwyQ0FBa0M7O0lBQ2xDLDRDQUFzQjs7SUFDdEIsOENBQTJCOztJQUMzQiw0Q0FBcUI7O0lBRXJCLG1EQUE4Qzs7SUFFOUMsNENBQWU7O0lBQ2Ysa0RBQTBCOztJQUUxQiw2Q0FBYzs7SUFDZCw4Q0FBZTs7SUFFZixnREFBb0I7O0lBRXBCLDZDQUEwQjs7SUFtQjFCLDRDQUF1Qjs7SUFhdkIsOENBQTBCOztJQVkxQiwwQ0FBZ0I7Ozs7O0lBNEJKLCtDQUFtQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgZm9yd2FyZFJlZiwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgc3dpdGNoTWFwLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgSW5mb0RhdGFTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2UvZGF0YS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBJbmZvRGF0YUFjY2Vzc01vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2luZm8tYXV0b2NvbXBsZXRlJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2F1dG9jb21wbGV0ZS5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgcHJvdmlkZXJzOiBbe1xyXG4gICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEluZm9BdXRvQ29tcGxldGVDb21wb25lbnQpLFxyXG4gICAgICAgIG11bHRpOiB0cnVlXHJcbiAgICB9XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5mb0F1dG9Db21wbGV0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG4gICAgY29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xyXG4gICAgXHJcbiAgICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICcnO1xyXG4gICAgQElucHV0KCkgbmFtZSA9ICcnO1xyXG4gICAgQElucHV0KCkgcmVxdWlyZWQgPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIHNlbGVjdGZpcnN0ID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBkaXNhYmxlZG5vcmVnaXN0ZXJzID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBnZXRkYXRhb25jaGFuZ2UgPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIGdldGRhdGFvbmNoYW5nZXRpbWUgPSA1MDA7XHJcbiAgICBASW5wdXQoKSBhcGk6IGFueSA9IG51bGw7XHJcbiAgICBASW5wdXQoKSBtZXRob2QgPSAnZ2V0Y2hhdmV2YWxvcic7XHJcbiAgICBASW5wdXQoKSBtYXhsaXN0ID0gMTA7XHJcbiAgICBASW5wdXQoKSBzdGFydHdpdGggPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIG1pbmNoYXIgPSAxO1xyXG5cclxuICAgIEBPdXRwdXQoKSBvbnNlbGVjdGVkaXRlbSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgICBvcHRpb25zOiBhbnlbXTtcclxuICAgIHNlbGVjdGVkVmFsdWU6IGFueSA9IG51bGw7XHJcblxyXG4gICAgb25DaGFuZ2U6IGFueTtcclxuICAgIG9uVG91Y2hlZDogYW55O1xyXG4gICAgXHJcbiAgICBpbml0aWFsaXplZCA9IGZhbHNlO1xyXG5cclxuICAgIF9sb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IGxvYWRpbmcoKXtcclxuICAgICAgICByZXR1cm4gdGhpcy5fbG9hZGluZztcclxuICAgIH1cclxuXHJcbiAgICBzZXQgbG9hZGluZyh2YWx1ZSl7XHJcbiAgICAgICAgdGhpcy5fbG9hZGluZyA9IHZhbHVlO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmICh0aGlzLl9kaXNhYmxlZCA9PSBudWxsKVxyXG4gICAgICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IGZhbHNlO1xyXG5cclxuICAgICAgICBlbHNlIGlmICh0aGlzLl9kaXNhYmxlZC50b1N0cmluZygpID09ICcnKVxyXG4gICAgICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IHRydWU7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9kaXNhYmxlZCA9PSBmYWxzZSlcclxuICAgICAgICAgICAgdGhpcy5zZXREaXNhYmxlZFN0YXRlKHRoaXMubG9hZGluZyk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIF9wYXJhbXM6IHN0cmluZyA9IG51bGw7XHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IHBhcmFtcygpe1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9wYXJhbXM7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IHBhcmFtcyh2YWx1ZSl7XHJcbiAgICAgICAgdGhpcy5fcGFyYW1zID0gdmFsdWU7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKVxyXG4gICAgICAgICAgICB0aGlzLmdldERhdGEoKS5zdWJzY3JpYmUoYSA9PiB7IHRoaXMuZGF0YSA9IGEuZGF0YTsgdGhpcy5sb2FkaW5nID0gZmFsc2U7IH0pO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBfZGlzYWJsZWQ6IGJvb2xlYW4gPSBudWxsO1xyXG4gICAgQElucHV0KClcclxuICAgIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikgeyAgICAgICAgIFxyXG4gICAgICAgIGlmICh0aGlzLl9kaXNhYmxlZCA9PSBudWxsKVxyXG4gICAgICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IHZhbHVlO1xyXG5cclxuICAgICAgICBpZiAodmFsdWUpXHJcbiAgICAgICAgICAgIHRoaXMuY29udHJvbC5kaXNhYmxlKCk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB0aGlzLmNvbnRyb2wuZW5hYmxlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgX2RhdGE6IGFueSA9IFtdO1xyXG4gICAgQElucHV0KClcclxuICAgIGdldCBkYXRhKCl7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGE7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IGRhdGEodmFsdWUpe1xyXG4gICAgICAgIHRoaXMuX2RhdGEgPSB2YWx1ZTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZ2V0ZGF0YW9uY2hhbmdlKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFZhbHVlICE9IG51bGwpXHJcbiAgICAgICAgICAgICAgICBpZiAoKHRoaXMuX2RhdGEgPT0gbnVsbCB8fCAodGhpcy5fZGF0YSAhPSBudWxsICYmIHRoaXMuX2RhdGEubGVuZ3RoID09IDApKSAmJiAhdGhpcy5sb2FkaW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53cml0ZVZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2VcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLndyaXRlVmFsdWUodGhpcy5zZWxlY3RlZFZhbHVlLklkID09IG51bGwgPyB0aGlzLnNlbGVjdGVkVmFsdWUgOiB0aGlzLnNlbGVjdGVkVmFsdWUuSWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLnNlbGVjdGZpcnN0ICYmIHRoaXMuZGF0YSAhPSBudWxsICYmIHRoaXMuZGF0YS5sZW5ndGggPiAwKVxyXG4gICAgICAgICAgICAgICAgdGhpcy53cml0ZVZhbHVlKHRoaXMuZGF0YVswXS5JZCk7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5kaXNhYmxlZG5vcmVnaXN0ZXJzKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXREaXNhYmxlZFN0YXRlKCh0aGlzLmRhdGEgPT0gbnVsbCB8fCB0aGlzLmRhdGEubGVuZ3RoID09IDApKTtcclxuICAgICAgICB9LCAxMDAwKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9kYXRhQWNlc3M6IEluZm9EYXRhU2VydmljZSkgeyB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubWluY2hhciA9PSBudWxsIHx8IHRoaXMubWluY2hhciA8IDApIHRoaXMubWluY2hhciA9IDE7XHJcbiAgICAgICAgdGhpcy5uYW1lID0gdGhpcy5wbGFjZWhvbGRlci5yZXBsYWNlKC8gL2csICcnKSArIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDEwMDApLnRvU3RyaW5nKCk7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5nZXRkYXRhb25jaGFuZ2UpIHtcclxuICAgICAgICAgICAgdGhpcy5nZXREYXRhKCkuc3Vic2NyaWJlKGEgPT4geyB0aGlzLmRhdGEgPSBhLmRhdGE7IHRoaXMubG9hZGluZyA9IGZhbHNlOyB9KTtcclxuICAgICAgICAgICAgdGhpcy5jb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsdWUgPT4geyB0aGlzLm9wdGlvbnMgPSB0aGlzLmZpbHRlcih2YWx1ZSl9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUodGhpcy5nZXRkYXRhb25jaGFuZ2V0aW1lKSwgXHJcbiAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxyXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKHZhbHVlID0+IHRoaXMuZ2V0RGF0YSh2YWx1ZSkpXHJcbiAgICAgICAgICAgICkuc3Vic2NyaWJlKGEgPT4gdGhpcy5kYXRhID0gdGhpcy5vcHRpb25zID0gYS5kYXRhKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZmlsdGVyKHZhbHVlOiBhbnkpOiBhbnlbXSB7XHJcbiAgICAgICAgaWYgKHZhbHVlID09IG51bGwgfHwgdmFsdWUubGVuZ3RoIDwgdGhpcy5taW5jaGFyKSByZXR1cm4gW107XHJcbiAgICAgICAgbGV0IGZpbHRlclZhbHVlID0gdmFsdWUuTm9tZSA9PSBudWxsID8gdmFsdWUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpIDogdmFsdWUuTm9tZTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc3RhcnR3aXRoKVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhLmZpbHRlcihvcHRpb24gPT4gb3B0aW9uLk5vbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKGZpbHRlclZhbHVlKSA9PT0gMCB8fCAob3B0aW9uLkF1eCA9PSBudWxsID8gXCJcIiA6IG9wdGlvbi5BdXgudG9Mb3dlckNhc2UoKSA9PSBmaWx0ZXJWYWx1ZSkpLnNsaWNlKDAsIHRoaXMubWF4bGlzdCk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhLmZpbHRlcihvcHRpb24gPT4gb3B0aW9uLk5vbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKGZpbHRlclZhbHVlKSA+IC0xIHx8IChvcHRpb24uQXV4ID09IG51bGwgPyBcIlwiIDogb3B0aW9uLkF1eC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoZmlsdGVyVmFsdWUpID4gLTEpKS5zbGljZSgwLCB0aGlzLm1heGxpc3QpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldERhdGEodmFsdWU6IGFueSA9IG51bGwpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5hcGkgPT0gbnVsbCB8fCB0aGlzLmFwaSA9PSAnJylcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPEluZm9EYXRhQWNjZXNzTW9kZWw+KCk7XHJcblxyXG4gICAgICAgIHRoaXMubG9hZGluZyA9ICF0aGlzLmdldGRhdGFvbmNoYW5nZTtcclxuICAgICAgICB0aGlzLmRhdGEgPSBbXTtcclxuICAgICAgICBsZXQgcGFyYW1ldGVycyA9IHRoaXMucGFyYW1zIHx8ICcnO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5nZXRkYXRhb25jaGFuZ2UpIHtcclxuICAgICAgICAgICAgaWYgKHZhbHVlID09IG51bGwgfHwgdmFsdWUgPT0gJycpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8SW5mb0RhdGFBY2Nlc3NNb2RlbD4oKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChwYXJhbWV0ZXJzICE9IG51bGwgJiYgcGFyYW1ldGVycyAhPSAnJylcclxuICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMgKz0gJyYnO1xyXG5cclxuICAgICAgICAgICAgcGFyYW1ldGVycyArPSBgbm9tZT0ke3ZhbHVlLk5vbWUgPT0gbnVsbCA/IHZhbHVlLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA6IHZhbHVlLk5vbWV9JnRha2U9JHt0aGlzLm1heGxpc3R9YDtcclxuXHJcbiAgICAgICAgICAgIGxldCBtb2RlbCA9IHBhcmFtZXRlcnMuc3BsaXQoXCImXCIpLm1hcChjID0+ICh7IFtjLnNwbGl0KFwiPVwiKVswXS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGMuc3BsaXQoXCI9XCIpWzBdLnN1YnN0cmluZygxKV06IGMuc3BsaXQoXCI9XCIpWzFdIH0pKS5yZWR1Y2UoKGEsYikgPT4gKHsuLi5hLCAuLi5ifSkpO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZGF0YUFjZXNzLnBvc3QodGhpcy5hcGksIG1vZGVsLCB0aGlzLm1ldGhvZCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YUFjZXNzLmdldCh0aGlzLmFwaSwgdGhpcy5tZXRob2QsIHBhcmFtZXRlcnMpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQmx1cih2YWx1ZSkge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFZhbHVlICE9IG51bGwgJiYgdGhpcy5zZWxlY3RlZFZhbHVlLklkICE9IG51bGwpXHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgICAgICBpZiAoIXZhbHVlICYmIHRoaXMuc2VsZWN0ZWRWYWx1ZSAhPSBudWxsICYmIHRoaXMuc2VsZWN0ZWRWYWx1ZS50cmltKCkgPT0gJycpXHJcbiAgICAgICAgICAgICAgICB0aGlzLndyaXRlVmFsdWUobnVsbCk7XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgbGV0IGZpcnN0ID0gdGhpcy5maWx0ZXIodmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGZpcnN0ICE9IG51bGwgJiYgZmlyc3QubGVuZ3RoID4gMClcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLndyaXRlVmFsdWUoZmlyc3RbMF0uSWQpO1xyXG4gICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMud3JpdGVWYWx1ZShudWxsKTtcclxuICAgICAgICAgICAgfSBcclxuICAgICAgICB9LCAzMDApO1xyXG4gICAgfVxyXG5cclxuICAgIG9uRm9jdXModmFsdWUpIHtcclxuICAgICAgICBpZiAodGhpcy5taW5jaGFyICE9IG51bGwgJiYgdGhpcy5taW5jaGFyID09IDAgJiYgKHZhbHVlID09IG51bGwgfHwgdmFsdWUgPT0gJycpKVxyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsgdGhpcy5jb250cm9sLnNldFZhbHVlKCcnKTsgfSwgMjAwKTtcclxuICAgIH1cclxuXHJcbiAgICBkaXNwbGF5Rm4obW9kZWwpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmIChtb2RlbCA9PSBudWxsIHx8IG1vZGVsLk5vbWUgPT0gbnVsbClcclxuICAgICAgICAgICAgcmV0dXJuICcnO1xyXG5cclxuICAgICAgICBsZXQgaW5kZXhTbWFsbCA9IG1vZGVsLk5vbWUuaW5kZXhPZignPHNtYWxsJyk7XHJcbiAgICAgICAgcmV0dXJuIGluZGV4U21hbGwgPiAtMSA/IG1vZGVsLk5vbWUuc3Vic3RyaW5nKDAsIGluZGV4U21hbGwpLnRyaW0oKSA6IG1vZGVsLk5vbWU7XHJcbiAgICB9XHJcblxyXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICAgICAgbGV0IG9iaiA9IHRoaXMuZGF0YS5maW5kKHIgPT4gci5JZCA9PSB2YWx1ZSk7XHJcbiAgICAgICAgdGhpcy5jb250cm9sLnNldFZhbHVlKG9iaik7XHJcblxyXG4gICAgICAgIGlmICh2YWx1ZSAhPSBudWxsICYmIG9iaiA9PSBudWxsKVxyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSB2YWx1ZTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMub25DaGFuZ2UgIT0gbnVsbClcclxuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLm9uc2VsZWN0ZWRpdGVtICE9IG51bGwpXHJcbiAgICAgICAgICAgIHRoaXMub25zZWxlY3RlZGl0ZW0uZW1pdCh0aGlzLmRhdGEgPT0gbnVsbCA/IG51bGwgOiB0aGlzLmRhdGEuZmluZChyID0+IHIuSWQgPT0gdmFsdWUpKTtcclxuICAgIH1cclxuXHJcbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgICB9XHJcblxyXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgICB9XHJcblxyXG4gICAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSB0aGlzLmRpc2FibGVkbm9yZWdpc3RlcnMgJiYgKHRoaXMuZGF0YSA9PSBudWxsIHx8IHRoaXMuZGF0YS5sZW5ndGggPT0gMCkgPyB0cnVlIDogaXNEaXNhYmxlZDtcclxuICAgIH1cclxufSJdfQ==
|