@porscheinformatik/clr-addons 17.5.2 → 17.5.4
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/esm2022/location-bar/location-bar-node/location-bar-node.component.mjs +13 -4
- package/esm2022/location-bar/location-bar-search/location-bar-search.component.mjs +5 -8
- package/fesm2022/clr-addons.mjs +14 -9
- package/fesm2022/clr-addons.mjs.map +1 -1
- package/location-bar/location-bar-node/location-bar-node.component.d.ts +2 -0
- package/location-bar/location-bar-search/location-bar-search.component.d.ts +1 -1
- package/package.json +1 -1
- package/styles/clr-addons-phs.css +6 -0
- package/styles/clr-addons-phs.css.map +1 -1
- package/styles/clr-addons-phs.min.css +1 -1
- package/styles/clr-addons-phs.min.css.map +1 -1
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { Component, EventEmitter, Inject, Input, Optional, Output } from '@angular/core';
|
|
1
|
+
import { Component, EventEmitter, Inject, Input, Optional, Output, ViewChild, } from '@angular/core';
|
|
2
2
|
import { angleIcon, ClarityIcons, treeViewIcon } from '@cds/core/icon';
|
|
3
3
|
import '@cds/core/icon/register.js';
|
|
4
4
|
import { of } from 'rxjs';
|
|
5
5
|
import { LocationBarNode } from '../location-bar.model';
|
|
6
6
|
import { CONTENT_PROVIDER, LocationBarContentProvider } from '../location-bar.provider';
|
|
7
|
+
import { LocationBarSearchComponent } from '../location-bar-search/location-bar-search.component';
|
|
7
8
|
import * as i0 from "@angular/core";
|
|
8
9
|
import * as i1 from "@angular/common";
|
|
9
10
|
import * as i2 from "@clr/angular";
|
|
@@ -23,6 +24,11 @@ export class LocationBarNodeComponent {
|
|
|
23
24
|
children$.toPromise().then(nodes => this.prepareChildren(nodes || []));
|
|
24
25
|
}
|
|
25
26
|
}
|
|
27
|
+
set locationBarSearch(search) {
|
|
28
|
+
if (search) {
|
|
29
|
+
search.focusInput();
|
|
30
|
+
}
|
|
31
|
+
}
|
|
26
32
|
constructor(contentProvider) {
|
|
27
33
|
this.contentProvider = contentProvider;
|
|
28
34
|
/**
|
|
@@ -115,11 +121,11 @@ export class LocationBarNodeComponent {
|
|
|
115
121
|
this.searchItemChanged.emit(searchedItem);
|
|
116
122
|
}
|
|
117
123
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: LocationBarNodeComponent, deps: [{ token: CONTENT_PROVIDER, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
118
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: LocationBarNodeComponent, selector: "clr-location-bar-node", inputs: { parentNode: "parentNode", searchResultItems: ["clrSearchResultItems", "searchResultItems"], searchRequest: ["clrSearchRequest", "searchRequest"] }, outputs: { selectionChanged: "selectionChanged", searchItemChanged: "searchItemChanged" }, host: { properties: { "class.location-bar-node": "true" } }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"parentNode\">\n <ng-content *ngIf=\"parentNode.getChildren()?.length > 0\"></ng-content>\n\n <ng-container\n *ngIf=\"\n (selectableChilds.length > 0 && !parentNode.getSelectedChild()) || selectableChilds.length > 1;\n else singleSelected\n \"\n >\n <clr-dropdown>\n <button\n class=\"btn btn-link btn-sm\"\n (blur)=\"focus = false\"\n (focus)=\"focus = true\"\n (click)=\"resetSearch()\"\n clrDropdownTrigger\n >\n <ng-container *ngIf=\"parentNode.getSelectedChild() as node; else unselected\">\n <span\n (click)=\"resetSearch()\"\n class=\"text-truncate\"\n [class.last-level]=\"!parentNode.getSelectedChild().getSelectedChild()\"\n title=\"{{ node.label }}\"\n >\n {{ node.label }}\n </span>\n <cds-icon shape=\"angle\" direction=\"down\" size=\"xs\" class=\"caret-icon\"></cds-icon>\n </ng-container>\n <ng-template #unselected>\n <cds-icon class=\"unselected\" size=\"18\" [attr.solid]=\"focus\" shape=\"tree-view\"></cds-icon> ...\n </ng-template>\n </button>\n <clr-dropdown-menu [clrPosition]=\"'bottom-left'\" *clrIfOpen>\n <clr-location-bar-search\n *ngIf=\"searchRequest\"\n [clrSearchRequest]=\"searchRequest\"\n (searchPerformed)=\"onSearch($event)\"\n ></clr-location-bar-search>\n <
|
|
124
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: LocationBarNodeComponent, selector: "clr-location-bar-node", inputs: { parentNode: "parentNode", searchResultItems: ["clrSearchResultItems", "searchResultItems"], searchRequest: ["clrSearchRequest", "searchRequest"] }, outputs: { selectionChanged: "selectionChanged", searchItemChanged: "searchItemChanged" }, host: { properties: { "class.location-bar-node": "true" } }, viewQueries: [{ propertyName: "locationBarSearch", first: true, predicate: ["locationBarSearch"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"parentNode\">\n <ng-content *ngIf=\"parentNode.getChildren()?.length > 0\"></ng-content>\n\n <ng-container\n *ngIf=\"\n (selectableChilds.length > 0 && !parentNode.getSelectedChild()) || selectableChilds.length > 1;\n else singleSelected\n \"\n >\n <clr-dropdown>\n <button\n class=\"btn btn-link btn-sm\"\n (blur)=\"focus = false\"\n (focus)=\"focus = true\"\n (click)=\"resetSearch()\"\n clrDropdownTrigger\n >\n <ng-container *ngIf=\"parentNode.getSelectedChild() as node; else unselected\">\n <span\n (click)=\"resetSearch()\"\n class=\"text-truncate\"\n [class.last-level]=\"!parentNode.getSelectedChild().getSelectedChild()\"\n title=\"{{ node.label }}\"\n >\n {{ node.label }}\n </span>\n <cds-icon shape=\"angle\" direction=\"down\" size=\"xs\" class=\"caret-icon\"></cds-icon>\n </ng-container>\n <ng-template #unselected>\n <cds-icon class=\"unselected\" size=\"18\" [attr.solid]=\"focus\" shape=\"tree-view\"></cds-icon> ...\n </ng-template>\n </button>\n <clr-dropdown-menu [clrPosition]=\"'bottom-left'\" *clrIfOpen>\n <clr-location-bar-search\n #locationBarSearch\n *ngIf=\"searchRequest\"\n [clrSearchRequest]=\"searchRequest\"\n (searchPerformed)=\"onSearch($event)\"\n ></clr-location-bar-search>\n <ng-container *ngIf=\"displaySearchResult(); else displaySelectableChilds\">\n <ng-container *ngIf=\"searchResultItems.length !== 0; else displayNotFound\">\n <button\n type=\"button\"\n clrDropdownItem\n class=\"text-truncate display-result\"\n *ngFor=\"let searchResultItem of searchResultItems\"\n (click)=\"onSearchItemChanged(searchResultItem)\"\n >\n <ng-container\n *ngTemplateOutlet=\"searchRequest?.searchResultItemRef; context: { $implicit: searchResultItem }\"\n ></ng-container>\n </button>\n </ng-container>\n <ng-template #displayNotFound>\n <span class=\"no-result-text\">\n {{ searchRequest?.noResultsText ?? 'No search result found.' }}\n </span>\n </ng-template>\n </ng-container>\n\n <ng-template #displaySelectableChilds>\n <button\n *ngFor=\"let item of selectableChilds\"\n type=\"button\"\n clrDropdownItem\n class=\"text-truncate display-result\"\n [class.selected-child]=\"item.id === parentNode.getSelectedChild()?.id\"\n (click)=\"selectNode(item)\"\n title=\"{{ item.label }}\"\n >\n {{ item.label }}\n </button>\n </ng-template>\n </clr-dropdown-menu>\n </clr-dropdown>\n </ng-container>\n\n <ng-template #singleSelected>\n <ng-container *ngIf=\"parentNode.getSelectedChild()\">\n <ng-container *ngIf=\"parentNode.getSelectedChild().selectable; else unselectable\">\n <button\n class=\"btn btn-link btn-sm\"\n (click)=\"selectNode(parentNode.getSelectedChild())\"\n [class.last-level]=\"!parentNode.getSelectedChild().getSelectedChild()\"\n title=\"{{ parentNode.getSelectedChild().label }}\"\n >\n {{ parentNode.getSelectedChild().label }}\n </button>\n </ng-container>\n <ng-template #unselectable>\n <span\n class=\"unselectable-node text-truncate\"\n [class.last-level]=\"!parentNode.getSelectedChild().getSelectedChild()\"\n title=\"{{ parentNode.getSelectedChild().label }}\"\n >\n {{ parentNode.getSelectedChild().label }}\n </span>\n </ng-template>\n </ng-container>\n </ng-template>\n\n <clr-location-bar-node\n *ngIf=\"parentNode.getSelectedChild() && parentNode.getChildren().length > 0\"\n [parentNode]=\"parentNode.getSelectedChild()\"\n [clrSearchRequest]=\"searchRequest\"\n [clrSearchResultItems]=\"searchResultItems\"\n (selectionChanged)=\"onSelectionChanged($event)\"\n (searchItemChanged)=\"onSearchItemChanged(null)\"\n >\n <span>/</span>\n </clr-location-bar-node>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.CdsIconCustomTag, selector: "cds-icon" }, { kind: "component", type: i2.ClrDropdown, selector: "clr-dropdown", inputs: ["clrCloseMenuOnItemClick"] }, { kind: "component", type: i2.ClrDropdownMenu, selector: "clr-dropdown-menu", inputs: ["clrPosition"] }, { kind: "directive", type: i2.ClrDropdownTrigger, selector: "[clrDropdownTrigger],[clrDropdownToggle]" }, { kind: "directive", type: i2.ClrDropdownItem, selector: "[clrDropdownItem]", inputs: ["clrDisabled", "id"] }, { kind: "directive", type: i2.ClrIfOpen, selector: "[clrIfOpen]", inputs: ["clrIfOpen"], outputs: ["clrIfOpenChange"] }, { kind: "directive", type: i3.ClrDropdownOverflowDirective, selector: "clr-dropdown-menu", inputs: ["clrDropdownMenuMaxHeight", "clrDropdownMenuItemMinHeight", "clrMarginBottom"] }, { kind: "component", type: LocationBarNodeComponent, selector: "clr-location-bar-node", inputs: ["parentNode", "clrSearchResultItems", "clrSearchRequest"], outputs: ["selectionChanged", "searchItemChanged"] }, { kind: "component", type: i4.LocationBarSearchComponent, selector: "clr-location-bar-search", inputs: ["clrSearchRequest"], outputs: ["searchPerformed"] }] }); }
|
|
119
125
|
}
|
|
120
126
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: LocationBarNodeComponent, decorators: [{
|
|
121
127
|
type: Component,
|
|
122
|
-
args: [{ selector: 'clr-location-bar-node', host: { '[class.location-bar-node]': 'true' }, template: "<ng-container *ngIf=\"parentNode\">\n <ng-content *ngIf=\"parentNode.getChildren()?.length > 0\"></ng-content>\n\n <ng-container\n *ngIf=\"\n (selectableChilds.length > 0 && !parentNode.getSelectedChild()) || selectableChilds.length > 1;\n else singleSelected\n \"\n >\n <clr-dropdown>\n <button\n class=\"btn btn-link btn-sm\"\n (blur)=\"focus = false\"\n (focus)=\"focus = true\"\n (click)=\"resetSearch()\"\n clrDropdownTrigger\n >\n <ng-container *ngIf=\"parentNode.getSelectedChild() as node; else unselected\">\n <span\n (click)=\"resetSearch()\"\n class=\"text-truncate\"\n [class.last-level]=\"!parentNode.getSelectedChild().getSelectedChild()\"\n title=\"{{ node.label }}\"\n >\n {{ node.label }}\n </span>\n <cds-icon shape=\"angle\" direction=\"down\" size=\"xs\" class=\"caret-icon\"></cds-icon>\n </ng-container>\n <ng-template #unselected>\n <cds-icon class=\"unselected\" size=\"18\" [attr.solid]=\"focus\" shape=\"tree-view\"></cds-icon> ...\n </ng-template>\n </button>\n <clr-dropdown-menu [clrPosition]=\"'bottom-left'\" *clrIfOpen>\n <clr-location-bar-search\n *ngIf=\"searchRequest\"\n [clrSearchRequest]=\"searchRequest\"\n (searchPerformed)=\"onSearch($event)\"\n ></clr-location-bar-search>\n <
|
|
128
|
+
args: [{ selector: 'clr-location-bar-node', host: { '[class.location-bar-node]': 'true' }, template: "<ng-container *ngIf=\"parentNode\">\n <ng-content *ngIf=\"parentNode.getChildren()?.length > 0\"></ng-content>\n\n <ng-container\n *ngIf=\"\n (selectableChilds.length > 0 && !parentNode.getSelectedChild()) || selectableChilds.length > 1;\n else singleSelected\n \"\n >\n <clr-dropdown>\n <button\n class=\"btn btn-link btn-sm\"\n (blur)=\"focus = false\"\n (focus)=\"focus = true\"\n (click)=\"resetSearch()\"\n clrDropdownTrigger\n >\n <ng-container *ngIf=\"parentNode.getSelectedChild() as node; else unselected\">\n <span\n (click)=\"resetSearch()\"\n class=\"text-truncate\"\n [class.last-level]=\"!parentNode.getSelectedChild().getSelectedChild()\"\n title=\"{{ node.label }}\"\n >\n {{ node.label }}\n </span>\n <cds-icon shape=\"angle\" direction=\"down\" size=\"xs\" class=\"caret-icon\"></cds-icon>\n </ng-container>\n <ng-template #unselected>\n <cds-icon class=\"unselected\" size=\"18\" [attr.solid]=\"focus\" shape=\"tree-view\"></cds-icon> ...\n </ng-template>\n </button>\n <clr-dropdown-menu [clrPosition]=\"'bottom-left'\" *clrIfOpen>\n <clr-location-bar-search\n #locationBarSearch\n *ngIf=\"searchRequest\"\n [clrSearchRequest]=\"searchRequest\"\n (searchPerformed)=\"onSearch($event)\"\n ></clr-location-bar-search>\n <ng-container *ngIf=\"displaySearchResult(); else displaySelectableChilds\">\n <ng-container *ngIf=\"searchResultItems.length !== 0; else displayNotFound\">\n <button\n type=\"button\"\n clrDropdownItem\n class=\"text-truncate display-result\"\n *ngFor=\"let searchResultItem of searchResultItems\"\n (click)=\"onSearchItemChanged(searchResultItem)\"\n >\n <ng-container\n *ngTemplateOutlet=\"searchRequest?.searchResultItemRef; context: { $implicit: searchResultItem }\"\n ></ng-container>\n </button>\n </ng-container>\n <ng-template #displayNotFound>\n <span class=\"no-result-text\">\n {{ searchRequest?.noResultsText ?? 'No search result found.' }}\n </span>\n </ng-template>\n </ng-container>\n\n <ng-template #displaySelectableChilds>\n <button\n *ngFor=\"let item of selectableChilds\"\n type=\"button\"\n clrDropdownItem\n class=\"text-truncate display-result\"\n [class.selected-child]=\"item.id === parentNode.getSelectedChild()?.id\"\n (click)=\"selectNode(item)\"\n title=\"{{ item.label }}\"\n >\n {{ item.label }}\n </button>\n </ng-template>\n </clr-dropdown-menu>\n </clr-dropdown>\n </ng-container>\n\n <ng-template #singleSelected>\n <ng-container *ngIf=\"parentNode.getSelectedChild()\">\n <ng-container *ngIf=\"parentNode.getSelectedChild().selectable; else unselectable\">\n <button\n class=\"btn btn-link btn-sm\"\n (click)=\"selectNode(parentNode.getSelectedChild())\"\n [class.last-level]=\"!parentNode.getSelectedChild().getSelectedChild()\"\n title=\"{{ parentNode.getSelectedChild().label }}\"\n >\n {{ parentNode.getSelectedChild().label }}\n </button>\n </ng-container>\n <ng-template #unselectable>\n <span\n class=\"unselectable-node text-truncate\"\n [class.last-level]=\"!parentNode.getSelectedChild().getSelectedChild()\"\n title=\"{{ parentNode.getSelectedChild().label }}\"\n >\n {{ parentNode.getSelectedChild().label }}\n </span>\n </ng-template>\n </ng-container>\n </ng-template>\n\n <clr-location-bar-node\n *ngIf=\"parentNode.getSelectedChild() && parentNode.getChildren().length > 0\"\n [parentNode]=\"parentNode.getSelectedChild()\"\n [clrSearchRequest]=\"searchRequest\"\n [clrSearchResultItems]=\"searchResultItems\"\n (selectionChanged)=\"onSelectionChanged($event)\"\n (searchItemChanged)=\"onSearchItemChanged(null)\"\n >\n <span>/</span>\n </clr-location-bar-node>\n</ng-container>\n" }]
|
|
123
129
|
}], ctorParameters: () => [{ type: i5.LocationBarContentProvider, decorators: [{
|
|
124
130
|
type: Inject,
|
|
125
131
|
args: [CONTENT_PROVIDER]
|
|
@@ -137,5 +143,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
|
|
|
137
143
|
type: Output
|
|
138
144
|
}], searchItemChanged: [{
|
|
139
145
|
type: Output
|
|
146
|
+
}], locationBarSearch: [{
|
|
147
|
+
type: ViewChild,
|
|
148
|
+
args: ['locationBarSearch']
|
|
140
149
|
}] } });
|
|
141
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYXRpb24tYmFyLW5vZGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2Nsci1hZGRvbnMvbG9jYXRpb24tYmFyL2xvY2F0aW9uLWJhci1ub2RlL2xvY2F0aW9uLWJhci1ub2RlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9jbHItYWRkb25zL2xvY2F0aW9uLWJhci9sb2NhdGlvbi1iYXItbm9kZS9sb2NhdGlvbi1iYXItbm9kZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFhLFFBQVEsRUFBRSxNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ25ILE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZFLE9BQU8sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQixPQUFPLEVBQUUsZUFBZSxFQUFVLE1BQU0sdUJBQXVCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLDBCQUEwQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7QUFHeEYsWUFBWSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFFL0M7O0dBRUc7QUFNSCxNQUFNLE9BQU8sd0JBQXdCO0lBaUJuQyxZQUFZO0lBQ1osSUFDSSxVQUFVLENBQUMsVUFBOEI7UUFDM0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUM7UUFDOUIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxX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UUFFM0IsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLEVBQUU7OzBCQXdDaEMsTUFBTTsyQkFBQyxnQkFBZ0I7OzBCQUFHLFFBQVE7eUNBbkIzQyxVQUFVO3NCQURiLEtBQUs7Z0JBVXlCLGlCQUFpQjtzQkFBL0MsS0FBSzt1QkFBQyxzQkFBc0I7Z0JBQ0YsYUFBYTtzQkFBdkMsS0FBSzt1QkFBQyxrQkFBa0I7Z0JBTWYsZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIElucHV0LCBPbkNoYW5nZXMsIE9wdGlvbmFsLCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGFuZ2xlSWNvbiwgQ2xhcml0eUljb25zLCB0cmVlVmlld0ljb24gfSBmcm9tICdAY2RzL2NvcmUvaWNvbic7XG5pbXBvcnQgJ0BjZHMvY29yZS9pY29uL3JlZ2lzdGVyLmpzJztcbmltcG9ydCB7IG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBMb2NhdGlvbkJhck5vZGUsIE5vZGVJZCB9IGZyb20gJy4uL2xvY2F0aW9uLWJhci5tb2RlbCc7XG5pbXBvcnQgeyBDT05URU5UX1BST1ZJREVSLCBMb2NhdGlvbkJhckNvbnRlbnRQcm92aWRlciB9IGZyb20gJy4uL2xvY2F0aW9uLWJhci5wcm92aWRlcic7XG5pbXBvcnQgeyBTZWFyY2hSZXF1ZXN0TW9kZWwsIFNlYXJjaFJlc3VsdE1vZGVsIH0gZnJvbSAnLi4vbG9jYXRpb24tYmFyLnNlYXJjaC5tb2RlbCc7XG5cbkNsYXJpdHlJY29ucy5hZGRJY29ucyh0cmVlVmlld0ljb24sIGFuZ2xlSWNvbik7XG5cbi8qKlxuICogQ29tcG9uZW50IHdoaWNoIHJlbmRlcnMgYSBub2RlIG9mIHRoZSBsb2NhdGlvbiBiYXIuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Nsci1sb2NhdGlvbi1iYXItbm9kZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9sb2NhdGlvbi1iYXItbm9kZS5jb21wb25lbnQuaHRtbCcsXG4gIGhvc3Q6IHsgJ1tjbGFzcy5sb2NhdGlvbi1iYXItbm9kZV0nOiAndHJ1ZScgfSxcbn0pXG5leHBvcnQgY2xhc3MgTG9jYXRpb25CYXJOb2RlQ29tcG9uZW50PFQgZXh0ZW5kcyBOb2RlSWQ+IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgLyoqXG4gICAqIFRoZSBwYXJlbnQgbm9kZSBvZiB0aGlzIGNvbXBvbmVudFxuICAgKi9cbiAgcHJpdmF0ZSBfcGFyZW50Tm9kZTogTG9jYXRpb25CYXJOb2RlPFQ+O1xuXG4gIC8qKlxuICAgKiBUaGUgc2VsZWN0YWJsZSBub2Rlc1xuICAgKi9cbiAgc2VsZWN0YWJsZUNoaWxkczogTG9jYXRpb25CYXJOb2RlPFQ+W10gPSBbXTtcblxuICBzZWFyY2hUZXh0OiBzdHJpbmc7XG5cbiAgZm9jdXM6IGJvb2xlYW47XG5cbiAgcmVhZG9ubHkgU0VBUkNIX0lURU1fU1RPUkFHRV9LRVk6IHN0cmluZyA9ICdzZWFyY2hlZEl0ZW0nO1xuXG4gIC8qIGlucHV0cyAqL1xuICBASW5wdXQoKVxuICBzZXQgcGFyZW50Tm9kZShwYXJlbnROb2RlOiBMb2NhdGlvbkJhck5vZGU8VD4pIHtcbiAgICB0aGlzLl9wYXJlbnROb2RlID0gcGFyZW50Tm9kZTtcbiAgICBpZiAodGhpcy5fcGFyZW50Tm9kZSkge1xuICAgICAgY29uc3QgY2hpbGRyZW4kID0gdGhpcy5fcGFyZW50Tm9kZS5nZXRDaGlsZHJlbigpID8gb2YodGhpcy5fcGFyZW50Tm9kZS5nZXRDaGlsZHJlbigpKSA6IHRoaXMuZ2V0TGF6eUNoaWxkcmVuKCk7XG5cbiAgICAgIGNoaWxkcmVuJC50b1Byb21pc2UoKS50aGVuKG5vZGVzID0+IHRoaXMucHJlcGFyZUNoaWxkcmVuKG5vZGVzIHx8IFtdKSk7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KCdjbHJTZWFyY2hSZXN1bHRJdGVtcycpIHNlYXJjaFJlc3VsdEl0ZW1zOiBTZWFyY2hSZXN1bHRNb2RlbFtdID0gW107XG4gIEBJbnB1dCgnY2xyU2VhcmNoUmVxdWVzdCcpIHNlYXJjaFJlcXVlc3Q6IFNlYXJjaFJlcXVlc3RNb2RlbDtcblxuICAvKiBvdXRwdXRzICovXG4gIC8qKlxuICAgKiBFbWl0cyBzZWxlY3Rpb24gY2hhbmdlc1xuICAgKi9cbiAgQE91dHB1dCgpIHNlbGVjdGlvbkNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFRbXT4oKTtcbiAgQE91dHB1dCgpIHNlYXJjaEl0ZW1DaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxTZWFyY2hSZXN1bHRNb2RlbD4oKTtcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KENPTlRFTlRfUFJPVklERVIpIEBPcHRpb25hbCgpIHB1YmxpYyBjb250ZW50UHJvdmlkZXI6IExvY2F0aW9uQmFyQ29udGVudFByb3ZpZGVyPFQ+KSB7fVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlcz8uc2VhcmNoUmVzdWx0SXRlbXMpIHtcbiAgICAgIHRoaXMuc2VhcmNoUmVzdWx0SXRlbXMgPSBjaGFuZ2VzLnNlYXJjaFJlc3VsdEl0ZW1zLmN1cnJlbnRWYWx1ZTtcbiAgICB9XG4gIH1cblxuICBnZXQgcGFyZW50Tm9kZSgpOiBMb2NhdGlvbkJhck5vZGU8VD4ge1xuICAgIHJldHVybiB0aGlzLl9wYXJlbnROb2RlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRMYXp5Q2hpbGRyZW4oKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udGVudFByb3ZpZGVyID8gdGhpcy5jb250ZW50UHJvdmlkZXIuZ2V0TGF6eUNoaWxkcmVuKHRoaXMuX3BhcmVudE5vZGUpIDogb2YoW10pO1xuICB9XG5cbiAgcHJpdmF0ZSBwcmVwYXJlQ2hpbGRyZW4obm9kZXM6IExvY2F0aW9uQmFyTm9kZTxUPltdKSB7XG4gICAgdGhpcy5fcGFyZW50Tm9kZS5zZXRDaGlsZHJlbihub2Rlcyk7XG4gICAgLyogd2hlbiBubyBub2RlIGlzIHNlbGVjdGVkIHNlYXJjaCB3aXRoaW4gdGhlIGNoaWxkcmVuIGZvciB0aGUgZmlyc3QgY2hpbGQgdG8gYmUgcHJlLXNlbGVjdGVkICovXG4gICAgaWYgKCF0aGlzLl9wYXJlbnROb2RlLmdldFNlbGVjdGVkQ2hpbGQoKSkge1xuICAgICAgZm9yIChjb25zdCBub2RlIG9mIG5vZGVzKSB7XG4gICAgICAgIGlmIChub2RlLnByZVNlbGVjdGVkKSB7XG4gICAgICAgICAgdGhpcy5fcGFyZW50Tm9kZS5zZXRTZWxlY3RlZENoaWxkKG5vZGUpO1xuICAgICAgICAgIG5vZGUucHJlU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnNlbGVjdGFibGVDaGlsZHMgPSBub2Rlcy5maWx0ZXIobiA9PiBuLnNlbGVjdGFibGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIExpc3RlbnMgZm9yIHNlbGVjdGlvbiBjaGFuZ2VzIG9mIGNoaWxkIGNvbXBvbmVudHMgYW5kIHJlLWVtaXRzIHRoZSBzZWxlY3Rpb24gZXZlbnQuXG4gICAqIEBwYXJhbSBzZWxlY3Rpb24gVGhlIGNoYW5nZWQgc2VsZWN0aW9uIG9mIGNoaWxkIGNvbXBvbmVudHNcbiAgICovXG4gIG9uU2VsZWN0aW9uQ2hhbmdlZChzZWxlY3Rpb246IFRbXSkge1xuICAgIHNlbGVjdGlvbi51bnNoaWZ0KHRoaXMuX3BhcmVudE5vZGUuZ2V0U2VsZWN0ZWRDaGlsZCgpLmlkKTtcbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZWQuZW1pdChzZWxlY3Rpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlbGVjdHMgdGhlIGdpdmVuIG5vZGVcbiAgICogQHBhcmFtIHNlbGVjdGVkTm9kZSBUaGUgc2VsZWN0ZWQgY2hpbGQgbm9kZS5cbiAgICovXG4gIHNlbGVjdE5vZGUoc2VsZWN0ZWROb2RlOiBMb2NhdGlvbkJhck5vZGU8VD4pIHtcbiAgICBpZiAoc2VsZWN0ZWROb2RlKSB7XG4gICAgICBzZWxlY3RlZE5vZGUuc2V0U2VsZWN0ZWRDaGlsZChudWxsKTtcbiAgICAgIHRoaXMuX3BhcmVudE5vZGUuc2V0U2VsZWN0ZWRDaGlsZChzZWxlY3RlZE5vZGUpO1xuICAgICAgdGhpcy5ub3RpZnlTZWxlY3Rpb25DaGFuZ2VkKHNlbGVjdGVkTm9kZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCBjYWxsZWQgaW50ZXJuYWxseSB0byBlbWl0IHRoZSBzZWxlY3Rpb24gZXZlbnRcbiAgICogQHBhcmFtIHNlbGVjdGVkTm9kZSBUaGUgbm9kZSB3aGljaCBoYXMgYmVlbiBzZWxlY3RlZFxuICAgKi9cbiAgcHJpdmF0ZSBub3RpZnlTZWxlY3Rpb25DaGFuZ2VkKHNlbGVjdGVkTm9kZTogTG9jYXRpb25CYXJOb2RlPFQ+KSB7XG4gICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2VkLmVtaXQoW3NlbGVjdGVkTm9kZS5pZF0pO1xuICB9XG5cbiAgb25TZWFyY2godGV4dDogc3RyaW5nKSB7XG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gdGV4dDtcbiAgICB0aGlzLmNvbnRlbnRQcm92aWRlci5zZWFyY2hQZXJmb3JtZWQoeyB0ZXh0OiB0ZXh0LCBzZWFyY2hhYmxlTm9kZXM6IHRoaXMuX3BhcmVudE5vZGUuZ2V0Q2hpbGRyZW4oKSB9KTtcbiAgfVxuXG4gIGRpc3BsYXlTZWFyY2hSZXN1bHQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoUmVzdWx0SXRlbXMubGVuZ3RoICE9PSAwIHx8ICEhdGhpcy5zZWFyY2hUZXh0O1xuICB9XG5cbiAgcmVzZXRTZWFyY2goKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hSZXN1bHRJdGVtcyA9IFtdO1xuICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xuICB9XG5cbiAgb25TZWFyY2hJdGVtQ2hhbmdlZChpdGVtOiBTZWFyY2hSZXN1bHRNb2RlbCk6IHZvaWQge1xuICAgIGxldCBzZWFyY2hlZEl0ZW06IFNlYXJjaFJlc3VsdE1vZGVsO1xuICAgIGlmIChpdGVtKSB7XG4gICAgICBzZWFyY2hlZEl0ZW0gPSBpdGVtO1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5TRUFSQ0hfSVRFTV9TVE9SQUdFX0tFWSwgSlNPTi5zdHJpbmdpZnkoaXRlbSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzdG9yYWdlSXRlbSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuU0VBUkNIX0lURU1fU1RPUkFHRV9LRVkpO1xuICAgICAgaWYgKHN0b3JhZ2VJdGVtKSB7XG4gICAgICAgIHNlYXJjaGVkSXRlbSA9IEpTT04ucGFyc2Uoc3RvcmFnZUl0ZW0pO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnNlYXJjaEl0ZW1DaGFuZ2VkLmVtaXQoc2VhcmNoZWRJdGVtKTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cInBhcmVudE5vZGVcIj5cbiAgPG5nLWNvbnRlbnQgKm5nSWY9XCJwYXJlbnROb2RlLmdldENoaWxkcmVuKCk/Lmxlbmd0aCA+IDBcIj48L25nLWNvbnRlbnQ+XG5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0lmPVwiXG4gICAgICAoc2VsZWN0YWJsZUNoaWxkcy5sZW5ndGggPiAwICYmICFwYXJlbnROb2RlLmdldFNlbGVjdGVkQ2hpbGQoKSkgfHwgc2VsZWN0YWJsZUNoaWxkcy5sZW5ndGggPiAxO1xuICAgICAgZWxzZSBzaW5nbGVTZWxlY3RlZFxuICAgIFwiXG4gID5cbiAgICA8Y2xyLWRyb3Bkb3duPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImJ0biBidG4tbGluayBidG4tc21cIlxuICAgICAgICAoYmx1cik9XCJmb2N1cyA9IGZhbHNlXCJcbiAgICAgICAgKGZvY3VzKT1cImZvY3VzID0gdHJ1ZVwiXG4gICAgICAgIChjbGljayk9XCJyZXNldFNlYXJjaCgpXCJcbiAgICAgICAgY2xyRHJvcGRvd25UcmlnZ2VyXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwYXJlbnROb2RlLmdldFNlbGVjdGVkQ2hpbGQoKSBhcyBub2RlOyBlbHNlIHVuc2VsZWN0ZWRcIj5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgKGNsaWNrKT1cInJlc2V0U2VhcmNoKClcIlxuICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCJcbiAgICAgICAgICAgIFtjbGFzcy5sYXN0LWxldmVsXT1cIiFwYXJlbnROb2RlLmdldFNlbGVjdGVkQ2hpbGQoKS5nZXRTZWxlY3RlZENoaWxkKClcIlxuICAgICAgICAgICAgdGl0bGU9XCJ7eyBub2RlLmxhYmVsIH19XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBub2RlLmxhYmVsIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxjZHMtaWNvbiBzaGFwZT1cImFuZ2xlXCIgZGlyZWN0aW9uPVwiZG93blwiIHNpemU9XCJ4c1wiIGNsYXNzPVwiY2FyZXQtaWNvblwiPjwvY2RzLWljb24+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI3Vuc2VsZWN0ZWQ+XG4gICAgICAgICAgPGNkcy1pY29uIGNsYXNzPVwidW5zZWxlY3RlZFwiIHNpemU9XCIxOFwiIFthdHRyLnNvbGlkXT1cImZvY3VzXCIgc2hhcGU9XCJ0cmVlLXZpZXdcIj48L2Nkcy1pY29uPiZuYnNwOy4uLlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8Y2xyLWRyb3Bkb3duLW1lbnUgW2NsclBvc2l0aW9uXT1cIidib3R0b20tbGVmdCdcIiAqY2xySWZPcGVuPlxuICAgICAgICA8Y2xyLWxvY2F0aW9uLWJhci1zZWFyY2hcbiAgICAgICAgICAqbmdJZj1cInNlYXJjaFJlcXVlc3RcIlxuICAgICAgICAgIFtjbHJTZWFyY2hSZXF1ZXN0XT1cInNlYXJjaFJlcXVlc3RcIlxuICAgICAgICAgIChzZWFyY2hQZXJmb3JtZWQpPVwib25TZWFyY2goJGV2ZW50KVwiXG4gICAgICAgID48L2Nsci1sb2NhdGlvbi1iYXItc2VhcmNoPlxuICAgICAgICA8c3BhbiAqbmdJZj1cImRpc3BsYXlTZWFyY2hSZXN1bHQoKTsgZWxzZSBkaXNwbGF5U2VsZWN0YWJsZUNoaWxkc1wiPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2VhcmNoUmVzdWx0SXRlbXMubGVuZ3RoICE9PSAwOyBlbHNlIGRpc3BsYXlOb3RGb3VuZFwiPlxuICAgICAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IHNlYXJjaFJlc3VsdEl0ZW0gb2Ygc2VhcmNoUmVzdWx0SXRlbXNcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsckRyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2VhcmNoSXRlbUNoYW5nZWQoc2VhcmNoUmVzdWx0SXRlbSlcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzZWFyY2hSZXF1ZXN0Py5zZWFyY2hSZXN1bHRJdGVtUmVmOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogc2VhcmNoUmVzdWx0SXRlbSB9XCJcbiAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2Rpc3BsYXlOb3RGb3VuZD5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibm8tcmVzdWx0LXRleHRcIj5cbiAgICAgICAgICAgICAge3sgc2VhcmNoUmVxdWVzdD8ubm9SZXN1bHRzVGV4dCA/PyAnTm8gc2VhcmNoIHJlc3VsdCBmb3VuZC4nIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZGlzcGxheVNlbGVjdGFibGVDaGlsZHM+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc2VsZWN0YWJsZUNoaWxkc1wiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsckRyb3Bkb3duSXRlbVxuICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCJcbiAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZC1jaGlsZF09XCJpdGVtLmlkID09PSBwYXJlbnROb2RlLmdldFNlbGVjdGVkQ2hpbGQoKT8uaWRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE5vZGUoaXRlbSlcIlxuICAgICAgICAgICAgdGl0bGU9XCJ7eyBpdGVtLmxhYmVsIH19XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBpdGVtLmxhYmVsIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Nsci1kcm9wZG93bi1tZW51PlxuICAgIDwvY2xyLWRyb3Bkb3duPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctdGVtcGxhdGUgI3NpbmdsZVNlbGVjdGVkPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwYXJlbnROb2RlLmdldFNlbGVjdGVkQ2hpbGQoKVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBhcmVudE5vZGUuZ2V0U2VsZWN0ZWRDaGlsZCgpLnNlbGVjdGFibGU7IGVsc2UgdW5zZWxlY3RhYmxlXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGluayBidG4tc21cIlxuICAgICAgICAgIChjbGljayk9XCJzZWxlY3ROb2RlKHBhcmVudE5vZGUuZ2V0U2VsZWN0ZWRDaGlsZCgpKVwiXG4gICAgICAgICAgW2NsYXNzLmxhc3QtbGV2ZWxdPVwiIXBhcmVudE5vZGUuZ2V0U2VsZWN0ZWRDaGlsZCgpLmdldFNlbGVjdGVkQ2hpbGQoKVwiXG4gICAgICAgICAgdGl0bGU9XCJ7eyBwYXJlbnROb2RlLmdldFNlbGVjdGVkQ2hpbGQoKS5sYWJlbCB9fVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBwYXJlbnROb2RlLmdldFNlbGVjdGVkQ2hpbGQoKS5sYWJlbCB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICN1bnNlbGVjdGFibGU+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3M9XCJ1bnNlbGVjdGFibGUtbm9kZSB0ZXh0LXRydW5jYXRlXCJcbiAgICAgICAgICBbY2xhc3MubGFzdC1sZXZlbF09XCIhcGFyZW50Tm9kZS5nZXRTZWxlY3RlZENoaWxkKCkuZ2V0U2VsZWN0ZWRDaGlsZCgpXCJcbiAgICAgICAgICB0aXRsZT1cInt7IHBhcmVudE5vZGUuZ2V0U2VsZWN0ZWRDaGlsZCgpLmxhYmVsIH19XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHBhcmVudE5vZGUuZ2V0U2VsZWN0ZWRDaGlsZCgpLmxhYmVsIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPGNsci1sb2NhdGlvbi1iYXItbm9kZVxuICAgICpuZ0lmPVwicGFyZW50Tm9kZS5nZXRTZWxlY3RlZENoaWxkKCkgJiYgcGFyZW50Tm9kZS5nZXRDaGlsZHJlbigpLmxlbmd0aCA+IDBcIlxuICAgIFtwYXJlbnROb2RlXT1cInBhcmVudE5vZGUuZ2V0U2VsZWN0ZWRDaGlsZCgpXCJcbiAgICBbY2xyU2VhcmNoUmVxdWVzdF09XCJzZWFyY2hSZXF1ZXN0XCJcbiAgICBbY2xyU2VhcmNoUmVzdWx0SXRlbXNdPVwic2VhcmNoUmVzdWx0SXRlbXNcIlxuICAgIChzZWxlY3Rpb25DaGFuZ2VkKT1cIm9uU2VsZWN0aW9uQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAoc2VhcmNoSXRlbUNoYW5nZWQpPVwib25TZWFyY2hJdGVtQ2hhbmdlZChudWxsKVwiXG4gID5cbiAgICA8c3Bhbj4vPC9zcGFuPlxuICA8L2Nsci1sb2NhdGlvbi1iYXItbm9kZT5cbjwvbmctY29udGFpbmVyPlxuIl19
|
|
150
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYXRpb24tYmFyLW5vZGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2Nsci1hZGRvbnMvbG9jYXRpb24tYmFyL2xvY2F0aW9uLWJhci1ub2RlL2xvY2F0aW9uLWJhci1ub2RlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9jbHItYWRkb25zL2xvY2F0aW9uLWJhci9sb2NhdGlvbi1iYXItbm9kZS9sb2NhdGlvbi1iYXItbm9kZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLFFBQVEsRUFDUixNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZFLE9BQU8sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQixPQUFPLEVBQUUsZUFBZSxFQUFVLE1BQU0sdUJBQXVCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLDBCQUEwQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFeEYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sc0RBQXNELENBQUM7Ozs7Ozs7QUFFbEcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFFL0M7O0dBRUc7QUFNSCxNQUFNLE9BQU8sd0JBQXdCO0lBaUJuQyxZQUFZO0lBQ1osSUFDSSxVQUFVLENBQUMsVUFBOEI7UUFDM0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUM7UUFDOUIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFdB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QUFpQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUM1QyxDQUFDOzhHQWpJVSx3QkFBd0Isa0JBMkNmLGdCQUFnQjtrR0EzQ3pCLHdCQUF3QixnZ0JDN0JyQyxteElBZ0hBLHl0Q0RuRmEsd0JBQXdCOzsyRkFBeEIsd0JBQXdCO2tCQUxwQyxTQUFTOytCQUNFLHVCQUF1QixRQUUzQixFQUFFLDJCQUEyQixFQUFFLE1BQU0sRUFBRTs7MEJBNkNoQyxNQUFNOzJCQUFDLGdCQUFnQjs7MEJBQUcsUUFBUTt5Q0F4QjNDLFVBQVU7c0JBRGIsS0FBSztnQkFTeUIsaUJBQWlCO3NCQUEvQyxLQUFLO3VCQUFDLHNCQUFzQjtnQkFDRixhQUFhO3NCQUF2QyxLQUFLO3VCQUFDLGtCQUFrQjtnQkFNZixnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNO2dCQUU2QixpQkFBaUI7c0JBQXBELFNBQVM7dUJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGFuZ2xlSWNvbiwgQ2xhcml0eUljb25zLCB0cmVlVmlld0ljb24gfSBmcm9tICdAY2RzL2NvcmUvaWNvbic7XG5pbXBvcnQgJ0BjZHMvY29yZS9pY29uL3JlZ2lzdGVyLmpzJztcbmltcG9ydCB7IG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBMb2NhdGlvbkJhck5vZGUsIE5vZGVJZCB9IGZyb20gJy4uL2xvY2F0aW9uLWJhci5tb2RlbCc7XG5pbXBvcnQgeyBDT05URU5UX1BST1ZJREVSLCBMb2NhdGlvbkJhckNvbnRlbnRQcm92aWRlciB9IGZyb20gJy4uL2xvY2F0aW9uLWJhci5wcm92aWRlcic7XG5pbXBvcnQgeyBTZWFyY2hSZXF1ZXN0TW9kZWwsIFNlYXJjaFJlc3VsdE1vZGVsIH0gZnJvbSAnLi4vbG9jYXRpb24tYmFyLnNlYXJjaC5tb2RlbCc7XG5pbXBvcnQgeyBMb2NhdGlvbkJhclNlYXJjaENvbXBvbmVudCB9IGZyb20gJy4uL2xvY2F0aW9uLWJhci1zZWFyY2gvbG9jYXRpb24tYmFyLXNlYXJjaC5jb21wb25lbnQnO1xuXG5DbGFyaXR5SWNvbnMuYWRkSWNvbnModHJlZVZpZXdJY29uLCBhbmdsZUljb24pO1xuXG4vKipcbiAqIENvbXBvbmVudCB3aGljaCByZW5kZXJzIGEgbm9kZSBvZiB0aGUgbG9jYXRpb24gYmFyLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjbHItbG9jYXRpb24tYmFyLW5vZGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vbG9jYXRpb24tYmFyLW5vZGUuY29tcG9uZW50Lmh0bWwnLFxuICBob3N0OiB7ICdbY2xhc3MubG9jYXRpb24tYmFyLW5vZGVdJzogJ3RydWUnIH0sXG59KVxuZXhwb3J0IGNsYXNzIExvY2F0aW9uQmFyTm9kZUNvbXBvbmVudDxUIGV4dGVuZHMgTm9kZUlkPiBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIC8qKlxuICAgKiBUaGUgcGFyZW50IG5vZGUgb2YgdGhpcyBjb21wb25lbnRcbiAgICovXG4gIHByaXZhdGUgX3BhcmVudE5vZGU6IExvY2F0aW9uQmFyTm9kZTxUPjtcblxuICAvKipcbiAgICogVGhlIHNlbGVjdGFibGUgbm9kZXNcbiAgICovXG4gIHNlbGVjdGFibGVDaGlsZHM6IExvY2F0aW9uQmFyTm9kZTxUPltdID0gW107XG5cbiAgc2VhcmNoVGV4dDogc3RyaW5nO1xuXG4gIGZvY3VzOiBib29sZWFuO1xuXG4gIHJlYWRvbmx5IFNFQVJDSF9JVEVNX1NUT1JBR0VfS0VZOiBzdHJpbmcgPSAnc2VhcmNoZWRJdGVtJztcblxuICAvKiBpbnB1dHMgKi9cbiAgQElucHV0KClcbiAgc2V0IHBhcmVudE5vZGUocGFyZW50Tm9kZTogTG9jYXRpb25CYXJOb2RlPFQ+KSB7XG4gICAgdGhpcy5fcGFyZW50Tm9kZSA9IHBhcmVudE5vZGU7XG4gICAgaWYgKHRoaXMuX3BhcmVudE5vZGUpIHtcbiAgICAgIGNvbnN0IGNoaWxkcmVuJCA9IHRoaXMuX3BhcmVudE5vZGUuZ2V0Q2hpbGRyZW4oKSA/IG9mKHRoaXMuX3BhcmVudE5vZGUuZ2V0Q2hpbGRyZW4oKSkgOiB0aGlzLmdldExhenlDaGlsZHJlbigpO1xuXG4gICAgICBjaGlsZHJlbiQudG9Qcm9taXNlKCkudGhlbihub2RlcyA9PiB0aGlzLnByZXBhcmVDaGlsZHJlbihub2RlcyB8fCBbXSkpO1xuICAgIH1cbiAgfVxuICBASW5wdXQoJ2NsclNlYXJjaFJlc3VsdEl0ZW1zJykgc2VhcmNoUmVzdWx0SXRlbXM6IFNlYXJjaFJlc3VsdE1vZGVsW10gPSBbXTtcbiAgQElucHV0KCdjbHJTZWFyY2hSZXF1ZXN0Jykgc2VhcmNoUmVxdWVzdDogU2VhcmNoUmVxdWVzdE1vZGVsO1xuXG4gIC8qIG91dHB1dHMgKi9cbiAgLyoqXG4gICAqIEVtaXRzIHNlbGVjdGlvbiBjaGFuZ2VzXG4gICAqL1xuICBAT3V0cHV0KCkgc2VsZWN0aW9uQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8VFtdPigpO1xuICBAT3V0cHV0KCkgc2VhcmNoSXRlbUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFNlYXJjaFJlc3VsdE1vZGVsPigpO1xuXG4gIEBWaWV3Q2hpbGQoJ2xvY2F0aW9uQmFyU2VhcmNoJykgc2V0IGxvY2F0aW9uQmFyU2VhcmNoKHNlYXJjaDogTG9jYXRpb25CYXJTZWFyY2hDb21wb25lbnQpIHtcbiAgICBpZiAoc2VhcmNoKSB7XG4gICAgICBzZWFyY2guZm9jdXNJbnB1dCgpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoQ09OVEVOVF9QUk9WSURFUikgQE9wdGlvbmFsKCkgcHVibGljIGNvbnRlbnRQcm92aWRlcjogTG9jYXRpb25CYXJDb250ZW50UHJvdmlkZXI8VD4pIHt9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzPy5zZWFyY2hSZXN1bHRJdGVtcykge1xuICAgICAgdGhpcy5zZWFyY2hSZXN1bHRJdGVtcyA9IGNoYW5nZXMuc2VhcmNoUmVzdWx0SXRlbXMuY3VycmVudFZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGdldCBwYXJlbnROb2RlKCk6IExvY2F0aW9uQmFyTm9kZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMuX3BhcmVudE5vZGU7XG4gIH1cblxuICBwcml2YXRlIGdldExhenlDaGlsZHJlbigpIHtcbiAgICByZXR1cm4gdGhpcy5jb250ZW50UHJvdmlkZXIgPyB0aGlzLmNvbnRlbnRQcm92aWRlci5nZXRMYXp5Q2hpbGRyZW4odGhpcy5fcGFyZW50Tm9kZSkgOiBvZihbXSk7XG4gIH1cblxuICBwcml2YXRlIHByZXBhcmVDaGlsZHJlbihub2RlczogTG9jYXRpb25CYXJOb2RlPFQ+W10pIHtcbiAgICB0aGlzLl9wYXJlbnROb2RlLnNldENoaWxkcmVuKG5vZGVzKTtcbiAgICAvKiB3aGVuIG5vIG5vZGUgaXMgc2VsZWN0ZWQgc2VhcmNoIHdpdGhpbiB0aGUgY2hpbGRyZW4gZm9yIHRoZSBmaXJzdCBjaGlsZCB0byBiZSBwcmUtc2VsZWN0ZWQgKi9cbiAgICBpZiAoIXRoaXMuX3BhcmVudE5vZGUuZ2V0U2VsZWN0ZWRDaGlsZCgpKSB7XG4gICAgICBmb3IgKGNvbnN0IG5vZGUgb2Ygbm9kZXMpIHtcbiAgICAgICAgaWYgKG5vZGUucHJlU2VsZWN0ZWQpIHtcbiAgICAgICAgICB0aGlzLl9wYXJlbnROb2RlLnNldFNlbGVjdGVkQ2hpbGQobm9kZSk7XG4gICAgICAgICAgbm9kZS5wcmVTZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0YWJsZUNoaWxkcyA9IG5vZGVzLmZpbHRlcihuID0+IG4uc2VsZWN0YWJsZSk7XG4gIH1cblxuICAvKipcbiAgICogTGlzdGVucyBmb3Igc2VsZWN0aW9uIGNoYW5nZXMgb2YgY2hpbGQgY29tcG9uZW50cyBhbmQgcmUtZW1pdHMgdGhlIHNlbGVjdGlvbiBldmVudC5cbiAgICogQHBhcmFtIHNlbGVjdGlvbiBUaGUgY2hhbmdlZCBzZWxlY3Rpb24gb2YgY2hpbGQgY29tcG9uZW50c1xuICAgKi9cbiAgb25TZWxlY3Rpb25DaGFuZ2VkKHNlbGVjdGlvbjogVFtdKSB7XG4gICAgc2VsZWN0aW9uLnVuc2hpZnQodGhpcy5fcGFyZW50Tm9kZS5nZXRTZWxlY3RlZENoaWxkKCkuaWQpO1xuICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlZC5lbWl0KHNlbGVjdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogU2VsZWN0cyB0aGUgZ2l2ZW4gbm9kZVxuICAgKiBAcGFyYW0gc2VsZWN0ZWROb2RlIFRoZSBzZWxlY3RlZCBjaGlsZCBub2RlLlxuICAgKi9cbiAgc2VsZWN0Tm9kZShzZWxlY3RlZE5vZGU6IExvY2F0aW9uQmFyTm9kZTxUPikge1xuICAgIGlmIChzZWxlY3RlZE5vZGUpIHtcbiAgICAgIHNlbGVjdGVkTm9kZS5zZXRTZWxlY3RlZENoaWxkKG51bGwpO1xuICAgICAgdGhpcy5fcGFyZW50Tm9kZS5zZXRTZWxlY3RlZENoaWxkKHNlbGVjdGVkTm9kZSk7XG4gICAgICB0aGlzLm5vdGlmeVNlbGVjdGlvbkNoYW5nZWQoc2VsZWN0ZWROb2RlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIGNhbGxlZCBpbnRlcm5hbGx5IHRvIGVtaXQgdGhlIHNlbGVjdGlvbiBldmVudFxuICAgKiBAcGFyYW0gc2VsZWN0ZWROb2RlIFRoZSBub2RlIHdoaWNoIGhhcyBiZWVuIHNlbGVjdGVkXG4gICAqL1xuICBwcml2YXRlIG5vdGlmeVNlbGVjdGlvbkNoYW5nZWQoc2VsZWN0ZWROb2RlOiBMb2NhdGlvbkJhck5vZGU8VD4pIHtcbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZWQuZW1pdChbc2VsZWN0ZWROb2RlLmlkXSk7XG4gIH1cblxuICBvblNlYXJjaCh0ZXh0OiBzdHJpbmcpIHtcbiAgICB0aGlzLnNlYXJjaFRleHQgPSB0ZXh0O1xuICAgIHRoaXMuY29udGVudFByb3ZpZGVyLnNlYXJjaFBlcmZvcm1lZCh7IHRleHQ6IHRleHQsIHNlYXJjaGFibGVOb2RlczogdGhpcy5fcGFyZW50Tm9kZS5nZXRDaGlsZHJlbigpIH0pO1xuICB9XG5cbiAgZGlzcGxheVNlYXJjaFJlc3VsdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hSZXN1bHRJdGVtcy5sZW5ndGggIT09IDAgfHwgISF0aGlzLnNlYXJjaFRleHQ7XG4gIH1cblxuICByZXNldFNlYXJjaCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaFJlc3VsdEl0ZW1zID0gW107XG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XG4gIH1cblxuICBvblNlYXJjaEl0ZW1DaGFuZ2VkKGl0ZW06IFNlYXJjaFJlc3VsdE1vZGVsKTogdm9pZCB7XG4gICAgbGV0IHNlYXJjaGVkSXRlbTogU2VhcmNoUmVzdWx0TW9kZWw7XG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIHNlYXJjaGVkSXRlbSA9IGl0ZW07XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLlNFQVJDSF9JVEVNX1NUT1JBR0VfS0VZLCBKU09OLnN0cmluZ2lmeShpdGVtKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHN0b3JhZ2VJdGVtID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5TRUFSQ0hfSVRFTV9TVE9SQUdFX0tFWSk7XG4gICAgICBpZiAoc3RvcmFnZUl0ZW0pIHtcbiAgICAgICAgc2VhcmNoZWRJdGVtID0gSlNPTi5wYXJzZShzdG9yYWdlSXRlbSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuc2VhcmNoSXRlbUNoYW5nZWQuZW1pdChzZWFyY2hlZEl0ZW0pO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwicGFyZW50Tm9kZVwiPlxuICA8bmctY29udGVudCAqbmdJZj1cInBhcmVudE5vZGUuZ2V0Q2hpbGRyZW4oKT8ubGVuZ3RoID4gMFwiPjwvbmctY29udGVudD5cblxuICA8bmctY29udGFpbmVyXG4gICAgKm5nSWY9XCJcbiAgICAgIChzZWxlY3RhYmxlQ2hpbGRzLmxlbmd0aCA+IDAgJiYgIXBhcmVudE5vZGUuZ2V0U2VsZWN0ZWRDaGlsZCgpKSB8fCBzZWxlY3RhYmxlQ2hpbGRzLmxlbmd0aCA+IDE7XG4gICAgICBlbHNlIHNpbmdsZVNlbGVjdGVkXG4gICAgXCJcbiAgPlxuICAgIDxjbHItZHJvcGRvd24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rIGJ0bi1zbVwiXG4gICAgICAgIChibHVyKT1cImZvY3VzID0gZmFsc2VcIlxuICAgICAgICAoZm9jdXMpPVwiZm9jdXMgPSB0cnVlXCJcbiAgICAgICAgKGNsaWNrKT1cInJlc2V0U2VhcmNoKClcIlxuICAgICAgICBjbHJEcm9wZG93blRyaWdnZXJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBhcmVudE5vZGUuZ2V0U2VsZWN0ZWRDaGlsZCgpIGFzIG5vZGU7IGVsc2UgdW5zZWxlY3RlZFwiPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAoY2xpY2spPVwicmVzZXRTZWFyY2goKVwiXG4gICAgICAgICAgICBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIlxuICAgICAgICAgICAgW2NsYXNzLmxhc3QtbGV2ZWxdPVwiIXBhcmVudE5vZGUuZ2V0U2VsZWN0ZWRDaGlsZCgpLmdldFNlbGVjdGVkQ2hpbGQoKVwiXG4gICAgICAgICAgICB0aXRsZT1cInt7IG5vZGUubGFiZWwgfX1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IG5vZGUubGFiZWwgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPGNkcy1pY29uIHNoYXBlPVwiYW5nbGVcIiBkaXJlY3Rpb249XCJkb3duXCIgc2l6ZT1cInhzXCIgY2xhc3M9XCJjYXJldC1pY29uXCI+PC9jZHMtaWNvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjdW5zZWxlY3RlZD5cbiAgICAgICAgICA8Y2RzLWljb24gY2xhc3M9XCJ1bnNlbGVjdGVkXCIgc2l6ZT1cIjE4XCIgW2F0dHIuc29saWRdPVwiZm9jdXNcIiBzaGFwZT1cInRyZWUtdmlld1wiPjwvY2RzLWljb24+Jm5ic3A7Li4uXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxjbHItZHJvcGRvd24tbWVudSBbY2xyUG9zaXRpb25dPVwiJ2JvdHRvbS1sZWZ0J1wiICpjbHJJZk9wZW4+XG4gICAgICAgIDxjbHItbG9jYXRpb24tYmFyLXNlYXJjaFxuICAgICAgICAgICNsb2NhdGlvbkJhclNlYXJjaFxuICAgICAgICAgICpuZ0lmPVwic2VhcmNoUmVxdWVzdFwiXG4gICAgICAgICAgW2NsclNlYXJjaFJlcXVlc3RdPVwic2VhcmNoUmVxdWVzdFwiXG4gICAgICAgICAgKHNlYXJjaFBlcmZvcm1lZCk9XCJvblNlYXJjaCgkZXZlbnQpXCJcbiAgICAgICAgPjwvY2xyLWxvY2F0aW9uLWJhci1zZWFyY2g+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkaXNwbGF5U2VhcmNoUmVzdWx0KCk7IGVsc2UgZGlzcGxheVNlbGVjdGFibGVDaGlsZHNcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VhcmNoUmVzdWx0SXRlbXMubGVuZ3RoICE9PSAwOyBlbHNlIGRpc3BsYXlOb3RGb3VuZFwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xyRHJvcGRvd25JdGVtXG4gICAgICAgICAgICAgIGNsYXNzPVwidGV4dC10cnVuY2F0ZSBkaXNwbGF5LXJlc3VsdFwiXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzZWFyY2hSZXN1bHRJdGVtIG9mIHNlYXJjaFJlc3VsdEl0ZW1zXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2VhcmNoSXRlbUNoYW5nZWQoc2VhcmNoUmVzdWx0SXRlbSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzZWFyY2hSZXF1ZXN0Py5zZWFyY2hSZXN1bHRJdGVtUmVmOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogc2VhcmNoUmVzdWx0SXRlbSB9XCJcbiAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNkaXNwbGF5Tm90Rm91bmQ+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5vLXJlc3VsdC10ZXh0XCI+XG4gICAgICAgICAgICAgIHt7IHNlYXJjaFJlcXVlc3Q/Lm5vUmVzdWx0c1RleHQgPz8gJ05vIHNlYXJjaCByZXN1bHQgZm91bmQuJyB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZGlzcGxheVNlbGVjdGFibGVDaGlsZHM+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc2VsZWN0YWJsZUNoaWxkc1wiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsckRyb3Bkb3duSXRlbVxuICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXRydW5jYXRlIGRpc3BsYXktcmVzdWx0XCJcbiAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZC1jaGlsZF09XCJpdGVtLmlkID09PSBwYXJlbnROb2RlLmdldFNlbGVjdGVkQ2hpbGQoKT8uaWRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE5vZGUoaXRlbSlcIlxuICAgICAgICAgICAgdGl0bGU9XCJ7eyBpdGVtLmxhYmVsIH19XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBpdGVtLmxhYmVsIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Nsci1kcm9wZG93bi1tZW51PlxuICAgIDwvY2xyLWRyb3Bkb3duPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctdGVtcGxhdGUgI3NpbmdsZVNlbGVjdGVkPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwYXJlbnROb2RlLmdldFNlbGVjdGVkQ2hpbGQoKVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBhcmVudE5vZGUuZ2V0U2VsZWN0ZWRDaGlsZCgpLnNlbGVjdGFibGU7IGVsc2UgdW5zZWxlY3RhYmxlXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGluayBidG4tc21cIlxuICAgICAgICAgIChjbGljayk9XCJzZWxlY3ROb2RlKHBhcmVudE5vZGUuZ2V0U2VsZWN0ZWRDaGlsZCgpKVwiXG4gICAgICAgICAgW2NsYXNzLmxhc3QtbGV2ZWxdPVwiIXBhcmVudE5vZGUuZ2V0U2VsZWN0ZWRDaGlsZCgpLmdldFNlbGVjdGVkQ2hpbGQoKVwiXG4gICAgICAgICAgdGl0bGU9XCJ7eyBwYXJlbnROb2RlLmdldFNlbGVjdGVkQ2hpbGQoKS5sYWJlbCB9fVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBwYXJlbnROb2RlLmdldFNlbGVjdGVkQ2hpbGQoKS5sYWJlbCB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICN1bnNlbGVjdGFibGU+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3M9XCJ1bnNlbGVjdGFibGUtbm9kZSB0ZXh0LXRydW5jYXRlXCJcbiAgICAgICAgICBbY2xhc3MubGFzdC1sZXZlbF09XCIhcGFyZW50Tm9kZS5nZXRTZWxlY3RlZENoaWxkKCkuZ2V0U2VsZWN0ZWRDaGlsZCgpXCJcbiAgICAgICAgICB0aXRsZT1cInt7IHBhcmVudE5vZGUuZ2V0U2VsZWN0ZWRDaGlsZCgpLmxhYmVsIH19XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHBhcmVudE5vZGUuZ2V0U2VsZWN0ZWRDaGlsZCgpLmxhYmVsIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPGNsci1sb2NhdGlvbi1iYXItbm9kZVxuICAgICpuZ0lmPVwicGFyZW50Tm9kZS5nZXRTZWxlY3RlZENoaWxkKCkgJiYgcGFyZW50Tm9kZS5nZXRDaGlsZHJlbigpLmxlbmd0aCA+IDBcIlxuICAgIFtwYXJlbnROb2RlXT1cInBhcmVudE5vZGUuZ2V0U2VsZWN0ZWRDaGlsZCgpXCJcbiAgICBbY2xyU2VhcmNoUmVxdWVzdF09XCJzZWFyY2hSZXF1ZXN0XCJcbiAgICBbY2xyU2VhcmNoUmVzdWx0SXRlbXNdPVwic2VhcmNoUmVzdWx0SXRlbXNcIlxuICAgIChzZWxlY3Rpb25DaGFuZ2VkKT1cIm9uU2VsZWN0aW9uQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAoc2VhcmNoSXRlbUNoYW5nZWQpPVwib25TZWFyY2hJdGVtQ2hhbmdlZChudWxsKVwiXG4gID5cbiAgICA8c3Bhbj4vPC9zcGFuPlxuICA8L2Nsci1sb2NhdGlvbi1iYXItbm9kZT5cbjwvbmctY29udGFpbmVyPlxuIl19
|
|
@@ -21,7 +21,6 @@ export class LocationBarSearchComponent {
|
|
|
21
21
|
}
|
|
22
22
|
onSearch(text) {
|
|
23
23
|
const validatedText = this.validateSearchText(text);
|
|
24
|
-
this.keepSearchFieldFocused(validatedText);
|
|
25
24
|
if (validatedText !== null) {
|
|
26
25
|
this.searchPerformed.emit(validatedText);
|
|
27
26
|
this.displayWarning = false;
|
|
@@ -37,12 +36,10 @@ export class LocationBarSearchComponent {
|
|
|
37
36
|
return text.length >= this.getMinSearchTextLength() ? text : null;
|
|
38
37
|
}
|
|
39
38
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
});
|
|
45
|
-
}
|
|
39
|
+
focusInput() {
|
|
40
|
+
setTimeout(() => {
|
|
41
|
+
this.searchInput.nativeElement.focus();
|
|
42
|
+
});
|
|
46
43
|
}
|
|
47
44
|
isTextDeletion(text) {
|
|
48
45
|
const isDeletion = text.length < this.previousValue.length;
|
|
@@ -73,4 +70,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
|
|
|
73
70
|
type: ViewChild,
|
|
74
71
|
args: ['searchInput', { static: true }]
|
|
75
72
|
}] } });
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYXRpb24tYmFyLXNlYXJjaC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY2xyLWFkZG9ucy9sb2NhdGlvbi1iYXIvbG9jYXRpb24tYmFyLXNlYXJjaC9sb2NhdGlvbi1iYXItc2VhcmNoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9jbHItYWRkb25zL2xvY2F0aW9uLWJhci9sb2NhdGlvbi1iYXItc2VhcmNoL2xvY2F0aW9uLWJhci1zZWFyY2guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7O0FBUTdDLE1BQU0sT0FBTywwQkFBMEI7SUFOdkM7UUFPRSxrQkFBYSxHQUFHLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3BDLGtCQUFhLEdBQVcsRUFBRSxDQUFDO1FBQzNCLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBRXZCLDJCQUFzQixHQUFXLENBQUMsQ0FBQztRQUNuQyxnQ0FBMkIsR0FBVywrQkFBK0IsQ0FBQztRQUlwRCxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7S0ErQ3pFO0lBM0NDLFFBQVE7UUFDTixJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVPLFFBQVEsQ0FBQyxJQUFZO1FBQzNCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwRCxJQUFJLGFBQWEsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUN6QyxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQztJQUVPLGtCQUFrQixDQUFDLElBQVk7UUFDckMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDbEUsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNmLE9BQU8sSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDbEUsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3BFLENBQUM7SUFDSCxDQUFDO0lBRU0sVUFBVTtRQUNmLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN6QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxjQUFjLENBQUMsSUFBWTtRQUNqQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDO1FBQzNELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQzFCLE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFTyxzQkFBc0I7UUFDNUIsT0FBTyxJQUFJLENBQUMsYUFBYSxFQUFFLGFBQWEsS0FBSyxTQUFTO1lBQ3BELENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWE7WUFDbEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztJQUNsQyxDQUFDO0lBRUQsc0JBQXNCLENBQUMsS0FBWTtRQUNqQyxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDMUIsQ0FBQzs4R0F4RFUsMEJBQTBCO2tHQUExQiwwQkFBMEIsNFNDbkJ2Qyxrc0JBcUJBOzsyRkRGYSwwQkFBMEI7a0JBTnRDLFNBQVM7K0JBQ0UseUJBQXlCLG1CQUdsQix1QkFBdUIsQ0FBQyxNQUFNOzhCQVVwQixhQUFhO3NCQUF2QyxLQUFLO3VCQUFDLGtCQUFrQjtnQkFFRSxlQUFlO3NCQUF6QyxNQUFNO3VCQUFDLGlCQUFpQjtnQkFFbUIsV0FBVztzQkFBdEQsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTZWFyY2hSZXF1ZXN0TW9kZWwgfSBmcm9tICcuLi9sb2NhdGlvbi1iYXIuc2VhcmNoLm1vZGVsJztcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjbHItbG9jYXRpb24tYmFyLXNlYXJjaCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9sb2NhdGlvbi1iYXItc2VhcmNoLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ2xvY2F0aW9uLWJhci1zZWFyY2guY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIExvY2F0aW9uQmFyU2VhcmNoQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgc2VhcmNoQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XG4gIHByZXZpb3VzVmFsdWU6IHN0cmluZyA9ICcnO1xuICBkaXNwbGF5V2FybmluZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHJlYWRvbmx5IE1JTl9DSEFSQUNURVJTX0RFRkFVTFQ6IG51bWJlciA9IDM7XG4gIHJlYWRvbmx5IE1JTV9DSEFSQUNURVJTX1RFWFRfREVGQVVMVDogc3RyaW5nID0gJ1R5cGUgMysgY2hhcmFjdGVycyB0byBzZWFyY2guJztcblxuICBASW5wdXQoJ2NsclNlYXJjaFJlcXVlc3QnKSBzZWFyY2hSZXF1ZXN0OiBTZWFyY2hSZXF1ZXN0TW9kZWw7XG5cbiAgQE91dHB1dCgnc2VhcmNoUGVyZm9ybWVkJykgc2VhcmNoUGVyZm9ybWVkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgQFZpZXdDaGlsZCgnc2VhcmNoSW5wdXQnLCB7IHN0YXRpYzogdHJ1ZSB9KSBzZWFyY2hJbnB1dDogRWxlbWVudFJlZjtcblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNlYXJjaENvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh0ZXh0ID0+IHRoaXMub25TZWFyY2godGV4dCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBvblNlYXJjaCh0ZXh0OiBzdHJpbmcpIHtcbiAgICBjb25zdCB2YWxpZGF0ZWRUZXh0ID0gdGhpcy52YWxpZGF0ZVNlYXJjaFRleHQodGV4dCk7XG4gICAgaWYgKHZhbGlkYXRlZFRleHQgIT09IG51bGwpIHtcbiAgICAgIHRoaXMuc2VhcmNoUGVyZm9ybWVkLmVtaXQodmFsaWRhdGVkVGV4dCk7XG4gICAgICB0aGlzLmRpc3BsYXlXYXJuaW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZVNlYXJjaFRleHQodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBpc0RlbGV0aW9uID0gdGhpcy5pc1RleHREZWxldGlvbih0ZXh0KTtcbiAgICB0aGlzLmRpc3BsYXlXYXJuaW5nID0gdGV4dC5sZW5ndGggPCB0aGlzLmdldE1pblNlYXJjaFRleHRMZW5ndGgoKTtcbiAgICBpZiAoaXNEZWxldGlvbikge1xuICAgICAgcmV0dXJuIHRleHQubGVuZ3RoID49IHRoaXMuZ2V0TWluU2VhcmNoVGV4dExlbmd0aCgpID8gdGV4dCA6ICcnO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGV4dC5sZW5ndGggPj0gdGhpcy5nZXRNaW5TZWFyY2hUZXh0TGVuZ3RoKCkgPyB0ZXh0IDogbnVsbDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZm9jdXNJbnB1dCgpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1RleHREZWxldGlvbih0ZXh0OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBpc0RlbGV0aW9uID0gdGV4dC5sZW5ndGggPCB0aGlzLnByZXZpb3VzVmFsdWUubGVuZ3RoO1xuICAgIHRoaXMucHJldmlvdXNWYWx1ZSA9IHRleHQ7XG4gICAgcmV0dXJuIGlzRGVsZXRpb247XG4gIH1cblxuICBwcml2YXRlIGdldE1pblNlYXJjaFRleHRMZW5ndGgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hSZXF1ZXN0Py5taW5DaGFyYWN0ZXJzICE9PSB1bmRlZmluZWRcbiAgICAgID8gdGhpcy5zZWFyY2hSZXF1ZXN0Lm1pbkNoYXJhY3RlcnNcbiAgICAgIDogdGhpcy5NSU5fQ0hBUkFDVEVSU19ERUZBVUxUO1xuICB9XG5cbiAgcHJldmVudERyb3Bkb3duQWN0aW9ucyhldmVudDogRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNsci1jb2wtbWQtMTIgc2VhcmNoLXdyYXBwZXJcIj5cbiAgPGZvcm0gY2xyRm9ybT5cbiAgICA8Y2xyLWlucHV0LWNvbnRhaW5lciBjbGFzcz1cImlucHV0LWNvbnRhaW5lclwiPlxuICAgICAgPGxhYmVsIGhpZGRlbj48L2xhYmVsPlxuICAgICAgPGlucHV0XG4gICAgICAgICNzZWFyY2hJbnB1dFxuICAgICAgICBjbGFzcz1cImNsci1jb2wtbWQtMTJcIlxuICAgICAgICBjbHJJbnB1dFxuICAgICAgICBjbHJTZWFyY2hcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInNlYXJjaFJlcXVlc3Q/LnBsYWNlaG9sZGVyID8/ICcnXCJcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICBuYW1lPVwic2VhcmNoXCJcbiAgICAgICAgKGtleWRvd24uU3BhY2UpPVwicHJldmVudERyb3Bkb3duQWN0aW9ucygkZXZlbnQpXCJcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cInNlYXJjaENvbnRyb2xcIlxuICAgICAgLz5cbiAgICAgIDxjbHItY29udHJvbC1oZWxwZXIgKm5nSWY9XCJkaXNwbGF5V2FybmluZ1wiIGNsYXNzPVwibWluLXRleHQtd2FybmluZ1wiPnt7XG4gICAgICAgIHNlYXJjaFJlcXVlc3Q/Lm1pbkNoYXJhY3RlclRleHQgPz8gTUlNX0NIQVJBQ1RFUlNfVEVYVF9ERUZBVUxUXG4gICAgICB9fTwvY2xyLWNvbnRyb2wtaGVscGVyPlxuICAgIDwvY2xyLWlucHV0LWNvbnRhaW5lcj5cbiAgPC9mb3JtPlxuPC9kaXY+XG4iXX0=
|
package/fesm2022/clr-addons.mjs
CHANGED
|
@@ -5558,7 +5558,6 @@ class LocationBarSearchComponent {
|
|
|
5558
5558
|
}
|
|
5559
5559
|
onSearch(text) {
|
|
5560
5560
|
const validatedText = this.validateSearchText(text);
|
|
5561
|
-
this.keepSearchFieldFocused(validatedText);
|
|
5562
5561
|
if (validatedText !== null) {
|
|
5563
5562
|
this.searchPerformed.emit(validatedText);
|
|
5564
5563
|
this.displayWarning = false;
|
|
@@ -5574,12 +5573,10 @@ class LocationBarSearchComponent {
|
|
|
5574
5573
|
return text.length >= this.getMinSearchTextLength() ? text : null;
|
|
5575
5574
|
}
|
|
5576
5575
|
}
|
|
5577
|
-
|
|
5578
|
-
|
|
5579
|
-
|
|
5580
|
-
|
|
5581
|
-
});
|
|
5582
|
-
}
|
|
5576
|
+
focusInput() {
|
|
5577
|
+
setTimeout(() => {
|
|
5578
|
+
this.searchInput.nativeElement.focus();
|
|
5579
|
+
});
|
|
5583
5580
|
}
|
|
5584
5581
|
isTextDeletion(text) {
|
|
5585
5582
|
const isDeletion = text.length < this.previousValue.length;
|
|
@@ -5624,6 +5621,11 @@ class LocationBarNodeComponent {
|
|
|
5624
5621
|
children$.toPromise().then(nodes => this.prepareChildren(nodes || []));
|
|
5625
5622
|
}
|
|
5626
5623
|
}
|
|
5624
|
+
set locationBarSearch(search) {
|
|
5625
|
+
if (search) {
|
|
5626
|
+
search.focusInput();
|
|
5627
|
+
}
|
|
5628
|
+
}
|
|
5627
5629
|
constructor(contentProvider) {
|
|
5628
5630
|
this.contentProvider = contentProvider;
|
|
5629
5631
|
/**
|
|
@@ -5716,11 +5718,11 @@ class LocationBarNodeComponent {
|
|
|
5716
5718
|
this.searchItemChanged.emit(searchedItem);
|
|
5717
5719
|
}
|
|
5718
5720
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: LocationBarNodeComponent, deps: [{ token: CONTENT_PROVIDER, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5719
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: LocationBarNodeComponent, selector: "clr-location-bar-node", inputs: { parentNode: "parentNode", searchResultItems: ["clrSearchResultItems", "searchResultItems"], searchRequest: ["clrSearchRequest", "searchRequest"] }, outputs: { selectionChanged: "selectionChanged", searchItemChanged: "searchItemChanged" }, host: { properties: { "class.location-bar-node": "true" } }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"parentNode\">\n <ng-content *ngIf=\"parentNode.getChildren()?.length > 0\"></ng-content>\n\n <ng-container\n *ngIf=\"\n (selectableChilds.length > 0 && !parentNode.getSelectedChild()) || selectableChilds.length > 1;\n else singleSelected\n \"\n >\n <clr-dropdown>\n <button\n class=\"btn btn-link btn-sm\"\n (blur)=\"focus = false\"\n (focus)=\"focus = true\"\n (click)=\"resetSearch()\"\n clrDropdownTrigger\n >\n <ng-container *ngIf=\"parentNode.getSelectedChild() as node; else unselected\">\n <span\n (click)=\"resetSearch()\"\n class=\"text-truncate\"\n [class.last-level]=\"!parentNode.getSelectedChild().getSelectedChild()\"\n title=\"{{ node.label }}\"\n >\n {{ node.label }}\n </span>\n <cds-icon shape=\"angle\" direction=\"down\" size=\"xs\" class=\"caret-icon\"></cds-icon>\n </ng-container>\n <ng-template #unselected>\n <cds-icon class=\"unselected\" size=\"18\" [attr.solid]=\"focus\" shape=\"tree-view\"></cds-icon> ...\n </ng-template>\n </button>\n <clr-dropdown-menu [clrPosition]=\"'bottom-left'\" *clrIfOpen>\n <clr-location-bar-search\n *ngIf=\"searchRequest\"\n [clrSearchRequest]=\"searchRequest\"\n (searchPerformed)=\"onSearch($event)\"\n ></clr-location-bar-search>\n <
|
|
5721
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: LocationBarNodeComponent, selector: "clr-location-bar-node", inputs: { parentNode: "parentNode", searchResultItems: ["clrSearchResultItems", "searchResultItems"], searchRequest: ["clrSearchRequest", "searchRequest"] }, outputs: { selectionChanged: "selectionChanged", searchItemChanged: "searchItemChanged" }, host: { properties: { "class.location-bar-node": "true" } }, viewQueries: [{ propertyName: "locationBarSearch", first: true, predicate: ["locationBarSearch"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"parentNode\">\n <ng-content *ngIf=\"parentNode.getChildren()?.length > 0\"></ng-content>\n\n <ng-container\n *ngIf=\"\n (selectableChilds.length > 0 && !parentNode.getSelectedChild()) || selectableChilds.length > 1;\n else singleSelected\n \"\n >\n <clr-dropdown>\n <button\n class=\"btn btn-link btn-sm\"\n (blur)=\"focus = false\"\n (focus)=\"focus = true\"\n (click)=\"resetSearch()\"\n clrDropdownTrigger\n >\n <ng-container *ngIf=\"parentNode.getSelectedChild() as node; else unselected\">\n <span\n (click)=\"resetSearch()\"\n class=\"text-truncate\"\n [class.last-level]=\"!parentNode.getSelectedChild().getSelectedChild()\"\n title=\"{{ node.label }}\"\n >\n {{ node.label }}\n </span>\n <cds-icon shape=\"angle\" direction=\"down\" size=\"xs\" class=\"caret-icon\"></cds-icon>\n </ng-container>\n <ng-template #unselected>\n <cds-icon class=\"unselected\" size=\"18\" [attr.solid]=\"focus\" shape=\"tree-view\"></cds-icon> ...\n </ng-template>\n </button>\n <clr-dropdown-menu [clrPosition]=\"'bottom-left'\" *clrIfOpen>\n <clr-location-bar-search\n #locationBarSearch\n *ngIf=\"searchRequest\"\n [clrSearchRequest]=\"searchRequest\"\n (searchPerformed)=\"onSearch($event)\"\n ></clr-location-bar-search>\n <ng-container *ngIf=\"displaySearchResult(); else displaySelectableChilds\">\n <ng-container *ngIf=\"searchResultItems.length !== 0; else displayNotFound\">\n <button\n type=\"button\"\n clrDropdownItem\n class=\"text-truncate display-result\"\n *ngFor=\"let searchResultItem of searchResultItems\"\n (click)=\"onSearchItemChanged(searchResultItem)\"\n >\n <ng-container\n *ngTemplateOutlet=\"searchRequest?.searchResultItemRef; context: { $implicit: searchResultItem }\"\n ></ng-container>\n </button>\n </ng-container>\n <ng-template #displayNotFound>\n <span class=\"no-result-text\">\n {{ searchRequest?.noResultsText ?? 'No search result found.' }}\n </span>\n </ng-template>\n </ng-container>\n\n <ng-template #displaySelectableChilds>\n <button\n *ngFor=\"let item of selectableChilds\"\n type=\"button\"\n clrDropdownItem\n class=\"text-truncate display-result\"\n [class.selected-child]=\"item.id === parentNode.getSelectedChild()?.id\"\n (click)=\"selectNode(item)\"\n title=\"{{ item.label }}\"\n >\n {{ item.label }}\n </button>\n </ng-template>\n </clr-dropdown-menu>\n </clr-dropdown>\n </ng-container>\n\n <ng-template #singleSelected>\n <ng-container *ngIf=\"parentNode.getSelectedChild()\">\n <ng-container *ngIf=\"parentNode.getSelectedChild().selectable; else unselectable\">\n <button\n class=\"btn btn-link btn-sm\"\n (click)=\"selectNode(parentNode.getSelectedChild())\"\n [class.last-level]=\"!parentNode.getSelectedChild().getSelectedChild()\"\n title=\"{{ parentNode.getSelectedChild().label }}\"\n >\n {{ parentNode.getSelectedChild().label }}\n </button>\n </ng-container>\n <ng-template #unselectable>\n <span\n class=\"unselectable-node text-truncate\"\n [class.last-level]=\"!parentNode.getSelectedChild().getSelectedChild()\"\n title=\"{{ parentNode.getSelectedChild().label }}\"\n >\n {{ parentNode.getSelectedChild().label }}\n </span>\n </ng-template>\n </ng-container>\n </ng-template>\n\n <clr-location-bar-node\n *ngIf=\"parentNode.getSelectedChild() && parentNode.getChildren().length > 0\"\n [parentNode]=\"parentNode.getSelectedChild()\"\n [clrSearchRequest]=\"searchRequest\"\n [clrSearchResultItems]=\"searchResultItems\"\n (selectionChanged)=\"onSelectionChanged($event)\"\n (searchItemChanged)=\"onSearchItemChanged(null)\"\n >\n <span>/</span>\n </clr-location-bar-node>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.CdsIconCustomTag, selector: "cds-icon" }, { kind: "component", type: i2.ClrDropdown, selector: "clr-dropdown", inputs: ["clrCloseMenuOnItemClick"] }, { kind: "component", type: i2.ClrDropdownMenu, selector: "clr-dropdown-menu", inputs: ["clrPosition"] }, { kind: "directive", type: i2.ClrDropdownTrigger, selector: "[clrDropdownTrigger],[clrDropdownToggle]" }, { kind: "directive", type: i2.ClrDropdownItem, selector: "[clrDropdownItem]", inputs: ["clrDisabled", "id"] }, { kind: "directive", type: i2.ClrIfOpen, selector: "[clrIfOpen]", inputs: ["clrIfOpen"], outputs: ["clrIfOpenChange"] }, { kind: "directive", type: ClrDropdownOverflowDirective, selector: "clr-dropdown-menu", inputs: ["clrDropdownMenuMaxHeight", "clrDropdownMenuItemMinHeight", "clrMarginBottom"] }, { kind: "component", type: LocationBarNodeComponent, selector: "clr-location-bar-node", inputs: ["parentNode", "clrSearchResultItems", "clrSearchRequest"], outputs: ["selectionChanged", "searchItemChanged"] }, { kind: "component", type: LocationBarSearchComponent, selector: "clr-location-bar-search", inputs: ["clrSearchRequest"], outputs: ["searchPerformed"] }] }); }
|
|
5720
5722
|
}
|
|
5721
5723
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: LocationBarNodeComponent, decorators: [{
|
|
5722
5724
|
type: Component,
|
|
5723
|
-
args: [{ selector: 'clr-location-bar-node', host: { '[class.location-bar-node]': 'true' }, template: "<ng-container *ngIf=\"parentNode\">\n <ng-content *ngIf=\"parentNode.getChildren()?.length > 0\"></ng-content>\n\n <ng-container\n *ngIf=\"\n (selectableChilds.length > 0 && !parentNode.getSelectedChild()) || selectableChilds.length > 1;\n else singleSelected\n \"\n >\n <clr-dropdown>\n <button\n class=\"btn btn-link btn-sm\"\n (blur)=\"focus = false\"\n (focus)=\"focus = true\"\n (click)=\"resetSearch()\"\n clrDropdownTrigger\n >\n <ng-container *ngIf=\"parentNode.getSelectedChild() as node; else unselected\">\n <span\n (click)=\"resetSearch()\"\n class=\"text-truncate\"\n [class.last-level]=\"!parentNode.getSelectedChild().getSelectedChild()\"\n title=\"{{ node.label }}\"\n >\n {{ node.label }}\n </span>\n <cds-icon shape=\"angle\" direction=\"down\" size=\"xs\" class=\"caret-icon\"></cds-icon>\n </ng-container>\n <ng-template #unselected>\n <cds-icon class=\"unselected\" size=\"18\" [attr.solid]=\"focus\" shape=\"tree-view\"></cds-icon> ...\n </ng-template>\n </button>\n <clr-dropdown-menu [clrPosition]=\"'bottom-left'\" *clrIfOpen>\n <clr-location-bar-search\n *ngIf=\"searchRequest\"\n [clrSearchRequest]=\"searchRequest\"\n (searchPerformed)=\"onSearch($event)\"\n ></clr-location-bar-search>\n <
|
|
5725
|
+
args: [{ selector: 'clr-location-bar-node', host: { '[class.location-bar-node]': 'true' }, template: "<ng-container *ngIf=\"parentNode\">\n <ng-content *ngIf=\"parentNode.getChildren()?.length > 0\"></ng-content>\n\n <ng-container\n *ngIf=\"\n (selectableChilds.length > 0 && !parentNode.getSelectedChild()) || selectableChilds.length > 1;\n else singleSelected\n \"\n >\n <clr-dropdown>\n <button\n class=\"btn btn-link btn-sm\"\n (blur)=\"focus = false\"\n (focus)=\"focus = true\"\n (click)=\"resetSearch()\"\n clrDropdownTrigger\n >\n <ng-container *ngIf=\"parentNode.getSelectedChild() as node; else unselected\">\n <span\n (click)=\"resetSearch()\"\n class=\"text-truncate\"\n [class.last-level]=\"!parentNode.getSelectedChild().getSelectedChild()\"\n title=\"{{ node.label }}\"\n >\n {{ node.label }}\n </span>\n <cds-icon shape=\"angle\" direction=\"down\" size=\"xs\" class=\"caret-icon\"></cds-icon>\n </ng-container>\n <ng-template #unselected>\n <cds-icon class=\"unselected\" size=\"18\" [attr.solid]=\"focus\" shape=\"tree-view\"></cds-icon> ...\n </ng-template>\n </button>\n <clr-dropdown-menu [clrPosition]=\"'bottom-left'\" *clrIfOpen>\n <clr-location-bar-search\n #locationBarSearch\n *ngIf=\"searchRequest\"\n [clrSearchRequest]=\"searchRequest\"\n (searchPerformed)=\"onSearch($event)\"\n ></clr-location-bar-search>\n <ng-container *ngIf=\"displaySearchResult(); else displaySelectableChilds\">\n <ng-container *ngIf=\"searchResultItems.length !== 0; else displayNotFound\">\n <button\n type=\"button\"\n clrDropdownItem\n class=\"text-truncate display-result\"\n *ngFor=\"let searchResultItem of searchResultItems\"\n (click)=\"onSearchItemChanged(searchResultItem)\"\n >\n <ng-container\n *ngTemplateOutlet=\"searchRequest?.searchResultItemRef; context: { $implicit: searchResultItem }\"\n ></ng-container>\n </button>\n </ng-container>\n <ng-template #displayNotFound>\n <span class=\"no-result-text\">\n {{ searchRequest?.noResultsText ?? 'No search result found.' }}\n </span>\n </ng-template>\n </ng-container>\n\n <ng-template #displaySelectableChilds>\n <button\n *ngFor=\"let item of selectableChilds\"\n type=\"button\"\n clrDropdownItem\n class=\"text-truncate display-result\"\n [class.selected-child]=\"item.id === parentNode.getSelectedChild()?.id\"\n (click)=\"selectNode(item)\"\n title=\"{{ item.label }}\"\n >\n {{ item.label }}\n </button>\n </ng-template>\n </clr-dropdown-menu>\n </clr-dropdown>\n </ng-container>\n\n <ng-template #singleSelected>\n <ng-container *ngIf=\"parentNode.getSelectedChild()\">\n <ng-container *ngIf=\"parentNode.getSelectedChild().selectable; else unselectable\">\n <button\n class=\"btn btn-link btn-sm\"\n (click)=\"selectNode(parentNode.getSelectedChild())\"\n [class.last-level]=\"!parentNode.getSelectedChild().getSelectedChild()\"\n title=\"{{ parentNode.getSelectedChild().label }}\"\n >\n {{ parentNode.getSelectedChild().label }}\n </button>\n </ng-container>\n <ng-template #unselectable>\n <span\n class=\"unselectable-node text-truncate\"\n [class.last-level]=\"!parentNode.getSelectedChild().getSelectedChild()\"\n title=\"{{ parentNode.getSelectedChild().label }}\"\n >\n {{ parentNode.getSelectedChild().label }}\n </span>\n </ng-template>\n </ng-container>\n </ng-template>\n\n <clr-location-bar-node\n *ngIf=\"parentNode.getSelectedChild() && parentNode.getChildren().length > 0\"\n [parentNode]=\"parentNode.getSelectedChild()\"\n [clrSearchRequest]=\"searchRequest\"\n [clrSearchResultItems]=\"searchResultItems\"\n (selectionChanged)=\"onSelectionChanged($event)\"\n (searchItemChanged)=\"onSearchItemChanged(null)\"\n >\n <span>/</span>\n </clr-location-bar-node>\n</ng-container>\n" }]
|
|
5724
5726
|
}], ctorParameters: () => [{ type: LocationBarContentProvider, decorators: [{
|
|
5725
5727
|
type: Inject,
|
|
5726
5728
|
args: [CONTENT_PROVIDER]
|
|
@@ -5738,6 +5740,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
|
|
|
5738
5740
|
type: Output
|
|
5739
5741
|
}], searchItemChanged: [{
|
|
5740
5742
|
type: Output
|
|
5743
|
+
}], locationBarSearch: [{
|
|
5744
|
+
type: ViewChild,
|
|
5745
|
+
args: ['locationBarSearch']
|
|
5741
5746
|
}] } });
|
|
5742
5747
|
|
|
5743
5748
|
ClarityIcons.addIcons(organizationIcon);
|