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.
Files changed (176) hide show
  1. package/controls/alert/alert.component.d.ts +3 -0
  2. package/controls/autocomplete/autocomplete.component.d.ts +5 -2
  3. package/controls/big-checkbox/big-checkbox.component.d.ts +3 -0
  4. package/controls/card/card.component.d.ts +3 -0
  5. package/controls/card-menu/card-menu.component.d.ts +3 -0
  6. package/controls/checkbox/checkbox.component.d.ts +3 -0
  7. package/controls/chips/chips.component.d.ts +3 -0
  8. package/controls/date/date.component.d.ts +3 -0
  9. package/controls/date-month/date-month.component.d.ts +3 -0
  10. package/controls/editor/editor.component.d.ts +3 -0
  11. package/controls/grid/grid.component.d.ts +5 -0
  12. package/controls/input/input.component.d.ts +3 -0
  13. package/controls/input-list/input-list.component.d.ts +3 -0
  14. package/controls/list-checkbox/list-checkbox.component.d.ts +3 -0
  15. package/controls/message/message.component.d.ts +3 -0
  16. package/controls/multi-select/multi-select.component.d.ts +3 -0
  17. package/controls/paginator/paginator.component.d.ts +3 -0
  18. package/controls/select/select.component.d.ts +3 -0
  19. package/controls/timeline/timeline.component.d.ts +3 -0
  20. package/directives/mask.directive.d.ts +3 -0
  21. package/directives/unmask.directive.d.ts +3 -0
  22. package/esm2020/controls/alert/alert.component.mjs +74 -0
  23. package/esm2020/controls/autocomplete/autocomplete.component.mjs +258 -0
  24. package/esm2020/controls/big-checkbox/big-checkbox.component.mjs +298 -0
  25. package/esm2020/controls/card/card.component.mjs +77 -0
  26. package/esm2020/controls/card-menu/card-menu.component.mjs +145 -0
  27. package/esm2020/controls/checkbox/checkbox.component.mjs +93 -0
  28. package/esm2020/controls/chips/chips.component.mjs +113 -0
  29. package/esm2020/controls/date/date.component.mjs +141 -0
  30. package/esm2020/controls/date-month/date-month.component.mjs +148 -0
  31. package/esm2020/controls/editor/editor.component.mjs +135 -0
  32. package/esm2020/controls/grid/grid.component.mjs +1800 -0
  33. package/esm2020/controls/input/input.component.mjs +314 -0
  34. package/esm2020/controls/input-list/input-list.component.mjs +258 -0
  35. package/esm2020/controls/list-checkbox/list-checkbox.component.mjs +238 -0
  36. package/esm2020/controls/message/message.component.mjs +50 -0
  37. package/esm2020/controls/multi-select/multi-select.component.mjs +161 -0
  38. package/esm2020/controls/paginator/paginator.component.mjs +178 -0
  39. package/esm2020/controls/select/select.component.mjs +180 -0
  40. package/esm2020/controls/timeline/timeline.component.mjs +117 -0
  41. package/esm2020/directives/mask.directive.mjs +125 -0
  42. package/esm2020/directives/unmask.directive.mjs +28 -0
  43. package/esm2020/enum/dialog-buttons.enum.mjs +9 -0
  44. package/esm2020/enum/index.mjs +4 -0
  45. package/esm2020/enum/modal-action.enum.mjs +12 -0
  46. package/esm2020/enum/page-action.enum.mjs +10 -0
  47. package/esm2020/global-config.mjs +4 -0
  48. package/esm2020/info-library.mjs +5 -0
  49. package/esm2020/info-library.module.mjs +278 -0
  50. package/esm2020/layouts/dialog/dialog.component.mjs +188 -0
  51. package/esm2020/layouts/loading/loading.component.mjs +42 -0
  52. package/esm2020/layouts/main/main.component.mjs +276 -0
  53. package/esm2020/layouts/modal/modal.component.mjs +258 -0
  54. package/esm2020/layouts/pagebar/pagebar.component.mjs +404 -0
  55. package/esm2020/layouts/sidebar/sidebar.component.mjs +395 -0
  56. package/esm2020/layouts/topbar/topbar.component.mjs +863 -0
  57. package/esm2020/layouts/topmenu/topmenu.component.mjs +165 -0
  58. package/esm2020/model/app-config.model.mjs +14 -0
  59. package/esm2020/model/data-access.model.mjs +35 -0
  60. package/esm2020/model/dialog-result.model.mjs +8 -0
  61. package/esm2020/model/dialog.model.mjs +16 -0
  62. package/esm2020/model/form-prop.model.mjs +35 -0
  63. package/esm2020/model/grid-button.model.mjs +21 -0
  64. package/esm2020/model/index.mjs +15 -0
  65. package/esm2020/model/last-search.model.mjs +9 -0
  66. package/esm2020/model/login.model.mjs +9 -0
  67. package/esm2020/model/method-grid-button.model.mjs +9 -0
  68. package/esm2020/model/notification.model.mjs +9 -0
  69. package/esm2020/model/pagebar-buttons.model.mjs +15 -0
  70. package/esm2020/model/permission.model.mjs +3 -0
  71. package/esm2020/model/platform.model.mjs +21 -0
  72. package/esm2020/model/session.model.mjs +8 -0
  73. package/esm2020/pipe/index.mjs +3 -0
  74. package/esm2020/pipe/mask.pipe.mjs +34 -0
  75. package/esm2020/pipe/translate.pipe.mjs +26 -0
  76. package/esm2020/public_api.mjs +36 -0
  77. package/esm2020/service/authentication.service.mjs +358 -0
  78. package/esm2020/service/configuration.service.mjs +59 -0
  79. package/esm2020/service/data.service.mjs +112 -0
  80. package/esm2020/service/index.mjs +6 -0
  81. package/esm2020/service/theme.service.mjs +79 -0
  82. package/esm2020/service/translate.service.mjs +53 -0
  83. package/esm2020/utils/utilities.mjs +142 -0
  84. package/fesm2015/info-library.mjs +9326 -0
  85. package/fesm2015/info-library.mjs.map +1 -0
  86. package/fesm2020/info-library.mjs +8474 -0
  87. package/fesm2020/info-library.mjs.map +1 -0
  88. package/index.d.ts +5 -0
  89. package/info-library.module.d.ts +58 -0
  90. package/layouts/dialog/dialog.component.d.ts +5 -0
  91. package/layouts/loading/loading.component.d.ts +3 -0
  92. package/layouts/main/main.component.d.ts +6 -0
  93. package/layouts/modal/modal.component.d.ts +3 -0
  94. package/layouts/pagebar/pagebar.component.d.ts +5 -0
  95. package/layouts/sidebar/sidebar.component.d.ts +4 -1
  96. package/layouts/topbar/topbar.component.d.ts +4 -1
  97. package/layouts/topmenu/topmenu.component.d.ts +3 -0
  98. package/package.json +28 -13
  99. package/pipe/mask.pipe.d.ts +3 -0
  100. package/pipe/translate.pipe.d.ts +3 -0
  101. package/service/authentication.service.d.ts +5 -0
  102. package/service/configuration.service.d.ts +3 -0
  103. package/service/data.service.d.ts +3 -0
  104. package/service/theme.service.d.ts +3 -0
  105. package/service/translate.service.d.ts +3 -0
  106. package/utils/utilities.d.ts +3 -0
  107. package/bundles/info-library.umd.js +0 -9740
  108. package/bundles/info-library.umd.js.map +0 -1
  109. package/bundles/info-library.umd.min.js +0 -2
  110. package/bundles/info-library.umd.min.js.map +0 -1
  111. package/esm2015/controls/alert/alert.component.js +0 -43
  112. package/esm2015/controls/autocomplete/autocomplete.component.js +0 -386
  113. package/esm2015/controls/big-checkbox/big-checkbox.component.js +0 -282
  114. package/esm2015/controls/card/card.component.js +0 -64
  115. package/esm2015/controls/card-menu/card-menu.component.js +0 -90
  116. package/esm2015/controls/checkbox/checkbox.component.js +0 -130
  117. package/esm2015/controls/chips/chips.component.js +0 -124
  118. package/esm2015/controls/date/date.component.js +0 -167
  119. package/esm2015/controls/date-month/date-month.component.js +0 -181
  120. package/esm2015/controls/editor/editor.component.js +0 -237
  121. package/esm2015/controls/grid/grid.component.js +0 -1391
  122. package/esm2015/controls/input/input.component.js +0 -196
  123. package/esm2015/controls/input-list/input-list.component.js +0 -160
  124. package/esm2015/controls/list-checkbox/list-checkbox.component.js +0 -151
  125. package/esm2015/controls/message/message.component.js +0 -47
  126. package/esm2015/controls/multi-select/multi-select.component.js +0 -213
  127. package/esm2015/controls/paginator/paginator.component.js +0 -151
  128. package/esm2015/controls/select/select.component.js +0 -231
  129. package/esm2015/controls/timeline/timeline.component.js +0 -73
  130. package/esm2015/directives/mask.directive.js +0 -202
  131. package/esm2015/directives/unmask.directive.js +0 -51
  132. package/esm2015/enum/dialog-buttons.enum.js +0 -20
  133. package/esm2015/enum/index.js +0 -9
  134. package/esm2015/enum/modal-action.enum.js +0 -26
  135. package/esm2015/enum/page-action.enum.js +0 -22
  136. package/esm2015/global-config.js +0 -11
  137. package/esm2015/info-library.js +0 -27
  138. package/esm2015/info-library.module.js +0 -174
  139. package/esm2015/layouts/dialog/dialog.component.js +0 -173
  140. package/esm2015/layouts/loading/loading.component.js +0 -42
  141. package/esm2015/layouts/main/main.component.js +0 -312
  142. package/esm2015/layouts/modal/modal.component.js +0 -232
  143. package/esm2015/layouts/pagebar/pagebar.component.js +0 -286
  144. package/esm2015/layouts/sidebar/sidebar.component.js +0 -231
  145. package/esm2015/layouts/topbar/topbar.component.js +0 -413
  146. package/esm2015/layouts/topmenu/topmenu.component.js +0 -181
  147. package/esm2015/model/app-config.model.js +0 -39
  148. package/esm2015/model/data-access.model.js +0 -65
  149. package/esm2015/model/dialog-result.model.js +0 -23
  150. package/esm2015/model/dialog.model.js +0 -47
  151. package/esm2015/model/form-prop.model.js +0 -61
  152. package/esm2015/model/grid-button.model.js +0 -62
  153. package/esm2015/model/index.js +0 -20
  154. package/esm2015/model/last-search.model.js +0 -24
  155. package/esm2015/model/login.model.js +0 -27
  156. package/esm2015/model/method-grid-button.model.js +0 -27
  157. package/esm2015/model/notification.model.js +0 -34
  158. package/esm2015/model/pagebar-buttons.model.js +0 -39
  159. package/esm2015/model/permission.model.js +0 -16
  160. package/esm2015/model/platform.model.js +0 -56
  161. package/esm2015/model/session.model.js +0 -53
  162. package/esm2015/pipe/index.js +0 -8
  163. package/esm2015/pipe/mask.pipe.js +0 -47
  164. package/esm2015/pipe/translate.pipe.js +0 -45
  165. package/esm2015/public_api.js +0 -41
  166. package/esm2015/service/authentication.service.js +0 -732
  167. package/esm2015/service/configuration.service.js +0 -107
  168. package/esm2015/service/data.service.js +0 -292
  169. package/esm2015/service/index.js +0 -11
  170. package/esm2015/service/theme.service.js +0 -133
  171. package/esm2015/service/translate.service.js +0 -105
  172. package/esm2015/utils/utilities.js +0 -256
  173. package/fesm2015/info-library.js +0 -8792
  174. package/fesm2015/info-library.js.map +0 -1
  175. package/info-library.d.ts +0 -21
  176. 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==