mis-crystal-design-system 14.0.77 → 14.0.78
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/async-search-dropdown/async-dropdown.component.mjs +13 -13
- package/fesm2015/mis-crystal-design-system-async-search-dropdown.mjs +11 -11
- package/fesm2015/mis-crystal-design-system-async-search-dropdown.mjs.map +1 -1
- package/fesm2020/mis-crystal-design-system-async-search-dropdown.mjs +11 -11
- package/fesm2020/mis-crystal-design-system-async-search-dropdown.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -3,7 +3,7 @@ import { TemplatePortal } from "@angular/cdk/portal";
|
|
|
3
3
|
import { Component, ContentChild, EventEmitter, HostListener, Input, Output, ViewChild } from "@angular/core";
|
|
4
4
|
import { UntypedFormControl } from "@angular/forms";
|
|
5
5
|
import { merge, Subject } from "rxjs";
|
|
6
|
-
import { debounceTime, distinctUntilChanged,
|
|
6
|
+
import { debounceTime, distinctUntilChanged, filter, switchMap, tap } from "rxjs/operators";
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
import * as i1 from "@angular/cdk/overlay";
|
|
9
9
|
import * as i2 from "@angular/common";
|
|
@@ -238,9 +238,11 @@ export class AsyncDropdownComponent {
|
|
|
238
238
|
if (this.disabled) {
|
|
239
239
|
this.searchInput.disable();
|
|
240
240
|
}
|
|
241
|
-
const searchObservable = this.searchInput.valueChanges.pipe(tap((val) => this.searchQueryChange.emit(val)), debounceTime(this.debounceTime), distinctUntilChanged()
|
|
242
|
-
|
|
243
|
-
|
|
241
|
+
const searchObservable = this.searchInput.valueChanges.pipe(tap((val) => this.searchQueryChange.emit(val)), debounceTime(this.debounceTime), distinctUntilChanged());
|
|
242
|
+
this.searchSubscription = merge(searchObservable, this.httpStreamTrigger)
|
|
243
|
+
.pipe(filter((res) => {
|
|
244
|
+
res = res.trim();
|
|
245
|
+
if (res?.length < this.minInputLength || !res?.length) {
|
|
244
246
|
this.closeDropdown();
|
|
245
247
|
return false;
|
|
246
248
|
}
|
|
@@ -248,10 +250,10 @@ export class AsyncDropdownComponent {
|
|
|
248
250
|
}), tap(() => {
|
|
249
251
|
this.loading = true;
|
|
250
252
|
this.error = false;
|
|
251
|
-
if (!this.overlayRef?.hasAttached())
|
|
253
|
+
if (!this.overlayRef?.hasAttached()) {
|
|
252
254
|
this.openDropdown(this.dd, this.origin.nativeElement);
|
|
253
|
-
|
|
254
|
-
|
|
255
|
+
}
|
|
256
|
+
}), switchMap((res) => this.httpStream(res)))
|
|
255
257
|
.subscribe({
|
|
256
258
|
next: (list) => {
|
|
257
259
|
this._ngZone.run(() => {
|
|
@@ -262,11 +264,9 @@ export class AsyncDropdownComponent {
|
|
|
262
264
|
}
|
|
263
265
|
});
|
|
264
266
|
},
|
|
265
|
-
error: (
|
|
266
|
-
this.
|
|
267
|
-
|
|
268
|
-
this.error = true;
|
|
269
|
-
});
|
|
267
|
+
error: () => {
|
|
268
|
+
this.loading = false;
|
|
269
|
+
this.error = true;
|
|
270
270
|
}
|
|
271
271
|
});
|
|
272
272
|
if (this.control?.value) {
|
|
@@ -526,4 +526,4 @@ AsyncDropdownComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Asyn
|
|
|
526
526
|
type: HostListener,
|
|
527
527
|
args: ['document:keydown', ['$event']]
|
|
528
528
|
}] }); })();
|
|
529
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvYXN5bmMtc2VhcmNoLWRyb3Bkb3duL2FzeW5jLWRyb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2FzeW5jLXNlYXJjaC1kcm9wZG93bi9hc3luYy1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQVcsYUFBYSxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDbEcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUVaLFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUtMLE1BQU0sRUFHTixTQUFTLEVBRVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFtQixrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxLQUFLLEVBQWMsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUNoRSxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQ25CeEYsK0JBQXNILGVBQUE7SUFDaEIsWUFBb0I7SUFBQSxpQkFBTztJQUMvSCxnQ0FHd0M7SUFIVCxxT0FBUyxlQUFBLDJCQUFnQixDQUFBLElBQUMsb09BQTZCLGVBQUEsMkJBQWdCLENBQUEsSUFBN0M7SUFHakIsaUJBQU8sRUFBQTs7OztJQUwvQixnR0FBZ0U7SUFDMUUsZUFBd0Q7SUFBeEQsZ0dBQXdELHdDQUFBO0lBQXNDLGVBQW9CO0lBQXBCLGdEQUFvQjtJQUNoQixlQUd0RztJQUhz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QUFoQixLQUFLO1lBQ0csZ0JBQWdCO2tCQUF4QixLQUFLO1lBQ0csaUJBQWlCO2tCQUF6QixLQUFLO1lBQ0csb0JBQW9CO2tCQUE1QixLQUFLO1lBQ2lDLE1BQU07a0JBQTVDLFNBQVM7bUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQUNFLEtBQUs7a0JBQTNDLFNBQVM7bUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQUNELEVBQUU7a0JBQXJDLFNBQVM7bUJBQUMsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQUVsQyxVQUFVO2tCQURULFlBQVk7bUJBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQUdoRCxZQUFZO2tCQURYLFlBQVk7bUJBQUMsbUJBQW1CLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFDO1lBR3pDLFFBQVE7a0JBQWpCLE1BQU07WUFRRSxVQUFVO2tCQUFsQixLQUFLO1lBTUcsV0FBVztrQkFBbkIsS0FBSztZQUNJLGlCQUFpQjtrQkFBMUIsTUFBTTtZQUNHLEtBQUs7a0JBQWQsTUFBTTtZQUNHLFlBQVk7a0JBQXJCLE1BQU07WUFDRyxXQUFXO2tCQUFwQixNQUFNO1lBbUlQLGFBQWE7a0JBRFosWUFBWTttQkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbm5lY3Rpb25Qb3NpdGlvblBhaXIsIE92ZXJsYXksIE92ZXJsYXlDb25maWcsIE92ZXJsYXlSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL292ZXJsYXlcIjtcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9wb3J0YWxcIjtcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFVudHlwZWRGb3JtQ29udHJvbCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgbWVyZ2UsIE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCB0YXAsIHN3aXRjaE1hcCwgZmlsdGVyIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5cbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZVxudHlwZSBJTGlzdERhdGEgPSBhbnk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJtaXMtYXN5bmMtc2VhcmNoLWRyb3Bkb3duXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vYXN5bmMtZHJvcGRvd24uY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL2FzeW5jLWRyb3Bkb3duLmNvbXBvbmVudC5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIEFzeW5jRHJvcGRvd25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5LCBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsIHByaXZhdGUgX25nWm9uZTogTmdab25lKSB7IH1cbiAgQElucHV0KCkgaGVpZ2h0O1xuICBASW5wdXQoKSB3aWR0aDtcbiAgQElucHV0KCkgc2l6ZTogJ21kJyB8ICdzbScgPSAnbWQnXG4gIEBJbnB1dCgpIGh0dHBTdHJlYW0hOiAoc2VhcmNoS2V5OiBzdHJpbmcpID0+IE9ic2VydmFibGU8SUxpc3REYXRhPjsgLy8gZnVuY3Rpb24gdGhhdCByZXR1cm5zIGFuIGh0dHBvYnNlcnZhYmxlXG4gIEBJbnB1dCgpIGRpc3BsYXlLZXkhOiBzdHJpbmc7IC8vIHN0cmluZyB0byBzaG93IHZhbHVlIGluIGxpc3RcbiAgQElucHV0KCkgc2Vjb25kYXJ5RGlzcGxheUtleSE6IHN0cmluZzsgLy8gc3RyaW5nIHRvIGRpc3BsYXkgc2Vjb25kYXJ5IHZhbHVlXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gXCJTZWxlY3RcIjsgLy8gcGxhY2Vob2xkZXIgZm9yIGlucHV0XG4gIEBJbnB1dCgpIGRlYm91bmNlVGltZSA9IDQwMDsgLy8gd2FpdCB0aW1lIHRpbGwgd2hpY2ggQVBJIGNhbGwgaXMgcGF1c2VkXG4gIEBJbnB1dCgpIG1pbklucHV0TGVuZ3RoID0gMjsgLy8gbWluIGxlbmd0aCBhZnRlciB3aGljaCBBUEkgY2FsbCBpcyBtYWRlXG4gIEBJbnB1dCgpIG11bHRpID0gZmFsc2U7IC8vIG1haW50YWluIGEgbGlzdCBvciBlbWl0IHZhbHVlXG4gIEBJbnB1dCgpIHVuaXF1ZUtleTogc3RyaW5nOyAvLyBmb3IgaWRlbnRpZnlpbmcgdW5pcXVlIHZhbHVlc1xuICBASW5wdXQoKSBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wgfCBudWxsOyAvLyBmb3JtIGNvbnRyb2wgZm9yIHJlYWN0aXZlIGZvcm1zXG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuOyAvLyBkaXNhYmxlIGFjdGlvbnMgb24gY29tcG9uZW50XG4gIEBJbnB1dCgpIHJlYWRvbmx5OiBib29sZWFuOyAvLyBtYWtlIGNvbXBvbmVudCByZWFkb25seVxuICBASW5wdXQoKSBkaXNhYmxlQ29weVBhc3RlOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRyb3Bkb3duTGlzdFdpZHRoOyAvL3dpZHRoIG9mIGRyb3Bkb3duIGxpc3RcbiAgQElucHV0KCkgZHJvcGRvd25MaXN0UG9zaXRpb246IFwiTGVmdFwiIHwgXCJSaWdodFwiID0gXCJMZWZ0XCI7IC8vZHJvcGRvd24gcG9zaXRpb25cbiAgQFZpZXdDaGlsZChcImRkQnRuXCIsIHsgc3RhdGljOiBmYWxzZSB9KSBvcmlnaW46IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoXCJpbnB1dFwiLCB7IHN0YXRpYzogZmFsc2UgfSkgaW5wdXQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoXCJkZFwiLCB7IHN0YXRpYzogZmFsc2UgfSkgZGQ6IFRlbXBsYXRlUmVmPEVsZW1lbnQ+O1xuICBAQ29udGVudENoaWxkKFwibWlzQ3VzdG9tSXRlbVwiLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgY3VzdG9tSXRlbTogVGVtcGxhdGVSZWY8RWxlbWVudD47XG4gIEBDb250ZW50Q2hpbGQoXCJhc3luY0N1c3RvbUxvYWRlclwiLCB7IHN0YXRpYzogZmFsc2V9KVxuICBjdXN0b21Mb2FkZXI6IFRlbXBsYXRlUmVmPEVsZW1lbnQ+O1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbiAgQE91dHB1dCgpIG9uU2VsZWN0OiBFdmVudEVtaXR0ZXI8SUxpc3REYXRhIHwgSUxpc3REYXRhW10+ID0gbmV3IEV2ZW50RW1pdHRlcih0cnVlKTsgLy8gZW1pdCBzZWxlY3RlZCB2YWx1ZXNcbiAgc2VhcmNoSW5wdXQ6IFVudHlwZWRGb3JtQ29udHJvbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKTtcbiAgZGF0YTogSUxpc3REYXRhW10gPSBbXTtcbiAgb3BlbmVkID0gZmFsc2U7XG4gIGxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcbiAgb3BlblBvcFVwT25UYWI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lXG4gIEBJbnB1dCgpIHNlbGVjdGlvbnM6IE1hcDxzdHJpbmcsIGFueT4gPSBuZXcgTWFwKCk7XG4gIHByaXZhdGUgaHR0cFN0cmVhbVRyaWdnZXIgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG4gIHByaXZhdGUgc2VhcmNoU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgZGVmYXVsdENhbGxTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBvdmVybGF5UmVmOiBPdmVybGF5UmVmO1xuICBjb250cm9sU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIHNlYXJjaFZhbHVlO1xuICBAT3V0cHV0KCkgc2VhcmNoUXVlcnlDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKVxuICBAT3V0cHV0KCkgY2xlYXI6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXIoZmFsc2UpO1xuICBAT3V0cHV0KCkgaXRlbVNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxJTGlzdERhdGE+KClcbiAgQE91dHB1dCgpIGl0ZW1SZW1vdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxJTGlzdERhdGE+KClcbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubXVsdGkgJiYgIXRoaXMudW5pcXVlS2V5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJbdW5pcXVlS2V5XSByZXF1aXJlZCBpbiBtdWx0aSBtb2RlLlwiKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuc2VhcmNoSW5wdXQuZGlzYWJsZSgpO1xuICAgIH1cblxuICAgIGNvbnN0IHNlYXJjaE9ic2VydmFibGUgPSB0aGlzLnNlYXJjaElucHV0LnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgdGFwKCh2YWwpID0+IHRoaXMuc2VhcmNoUXVlcnlDaGFuZ2UuZW1pdCh2YWwpKSxcbiAgICAgIGRlYm91bmNlVGltZSh0aGlzLmRlYm91bmNlVGltZSksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgZmlsdGVyKHJlcyA9PiB7XG4gICAgICAgIGNvbnN0IHRyaW1tZWRWYWx1ZSA9IHJlcy50cmltKCk7XG4gICAgICAgIGlmICh0cmltbWVkVmFsdWUubGVuZ3RoIDwgdGhpcy5taW5JbnB1dExlbmd0aCB8fCAhdHJpbW1lZFZhbHVlLmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pLFxuICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5lcnJvciA9IGZhbHNlO1xuICAgICAgICBpZighdGhpcy5vdmVybGF5UmVmPy5oYXNBdHRhY2hlZCgpKVxuICAgICAgICAgIHRoaXMub3BlbkRyb3Bkb3duKHRoaXMuZGQsIHRoaXMub3JpZ2luLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgfSksXG4gICAgICBzd2l0Y2hNYXAocmVzID0+IHRoaXMuaHR0cFN0cmVhbShyZXMudHJpbSgpKSlcbiAgICApO1xuXG4gICAgdGhpcy5zZWFyY2hTdWJzY3JpcHRpb24gPSBtZXJnZShzZWFyY2hPYnNlcnZhYmxlLCB0aGlzLmh0dHBTdHJlYW1UcmlnZ2VyKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChsaXN0KSA9PiB7XG4gICAgICAgICAgdGhpcy5fbmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuZGF0YSA9IGxpc3Q7XG4gICAgICAgICAgICBpZiAoIXRoaXMub3ZlcmxheVJlZj8uaGFzQXR0YWNoZWQoKSAmJiBsaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgdGhpcy5vcGVuRHJvcGRvd24odGhpcy5kZCwgdGhpcy5vcmlnaW4ubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcbiAgICAgICAgICB0aGlzLl9uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5lcnJvciA9IHRydWU7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIGlmICh0aGlzLmNvbnRyb2w/LnZhbHVlKSB7XG4gICAgICB0aGlzLmhhbmRsZUNvbnRyb2xDaGFuZ2VzKHRoaXMuY29udHJvbC52YWx1ZSk7XG4gICAgfVxuICAgIHRoaXMuY29udHJvbFN1YnNjcmlwdGlvbiA9IHRoaXMuY29udHJvbD8udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh0aGlzLmhhbmRsZUNvbnRyb2xDaGFuZ2VzKTtcbiAgfVxuXG4gIHJlZnJlc2hIdHRwU3RyZWFtKHF1ZXJ5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMuaHR0cFN0cmVhbVRyaWdnZXIubmV4dChxdWVyeSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMgJiYgY2hhbmdlcz8uc2VhcmNoVmFsdWU/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgdGhpcy5zZWFyY2hJbnB1dC5wYXRjaFZhbHVlKGNoYW5nZXMuc2VhcmNoVmFsdWUuY3VycmVudFZhbHVlKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMgJiYgY2hhbmdlcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5zZWFyY2hJbnB1dC5lbmFibGUoKTtcbiAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoSW5wdXQuZGlzYWJsZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuZGVmYXVsdENhbGxTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUNvbnRyb2xDaGFuZ2VzID0gKHZhbHVlczogSUxpc3REYXRhW10pID0+IHtcbiAgICB2YWx1ZXMuZm9yRWFjaChlbCA9PiB7XG4gICAgICB0aGlzLnNlbGVjdERhdGEoZWwsIHRydWUpO1xuICAgIH0pO1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZVxuICB9O1xuXG4gIHByaXZhdGUgb3BlbkRyb3Bkb3duKHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxFbGVtZW50Piwgb3JpZ2luOiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIGNvbnN0IHBvc2l0aW9uc0JvdHRvbSA9IFtcbiAgICAgIG5ldyBDb25uZWN0aW9uUG9zaXRpb25QYWlyKHsgb3JpZ2luWDogXCJzdGFydFwiLCBvcmlnaW5ZOiBcImJvdHRvbVwiIH0sIHsgb3ZlcmxheVg6IFwic3RhcnRcIiwgb3ZlcmxheVk6IFwidG9wXCIgfSwgMCwgNCksXG4gICAgICBuZXcgQ29ubmVjdGlvblBvc2l0aW9uUGFpcih7IG9yaWdpblg6IFwiZW5kXCIsIG9yaWdpblk6IFwiYm90dG9tXCIgfSwgeyBvdmVybGF5WDogXCJlbmRcIiwgb3ZlcmxheVk6IFwidG9wXCIgfSwgMCwgNClcbiAgICBdO1xuICAgIGNvbnN0IHBvc2l0aW9uc1RvcCA9IFtcbiAgICAgIG5ldyBDb25uZWN0aW9uUG9zaXRpb25QYWlyKHsgb3JpZ2luWDogXCJzdGFydFwiLCBvcmlnaW5ZOiBcInRvcFwiIH0sIHsgb3ZlcmxheVg6IFwic3RhcnRcIiwgb3ZlcmxheVk6IFwiYm90dG9tXCIgfSwgMCwgLTQpLFxuICAgICAgbmV3IENvbm5lY3Rpb25Qb3NpdGlvblBhaXIoeyBvcmlnaW5YOiBcImVuZFwiLCBvcmlnaW5ZOiBcInRvcFwiIH0sIHsgb3ZlcmxheVg6IFwiZW5kXCIsIG92ZXJsYXlZOiBcImJvdHRvbVwiIH0sIDAsIC00KVxuICAgIF07XG4gICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMub3ZlcmxheVxuICAgICAgLnBvc2l0aW9uKClcbiAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKG9yaWdpbilcbiAgICAgIC53aXRoUG9zaXRpb25zKFtcbiAgICAgICAgLi4uKHRoaXMuZHJvcGRvd25MaXN0UG9zaXRpb24gPT09IFwiUmlnaHRcIiA/IHBvc2l0aW9uc0JvdHRvbS5yZXZlcnNlKCkgOiBwb3NpdGlvbnNCb3R0b20pLFxuICAgICAgICAuLi4odGhpcy5kcm9wZG93bkxpc3RQb3NpdGlvbiA9PT0gXCJSaWdodFwiID8gcG9zaXRpb25zVG9wLnJldmVyc2UoKSA6IHBvc2l0aW9uc1RvcClcbiAgICAgIF0pXG4gICAgICAud2l0aFB1c2godHJ1ZSk7XG5cbiAgICBjb25zdCBjb25maWdzID0gbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXG4gICAgICBiYWNrZHJvcENsYXNzOiBcImNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wXCIsXG4gICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpLFxuICAgICAgcG9zaXRpb25TdHJhdGVneSxcbiAgICAgIHdpZHRoOiBvcmlnaW4uY2xpZW50V2lkdGhcbiAgICB9KTtcbiAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKGNvbmZpZ3MpO1xuICAgIGlmICh0aGlzLmRyb3Bkb3duTGlzdFdpZHRoKSB0aGlzLm92ZXJsYXlSZWYudXBkYXRlU2l6ZSh7IHdpZHRoOiB0aGlzLmRyb3Bkb3duTGlzdFdpZHRoIH0pO1xuICAgIHRoaXMub3ZlcmxheVJlZi5hdHRhY2gobmV3IFRlbXBsYXRlUG9ydGFsKHRlbXBsYXRlLCB0aGlzLnZpZXdDb250YWluZXJSZWYpKTtcbiAgICB0aGlzLm92ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogY2xvc2VzIHRoZSBkcm9wZG93blxuICAgKi9cbiAgY2xvc2VEcm9wZG93bigpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW5lZCA9IGZhbHNlO1xuICAgIHRoaXMub3BlblBvcFVwT25UYWIgPSBmYWxzZTtcbiAgICB0aGlzLm92ZXJsYXlSZWY/LmRldGFjaCgpO1xuICAgIHRoaXMuZGF0YSA9IFtdO1xuICB9XG5cbiAgZW5hYmxlUG9wVXBPblRhYigpe1xuICAgIHRoaXMub3BlblBvcFVwT25UYWIgPSB0cnVlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIGhhbmRsZUtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgdGhpcy5zZWFyY2hJbnB1dC5wYXRjaFZhbHVlKFwiXCIpO1xuICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgfVxuICB9XG5cblxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gaXRlbSBpdGVtIHRvIHNlbGVjdFxuICAgKiBpZiBpdGVtIHByb3BlcnR5IGRpc2FibGVkIGlzIHNldCB0byB0cnVlLCBzZWxlY3Rpb24gd2lsbCBiZSBkaXNhYmxlZFxuICAgKiBAcGFyYW0gZWZmZWN0ZWRGcm9tT3V0c2lkZSBzZXQgdG8gdHJ1ZSBpZiBjYWxsaW5nIGZyb20gcGFyZW50IGNvbXBvbmVudCwgaWYgdHJ1ZSB3aWxsIGZvY3VzIG9uIHNlYXJjaCBpbnB1dFxuICAgKi9cbiAgc2VsZWN0RGF0YShpdGVtOiBJTGlzdERhdGEsIGVmZmVjdGVkRnJvbU91dHNpZGUgPSB0cnVlKTogdm9pZCB7XG4gICAgaWYgKGl0ZW0uZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5pdGVtU2VsZWN0ZWQuZW1pdChpdGVtKVxuICAgIGlmICghdGhpcy5tdWx0aSkge1xuICAgICAgdGhpcy5zZWFyY2hJbnB1dC5wYXRjaFZhbHVlKGl0ZW1bdGhpcy5kaXNwbGF5S2V5XSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgdGhpcy5zZXRDb250cm9sVmFsdWUoaXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghdGhpcy5zZWxlY3Rpb25zLmhhcyhpdGVtW3RoaXMudW5pcXVlS2V5XSkpIHtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25zLnNldChpdGVtW3RoaXMudW5pcXVlS2V5XSwgaXRlbSk7XG4gICAgICB9XG4gICAgICB0aGlzLnNldENvbnRyb2xWYWx1ZSh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuICAgICAgaWYgKCFlZmZlY3RlZEZyb21PdXRzaWRlKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zY3JvbGxJbnRvVmlldygpO1xuICAgICAgICB9LCAxMCk7XG4gICAgICB9XG4gICAgICB0aGlzLnNlYXJjaElucHV0LnBhdGNoVmFsdWUoXCJcIik7XG4gICAgICB0aGlzLmRhdGEgPSBbXTtcbiAgICB9XG4gICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGl0ZW0gcmVtb3ZlIGl0ZW0gZnJvbSBzZWxlY3RlZCBsaXN0XG4gICAqL1xuICByZW1vdmVJdGVtKGl0ZW06IElMaXN0RGF0YSk6IHZvaWQge1xuICAgIHRoaXMuaXRlbVJlbW92ZWQuZW1pdChpdGVtKVxuICAgIHRoaXMuc2VsZWN0aW9ucy5kZWxldGUoaXRlbVt0aGlzLnVuaXF1ZUtleV0pO1xuICAgIHRoaXMuc2V0Q29udHJvbFZhbHVlKHRoaXMuc2VsZWN0ZWRJdGVtcyk7XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lXG4gICAgdGhpcy5pbnB1dFtcIm5hdGl2ZUVsZW1lbnRcIl0uZm9jdXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q29udHJvbFZhbHVlKHZhbHVlOiBJTGlzdERhdGEpOiB2b2lkIHtcbiAgICB0aGlzLm9uU2VsZWN0LmVtaXQodmFsdWUpO1xuICAgIHRoaXMuY29udHJvbD8ucGF0Y2hWYWx1ZSh2YWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIGxpc3Qgb2Ygc2VsZWN0ZWQgaXRlbXNcbiAgICovXG4gIGdldCBzZWxlY3RlZEl0ZW1zKCk6IEFycmF5PElMaXN0RGF0YT4ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuc2VsZWN0aW9ucy52YWx1ZXMoKSk7XG4gIH1cblxuICByZW1vdmVJbnB1dFZhbHVlKCkge1xuICAgIHRoaXMuc2VhcmNoSW5wdXQucmVzZXQoKTtcbiAgICB0aGlzLmRhdGEgPSBbXTtcbiAgICB0aGlzLmNsZWFyLmVtaXQodHJ1ZSk7XG4gIH1cbiAgZGVmYXVsdENhbGwoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubWluSW5wdXRMZW5ndGggPT09IC0xKSB7XG4gICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5kZWZhdWx0Q2FsbFN1YnNjcmlwdGlvbiA9IHRoaXMuaHR0cFN0cmVhbSh0aGlzLnNlYXJjaElucHV0LnZhbHVlIHx8ICcnKS5zdWJzY3JpYmUobGlzdCA9PiB7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmRhdGEgPSBsaXN0O1xuICAgICAgICBpZiAoIXRoaXMub3ZlcmxheVJlZj8uaGFzQXR0YWNoZWQoKSAmJiB0aGlzLmRhdGE/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB0aGlzLm9wZW5Ecm9wZG93bih0aGlzLmRkLCB0aGlzLm9yaWdpbi5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5lcnJvciA9IHRydWU7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkZC13cmFwcGVyXCIgW25nQ2xhc3NdPVwieyBvcGVuZWQ6IG9wZW5lZCwgZGlzYWJsZWQ6IGRpc2FibGVkLCByZWFkb25seTogcmVhZG9ubHkgfVwiIFtzdHlsZS53aWR0aF09XCJ3aWR0aFwiICNkZEJ0bj5cbiAgPGRpdiBjbGFzcz1cInNlbGVjdGVkLWxpc3RcIiAqbmdJZj1cIm11bHRpICYmIHNlbGVjdGlvbnMuc2l6ZSA+IDBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2hpcFwiIFtuZ0NsYXNzXT1cInsnY2hpcC1tZCc6IHNpemUgPT09ICdtZCcsICdjaGlwLXNtJzogc2l6ZSA9PT0gJ3NtJ31cIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBzZWxlY3RlZEl0ZW1zXCI+XG4gICAgICA8c3BhbiBbbmdDbGFzc109XCJ7J2g2Jzogc2l6ZSA9PT0gJ21kJywgJ2g4LWInOiBzaXplID09PSAnc20nfVwiIFtuZ1N0eWxlXT1cInsgJ21hcmdpbi1yaWdodCc6ICc0cHgnfVwiPnt7aXRlbVtkaXNwbGF5S2V5XX19PC9zcGFuPlxuICAgICAgPHNwYW4gc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7XCIgKGNsaWNrKT1cInJlbW92ZUl0ZW0oaXRlbSlcIiB0YWJpbmRleD1cIjBcIiAoa2V5dXAuZW50ZXIpPVwicmVtb3ZlSXRlbShpdGVtKVwiIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgJ2N1cnNvcic6ICdwb2ludGVyJyxcbiAgICAgICAgJ2ZvbnQtc2l6ZSc6IHNpemUgPT09ICdzbScgPyAnMTJweCcgOiAnMTRweCdcbiAgICAgIH1cIiBjbGFzcz1cImljb24taWMtbmF2aWdhdGlvbi1jYW5jZWwtMjRcIj48L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwic2VhcmNoLWlucHV0XCI+XG4gICAgPHNwYW4gY2xhc3M9XCJpY29uLWljLWFjdGlvbi1zZWFyY2gtMjRcIj48L3NwYW4+XG4gICAgPGlucHV0ICpuZ0lmPVwiZGlzYWJsZUNvcHlQYXN0ZTsgZWxzZSBlbmFibGVDb3B5UGFzdGVcIiBbbmdDbGFzc109XCJ7J2lwLW1kJzogc2l6ZSA9PT0gJ21kJywgJ2lwLXNtJzogc2l6ZSA9PT0gJ3NtJ31cIiBvbmNvcHk9XCJyZXR1cm4gZmFsc2U7XCIgb25wYXN0ZT1cInJldHVybiBmYWxzZVwiIG9uY3V0PVwicmV0dXJuIGZhbHNlXCIgdGFiaW5kZXg9XCIwXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImJsYWNrLXRleHQgaDZcIiAjaW5wdXQgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCIgW2Zvcm1Db250cm9sXT1cInNlYXJjaElucHV0XCIgKGZvY3VzKT1cImRlZmF1bHRDYWxsKClcIiAoa2V5dXAuZW50ZXIpPVwiZW5hYmxlUG9wVXBPblRhYigpXCIvPlxuICAgIDxuZy10ZW1wbGF0ZSAjZW5hYmxlQ29weVBhc3RlPlxuICAgICAgPGlucHV0IFtuZ0NsYXNzXT1cInsnaXAtbWQnOiBzaXplID09PSAnbWQnLCAnaXAtc20nOiBzaXplID09PSAnc20nfVwiIHRhYmluZGV4PVwiMFwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJibGFjay10ZXh0IGg2XCIgI2lucHV0IFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiIFtmb3JtQ29udHJvbF09XCJzZWFyY2hJbnB1dFwiIChmb2N1cyk9XCJkZWZhdWx0Q2FsbCgpXCIgKGtleXVwLmVudGVyKT1cImVuYWJsZVBvcFVwT25UYWIoKVwiIC8+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8ZGl2IGNsYXNzPVwiaWNvbi1pYy1uYXZpZ2F0aW9uLWNhbmNlbC0yNCBjcm9vcy1pY29uXCIgKm5nSWY9XCJzZWFyY2hJbnB1dD8udmFsdWU/Lmxlbmd0aFwiIHRhYmluZGV4PVwiMFwiIChjbGljayk9XCJyZW1vdmVJbnB1dFZhbHVlKClcIiAoa2V5dXAuZW50ZXIpPVwicmVtb3ZlSW5wdXRWYWx1ZSgpXCI+PC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjZGQ+XG4gIDxkaXYgY2xhc3M9XCJkZC1saXN0XCIgW25nU3R5bGVdPVwieydtYXgtaGVpZ2h0JzpoZWlnaHQsICd3aWR0aCc6IGRyb3Bkb3duTGlzdFdpZHRofVwiICBbbmdDbGFzc109XCJ7J2RkLWxpc3QtcGQnOmRhdGEubGVuZ3RoID09PSAwfVwiIHRhYmluZGV4PVwiMFwiIGNka1RyYXBGb2N1cyBbY2RrVHJhcEZvY3VzQXV0b0NhcHR1cmVdPVwib3BlblBvcFVwT25UYWJcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9hZGluZ1wiPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdJZj1cImN1c3RvbUxvYWRlcjsgZWxzZSBkZWZhdWx0TG9hZGVyXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VzdG9tTG9hZGVyXCJcbiAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdExvYWRlcj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInN0YXR1cy1jb250YWluZXJcIiAqbmdJZj1cImxvYWRpbmcgJiYgIWN1c3RvbUxvYWRlclwiPlxuICAgICAgICAgIDxtaXMtbG9hZGVyIFttb2JpbGVWaWV3XT1cInRydWVcIj48L21pcy1sb2FkZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZXJyb3JcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdGF0dXMtY29udGFpbmVyXCI+XG4gICAgICAgIDxwPlVua25vd24gZXJyb3IgaGFzIG9jY3VycmVkLCA8YnI+IFBsZWFzZSB0cnkgYWdhaW4gbGF0ZXIuPC9wPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGRpdiAqbmdJZj1cIiFsb2FkaW5nICYmICFlcnJvciAmJiBkYXRhLmxlbmd0aCA+IDBcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZGF0YVwiPlxuICAgICAgICA8ZGl2IChjbGljayk9XCJzZWxlY3REYXRhKGl0ZW0sIGZhbHNlKVwiIChrZXl1cC5lbnRlcik9XCJzZWxlY3REYXRhKGl0ZW0sIGZhbHNlKVwiPiBcbiAgICAgICAgICA8ZGl2IHRhYmluZGV4PVwiLTFcIiBjZGtGb2N1c0luaXRpYWw+PC9kaXY+ICBcbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgW3RhYmluZGV4XT1cIm9wZW5Qb3BVcE9uVGFiID8gMCA6IC0xXCJcbiAgICAgICAgICAqbmdJZj1cImN1c3RvbUl0ZW07IGVsc2Ugc3RhbmRhcmRJdGVtXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbUl0ZW1cIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBpdGVtIH1cIlxuICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNzdGFuZGFyZEl0ZW0+XG4gICAgICAgICAgICA8ZGl2IHRhYmluZGV4PVwiLTFcIiBjZGtGb2N1c0luaXRpYWw+PC9kaXY+ICBcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtXCIgKGNsaWNrKT1cInNlbGVjdERhdGEoaXRlbSwgZmFsc2UpXCIgW3RhYmluZGV4XT1cIm9wZW5Qb3BVcE9uVGFiID8gMCA6IC0xXCIgKGtleXVwLmVudGVyKT1cInNlbGVjdERhdGEoaXRlbSwgZmFsc2UpXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmltYXJ5XCI+XG4gICAgICAgICAgICAgICAgICB7eyBpdGVtW2Rpc3BsYXlLZXldIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlY29uZGFyeVwiPlxuICAgICAgICAgICAgICAgICAge3sgaXRlbVtzZWNvbmRhcnlEaXNwbGF5S2V5XSB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cIiFsb2FkaW5nICYmICFlcnJvciAmJiBkYXRhLmxlbmd0aCA9PT0gMCAmJiBzZWFyY2hJbnB1dC52YWx1ZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImRhdGEtbm90LWZvdW5kXCI+Tm8gRGF0YSBBdmFpbGFibGU8L2Rpdj5cbiAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
529
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvYXN5bmMtc2VhcmNoLWRyb3Bkb3duL2FzeW5jLWRyb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2FzeW5jLXNlYXJjaC1kcm9wZG93bi9hc3luYy1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQVcsYUFBYSxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDbEcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUVaLFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUtMLE1BQU0sRUFHTixTQUFTLEVBRVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFtQixrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxLQUFLLEVBQWMsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUNoRSxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQ25CeEYsK0JBQXNILGVBQUE7SUFDaEIsWUFBb0I7SUFBQSxpQkFBTztJQUMvSCxnQ0FHd0M7SUFIVCxxT0FBUyxlQUFBLDJCQUFnQixDQUFBLElBQUMsb09BQTZCLGVBQUEsMkJBQWdCLENBQUEsSUFBN0M7SUFHakIsaUJBQU8sRUFBQTs7OztJQUwvQixnR0FBZ0U7SUFDMUUsZUFBd0Q7SUFBeEQsZ0dBQXdELHdDQUFBO0lBQXNDLGVBQW9CO0lBQXBCLGdEQUFvQjtJQUNoQixlQUd0RztJQUhz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LG9CQUFvQjtrQkFBNUIsS0FBSztZQUNpQyxNQUFNO2tCQUE1QyxTQUFTO21CQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7WUFDRSxLQUFLO2tCQUEzQyxTQUFTO21CQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7WUFDRCxFQUFFO2tCQUFyQyxTQUFTO21CQUFDLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7WUFFbEMsVUFBVTtrQkFEVCxZQUFZO21CQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7WUFHaEQsWUFBWTtrQkFEWCxZQUFZO21CQUFDLG1CQUFtQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBQztZQUd6QyxRQUFRO2tCQUFqQixNQUFNO1lBUUUsVUFBVTtrQkFBbEIsS0FBSztZQU1HLFdBQVc7a0JBQW5CLEtBQUs7WUFDSSxpQkFBaUI7a0JBQTFCLE1BQU07WUFDRyxLQUFLO2tCQUFkLE1BQU07WUFDRyxZQUFZO2tCQUFyQixNQUFNO1lBQ0csV0FBVztrQkFBcEIsTUFBTTtZQW9JUCxhQUFhO2tCQURaLFlBQVk7bUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25uZWN0aW9uUG9zaXRpb25QYWlyLCBPdmVybGF5LCBPdmVybGF5Q29uZmlnLCBPdmVybGF5UmVmIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9vdmVybGF5XCI7XG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gXCJAYW5ndWxhci9jZGsvcG9ydGFsXCI7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZlxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBVbnR5cGVkRm9ybUNvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IG1lcmdlLCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbnR5cGUgSUxpc3REYXRhID0gYW55O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwibWlzLWFzeW5jLXNlYXJjaC1kcm9wZG93blwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2FzeW5jLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1wiLi9hc3luYy1kcm9wZG93bi5jb21wb25lbnQuc2Nzc1wiXVxufSlcbmV4cG9ydCBjbGFzcyBBc3luY0Ryb3Bkb3duQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSwgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLCBwcml2YXRlIF9uZ1pvbmU6IE5nWm9uZSkgeyB9XG4gIEBJbnB1dCgpIGhlaWdodDtcbiAgQElucHV0KCkgd2lkdGg7XG4gIEBJbnB1dCgpIHNpemU6ICdtZCcgfCAnc20nID0gJ21kJ1xuICBASW5wdXQoKSBodHRwU3RyZWFtITogKHNlYXJjaEtleTogc3RyaW5nKSA9PiBPYnNlcnZhYmxlPElMaXN0RGF0YT47IC8vIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhbiBodHRwb2JzZXJ2YWJsZVxuICBASW5wdXQoKSBkaXNwbGF5S2V5ITogc3RyaW5nOyAvLyBzdHJpbmcgdG8gc2hvdyB2YWx1ZSBpbiBsaXN0XG4gIEBJbnB1dCgpIHNlY29uZGFyeURpc3BsYXlLZXkhOiBzdHJpbmc7IC8vIHN0cmluZyB0byBkaXNwbGF5IHNlY29uZGFyeSB2YWx1ZVxuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9IFwiU2VsZWN0XCI7IC8vIHBsYWNlaG9sZGVyIGZvciBpbnB1dFxuICBASW5wdXQoKSBkZWJvdW5jZVRpbWUgPSA0MDA7IC8vIHdhaXQgdGltZSB0aWxsIHdoaWNoIEFQSSBjYWxsIGlzIHBhdXNlZFxuICBASW5wdXQoKSBtaW5JbnB1dExlbmd0aCA9IDI7IC8vIG1pbiBsZW5ndGggYWZ0ZXIgd2hpY2ggQVBJIGNhbGwgaXMgbWFkZVxuICBASW5wdXQoKSBtdWx0aSA9IGZhbHNlOyAvLyBtYWludGFpbiBhIGxpc3Qgb3IgZW1pdCB2YWx1ZVxuICBASW5wdXQoKSB1bmlxdWVLZXk6IHN0cmluZzsgLy8gZm9yIGlkZW50aWZ5aW5nIHVuaXF1ZSB2YWx1ZXNcbiAgQElucHV0KCkgY29udHJvbDogQWJzdHJhY3RDb250cm9sIHwgbnVsbDsgLy8gZm9ybSBjb250cm9sIGZvciByZWFjdGl2ZSBmb3Jtc1xuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjsgLy8gZGlzYWJsZSBhY3Rpb25zIG9uIGNvbXBvbmVudFxuICBASW5wdXQoKSByZWFkb25seTogYm9vbGVhbjsgLy8gbWFrZSBjb21wb25lbnQgcmVhZG9ubHlcbiAgQElucHV0KCkgZGlzYWJsZUNvcHlQYXN0ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBkcm9wZG93bkxpc3RXaWR0aDsgLy93aWR0aCBvZiBkcm9wZG93biBsaXN0XG4gIEBJbnB1dCgpIGRyb3Bkb3duTGlzdFBvc2l0aW9uOiBcIkxlZnRcIiB8IFwiUmlnaHRcIiA9IFwiTGVmdFwiOyAvL2Ryb3Bkb3duIHBvc2l0aW9uXG4gIEBWaWV3Q2hpbGQoXCJkZEJ0blwiLCB7IHN0YXRpYzogZmFsc2UgfSkgb3JpZ2luOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKFwiaW5wdXRcIiwgeyBzdGF0aWM6IGZhbHNlIH0pIGlucHV0OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKFwiZGRcIiwgeyBzdGF0aWM6IGZhbHNlIH0pIGRkOiBUZW1wbGF0ZVJlZjxFbGVtZW50PjtcbiAgQENvbnRlbnRDaGlsZChcIm1pc0N1c3RvbUl0ZW1cIiwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIGN1c3RvbUl0ZW06IFRlbXBsYXRlUmVmPEVsZW1lbnQ+O1xuICBAQ29udGVudENoaWxkKFwiYXN5bmNDdXN0b21Mb2FkZXJcIiwgeyBzdGF0aWM6IGZhbHNlfSlcbiAgY3VzdG9tTG9hZGVyOiBUZW1wbGF0ZVJlZjxFbGVtZW50PjtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lXG4gIEBPdXRwdXQoKSBvblNlbGVjdDogRXZlbnRFbWl0dGVyPElMaXN0RGF0YSB8IElMaXN0RGF0YVtdPiA9IG5ldyBFdmVudEVtaXR0ZXIodHJ1ZSk7IC8vIGVtaXQgc2VsZWN0ZWQgdmFsdWVzXG4gIHNlYXJjaElucHV0OiBVbnR5cGVkRm9ybUNvbnRyb2wgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKCk7XG4gIGRhdGE6IElMaXN0RGF0YVtdID0gW107XG4gIG9wZW5lZCA9IGZhbHNlO1xuICBsb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIGVycm9yOiBib29sZWFuID0gZmFsc2U7XG4gIG9wZW5Qb3BVcE9uVGFiOiBib29sZWFuID0gZmFsc2U7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZVxuICBASW5wdXQoKSBzZWxlY3Rpb25zOiBNYXA8c3RyaW5nLCBhbnk+ID0gbmV3IE1hcCgpO1xuICBwcml2YXRlIGh0dHBTdHJlYW1UcmlnZ2VyID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICBwcml2YXRlIHNlYXJjaFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIGRlZmF1bHRDYWxsU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgb3ZlcmxheVJlZjogT3ZlcmxheVJlZjtcbiAgY29udHJvbFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBzZWFyY2hWYWx1ZTtcbiAgQE91dHB1dCgpIHNlYXJjaFF1ZXJ5Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KClcbiAgQE91dHB1dCgpIGNsZWFyOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKGZhbHNlKTtcbiAgQE91dHB1dCgpIGl0ZW1TZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8SUxpc3REYXRhPigpXG4gIEBPdXRwdXQoKSBpdGVtUmVtb3ZlZCA9IG5ldyBFdmVudEVtaXR0ZXI8SUxpc3REYXRhPigpXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm11bHRpICYmICF0aGlzLnVuaXF1ZUtleSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiW3VuaXF1ZUtleV0gcmVxdWlyZWQgaW4gbXVsdGkgbW9kZS5cIik7XG4gICAgfVxuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLnNlYXJjaElucHV0LmRpc2FibGUoKTtcbiAgICB9XG5cbiAgICBjb25zdCBzZWFyY2hPYnNlcnZhYmxlID0gdGhpcy5zZWFyY2hJbnB1dC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgIHRhcCgodmFsKSA9PiB0aGlzLnNlYXJjaFF1ZXJ5Q2hhbmdlLmVtaXQodmFsKSksXG4gICAgICBkZWJvdW5jZVRpbWUodGhpcy5kZWJvdW5jZVRpbWUpLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICk7XG5cbiAgICB0aGlzLnNlYXJjaFN1YnNjcmlwdGlvbiA9IG1lcmdlKHNlYXJjaE9ic2VydmFibGUsIHRoaXMuaHR0cFN0cmVhbVRyaWdnZXIpXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKChyZXM6c3RyaW5nKT0+e1xuICAgICAgICAgIHJlcyA9IHJlcy50cmltKCk7XG4gICAgICAgICAgaWYocmVzPy5sZW5ndGggPCB0aGlzLm1pbklucHV0TGVuZ3RoIHx8ICFyZXM/Lmxlbmd0aCl7XG4gICAgICAgICAgICB0aGlzLmNsb3NlRHJvcGRvd24oKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0pLFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgdGhpcy5lcnJvciA9IGZhbHNlO1xuICAgICAgICAgIGlmICghdGhpcy5vdmVybGF5UmVmPy5oYXNBdHRhY2hlZCgpKSB7XG4gICAgICAgICAgICB0aGlzLm9wZW5Ecm9wZG93bih0aGlzLmRkLCB0aGlzLm9yaWdpbi5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICBzd2l0Y2hNYXAoKHJlczogc3RyaW5nKSA9PiB0aGlzLmh0dHBTdHJlYW0ocmVzKSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAobGlzdCkgPT4ge1xuICAgICAgICAgIHRoaXMuX25nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmRhdGEgPSBsaXN0O1xuICAgICAgICAgICAgaWYgKCF0aGlzLm92ZXJsYXlSZWY/Lmhhc0F0dGFjaGVkKCkgJiYgbGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIHRoaXMub3BlbkRyb3Bkb3duKHRoaXMuZGQsIHRoaXMub3JpZ2luLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuZXJyb3IgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICBpZiAodGhpcy5jb250cm9sPy52YWx1ZSkge1xuICAgICAgdGhpcy5oYW5kbGVDb250cm9sQ2hhbmdlcyh0aGlzLmNvbnRyb2wudmFsdWUpO1xuICAgIH1cbiAgICB0aGlzLmNvbnRyb2xTdWJzY3JpcHRpb24gPSB0aGlzLmNvbnRyb2w/LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodGhpcy5oYW5kbGVDb250cm9sQ2hhbmdlcyk7XG4gIH1cblxuICByZWZyZXNoSHR0cFN0cmVhbShxdWVyeTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmh0dHBTdHJlYW1UcmlnZ2VyLm5leHQocXVlcnkpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzICYmIGNoYW5nZXM/LnNlYXJjaFZhbHVlPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMuc2VhcmNoSW5wdXQucGF0Y2hWYWx1ZShjaGFuZ2VzLnNlYXJjaFZhbHVlLmN1cnJlbnRWYWx1ZSk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzICYmIGNoYW5nZXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuc2VhcmNoSW5wdXQuZW5hYmxlKCk7XG4gICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICB0aGlzLnNlYXJjaElucHV0LmRpc2FibGUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmRlZmF1bHRDYWxsU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVDb250cm9sQ2hhbmdlcyA9ICh2YWx1ZXM6IElMaXN0RGF0YVtdKSA9PiB7XG4gICAgdmFsdWVzLmZvckVhY2goZWwgPT4ge1xuICAgICAgdGhpcy5zZWxlY3REYXRhKGVsLCB0cnVlKTtcbiAgICB9KTtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbiAgfTtcblxuICBwcml2YXRlIG9wZW5Ecm9wZG93bih0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8RWxlbWVudD4sIG9yaWdpbjogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICBjb25zdCBwb3NpdGlvbnNCb3R0b20gPSBbXG4gICAgICBuZXcgQ29ubmVjdGlvblBvc2l0aW9uUGFpcih7IG9yaWdpblg6IFwic3RhcnRcIiwgb3JpZ2luWTogXCJib3R0b21cIiB9LCB7IG92ZXJsYXlYOiBcInN0YXJ0XCIsIG92ZXJsYXlZOiBcInRvcFwiIH0sIDAsIDQpLFxuICAgICAgbmV3IENvbm5lY3Rpb25Qb3NpdGlvblBhaXIoeyBvcmlnaW5YOiBcImVuZFwiLCBvcmlnaW5ZOiBcImJvdHRvbVwiIH0sIHsgb3ZlcmxheVg6IFwiZW5kXCIsIG92ZXJsYXlZOiBcInRvcFwiIH0sIDAsIDQpXG4gICAgXTtcbiAgICBjb25zdCBwb3NpdGlvbnNUb3AgPSBbXG4gICAgICBuZXcgQ29ubmVjdGlvblBvc2l0aW9uUGFpcih7IG9yaWdpblg6IFwic3RhcnRcIiwgb3JpZ2luWTogXCJ0b3BcIiB9LCB7IG92ZXJsYXlYOiBcInN0YXJ0XCIsIG92ZXJsYXlZOiBcImJvdHRvbVwiIH0sIDAsIC00KSxcbiAgICAgIG5ldyBDb25uZWN0aW9uUG9zaXRpb25QYWlyKHsgb3JpZ2luWDogXCJlbmRcIiwgb3JpZ2luWTogXCJ0b3BcIiB9LCB7IG92ZXJsYXlYOiBcImVuZFwiLCBvdmVybGF5WTogXCJib3R0b21cIiB9LCAwLCAtNClcbiAgICBdO1xuICAgIGNvbnN0IHBvc2l0aW9uU3RyYXRlZ3kgPSB0aGlzLm92ZXJsYXlcbiAgICAgIC5wb3NpdGlvbigpXG4gICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyhvcmlnaW4pXG4gICAgICAud2l0aFBvc2l0aW9ucyhbXG4gICAgICAgIC4uLih0aGlzLmRyb3Bkb3duTGlzdFBvc2l0aW9uID09PSBcIlJpZ2h0XCIgPyBwb3NpdGlvbnNCb3R0b20ucmV2ZXJzZSgpIDogcG9zaXRpb25zQm90dG9tKSxcbiAgICAgICAgLi4uKHRoaXMuZHJvcGRvd25MaXN0UG9zaXRpb24gPT09IFwiUmlnaHRcIiA/IHBvc2l0aW9uc1RvcC5yZXZlcnNlKCkgOiBwb3NpdGlvbnNUb3ApXG4gICAgICBdKVxuICAgICAgLndpdGhQdXNoKHRydWUpO1xuXG4gICAgY29uc3QgY29uZmlncyA9IG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgYmFja2Ryb3BDbGFzczogXCJjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFwiLFxuICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKSxcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3ksXG4gICAgICB3aWR0aDogb3JpZ2luLmNsaWVudFdpZHRoXG4gICAgfSk7XG4gICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZShjb25maWdzKTtcbiAgICBpZiAodGhpcy5kcm9wZG93bkxpc3RXaWR0aCkgdGhpcy5vdmVybGF5UmVmLnVwZGF0ZVNpemUoeyB3aWR0aDogdGhpcy5kcm9wZG93bkxpc3RXaWR0aCB9KTtcbiAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKG5ldyBUZW1wbGF0ZVBvcnRhbCh0ZW1wbGF0ZSwgdGhpcy52aWV3Q29udGFpbmVyUmVmKSk7XG4gICAgdGhpcy5vdmVybGF5UmVmLmJhY2tkcm9wQ2xpY2soKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIGNsb3NlcyB0aGUgZHJvcGRvd25cbiAgICovXG4gIGNsb3NlRHJvcGRvd24oKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuZWQgPSBmYWxzZTtcbiAgICB0aGlzLm9wZW5Qb3BVcE9uVGFiID0gZmFsc2U7XG4gICAgdGhpcy5vdmVybGF5UmVmPy5kZXRhY2goKTtcbiAgICB0aGlzLmRhdGEgPSBbXTtcbiAgfVxuXG4gIGVuYWJsZVBvcFVwT25UYWIoKXtcbiAgICB0aGlzLm9wZW5Qb3BVcE9uVGFiID0gdHJ1ZTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24nLCBbJyRldmVudCddKVxuICBoYW5kbGVLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgIHRoaXMuc2VhcmNoSW5wdXQucGF0Y2hWYWx1ZShcIlwiKTtcbiAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgIH1cbiAgfVxuXG5cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGl0ZW0gaXRlbSB0byBzZWxlY3RcbiAgICogaWYgaXRlbSBwcm9wZXJ0eSBkaXNhYmxlZCBpcyBzZXQgdG8gdHJ1ZSwgc2VsZWN0aW9uIHdpbGwgYmUgZGlzYWJsZWRcbiAgICogQHBhcmFtIGVmZmVjdGVkRnJvbU91dHNpZGUgc2V0IHRvIHRydWUgaWYgY2FsbGluZyBmcm9tIHBhcmVudCBjb21wb25lbnQsIGlmIHRydWUgd2lsbCBmb2N1cyBvbiBzZWFyY2ggaW5wdXRcbiAgICovXG4gIHNlbGVjdERhdGEoaXRlbTogSUxpc3REYXRhLCBlZmZlY3RlZEZyb21PdXRzaWRlID0gdHJ1ZSk6IHZvaWQge1xuICAgIGlmIChpdGVtLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaXRlbVNlbGVjdGVkLmVtaXQoaXRlbSlcbiAgICBpZiAoIXRoaXMubXVsdGkpIHtcbiAgICAgIHRoaXMuc2VhcmNoSW5wdXQucGF0Y2hWYWx1ZShpdGVtW3RoaXMuZGlzcGxheUtleV0sIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgIHRoaXMuc2V0Q29udHJvbFZhbHVlKGl0ZW0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIXRoaXMuc2VsZWN0aW9ucy5oYXMoaXRlbVt0aGlzLnVuaXF1ZUtleV0pKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9ucy5zZXQoaXRlbVt0aGlzLnVuaXF1ZUtleV0sIGl0ZW0pO1xuICAgICAgfVxuICAgICAgdGhpcy5zZXRDb250cm9sVmFsdWUodGhpcy5zZWxlY3RlZEl0ZW1zKTtcbiAgICAgIGlmICghZWZmZWN0ZWRGcm9tT3V0c2lkZSkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoKTtcbiAgICAgICAgfSwgMTApO1xuICAgICAgfVxuICAgICAgdGhpcy5zZWFyY2hJbnB1dC5wYXRjaFZhbHVlKFwiXCIpO1xuICAgICAgdGhpcy5kYXRhID0gW107XG4gICAgfVxuICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBpdGVtIHJlbW92ZSBpdGVtIGZyb20gc2VsZWN0ZWQgbGlzdFxuICAgKi9cbiAgcmVtb3ZlSXRlbShpdGVtOiBJTGlzdERhdGEpOiB2b2lkIHtcbiAgICB0aGlzLml0ZW1SZW1vdmVkLmVtaXQoaXRlbSlcbiAgICB0aGlzLnNlbGVjdGlvbnMuZGVsZXRlKGl0ZW1bdGhpcy51bmlxdWVLZXldKTtcbiAgICB0aGlzLnNldENvbnRyb2xWYWx1ZSh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZVxuICAgIHRoaXMuaW5wdXRbXCJuYXRpdmVFbGVtZW50XCJdLmZvY3VzKCk7XG4gIH1cblxuICBwcml2YXRlIHNldENvbnRyb2xWYWx1ZSh2YWx1ZTogSUxpc3REYXRhKTogdm9pZCB7XG4gICAgdGhpcy5vblNlbGVjdC5lbWl0KHZhbHVlKTtcbiAgICB0aGlzLmNvbnRyb2w/LnBhdGNoVmFsdWUodmFsdWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBsaXN0IG9mIHNlbGVjdGVkIGl0ZW1zXG4gICAqL1xuICBnZXQgc2VsZWN0ZWRJdGVtcygpOiBBcnJheTxJTGlzdERhdGE+IHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnNlbGVjdGlvbnMudmFsdWVzKCkpO1xuICB9XG5cbiAgcmVtb3ZlSW5wdXRWYWx1ZSgpIHtcbiAgICB0aGlzLnNlYXJjaElucHV0LnJlc2V0KCk7XG4gICAgdGhpcy5kYXRhID0gW107XG4gICAgdGhpcy5jbGVhci5lbWl0KHRydWUpO1xuICB9XG4gIGRlZmF1bHRDYWxsKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm1pbklucHV0TGVuZ3RoID09PSAtMSkge1xuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuZGVmYXVsdENhbGxTdWJzY3JpcHRpb24gPSB0aGlzLmh0dHBTdHJlYW0odGhpcy5zZWFyY2hJbnB1dC52YWx1ZSB8fCAnJykuc3Vic2NyaWJlKGxpc3QgPT4ge1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5kYXRhID0gbGlzdDtcbiAgICAgICAgaWYgKCF0aGlzLm92ZXJsYXlSZWY/Lmhhc0F0dGFjaGVkKCkgJiYgdGhpcy5kYXRhPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhpcy5vcGVuRHJvcGRvd24odGhpcy5kZCwgdGhpcy5vcmlnaW4ubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZXJyb3IgPSB0cnVlO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZGQtd3JhcHBlclwiIFtuZ0NsYXNzXT1cInsgb3BlbmVkOiBvcGVuZWQsIGRpc2FibGVkOiBkaXNhYmxlZCwgcmVhZG9ubHk6IHJlYWRvbmx5IH1cIiBbc3R5bGUud2lkdGhdPVwid2lkdGhcIiAjZGRCdG4+XG4gIDxkaXYgY2xhc3M9XCJzZWxlY3RlZC1saXN0XCIgKm5nSWY9XCJtdWx0aSAmJiBzZWxlY3Rpb25zLnNpemUgPiAwXCI+XG4gICAgPGRpdiBjbGFzcz1cImNoaXBcIiBbbmdDbGFzc109XCJ7J2NoaXAtbWQnOiBzaXplID09PSAnbWQnLCAnY2hpcC1zbSc6IHNpemUgPT09ICdzbSd9XCIgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc2VsZWN0ZWRJdGVtc1wiPlxuICAgICAgPHNwYW4gW25nQ2xhc3NdPVwieydoNic6IHNpemUgPT09ICdtZCcsICdoOC1iJzogc2l6ZSA9PT0gJ3NtJ31cIiBbbmdTdHlsZV09XCJ7ICdtYXJnaW4tcmlnaHQnOiAnNHB4J31cIj57e2l0ZW1bZGlzcGxheUtleV19fTwvc3Bhbj5cbiAgICAgIDxzcGFuIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyO1wiIChjbGljayk9XCJyZW1vdmVJdGVtKGl0ZW0pXCIgdGFiaW5kZXg9XCIwXCIgKGtleXVwLmVudGVyKT1cInJlbW92ZUl0ZW0oaXRlbSlcIiBbbmdTdHlsZV09XCJ7XG4gICAgICAgICdjdXJzb3InOiAncG9pbnRlcicsXG4gICAgICAgICdmb250LXNpemUnOiBzaXplID09PSAnc20nID8gJzEycHgnIDogJzE0cHgnXG4gICAgICB9XCIgY2xhc3M9XCJpY29uLWljLW5hdmlnYXRpb24tY2FuY2VsLTI0XCI+PC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInNlYXJjaC1pbnB1dFwiPlxuICAgIDxzcGFuIGNsYXNzPVwiaWNvbi1pYy1hY3Rpb24tc2VhcmNoLTI0XCI+PC9zcGFuPlxuICAgIDxpbnB1dCAqbmdJZj1cImRpc2FibGVDb3B5UGFzdGU7IGVsc2UgZW5hYmxlQ29weVBhc3RlXCIgW25nQ2xhc3NdPVwieydpcC1tZCc6IHNpemUgPT09ICdtZCcsICdpcC1zbSc6IHNpemUgPT09ICdzbSd9XCIgb25jb3B5PVwicmV0dXJuIGZhbHNlO1wiIG9ucGFzdGU9XCJyZXR1cm4gZmFsc2VcIiBvbmN1dD1cInJldHVybiBmYWxzZVwiIHRhYmluZGV4PVwiMFwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJibGFjay10ZXh0IGg2XCIgI2lucHV0IFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiIFtmb3JtQ29udHJvbF09XCJzZWFyY2hJbnB1dFwiIChmb2N1cyk9XCJkZWZhdWx0Q2FsbCgpXCIgKGtleXVwLmVudGVyKT1cImVuYWJsZVBvcFVwT25UYWIoKVwiLz5cbiAgICA8bmctdGVtcGxhdGUgI2VuYWJsZUNvcHlQYXN0ZT5cbiAgICAgIDxpbnB1dCBbbmdDbGFzc109XCJ7J2lwLW1kJzogc2l6ZSA9PT0gJ21kJywgJ2lwLXNtJzogc2l6ZSA9PT0gJ3NtJ31cIiB0YWJpbmRleD1cIjBcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiYmxhY2stdGV4dCBoNlwiICNpbnB1dCBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiBbZm9ybUNvbnRyb2xdPVwic2VhcmNoSW5wdXRcIiAoZm9jdXMpPVwiZGVmYXVsdENhbGwoKVwiIChrZXl1cC5lbnRlcik9XCJlbmFibGVQb3BVcE9uVGFiKClcIiAvPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPGRpdiBjbGFzcz1cImljb24taWMtbmF2aWdhdGlvbi1jYW5jZWwtMjQgY3Jvb3MtaWNvblwiICpuZ0lmPVwic2VhcmNoSW5wdXQ/LnZhbHVlPy5sZW5ndGhcIiB0YWJpbmRleD1cIjBcIiAoY2xpY2spPVwicmVtb3ZlSW5wdXRWYWx1ZSgpXCIgKGtleXVwLmVudGVyKT1cInJlbW92ZUlucHV0VmFsdWUoKVwiPjwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2RkPlxuICA8ZGl2IGNsYXNzPVwiZGQtbGlzdFwiIFtuZ1N0eWxlXT1cInsnbWF4LWhlaWdodCc6aGVpZ2h0LCAnd2lkdGgnOiBkcm9wZG93bkxpc3RXaWR0aH1cIiAgW25nQ2xhc3NdPVwieydkZC1saXN0LXBkJzpkYXRhLmxlbmd0aCA9PT0gMH1cIiB0YWJpbmRleD1cIjBcIiBjZGtUcmFwRm9jdXMgW2Nka1RyYXBGb2N1c0F1dG9DYXB0dXJlXT1cIm9wZW5Qb3BVcE9uVGFiXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRpbmdcIj5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nSWY9XCJjdXN0b21Mb2FkZXI7IGVsc2UgZGVmYXVsdExvYWRlclwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbUxvYWRlclwiXG4gICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRMb2FkZXI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0dXMtY29udGFpbmVyXCIgKm5nSWY9XCJsb2FkaW5nICYmICFjdXN0b21Mb2FkZXJcIj5cbiAgICAgICAgICA8bWlzLWxvYWRlciBbbW9iaWxlVmlld109XCJ0cnVlXCI+PC9taXMtbG9hZGVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVycm9yXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic3RhdHVzLWNvbnRhaW5lclwiPlxuICAgICAgICA8cD5Vbmtub3duIGVycm9yIGhhcyBvY2N1cnJlZCwgPGJyPiBQbGVhc2UgdHJ5IGFnYWluIGxhdGVyLjwvcD5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxkaXYgKm5nSWY9XCIhbG9hZGluZyAmJiAhZXJyb3IgJiYgZGF0YS5sZW5ndGggPiAwXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGRhdGFcIj5cbiAgICAgICAgPGRpdiAoY2xpY2spPVwic2VsZWN0RGF0YShpdGVtLCBmYWxzZSlcIiAoa2V5dXAuZW50ZXIpPVwic2VsZWN0RGF0YShpdGVtLCBmYWxzZSlcIj4gXG4gICAgICAgICAgPGRpdiB0YWJpbmRleD1cIi0xXCIgY2RrRm9jdXNJbml0aWFsPjwvZGl2PiAgXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgIFt0YWJpbmRleF09XCJvcGVuUG9wVXBPblRhYiA/IDAgOiAtMVwiXG4gICAgICAgICAgKm5nSWY9XCJjdXN0b21JdGVtOyBlbHNlIHN0YW5kYXJkSXRlbVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjdXN0b21JdGVtXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaXRlbSB9XCJcbiAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc3RhbmRhcmRJdGVtPlxuICAgICAgICAgICAgPGRpdiB0YWJpbmRleD1cIi0xXCIgY2RrRm9jdXNJbml0aWFsPjwvZGl2PiAgXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbVwiIChjbGljayk9XCJzZWxlY3REYXRhKGl0ZW0sIGZhbHNlKVwiIFt0YWJpbmRleF09XCJvcGVuUG9wVXBPblRhYiA/IDAgOiAtMVwiIChrZXl1cC5lbnRlcik9XCJzZWxlY3REYXRhKGl0ZW0sIGZhbHNlKVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpbWFyeVwiPlxuICAgICAgICAgICAgICAgICAge3sgaXRlbVtkaXNwbGF5S2V5XSB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWNvbmRhcnlcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGl0ZW1bc2Vjb25kYXJ5RGlzcGxheUtleV0gfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCIhbG9hZGluZyAmJiAhZXJyb3IgJiYgZGF0YS5sZW5ndGggPT09IDAgJiYgc2VhcmNoSW5wdXQudmFsdWVcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkYXRhLW5vdC1mb3VuZFwiPk5vIERhdGEgQXZhaWxhYmxlPC9kaXY+XG4gIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -288,9 +288,11 @@ class AsyncDropdownComponent {
|
|
|
288
288
|
if (this.disabled) {
|
|
289
289
|
this.searchInput.disable();
|
|
290
290
|
}
|
|
291
|
-
const searchObservable = this.searchInput.valueChanges.pipe(tap((val) => this.searchQueryChange.emit(val)), debounceTime(this.debounceTime), distinctUntilChanged()
|
|
292
|
-
|
|
293
|
-
|
|
291
|
+
const searchObservable = this.searchInput.valueChanges.pipe(tap((val) => this.searchQueryChange.emit(val)), debounceTime(this.debounceTime), distinctUntilChanged());
|
|
292
|
+
this.searchSubscription = merge(searchObservable, this.httpStreamTrigger)
|
|
293
|
+
.pipe(filter((res) => {
|
|
294
|
+
res = res.trim();
|
|
295
|
+
if ((res === null || res === void 0 ? void 0 : res.length) < this.minInputLength || !(res === null || res === void 0 ? void 0 : res.length)) {
|
|
294
296
|
this.closeDropdown();
|
|
295
297
|
return false;
|
|
296
298
|
}
|
|
@@ -299,10 +301,10 @@ class AsyncDropdownComponent {
|
|
|
299
301
|
var _a;
|
|
300
302
|
this.loading = true;
|
|
301
303
|
this.error = false;
|
|
302
|
-
if (!((_a = this.overlayRef) === null || _a === void 0 ? void 0 : _a.hasAttached()))
|
|
304
|
+
if (!((_a = this.overlayRef) === null || _a === void 0 ? void 0 : _a.hasAttached())) {
|
|
303
305
|
this.openDropdown(this.dd, this.origin.nativeElement);
|
|
304
|
-
|
|
305
|
-
|
|
306
|
+
}
|
|
307
|
+
}), switchMap((res) => this.httpStream(res)))
|
|
306
308
|
.subscribe({
|
|
307
309
|
next: (list) => {
|
|
308
310
|
this._ngZone.run(() => {
|
|
@@ -314,11 +316,9 @@ class AsyncDropdownComponent {
|
|
|
314
316
|
}
|
|
315
317
|
});
|
|
316
318
|
},
|
|
317
|
-
error: (
|
|
318
|
-
this.
|
|
319
|
-
|
|
320
|
-
this.error = true;
|
|
321
|
-
});
|
|
319
|
+
error: () => {
|
|
320
|
+
this.loading = false;
|
|
321
|
+
this.error = true;
|
|
322
322
|
}
|
|
323
323
|
});
|
|
324
324
|
if ((_a = this.control) === null || _a === void 0 ? void 0 : _a.value) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mis-crystal-design-system-async-search-dropdown.mjs","sources":["../../../projects/mis-components/async-search-dropdown/async-dropdown.component.html","../../../projects/mis-components/async-search-dropdown/async-dropdown.component.ts","../../../projects/mis-components/async-search-dropdown/async-dropdown.module.ts","../../../projects/mis-components/async-search-dropdown/mis-crystal-design-system-async-search-dropdown.ts"],"sourcesContent":["<div class=\"dd-wrapper\" [ngClass]=\"{ opened: opened, disabled: disabled, readonly: readonly }\" [style.width]=\"width\" #ddBtn>\n <div class=\"selected-list\" *ngIf=\"multi && selections.size > 0\">\n <div class=\"chip\" [ngClass]=\"{'chip-md': size === 'md', 'chip-sm': size === 'sm'}\" *ngFor=\"let item of selectedItems\">\n <span [ngClass]=\"{'h6': size === 'md', 'h8-b': size === 'sm'}\" [ngStyle]=\"{ 'margin-right': '4px'}\">{{item[displayKey]}}</span>\n <span style=\"cursor: pointer;\" (click)=\"removeItem(item)\" tabindex=\"0\" (keyup.enter)=\"removeItem(item)\" [ngStyle]=\"{\n 'cursor': 'pointer',\n 'font-size': size === 'sm' ? '12px' : '14px'\n }\" class=\"icon-ic-navigation-cancel-24\"></span>\n </div>\n </div>\n <div class=\"search-input\">\n <span class=\"icon-ic-action-search-24\"></span>\n <input *ngIf=\"disableCopyPaste; else enableCopyPaste\" [ngClass]=\"{'ip-md': size === 'md', 'ip-sm': size === 'sm'}\" oncopy=\"return false;\" onpaste=\"return false\" oncut=\"return false\" tabindex=\"0\" type=\"text\" class=\"black-text h6\" #input [placeholder]=\"placeholder\" [formControl]=\"searchInput\" (focus)=\"defaultCall()\" (keyup.enter)=\"enablePopUpOnTab()\"/>\n <ng-template #enableCopyPaste>\n <input [ngClass]=\"{'ip-md': size === 'md', 'ip-sm': size === 'sm'}\" tabindex=\"0\" type=\"text\" class=\"black-text h6\" #input [placeholder]=\"placeholder\" [formControl]=\"searchInput\" (focus)=\"defaultCall()\" (keyup.enter)=\"enablePopUpOnTab()\" />\n </ng-template>\n <div class=\"icon-ic-navigation-cancel-24 croos-icon\" *ngIf=\"searchInput?.value?.length\" tabindex=\"0\" (click)=\"removeInputValue()\" (keyup.enter)=\"removeInputValue()\"></div>\n </div>\n</div>\n\n<ng-template #dd>\n <div class=\"dd-list\" [ngStyle]=\"{'max-height':height, 'width': dropdownListWidth}\" [ngClass]=\"{'dd-list-pd':data.length === 0}\" tabindex=\"0\" cdkTrapFocus [cdkTrapFocusAutoCapture]=\"openPopUpOnTab\">\n <ng-container *ngIf=\"loading\">\n <ng-container\n *ngIf=\"customLoader; else defaultLoader\"\n [ngTemplateOutlet]=\"customLoader\"\n ></ng-container>\n <ng-template #defaultLoader>\n <div class=\"status-container\" *ngIf=\"loading && !customLoader\">\n <mis-loader [mobileView]=\"true\"></mis-loader>\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"error\">\n <div class=\"status-container\">\n <p>Unknown error has occurred, <br> Please try again later.</p>\n </div>\n </ng-container>\n <div *ngIf=\"!loading && !error && data.length > 0\">\n <ng-container *ngFor=\"let item of data\">\n <div (click)=\"selectData(item, false)\" (keyup.enter)=\"selectData(item, false)\"> \n <div tabindex=\"-1\" cdkFocusInitial></div> \n <div\n [tabindex]=\"openPopUpOnTab ? 0 : -1\"\n *ngIf=\"customItem; else standardItem\"\n >\n <ng-container\n [ngTemplateOutlet]=\"customItem\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-container>\n </div>\n <ng-template #standardItem>\n <div tabindex=\"-1\" cdkFocusInitial></div> \n <div class=\"item\" (click)=\"selectData(item, false)\" [tabindex]=\"openPopUpOnTab ? 0 : -1\" (keyup.enter)=\"selectData(item, false)\">\n <div class=\"value\">\n <div class=\"primary\">\n {{ item[displayKey] }}\n </div>\n <div class=\"secondary\">\n {{ item[secondaryDisplayKey] }}\n </div>\n </div>\n </div>\n </ng-template>\n </div>\n </ng-container>\n </div>\n <div *ngIf=\"!loading && !error && data.length === 0 && searchInput.value\">\n <div class=\"data-not-found\">No Data Available</div>\n </div>\n </div>\n</ng-template>\n","import { ConnectionPositionPair, Overlay, OverlayConfig, OverlayRef } from \"@angular/cdk/overlay\";\nimport { TemplatePortal } from \"@angular/cdk/portal\";\nimport {\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewContainerRef\n} from \"@angular/core\";\nimport { AbstractControl, UntypedFormControl } from \"@angular/forms\";\nimport { merge, Observable, Subject, Subscription } from \"rxjs\";\nimport { debounceTime, distinctUntilChanged, tap, switchMap, filter } from \"rxjs/operators\";\n\n// tslint:disable-next-line\ntype IListData = any;\n\n@Component({\n selector: \"mis-async-search-dropdown\",\n templateUrl: \"./async-dropdown.component.html\",\n styleUrls: [\"./async-dropdown.component.scss\"]\n})\nexport class AsyncDropdownComponent implements OnInit, OnChanges, OnDestroy {\n constructor(private overlay: Overlay, private viewContainerRef: ViewContainerRef, private _ngZone: NgZone) { }\n @Input() height;\n @Input() width;\n @Input() size: 'md' | 'sm' = 'md'\n @Input() httpStream!: (searchKey: string) => Observable<IListData>; // function that returns an httpobservable\n @Input() displayKey!: string; // string to show value in list\n @Input() secondaryDisplayKey!: string; // string to display secondary value\n @Input() placeholder = \"Select\"; // placeholder for input\n @Input() debounceTime = 400; // wait time till which API call is paused\n @Input() minInputLength = 2; // min length after which API call is made\n @Input() multi = false; // maintain a list or emit value\n @Input() uniqueKey: string; // for identifying unique values\n @Input() control: AbstractControl | null; // form control for reactive forms\n @Input() disabled: boolean; // disable actions on component\n @Input() readonly: boolean; // make component readonly\n @Input() disableCopyPaste: boolean = false;\n @Input() dropdownListWidth; //width of dropdown list\n @Input() dropdownListPosition: \"Left\" | \"Right\" = \"Left\"; //dropdown position\n @ViewChild(\"ddBtn\", { static: false }) origin: ElementRef;\n @ViewChild(\"input\", { static: false }) input: ElementRef;\n @ViewChild(\"dd\", { static: false }) dd: TemplateRef<Element>;\n @ContentChild(\"misCustomItem\", { static: false })\n customItem: TemplateRef<Element>;\n @ContentChild(\"asyncCustomLoader\", { static: false})\n customLoader: TemplateRef<Element>;\n // tslint:disable-next-line\n @Output() onSelect: EventEmitter<IListData | IListData[]> = new EventEmitter(true); // emit selected values\n searchInput: UntypedFormControl = new UntypedFormControl();\n data: IListData[] = [];\n opened = false;\n loading: boolean = false;\n error: boolean = false;\n openPopUpOnTab: boolean = false;\n // tslint:disable-next-line\n @Input() selections: Map<string, any> = new Map();\n private httpStreamTrigger = new Subject<string>();\n private searchSubscription: Subscription;\n private defaultCallSubscription: Subscription;\n private overlayRef: OverlayRef;\n controlSubscription: Subscription | undefined;\n @Input() searchValue;\n @Output() searchQueryChange = new EventEmitter<string>()\n @Output() clear: EventEmitter<boolean> = new EventEmitter(false);\n @Output() itemSelected = new EventEmitter<IListData>()\n @Output() itemRemoved = new EventEmitter<IListData>()\n ngOnInit(): void {\n if (this.multi && !this.uniqueKey) {\n throw new Error(\"[uniqueKey] required in multi mode.\");\n }\n if (this.disabled) {\n this.searchInput.disable();\n }\n\n const searchObservable = this.searchInput.valueChanges.pipe(\n tap((val) => this.searchQueryChange.emit(val)),\n debounceTime(this.debounceTime),\n distinctUntilChanged(),\n filter(res => {\n const trimmedValue = res.trim();\n if (trimmedValue.length < this.minInputLength || !trimmedValue.length) {\n this.closeDropdown();\n return false;\n }\n return true;\n }),\n tap(() => {\n this.loading = true;\n this.error = false;\n if(!this.overlayRef?.hasAttached())\n this.openDropdown(this.dd, this.origin.nativeElement);\n }),\n switchMap(res => this.httpStream(res.trim()))\n );\n\n this.searchSubscription = merge(searchObservable, this.httpStreamTrigger)\n .subscribe({\n next: (list) => {\n this._ngZone.run(() => {\n this.loading = false;\n this.data = list;\n if (!this.overlayRef?.hasAttached() && list.length > 0) {\n this.openDropdown(this.dd, this.origin.nativeElement);\n }\n });\n },\n error: (error) => {\n this._ngZone.run(() => {\n this.loading = false;\n this.error = true;\n });\n }\n });\n if (this.control?.value) {\n this.handleControlChanges(this.control.value);\n }\n this.controlSubscription = this.control?.valueChanges.subscribe(this.handleControlChanges);\n }\n\n refreshHttpStream(query: string): void {\n this.loading = true;\n this.httpStreamTrigger.next(query);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes && changes?.searchValue?.currentValue) {\n this.searchInput.patchValue(changes.searchValue.currentValue);\n }\n if (changes && changes.disabled) {\n this.searchInput.enable();\n if (this.disabled) {\n this.searchInput.disable();\n }\n }\n }\n\n ngOnDestroy(): void {\n this.searchSubscription?.unsubscribe();\n this.defaultCallSubscription?.unsubscribe();\n }\n\n private handleControlChanges = (values: IListData[]) => {\n values.forEach(el => {\n this.selectData(el, true);\n });\n // tslint:disable-next-line\n };\n\n private openDropdown(template: TemplateRef<Element>, origin: HTMLElement): void {\n const positionsBottom = [\n new ConnectionPositionPair({ originX: \"start\", originY: \"bottom\" }, { overlayX: \"start\", overlayY: \"top\" }, 0, 4),\n new ConnectionPositionPair({ originX: \"end\", originY: \"bottom\" }, { overlayX: \"end\", overlayY: \"top\" }, 0, 4)\n ];\n const positionsTop = [\n new ConnectionPositionPair({ originX: \"start\", originY: \"top\" }, { overlayX: \"start\", overlayY: \"bottom\" }, 0, -4),\n new ConnectionPositionPair({ originX: \"end\", originY: \"top\" }, { overlayX: \"end\", overlayY: \"bottom\" }, 0, -4)\n ];\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(origin)\n .withPositions([\n ...(this.dropdownListPosition === \"Right\" ? positionsBottom.reverse() : positionsBottom),\n ...(this.dropdownListPosition === \"Right\" ? positionsTop.reverse() : positionsTop)\n ])\n .withPush(true);\n\n const configs = new OverlayConfig({\n hasBackdrop: true,\n backdropClass: \"cdk-overlay-transparent-backdrop\",\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n positionStrategy,\n width: origin.clientWidth\n });\n this.overlayRef = this.overlay.create(configs);\n if (this.dropdownListWidth) this.overlayRef.updateSize({ width: this.dropdownListWidth });\n this.overlayRef.attach(new TemplatePortal(template, this.viewContainerRef));\n this.overlayRef.backdropClick().subscribe(res => {\n this.closeDropdown();\n });\n }\n\n /**\n * closes the dropdown\n */\n closeDropdown(): void {\n this.opened = false;\n this.openPopUpOnTab = false;\n this.overlayRef?.detach();\n this.data = [];\n }\n\n enablePopUpOnTab(){\n this.openPopUpOnTab = true;\n }\n\n @HostListener('document:keydown', ['$event'])\n handleKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n this.searchInput.patchValue(\"\");\n this.closeDropdown();\n }\n }\n\n\n\n /**\n *\n * @param item item to select\n * if item property disabled is set to true, selection will be disabled\n * @param effectedFromOutside set to true if calling from parent component, if true will focus on search input\n */\n selectData(item: IListData, effectedFromOutside = true): void {\n if (item.disabled) {\n return;\n }\n this.itemSelected.emit(item)\n if (!this.multi) {\n this.searchInput.patchValue(item[this.displayKey], { emitEvent: false });\n this.setControlValue(item);\n } else {\n if (!this.selections.has(item[this.uniqueKey])) {\n this.selections.set(item[this.uniqueKey], item);\n }\n this.setControlValue(this.selectedItems);\n if (!effectedFromOutside) {\n setTimeout(() => {\n this.input.nativeElement.focus();\n this.input.nativeElement.scrollIntoView();\n }, 10);\n }\n this.searchInput.patchValue(\"\");\n this.data = [];\n }\n this.closeDropdown();\n }\n\n /**\n *\n * @param item remove item from selected list\n */\n removeItem(item: IListData): void {\n this.itemRemoved.emit(item)\n this.selections.delete(item[this.uniqueKey]);\n this.setControlValue(this.selectedItems);\n // tslint:disable-next-line\n this.input[\"nativeElement\"].focus();\n }\n\n private setControlValue(value: IListData): void {\n this.onSelect.emit(value);\n this.control?.patchValue(value, { emitEvent: false });\n }\n\n /**\n * @returns list of selected items\n */\n get selectedItems(): Array<IListData> {\n return Array.from(this.selections.values());\n }\n\n removeInputValue() {\n this.searchInput.reset();\n this.data = [];\n this.clear.emit(true);\n }\n defaultCall(): void {\n if (this.minInputLength === -1) {\n this.loading = true;\n this.defaultCallSubscription = this.httpStream(this.searchInput.value || '').subscribe(list => {\n this.loading = false;\n this.data = list;\n if (!this.overlayRef?.hasAttached() && this.data?.length > 0) {\n this.openDropdown(this.dd, this.origin.nativeElement);\n }\n }, error => {\n this.loading = false;\n this.error = true;\n });\n }\n }\n}\n","import { OverlayModule } from \"@angular/cdk/overlay\";\nimport { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport { LoaderModule } from \"mis-crystal-design-system/loader\";\nimport { AsyncDropdownComponent } from \"./async-dropdown.component\";\nimport { A11yModule } from \"@angular/cdk/a11y\";\n\n@NgModule({\n declarations: [AsyncDropdownComponent],\n imports: [CommonModule, OverlayModule, ReactiveFormsModule, FormsModule, LoaderModule, A11yModule],\n exports: [AsyncDropdownComponent]\n})\nexport class AsyncDropdownModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mis-crystal-design-system-async-search-dropdown.mjs","sources":["../../../projects/mis-components/async-search-dropdown/async-dropdown.component.html","../../../projects/mis-components/async-search-dropdown/async-dropdown.component.ts","../../../projects/mis-components/async-search-dropdown/async-dropdown.module.ts","../../../projects/mis-components/async-search-dropdown/mis-crystal-design-system-async-search-dropdown.ts"],"sourcesContent":["<div class=\"dd-wrapper\" [ngClass]=\"{ opened: opened, disabled: disabled, readonly: readonly }\" [style.width]=\"width\" #ddBtn>\n <div class=\"selected-list\" *ngIf=\"multi && selections.size > 0\">\n <div class=\"chip\" [ngClass]=\"{'chip-md': size === 'md', 'chip-sm': size === 'sm'}\" *ngFor=\"let item of selectedItems\">\n <span [ngClass]=\"{'h6': size === 'md', 'h8-b': size === 'sm'}\" [ngStyle]=\"{ 'margin-right': '4px'}\">{{item[displayKey]}}</span>\n <span style=\"cursor: pointer;\" (click)=\"removeItem(item)\" tabindex=\"0\" (keyup.enter)=\"removeItem(item)\" [ngStyle]=\"{\n 'cursor': 'pointer',\n 'font-size': size === 'sm' ? '12px' : '14px'\n }\" class=\"icon-ic-navigation-cancel-24\"></span>\n </div>\n </div>\n <div class=\"search-input\">\n <span class=\"icon-ic-action-search-24\"></span>\n <input *ngIf=\"disableCopyPaste; else enableCopyPaste\" [ngClass]=\"{'ip-md': size === 'md', 'ip-sm': size === 'sm'}\" oncopy=\"return false;\" onpaste=\"return false\" oncut=\"return false\" tabindex=\"0\" type=\"text\" class=\"black-text h6\" #input [placeholder]=\"placeholder\" [formControl]=\"searchInput\" (focus)=\"defaultCall()\" (keyup.enter)=\"enablePopUpOnTab()\"/>\n <ng-template #enableCopyPaste>\n <input [ngClass]=\"{'ip-md': size === 'md', 'ip-sm': size === 'sm'}\" tabindex=\"0\" type=\"text\" class=\"black-text h6\" #input [placeholder]=\"placeholder\" [formControl]=\"searchInput\" (focus)=\"defaultCall()\" (keyup.enter)=\"enablePopUpOnTab()\" />\n </ng-template>\n <div class=\"icon-ic-navigation-cancel-24 croos-icon\" *ngIf=\"searchInput?.value?.length\" tabindex=\"0\" (click)=\"removeInputValue()\" (keyup.enter)=\"removeInputValue()\"></div>\n </div>\n</div>\n\n<ng-template #dd>\n <div class=\"dd-list\" [ngStyle]=\"{'max-height':height, 'width': dropdownListWidth}\" [ngClass]=\"{'dd-list-pd':data.length === 0}\" tabindex=\"0\" cdkTrapFocus [cdkTrapFocusAutoCapture]=\"openPopUpOnTab\">\n <ng-container *ngIf=\"loading\">\n <ng-container\n *ngIf=\"customLoader; else defaultLoader\"\n [ngTemplateOutlet]=\"customLoader\"\n ></ng-container>\n <ng-template #defaultLoader>\n <div class=\"status-container\" *ngIf=\"loading && !customLoader\">\n <mis-loader [mobileView]=\"true\"></mis-loader>\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"error\">\n <div class=\"status-container\">\n <p>Unknown error has occurred, <br> Please try again later.</p>\n </div>\n </ng-container>\n <div *ngIf=\"!loading && !error && data.length > 0\">\n <ng-container *ngFor=\"let item of data\">\n <div (click)=\"selectData(item, false)\" (keyup.enter)=\"selectData(item, false)\"> \n <div tabindex=\"-1\" cdkFocusInitial></div> \n <div\n [tabindex]=\"openPopUpOnTab ? 0 : -1\"\n *ngIf=\"customItem; else standardItem\"\n >\n <ng-container\n [ngTemplateOutlet]=\"customItem\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-container>\n </div>\n <ng-template #standardItem>\n <div tabindex=\"-1\" cdkFocusInitial></div> \n <div class=\"item\" (click)=\"selectData(item, false)\" [tabindex]=\"openPopUpOnTab ? 0 : -1\" (keyup.enter)=\"selectData(item, false)\">\n <div class=\"value\">\n <div class=\"primary\">\n {{ item[displayKey] }}\n </div>\n <div class=\"secondary\">\n {{ item[secondaryDisplayKey] }}\n </div>\n </div>\n </div>\n </ng-template>\n </div>\n </ng-container>\n </div>\n <div *ngIf=\"!loading && !error && data.length === 0 && searchInput.value\">\n <div class=\"data-not-found\">No Data Available</div>\n </div>\n </div>\n</ng-template>\n","import { ConnectionPositionPair, Overlay, OverlayConfig, OverlayRef } from \"@angular/cdk/overlay\";\nimport { TemplatePortal } from \"@angular/cdk/portal\";\nimport {\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewContainerRef\n} from \"@angular/core\";\nimport { AbstractControl, UntypedFormControl } from \"@angular/forms\";\nimport { merge, Observable, Subject, Subscription } from \"rxjs\";\nimport { debounceTime, distinctUntilChanged, filter, switchMap, tap } from \"rxjs/operators\";\n\n// tslint:disable-next-line\ntype IListData = any;\n\n@Component({\n selector: \"mis-async-search-dropdown\",\n templateUrl: \"./async-dropdown.component.html\",\n styleUrls: [\"./async-dropdown.component.scss\"]\n})\nexport class AsyncDropdownComponent implements OnInit, OnChanges, OnDestroy {\n constructor(private overlay: Overlay, private viewContainerRef: ViewContainerRef, private _ngZone: NgZone) { }\n @Input() height;\n @Input() width;\n @Input() size: 'md' | 'sm' = 'md'\n @Input() httpStream!: (searchKey: string) => Observable<IListData>; // function that returns an httpobservable\n @Input() displayKey!: string; // string to show value in list\n @Input() secondaryDisplayKey!: string; // string to display secondary value\n @Input() placeholder = \"Select\"; // placeholder for input\n @Input() debounceTime = 400; // wait time till which API call is paused\n @Input() minInputLength = 2; // min length after which API call is made\n @Input() multi = false; // maintain a list or emit value\n @Input() uniqueKey: string; // for identifying unique values\n @Input() control: AbstractControl | null; // form control for reactive forms\n @Input() disabled: boolean; // disable actions on component\n @Input() readonly: boolean; // make component readonly\n @Input() disableCopyPaste: boolean = false;\n @Input() dropdownListWidth; //width of dropdown list\n @Input() dropdownListPosition: \"Left\" | \"Right\" = \"Left\"; //dropdown position\n @ViewChild(\"ddBtn\", { static: false }) origin: ElementRef;\n @ViewChild(\"input\", { static: false }) input: ElementRef;\n @ViewChild(\"dd\", { static: false }) dd: TemplateRef<Element>;\n @ContentChild(\"misCustomItem\", { static: false })\n customItem: TemplateRef<Element>;\n @ContentChild(\"asyncCustomLoader\", { static: false})\n customLoader: TemplateRef<Element>;\n // tslint:disable-next-line\n @Output() onSelect: EventEmitter<IListData | IListData[]> = new EventEmitter(true); // emit selected values\n searchInput: UntypedFormControl = new UntypedFormControl();\n data: IListData[] = [];\n opened = false;\n loading: boolean = false;\n error: boolean = false;\n openPopUpOnTab: boolean = false;\n // tslint:disable-next-line\n @Input() selections: Map<string, any> = new Map();\n private httpStreamTrigger = new Subject<string>();\n private searchSubscription: Subscription;\n private defaultCallSubscription: Subscription;\n private overlayRef: OverlayRef;\n controlSubscription: Subscription | undefined;\n @Input() searchValue;\n @Output() searchQueryChange = new EventEmitter<string>()\n @Output() clear: EventEmitter<boolean> = new EventEmitter(false);\n @Output() itemSelected = new EventEmitter<IListData>()\n @Output() itemRemoved = new EventEmitter<IListData>()\n ngOnInit(): void {\n if (this.multi && !this.uniqueKey) {\n throw new Error(\"[uniqueKey] required in multi mode.\");\n }\n if (this.disabled) {\n this.searchInput.disable();\n }\n\n const searchObservable = this.searchInput.valueChanges.pipe(\n tap((val) => this.searchQueryChange.emit(val)),\n debounceTime(this.debounceTime),\n distinctUntilChanged()\n );\n\n this.searchSubscription = merge(searchObservable, this.httpStreamTrigger)\n .pipe(\n filter((res:string)=>{\n res = res.trim();\n if(res?.length < this.minInputLength || !res?.length){\n this.closeDropdown();\n return false;\n }\n return true;\n }),\n tap(() => {\n this.loading = true;\n this.error = false;\n if (!this.overlayRef?.hasAttached()) {\n this.openDropdown(this.dd, this.origin.nativeElement);\n }\n }),\n switchMap((res: string) => this.httpStream(res))\n )\n .subscribe({\n next: (list) => {\n this._ngZone.run(() => {\n this.loading = false;\n this.data = list;\n if (!this.overlayRef?.hasAttached() && list.length > 0) {\n this.openDropdown(this.dd, this.origin.nativeElement);\n }\n });\n },\n error: () => {\n this.loading = false;\n this.error = true;\n }\n });\n if (this.control?.value) {\n this.handleControlChanges(this.control.value);\n }\n this.controlSubscription = this.control?.valueChanges.subscribe(this.handleControlChanges);\n }\n\n refreshHttpStream(query: string): void {\n this.loading = true;\n this.httpStreamTrigger.next(query);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes && changes?.searchValue?.currentValue) {\n this.searchInput.patchValue(changes.searchValue.currentValue);\n }\n if (changes && changes.disabled) {\n this.searchInput.enable();\n if (this.disabled) {\n this.searchInput.disable();\n }\n }\n }\n\n ngOnDestroy(): void {\n this.searchSubscription?.unsubscribe();\n this.defaultCallSubscription?.unsubscribe();\n }\n\n private handleControlChanges = (values: IListData[]) => {\n values.forEach(el => {\n this.selectData(el, true);\n });\n // tslint:disable-next-line\n };\n\n private openDropdown(template: TemplateRef<Element>, origin: HTMLElement): void {\n const positionsBottom = [\n new ConnectionPositionPair({ originX: \"start\", originY: \"bottom\" }, { overlayX: \"start\", overlayY: \"top\" }, 0, 4),\n new ConnectionPositionPair({ originX: \"end\", originY: \"bottom\" }, { overlayX: \"end\", overlayY: \"top\" }, 0, 4)\n ];\n const positionsTop = [\n new ConnectionPositionPair({ originX: \"start\", originY: \"top\" }, { overlayX: \"start\", overlayY: \"bottom\" }, 0, -4),\n new ConnectionPositionPair({ originX: \"end\", originY: \"top\" }, { overlayX: \"end\", overlayY: \"bottom\" }, 0, -4)\n ];\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(origin)\n .withPositions([\n ...(this.dropdownListPosition === \"Right\" ? positionsBottom.reverse() : positionsBottom),\n ...(this.dropdownListPosition === \"Right\" ? positionsTop.reverse() : positionsTop)\n ])\n .withPush(true);\n\n const configs = new OverlayConfig({\n hasBackdrop: true,\n backdropClass: \"cdk-overlay-transparent-backdrop\",\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n positionStrategy,\n width: origin.clientWidth\n });\n this.overlayRef = this.overlay.create(configs);\n if (this.dropdownListWidth) this.overlayRef.updateSize({ width: this.dropdownListWidth });\n this.overlayRef.attach(new TemplatePortal(template, this.viewContainerRef));\n this.overlayRef.backdropClick().subscribe(res => {\n this.closeDropdown();\n });\n }\n\n /**\n * closes the dropdown\n */\n closeDropdown(): void {\n this.opened = false;\n this.openPopUpOnTab = false;\n this.overlayRef?.detach();\n this.data = [];\n }\n\n enablePopUpOnTab(){\n this.openPopUpOnTab = true;\n }\n\n @HostListener('document:keydown', ['$event'])\n handleKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n this.searchInput.patchValue(\"\");\n this.closeDropdown();\n }\n }\n\n\n\n /**\n *\n * @param item item to select\n * if item property disabled is set to true, selection will be disabled\n * @param effectedFromOutside set to true if calling from parent component, if true will focus on search input\n */\n selectData(item: IListData, effectedFromOutside = true): void {\n if (item.disabled) {\n return;\n }\n this.itemSelected.emit(item)\n if (!this.multi) {\n this.searchInput.patchValue(item[this.displayKey], { emitEvent: false });\n this.setControlValue(item);\n } else {\n if (!this.selections.has(item[this.uniqueKey])) {\n this.selections.set(item[this.uniqueKey], item);\n }\n this.setControlValue(this.selectedItems);\n if (!effectedFromOutside) {\n setTimeout(() => {\n this.input.nativeElement.focus();\n this.input.nativeElement.scrollIntoView();\n }, 10);\n }\n this.searchInput.patchValue(\"\");\n this.data = [];\n }\n this.closeDropdown();\n }\n\n /**\n *\n * @param item remove item from selected list\n */\n removeItem(item: IListData): void {\n this.itemRemoved.emit(item)\n this.selections.delete(item[this.uniqueKey]);\n this.setControlValue(this.selectedItems);\n // tslint:disable-next-line\n this.input[\"nativeElement\"].focus();\n }\n\n private setControlValue(value: IListData): void {\n this.onSelect.emit(value);\n this.control?.patchValue(value, { emitEvent: false });\n }\n\n /**\n * @returns list of selected items\n */\n get selectedItems(): Array<IListData> {\n return Array.from(this.selections.values());\n }\n\n removeInputValue() {\n this.searchInput.reset();\n this.data = [];\n this.clear.emit(true);\n }\n defaultCall(): void {\n if (this.minInputLength === -1) {\n this.loading = true;\n this.defaultCallSubscription = this.httpStream(this.searchInput.value || '').subscribe(list => {\n this.loading = false;\n this.data = list;\n if (!this.overlayRef?.hasAttached() && this.data?.length > 0) {\n this.openDropdown(this.dd, this.origin.nativeElement);\n }\n }, error => {\n this.loading = false;\n this.error = true;\n });\n }\n }\n}\n","import { OverlayModule } from \"@angular/cdk/overlay\";\nimport { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport { LoaderModule } from \"mis-crystal-design-system/loader\";\nimport { AsyncDropdownComponent } from \"./async-dropdown.component\";\nimport { A11yModule } from \"@angular/cdk/a11y\";\n\n@NgModule({\n declarations: [AsyncDropdownComponent],\n imports: [CommonModule, OverlayModule, ReactiveFormsModule, FormsModule, LoaderModule, A11yModule],\n exports: [AsyncDropdownComponent]\n})\nexport class AsyncDropdownModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -242,9 +242,11 @@ class AsyncDropdownComponent {
|
|
|
242
242
|
if (this.disabled) {
|
|
243
243
|
this.searchInput.disable();
|
|
244
244
|
}
|
|
245
|
-
const searchObservable = this.searchInput.valueChanges.pipe(tap((val) => this.searchQueryChange.emit(val)), debounceTime(this.debounceTime), distinctUntilChanged()
|
|
246
|
-
|
|
247
|
-
|
|
245
|
+
const searchObservable = this.searchInput.valueChanges.pipe(tap((val) => this.searchQueryChange.emit(val)), debounceTime(this.debounceTime), distinctUntilChanged());
|
|
246
|
+
this.searchSubscription = merge(searchObservable, this.httpStreamTrigger)
|
|
247
|
+
.pipe(filter((res) => {
|
|
248
|
+
res = res.trim();
|
|
249
|
+
if (res?.length < this.minInputLength || !res?.length) {
|
|
248
250
|
this.closeDropdown();
|
|
249
251
|
return false;
|
|
250
252
|
}
|
|
@@ -252,10 +254,10 @@ class AsyncDropdownComponent {
|
|
|
252
254
|
}), tap(() => {
|
|
253
255
|
this.loading = true;
|
|
254
256
|
this.error = false;
|
|
255
|
-
if (!this.overlayRef?.hasAttached())
|
|
257
|
+
if (!this.overlayRef?.hasAttached()) {
|
|
256
258
|
this.openDropdown(this.dd, this.origin.nativeElement);
|
|
257
|
-
|
|
258
|
-
|
|
259
|
+
}
|
|
260
|
+
}), switchMap((res) => this.httpStream(res)))
|
|
259
261
|
.subscribe({
|
|
260
262
|
next: (list) => {
|
|
261
263
|
this._ngZone.run(() => {
|
|
@@ -266,11 +268,9 @@ class AsyncDropdownComponent {
|
|
|
266
268
|
}
|
|
267
269
|
});
|
|
268
270
|
},
|
|
269
|
-
error: (
|
|
270
|
-
this.
|
|
271
|
-
|
|
272
|
-
this.error = true;
|
|
273
|
-
});
|
|
271
|
+
error: () => {
|
|
272
|
+
this.loading = false;
|
|
273
|
+
this.error = true;
|
|
274
274
|
}
|
|
275
275
|
});
|
|
276
276
|
if (this.control?.value) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mis-crystal-design-system-async-search-dropdown.mjs","sources":["../../../projects/mis-components/async-search-dropdown/async-dropdown.component.html","../../../projects/mis-components/async-search-dropdown/async-dropdown.component.ts","../../../projects/mis-components/async-search-dropdown/async-dropdown.module.ts","../../../projects/mis-components/async-search-dropdown/mis-crystal-design-system-async-search-dropdown.ts"],"sourcesContent":["<div class=\"dd-wrapper\" [ngClass]=\"{ opened: opened, disabled: disabled, readonly: readonly }\" [style.width]=\"width\" #ddBtn>\n <div class=\"selected-list\" *ngIf=\"multi && selections.size > 0\">\n <div class=\"chip\" [ngClass]=\"{'chip-md': size === 'md', 'chip-sm': size === 'sm'}\" *ngFor=\"let item of selectedItems\">\n <span [ngClass]=\"{'h6': size === 'md', 'h8-b': size === 'sm'}\" [ngStyle]=\"{ 'margin-right': '4px'}\">{{item[displayKey]}}</span>\n <span style=\"cursor: pointer;\" (click)=\"removeItem(item)\" tabindex=\"0\" (keyup.enter)=\"removeItem(item)\" [ngStyle]=\"{\n 'cursor': 'pointer',\n 'font-size': size === 'sm' ? '12px' : '14px'\n }\" class=\"icon-ic-navigation-cancel-24\"></span>\n </div>\n </div>\n <div class=\"search-input\">\n <span class=\"icon-ic-action-search-24\"></span>\n <input *ngIf=\"disableCopyPaste; else enableCopyPaste\" [ngClass]=\"{'ip-md': size === 'md', 'ip-sm': size === 'sm'}\" oncopy=\"return false;\" onpaste=\"return false\" oncut=\"return false\" tabindex=\"0\" type=\"text\" class=\"black-text h6\" #input [placeholder]=\"placeholder\" [formControl]=\"searchInput\" (focus)=\"defaultCall()\" (keyup.enter)=\"enablePopUpOnTab()\"/>\n <ng-template #enableCopyPaste>\n <input [ngClass]=\"{'ip-md': size === 'md', 'ip-sm': size === 'sm'}\" tabindex=\"0\" type=\"text\" class=\"black-text h6\" #input [placeholder]=\"placeholder\" [formControl]=\"searchInput\" (focus)=\"defaultCall()\" (keyup.enter)=\"enablePopUpOnTab()\" />\n </ng-template>\n <div class=\"icon-ic-navigation-cancel-24 croos-icon\" *ngIf=\"searchInput?.value?.length\" tabindex=\"0\" (click)=\"removeInputValue()\" (keyup.enter)=\"removeInputValue()\"></div>\n </div>\n</div>\n\n<ng-template #dd>\n <div class=\"dd-list\" [ngStyle]=\"{'max-height':height, 'width': dropdownListWidth}\" [ngClass]=\"{'dd-list-pd':data.length === 0}\" tabindex=\"0\" cdkTrapFocus [cdkTrapFocusAutoCapture]=\"openPopUpOnTab\">\n <ng-container *ngIf=\"loading\">\n <ng-container\n *ngIf=\"customLoader; else defaultLoader\"\n [ngTemplateOutlet]=\"customLoader\"\n ></ng-container>\n <ng-template #defaultLoader>\n <div class=\"status-container\" *ngIf=\"loading && !customLoader\">\n <mis-loader [mobileView]=\"true\"></mis-loader>\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"error\">\n <div class=\"status-container\">\n <p>Unknown error has occurred, <br> Please try again later.</p>\n </div>\n </ng-container>\n <div *ngIf=\"!loading && !error && data.length > 0\">\n <ng-container *ngFor=\"let item of data\">\n <div (click)=\"selectData(item, false)\" (keyup.enter)=\"selectData(item, false)\"> \n <div tabindex=\"-1\" cdkFocusInitial></div> \n <div\n [tabindex]=\"openPopUpOnTab ? 0 : -1\"\n *ngIf=\"customItem; else standardItem\"\n >\n <ng-container\n [ngTemplateOutlet]=\"customItem\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-container>\n </div>\n <ng-template #standardItem>\n <div tabindex=\"-1\" cdkFocusInitial></div> \n <div class=\"item\" (click)=\"selectData(item, false)\" [tabindex]=\"openPopUpOnTab ? 0 : -1\" (keyup.enter)=\"selectData(item, false)\">\n <div class=\"value\">\n <div class=\"primary\">\n {{ item[displayKey] }}\n </div>\n <div class=\"secondary\">\n {{ item[secondaryDisplayKey] }}\n </div>\n </div>\n </div>\n </ng-template>\n </div>\n </ng-container>\n </div>\n <div *ngIf=\"!loading && !error && data.length === 0 && searchInput.value\">\n <div class=\"data-not-found\">No Data Available</div>\n </div>\n </div>\n</ng-template>\n","import { ConnectionPositionPair, Overlay, OverlayConfig, OverlayRef } from \"@angular/cdk/overlay\";\nimport { TemplatePortal } from \"@angular/cdk/portal\";\nimport {\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewContainerRef\n} from \"@angular/core\";\nimport { AbstractControl, UntypedFormControl } from \"@angular/forms\";\nimport { merge, Observable, Subject, Subscription } from \"rxjs\";\nimport { debounceTime, distinctUntilChanged, tap, switchMap, filter } from \"rxjs/operators\";\n\n// tslint:disable-next-line\ntype IListData = any;\n\n@Component({\n selector: \"mis-async-search-dropdown\",\n templateUrl: \"./async-dropdown.component.html\",\n styleUrls: [\"./async-dropdown.component.scss\"]\n})\nexport class AsyncDropdownComponent implements OnInit, OnChanges, OnDestroy {\n constructor(private overlay: Overlay, private viewContainerRef: ViewContainerRef, private _ngZone: NgZone) { }\n @Input() height;\n @Input() width;\n @Input() size: 'md' | 'sm' = 'md'\n @Input() httpStream!: (searchKey: string) => Observable<IListData>; // function that returns an httpobservable\n @Input() displayKey!: string; // string to show value in list\n @Input() secondaryDisplayKey!: string; // string to display secondary value\n @Input() placeholder = \"Select\"; // placeholder for input\n @Input() debounceTime = 400; // wait time till which API call is paused\n @Input() minInputLength = 2; // min length after which API call is made\n @Input() multi = false; // maintain a list or emit value\n @Input() uniqueKey: string; // for identifying unique values\n @Input() control: AbstractControl | null; // form control for reactive forms\n @Input() disabled: boolean; // disable actions on component\n @Input() readonly: boolean; // make component readonly\n @Input() disableCopyPaste: boolean = false;\n @Input() dropdownListWidth; //width of dropdown list\n @Input() dropdownListPosition: \"Left\" | \"Right\" = \"Left\"; //dropdown position\n @ViewChild(\"ddBtn\", { static: false }) origin: ElementRef;\n @ViewChild(\"input\", { static: false }) input: ElementRef;\n @ViewChild(\"dd\", { static: false }) dd: TemplateRef<Element>;\n @ContentChild(\"misCustomItem\", { static: false })\n customItem: TemplateRef<Element>;\n @ContentChild(\"asyncCustomLoader\", { static: false})\n customLoader: TemplateRef<Element>;\n // tslint:disable-next-line\n @Output() onSelect: EventEmitter<IListData | IListData[]> = new EventEmitter(true); // emit selected values\n searchInput: UntypedFormControl = new UntypedFormControl();\n data: IListData[] = [];\n opened = false;\n loading: boolean = false;\n error: boolean = false;\n openPopUpOnTab: boolean = false;\n // tslint:disable-next-line\n @Input() selections: Map<string, any> = new Map();\n private httpStreamTrigger = new Subject<string>();\n private searchSubscription: Subscription;\n private defaultCallSubscription: Subscription;\n private overlayRef: OverlayRef;\n controlSubscription: Subscription | undefined;\n @Input() searchValue;\n @Output() searchQueryChange = new EventEmitter<string>()\n @Output() clear: EventEmitter<boolean> = new EventEmitter(false);\n @Output() itemSelected = new EventEmitter<IListData>()\n @Output() itemRemoved = new EventEmitter<IListData>()\n ngOnInit(): void {\n if (this.multi && !this.uniqueKey) {\n throw new Error(\"[uniqueKey] required in multi mode.\");\n }\n if (this.disabled) {\n this.searchInput.disable();\n }\n\n const searchObservable = this.searchInput.valueChanges.pipe(\n tap((val) => this.searchQueryChange.emit(val)),\n debounceTime(this.debounceTime),\n distinctUntilChanged(),\n filter(res => {\n const trimmedValue = res.trim();\n if (trimmedValue.length < this.minInputLength || !trimmedValue.length) {\n this.closeDropdown();\n return false;\n }\n return true;\n }),\n tap(() => {\n this.loading = true;\n this.error = false;\n if(!this.overlayRef?.hasAttached())\n this.openDropdown(this.dd, this.origin.nativeElement);\n }),\n switchMap(res => this.httpStream(res.trim()))\n );\n\n this.searchSubscription = merge(searchObservable, this.httpStreamTrigger)\n .subscribe({\n next: (list) => {\n this._ngZone.run(() => {\n this.loading = false;\n this.data = list;\n if (!this.overlayRef?.hasAttached() && list.length > 0) {\n this.openDropdown(this.dd, this.origin.nativeElement);\n }\n });\n },\n error: (error) => {\n this._ngZone.run(() => {\n this.loading = false;\n this.error = true;\n });\n }\n });\n if (this.control?.value) {\n this.handleControlChanges(this.control.value);\n }\n this.controlSubscription = this.control?.valueChanges.subscribe(this.handleControlChanges);\n }\n\n refreshHttpStream(query: string): void {\n this.loading = true;\n this.httpStreamTrigger.next(query);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes && changes?.searchValue?.currentValue) {\n this.searchInput.patchValue(changes.searchValue.currentValue);\n }\n if (changes && changes.disabled) {\n this.searchInput.enable();\n if (this.disabled) {\n this.searchInput.disable();\n }\n }\n }\n\n ngOnDestroy(): void {\n this.searchSubscription?.unsubscribe();\n this.defaultCallSubscription?.unsubscribe();\n }\n\n private handleControlChanges = (values: IListData[]) => {\n values.forEach(el => {\n this.selectData(el, true);\n });\n // tslint:disable-next-line\n };\n\n private openDropdown(template: TemplateRef<Element>, origin: HTMLElement): void {\n const positionsBottom = [\n new ConnectionPositionPair({ originX: \"start\", originY: \"bottom\" }, { overlayX: \"start\", overlayY: \"top\" }, 0, 4),\n new ConnectionPositionPair({ originX: \"end\", originY: \"bottom\" }, { overlayX: \"end\", overlayY: \"top\" }, 0, 4)\n ];\n const positionsTop = [\n new ConnectionPositionPair({ originX: \"start\", originY: \"top\" }, { overlayX: \"start\", overlayY: \"bottom\" }, 0, -4),\n new ConnectionPositionPair({ originX: \"end\", originY: \"top\" }, { overlayX: \"end\", overlayY: \"bottom\" }, 0, -4)\n ];\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(origin)\n .withPositions([\n ...(this.dropdownListPosition === \"Right\" ? positionsBottom.reverse() : positionsBottom),\n ...(this.dropdownListPosition === \"Right\" ? positionsTop.reverse() : positionsTop)\n ])\n .withPush(true);\n\n const configs = new OverlayConfig({\n hasBackdrop: true,\n backdropClass: \"cdk-overlay-transparent-backdrop\",\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n positionStrategy,\n width: origin.clientWidth\n });\n this.overlayRef = this.overlay.create(configs);\n if (this.dropdownListWidth) this.overlayRef.updateSize({ width: this.dropdownListWidth });\n this.overlayRef.attach(new TemplatePortal(template, this.viewContainerRef));\n this.overlayRef.backdropClick().subscribe(res => {\n this.closeDropdown();\n });\n }\n\n /**\n * closes the dropdown\n */\n closeDropdown(): void {\n this.opened = false;\n this.openPopUpOnTab = false;\n this.overlayRef?.detach();\n this.data = [];\n }\n\n enablePopUpOnTab(){\n this.openPopUpOnTab = true;\n }\n\n @HostListener('document:keydown', ['$event'])\n handleKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n this.searchInput.patchValue(\"\");\n this.closeDropdown();\n }\n }\n\n\n\n /**\n *\n * @param item item to select\n * if item property disabled is set to true, selection will be disabled\n * @param effectedFromOutside set to true if calling from parent component, if true will focus on search input\n */\n selectData(item: IListData, effectedFromOutside = true): void {\n if (item.disabled) {\n return;\n }\n this.itemSelected.emit(item)\n if (!this.multi) {\n this.searchInput.patchValue(item[this.displayKey], { emitEvent: false });\n this.setControlValue(item);\n } else {\n if (!this.selections.has(item[this.uniqueKey])) {\n this.selections.set(item[this.uniqueKey], item);\n }\n this.setControlValue(this.selectedItems);\n if (!effectedFromOutside) {\n setTimeout(() => {\n this.input.nativeElement.focus();\n this.input.nativeElement.scrollIntoView();\n }, 10);\n }\n this.searchInput.patchValue(\"\");\n this.data = [];\n }\n this.closeDropdown();\n }\n\n /**\n *\n * @param item remove item from selected list\n */\n removeItem(item: IListData): void {\n this.itemRemoved.emit(item)\n this.selections.delete(item[this.uniqueKey]);\n this.setControlValue(this.selectedItems);\n // tslint:disable-next-line\n this.input[\"nativeElement\"].focus();\n }\n\n private setControlValue(value: IListData): void {\n this.onSelect.emit(value);\n this.control?.patchValue(value, { emitEvent: false });\n }\n\n /**\n * @returns list of selected items\n */\n get selectedItems(): Array<IListData> {\n return Array.from(this.selections.values());\n }\n\n removeInputValue() {\n this.searchInput.reset();\n this.data = [];\n this.clear.emit(true);\n }\n defaultCall(): void {\n if (this.minInputLength === -1) {\n this.loading = true;\n this.defaultCallSubscription = this.httpStream(this.searchInput.value || '').subscribe(list => {\n this.loading = false;\n this.data = list;\n if (!this.overlayRef?.hasAttached() && this.data?.length > 0) {\n this.openDropdown(this.dd, this.origin.nativeElement);\n }\n }, error => {\n this.loading = false;\n this.error = true;\n });\n }\n }\n}\n","import { OverlayModule } from \"@angular/cdk/overlay\";\nimport { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport { LoaderModule } from \"mis-crystal-design-system/loader\";\nimport { AsyncDropdownComponent } from \"./async-dropdown.component\";\nimport { A11yModule } from \"@angular/cdk/a11y\";\n\n@NgModule({\n declarations: [AsyncDropdownComponent],\n imports: [CommonModule, OverlayModule, ReactiveFormsModule, FormsModule, LoaderModule, A11yModule],\n exports: [AsyncDropdownComponent]\n})\nexport class AsyncDropdownModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mis-crystal-design-system-async-search-dropdown.mjs","sources":["../../../projects/mis-components/async-search-dropdown/async-dropdown.component.html","../../../projects/mis-components/async-search-dropdown/async-dropdown.component.ts","../../../projects/mis-components/async-search-dropdown/async-dropdown.module.ts","../../../projects/mis-components/async-search-dropdown/mis-crystal-design-system-async-search-dropdown.ts"],"sourcesContent":["<div class=\"dd-wrapper\" [ngClass]=\"{ opened: opened, disabled: disabled, readonly: readonly }\" [style.width]=\"width\" #ddBtn>\n <div class=\"selected-list\" *ngIf=\"multi && selections.size > 0\">\n <div class=\"chip\" [ngClass]=\"{'chip-md': size === 'md', 'chip-sm': size === 'sm'}\" *ngFor=\"let item of selectedItems\">\n <span [ngClass]=\"{'h6': size === 'md', 'h8-b': size === 'sm'}\" [ngStyle]=\"{ 'margin-right': '4px'}\">{{item[displayKey]}}</span>\n <span style=\"cursor: pointer;\" (click)=\"removeItem(item)\" tabindex=\"0\" (keyup.enter)=\"removeItem(item)\" [ngStyle]=\"{\n 'cursor': 'pointer',\n 'font-size': size === 'sm' ? '12px' : '14px'\n }\" class=\"icon-ic-navigation-cancel-24\"></span>\n </div>\n </div>\n <div class=\"search-input\">\n <span class=\"icon-ic-action-search-24\"></span>\n <input *ngIf=\"disableCopyPaste; else enableCopyPaste\" [ngClass]=\"{'ip-md': size === 'md', 'ip-sm': size === 'sm'}\" oncopy=\"return false;\" onpaste=\"return false\" oncut=\"return false\" tabindex=\"0\" type=\"text\" class=\"black-text h6\" #input [placeholder]=\"placeholder\" [formControl]=\"searchInput\" (focus)=\"defaultCall()\" (keyup.enter)=\"enablePopUpOnTab()\"/>\n <ng-template #enableCopyPaste>\n <input [ngClass]=\"{'ip-md': size === 'md', 'ip-sm': size === 'sm'}\" tabindex=\"0\" type=\"text\" class=\"black-text h6\" #input [placeholder]=\"placeholder\" [formControl]=\"searchInput\" (focus)=\"defaultCall()\" (keyup.enter)=\"enablePopUpOnTab()\" />\n </ng-template>\n <div class=\"icon-ic-navigation-cancel-24 croos-icon\" *ngIf=\"searchInput?.value?.length\" tabindex=\"0\" (click)=\"removeInputValue()\" (keyup.enter)=\"removeInputValue()\"></div>\n </div>\n</div>\n\n<ng-template #dd>\n <div class=\"dd-list\" [ngStyle]=\"{'max-height':height, 'width': dropdownListWidth}\" [ngClass]=\"{'dd-list-pd':data.length === 0}\" tabindex=\"0\" cdkTrapFocus [cdkTrapFocusAutoCapture]=\"openPopUpOnTab\">\n <ng-container *ngIf=\"loading\">\n <ng-container\n *ngIf=\"customLoader; else defaultLoader\"\n [ngTemplateOutlet]=\"customLoader\"\n ></ng-container>\n <ng-template #defaultLoader>\n <div class=\"status-container\" *ngIf=\"loading && !customLoader\">\n <mis-loader [mobileView]=\"true\"></mis-loader>\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"error\">\n <div class=\"status-container\">\n <p>Unknown error has occurred, <br> Please try again later.</p>\n </div>\n </ng-container>\n <div *ngIf=\"!loading && !error && data.length > 0\">\n <ng-container *ngFor=\"let item of data\">\n <div (click)=\"selectData(item, false)\" (keyup.enter)=\"selectData(item, false)\"> \n <div tabindex=\"-1\" cdkFocusInitial></div> \n <div\n [tabindex]=\"openPopUpOnTab ? 0 : -1\"\n *ngIf=\"customItem; else standardItem\"\n >\n <ng-container\n [ngTemplateOutlet]=\"customItem\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-container>\n </div>\n <ng-template #standardItem>\n <div tabindex=\"-1\" cdkFocusInitial></div> \n <div class=\"item\" (click)=\"selectData(item, false)\" [tabindex]=\"openPopUpOnTab ? 0 : -1\" (keyup.enter)=\"selectData(item, false)\">\n <div class=\"value\">\n <div class=\"primary\">\n {{ item[displayKey] }}\n </div>\n <div class=\"secondary\">\n {{ item[secondaryDisplayKey] }}\n </div>\n </div>\n </div>\n </ng-template>\n </div>\n </ng-container>\n </div>\n <div *ngIf=\"!loading && !error && data.length === 0 && searchInput.value\">\n <div class=\"data-not-found\">No Data Available</div>\n </div>\n </div>\n</ng-template>\n","import { ConnectionPositionPair, Overlay, OverlayConfig, OverlayRef } from \"@angular/cdk/overlay\";\nimport { TemplatePortal } from \"@angular/cdk/portal\";\nimport {\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewContainerRef\n} from \"@angular/core\";\nimport { AbstractControl, UntypedFormControl } from \"@angular/forms\";\nimport { merge, Observable, Subject, Subscription } from \"rxjs\";\nimport { debounceTime, distinctUntilChanged, filter, switchMap, tap } from \"rxjs/operators\";\n\n// tslint:disable-next-line\ntype IListData = any;\n\n@Component({\n selector: \"mis-async-search-dropdown\",\n templateUrl: \"./async-dropdown.component.html\",\n styleUrls: [\"./async-dropdown.component.scss\"]\n})\nexport class AsyncDropdownComponent implements OnInit, OnChanges, OnDestroy {\n constructor(private overlay: Overlay, private viewContainerRef: ViewContainerRef, private _ngZone: NgZone) { }\n @Input() height;\n @Input() width;\n @Input() size: 'md' | 'sm' = 'md'\n @Input() httpStream!: (searchKey: string) => Observable<IListData>; // function that returns an httpobservable\n @Input() displayKey!: string; // string to show value in list\n @Input() secondaryDisplayKey!: string; // string to display secondary value\n @Input() placeholder = \"Select\"; // placeholder for input\n @Input() debounceTime = 400; // wait time till which API call is paused\n @Input() minInputLength = 2; // min length after which API call is made\n @Input() multi = false; // maintain a list or emit value\n @Input() uniqueKey: string; // for identifying unique values\n @Input() control: AbstractControl | null; // form control for reactive forms\n @Input() disabled: boolean; // disable actions on component\n @Input() readonly: boolean; // make component readonly\n @Input() disableCopyPaste: boolean = false;\n @Input() dropdownListWidth; //width of dropdown list\n @Input() dropdownListPosition: \"Left\" | \"Right\" = \"Left\"; //dropdown position\n @ViewChild(\"ddBtn\", { static: false }) origin: ElementRef;\n @ViewChild(\"input\", { static: false }) input: ElementRef;\n @ViewChild(\"dd\", { static: false }) dd: TemplateRef<Element>;\n @ContentChild(\"misCustomItem\", { static: false })\n customItem: TemplateRef<Element>;\n @ContentChild(\"asyncCustomLoader\", { static: false})\n customLoader: TemplateRef<Element>;\n // tslint:disable-next-line\n @Output() onSelect: EventEmitter<IListData | IListData[]> = new EventEmitter(true); // emit selected values\n searchInput: UntypedFormControl = new UntypedFormControl();\n data: IListData[] = [];\n opened = false;\n loading: boolean = false;\n error: boolean = false;\n openPopUpOnTab: boolean = false;\n // tslint:disable-next-line\n @Input() selections: Map<string, any> = new Map();\n private httpStreamTrigger = new Subject<string>();\n private searchSubscription: Subscription;\n private defaultCallSubscription: Subscription;\n private overlayRef: OverlayRef;\n controlSubscription: Subscription | undefined;\n @Input() searchValue;\n @Output() searchQueryChange = new EventEmitter<string>()\n @Output() clear: EventEmitter<boolean> = new EventEmitter(false);\n @Output() itemSelected = new EventEmitter<IListData>()\n @Output() itemRemoved = new EventEmitter<IListData>()\n ngOnInit(): void {\n if (this.multi && !this.uniqueKey) {\n throw new Error(\"[uniqueKey] required in multi mode.\");\n }\n if (this.disabled) {\n this.searchInput.disable();\n }\n\n const searchObservable = this.searchInput.valueChanges.pipe(\n tap((val) => this.searchQueryChange.emit(val)),\n debounceTime(this.debounceTime),\n distinctUntilChanged()\n );\n\n this.searchSubscription = merge(searchObservable, this.httpStreamTrigger)\n .pipe(\n filter((res:string)=>{\n res = res.trim();\n if(res?.length < this.minInputLength || !res?.length){\n this.closeDropdown();\n return false;\n }\n return true;\n }),\n tap(() => {\n this.loading = true;\n this.error = false;\n if (!this.overlayRef?.hasAttached()) {\n this.openDropdown(this.dd, this.origin.nativeElement);\n }\n }),\n switchMap((res: string) => this.httpStream(res))\n )\n .subscribe({\n next: (list) => {\n this._ngZone.run(() => {\n this.loading = false;\n this.data = list;\n if (!this.overlayRef?.hasAttached() && list.length > 0) {\n this.openDropdown(this.dd, this.origin.nativeElement);\n }\n });\n },\n error: () => {\n this.loading = false;\n this.error = true;\n }\n });\n if (this.control?.value) {\n this.handleControlChanges(this.control.value);\n }\n this.controlSubscription = this.control?.valueChanges.subscribe(this.handleControlChanges);\n }\n\n refreshHttpStream(query: string): void {\n this.loading = true;\n this.httpStreamTrigger.next(query);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes && changes?.searchValue?.currentValue) {\n this.searchInput.patchValue(changes.searchValue.currentValue);\n }\n if (changes && changes.disabled) {\n this.searchInput.enable();\n if (this.disabled) {\n this.searchInput.disable();\n }\n }\n }\n\n ngOnDestroy(): void {\n this.searchSubscription?.unsubscribe();\n this.defaultCallSubscription?.unsubscribe();\n }\n\n private handleControlChanges = (values: IListData[]) => {\n values.forEach(el => {\n this.selectData(el, true);\n });\n // tslint:disable-next-line\n };\n\n private openDropdown(template: TemplateRef<Element>, origin: HTMLElement): void {\n const positionsBottom = [\n new ConnectionPositionPair({ originX: \"start\", originY: \"bottom\" }, { overlayX: \"start\", overlayY: \"top\" }, 0, 4),\n new ConnectionPositionPair({ originX: \"end\", originY: \"bottom\" }, { overlayX: \"end\", overlayY: \"top\" }, 0, 4)\n ];\n const positionsTop = [\n new ConnectionPositionPair({ originX: \"start\", originY: \"top\" }, { overlayX: \"start\", overlayY: \"bottom\" }, 0, -4),\n new ConnectionPositionPair({ originX: \"end\", originY: \"top\" }, { overlayX: \"end\", overlayY: \"bottom\" }, 0, -4)\n ];\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(origin)\n .withPositions([\n ...(this.dropdownListPosition === \"Right\" ? positionsBottom.reverse() : positionsBottom),\n ...(this.dropdownListPosition === \"Right\" ? positionsTop.reverse() : positionsTop)\n ])\n .withPush(true);\n\n const configs = new OverlayConfig({\n hasBackdrop: true,\n backdropClass: \"cdk-overlay-transparent-backdrop\",\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n positionStrategy,\n width: origin.clientWidth\n });\n this.overlayRef = this.overlay.create(configs);\n if (this.dropdownListWidth) this.overlayRef.updateSize({ width: this.dropdownListWidth });\n this.overlayRef.attach(new TemplatePortal(template, this.viewContainerRef));\n this.overlayRef.backdropClick().subscribe(res => {\n this.closeDropdown();\n });\n }\n\n /**\n * closes the dropdown\n */\n closeDropdown(): void {\n this.opened = false;\n this.openPopUpOnTab = false;\n this.overlayRef?.detach();\n this.data = [];\n }\n\n enablePopUpOnTab(){\n this.openPopUpOnTab = true;\n }\n\n @HostListener('document:keydown', ['$event'])\n handleKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n this.searchInput.patchValue(\"\");\n this.closeDropdown();\n }\n }\n\n\n\n /**\n *\n * @param item item to select\n * if item property disabled is set to true, selection will be disabled\n * @param effectedFromOutside set to true if calling from parent component, if true will focus on search input\n */\n selectData(item: IListData, effectedFromOutside = true): void {\n if (item.disabled) {\n return;\n }\n this.itemSelected.emit(item)\n if (!this.multi) {\n this.searchInput.patchValue(item[this.displayKey], { emitEvent: false });\n this.setControlValue(item);\n } else {\n if (!this.selections.has(item[this.uniqueKey])) {\n this.selections.set(item[this.uniqueKey], item);\n }\n this.setControlValue(this.selectedItems);\n if (!effectedFromOutside) {\n setTimeout(() => {\n this.input.nativeElement.focus();\n this.input.nativeElement.scrollIntoView();\n }, 10);\n }\n this.searchInput.patchValue(\"\");\n this.data = [];\n }\n this.closeDropdown();\n }\n\n /**\n *\n * @param item remove item from selected list\n */\n removeItem(item: IListData): void {\n this.itemRemoved.emit(item)\n this.selections.delete(item[this.uniqueKey]);\n this.setControlValue(this.selectedItems);\n // tslint:disable-next-line\n this.input[\"nativeElement\"].focus();\n }\n\n private setControlValue(value: IListData): void {\n this.onSelect.emit(value);\n this.control?.patchValue(value, { emitEvent: false });\n }\n\n /**\n * @returns list of selected items\n */\n get selectedItems(): Array<IListData> {\n return Array.from(this.selections.values());\n }\n\n removeInputValue() {\n this.searchInput.reset();\n this.data = [];\n this.clear.emit(true);\n }\n defaultCall(): void {\n if (this.minInputLength === -1) {\n this.loading = true;\n this.defaultCallSubscription = this.httpStream(this.searchInput.value || '').subscribe(list => {\n this.loading = false;\n this.data = list;\n if (!this.overlayRef?.hasAttached() && this.data?.length > 0) {\n this.openDropdown(this.dd, this.origin.nativeElement);\n }\n }, error => {\n this.loading = false;\n this.error = true;\n });\n }\n }\n}\n","import { OverlayModule } from \"@angular/cdk/overlay\";\nimport { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport { LoaderModule } from \"mis-crystal-design-system/loader\";\nimport { AsyncDropdownComponent } from \"./async-dropdown.component\";\nimport { A11yModule } from \"@angular/cdk/a11y\";\n\n@NgModule({\n declarations: [AsyncDropdownComponent],\n imports: [CommonModule, OverlayModule, ReactiveFormsModule, FormsModule, LoaderModule, A11yModule],\n exports: [AsyncDropdownComponent]\n})\nexport class AsyncDropdownModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|