@onemrvapublic/design-system 16.2.25 → 16.2.29
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/layout/src/components/layout-route/layout-route.component.mjs +3 -3
- package/esm2022/layout/src/components/layout-subroute/layout-subroute.component.mjs +21 -4
- package/esm2022/mat-multi-select/src/onemrva-mat-multi-select.component.mjs +27 -18
- package/esm2022/mat-spinner/src/onemrva-mat-spinner.component.mjs +733 -3
- package/fesm2022/onemrvapublic-design-system-layout.mjs +21 -5
- package/fesm2022/onemrvapublic-design-system-layout.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-multi-select.mjs +26 -17
- package/fesm2022/onemrvapublic-design-system-mat-multi-select.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-spinner.mjs +732 -2
- package/fesm2022/onemrvapublic-design-system-mat-spinner.mjs.map +1 -1
- package/layout/src/components/layout-subroute/layout-subroute.component.d.ts +5 -2
- package/mat-multi-select/src/onemrva-mat-multi-select.component.d.ts +6 -4
- package/mat-spinner/src/_onemrva-mat-spinner.component.scss +3 -33
- package/package.json +228 -228
|
@@ -40,11 +40,11 @@ export class LayoutRouteComponent {
|
|
|
40
40
|
return false;
|
|
41
41
|
}
|
|
42
42
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LayoutRouteComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Component });
|
|
43
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: LayoutRouteComponent, selector: "onemrva-layout-route", inputs: { customNgClass: "customNgClass", routerLink: "routerLink", routerLinkActiveOptions: "routerLinkActiveOptions", dataCy: "dataCy", baseRouteForActiveMenu: "baseRouteForActiveMenu", label: "label" }, queries: [{ propertyName: "subroutes", predicate: LayoutSubrouteComponent }], viewQueries: [{ propertyName: "template", first: true, predicate: ["navTpl"], descendants: true }, { propertyName: "mobileTemplate", first: true, predicate: ["navMblTpl"], descendants: true }, { propertyName: "contentTemplate", first: true, predicate: ["contentTpl"], descendants: true }], ngImport: i0, template: "\n<ng-template #navTpl>\n <ng-container *ngIf=\"!hasSubroutes()\">\n <ng-container *ngTemplateOutlet=\"contentTmpl\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"hasSubroutes()\">\n <span\n [matMenuTriggerFor]=\"menu\">\n {{ label }}\n </span>\n <mat-icon\n [matMenuTriggerFor]=\"menu\" style=\"width: 16px;\">expand_more</mat-icon>\n <mat-menu #menu>\n <ng-container *ngFor=\"let e of subroutes?.toArray(); let i = index\">\n <ng-container *ngIf=\"!e.hasSubroutes()\">\n <button mat-menu-item\n [routerLink]=\"e.routerLink\"\n routerLinkActive=\"active\">\n <ng-container *ngIf=\"e.template as routeTemplate\">\n <ng-container *ngTemplateOutlet=\"routeTemplate\"></ng-container>\n </ng-container>\n </button>\n </ng-container>\n <ng-container *ngIf=\"e.hasSubroutes()\">\n <button mat-menu-item\n [matMenuTriggerFor]=\"submenu\">\n <ng-container *ngIf=\"e.template as routeTemplate\">\n <ng-container *ngTemplateOutlet=\"routeTemplate\"></ng-container>\n </ng-container>\n </button>\n <mat-menu #submenu>\n <ng-container *ngFor=\"let es of e.subroutes?.toArray(); let i = index\">\n <button mat-menu-item\n [routerLink]=\"es.routerLink\"\n routerLinkActive=\"active\">\n <ng-container *ngIf=\"es.template as routeTemplate\">\n <ng-container *ngTemplateOutlet=\"routeTemplate\">\n
|
|
43
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: LayoutRouteComponent, selector: "onemrva-layout-route", inputs: { customNgClass: "customNgClass", routerLink: "routerLink", routerLinkActiveOptions: "routerLinkActiveOptions", dataCy: "dataCy", baseRouteForActiveMenu: "baseRouteForActiveMenu", label: "label" }, queries: [{ propertyName: "subroutes", predicate: LayoutSubrouteComponent }], viewQueries: [{ propertyName: "template", first: true, predicate: ["navTpl"], descendants: true }, { propertyName: "mobileTemplate", first: true, predicate: ["navMblTpl"], descendants: true }, { propertyName: "contentTemplate", first: true, predicate: ["contentTpl"], descendants: true }], ngImport: i0, template: "\n<ng-template #navTpl>\n <ng-container *ngIf=\"!hasSubroutes()\">\n <ng-container *ngTemplateOutlet=\"contentTmpl\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"hasSubroutes()\">\n <span\n [matMenuTriggerFor]=\"menu\">\n {{ label }}\n </span>\n <mat-icon\n [matMenuTriggerFor]=\"menu\" style=\"width: 16px;\">expand_more</mat-icon>\n <mat-menu #menu>\n <ng-container *ngFor=\"let e of subroutes?.toArray(); let i = index\">\n <ng-container *ngIf=\"!e.hasSubroutes()\">\n <button mat-menu-item\n [routerLink]=\"e.routerLink\"\n routerLinkActive=\"active\">\n <ng-container *ngIf=\"e.template as routeTemplate\">\n <ng-container *ngTemplateOutlet=\"routeTemplate\"></ng-container>\n </ng-container>\n </button>\n </ng-container>\n <ng-container *ngIf=\"e.hasSubroutes()\">\n <button mat-menu-item\n [matMenuTriggerFor]=\"submenu\"\n [ngClass] = \"{'active': e.hasActiveSubroute()}\">\n <ng-container *ngIf=\"e.template as routeTemplate\">\n <ng-container *ngTemplateOutlet=\"routeTemplate\"></ng-container>\n </ng-container>\n </button>\n <mat-menu #submenu>\n <ng-container *ngFor=\"let es of e.subroutes?.toArray(); let i = index\">\n <button mat-menu-item\n [routerLink]=\"es.routerLink\"\n routerLinkActive=\"active\">\n <ng-container *ngIf=\"es.template as routeTemplate\">\n <ng-container *ngTemplateOutlet=\"routeTemplate\">\n </ng-container>\n </ng-container>\n </button>\n </ng-container>\n </mat-menu>\n </ng-container>\n </ng-container>\n </mat-menu>\n </ng-container>\n</ng-template>\n\n<ng-template #navMblTpl>\n <ng-container *ngTemplateOutlet=\"contentTmpl\"></ng-container>\n</ng-template>\n\n<ng-template #contentTmpl>\n <ng-content></ng-content>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: i3.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i3.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i3.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
|
|
44
44
|
}
|
|
45
45
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LayoutRouteComponent, decorators: [{
|
|
46
46
|
type: Component,
|
|
47
|
-
args: [{ selector: 'onemrva-layout-route', template: "\n<ng-template #navTpl>\n <ng-container *ngIf=\"!hasSubroutes()\">\n <ng-container *ngTemplateOutlet=\"contentTmpl\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"hasSubroutes()\">\n <span\n [matMenuTriggerFor]=\"menu\">\n {{ label }}\n </span>\n <mat-icon\n [matMenuTriggerFor]=\"menu\" style=\"width: 16px;\">expand_more</mat-icon>\n <mat-menu #menu>\n <ng-container *ngFor=\"let e of subroutes?.toArray(); let i = index\">\n <ng-container *ngIf=\"!e.hasSubroutes()\">\n <button mat-menu-item\n [routerLink]=\"e.routerLink\"\n routerLinkActive=\"active\">\n <ng-container *ngIf=\"e.template as routeTemplate\">\n <ng-container *ngTemplateOutlet=\"routeTemplate\"></ng-container>\n </ng-container>\n </button>\n </ng-container>\n <ng-container *ngIf=\"e.hasSubroutes()\">\n <button mat-menu-item\n [matMenuTriggerFor]=\"submenu\">\n <ng-container *ngIf=\"e.template as routeTemplate\">\n <ng-container *ngTemplateOutlet=\"routeTemplate\"></ng-container>\n </ng-container>\n </button>\n <mat-menu #submenu>\n <ng-container *ngFor=\"let es of e.subroutes?.toArray(); let i = index\">\n <button mat-menu-item\n [routerLink]=\"es.routerLink\"\n routerLinkActive=\"active\">\n <ng-container *ngIf=\"es.template as routeTemplate\">\n <ng-container *ngTemplateOutlet=\"routeTemplate\">\n
|
|
47
|
+
args: [{ selector: 'onemrva-layout-route', template: "\n<ng-template #navTpl>\n <ng-container *ngIf=\"!hasSubroutes()\">\n <ng-container *ngTemplateOutlet=\"contentTmpl\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"hasSubroutes()\">\n <span\n [matMenuTriggerFor]=\"menu\">\n {{ label }}\n </span>\n <mat-icon\n [matMenuTriggerFor]=\"menu\" style=\"width: 16px;\">expand_more</mat-icon>\n <mat-menu #menu>\n <ng-container *ngFor=\"let e of subroutes?.toArray(); let i = index\">\n <ng-container *ngIf=\"!e.hasSubroutes()\">\n <button mat-menu-item\n [routerLink]=\"e.routerLink\"\n routerLinkActive=\"active\">\n <ng-container *ngIf=\"e.template as routeTemplate\">\n <ng-container *ngTemplateOutlet=\"routeTemplate\"></ng-container>\n </ng-container>\n </button>\n </ng-container>\n <ng-container *ngIf=\"e.hasSubroutes()\">\n <button mat-menu-item\n [matMenuTriggerFor]=\"submenu\"\n [ngClass] = \"{'active': e.hasActiveSubroute()}\">\n <ng-container *ngIf=\"e.template as routeTemplate\">\n <ng-container *ngTemplateOutlet=\"routeTemplate\"></ng-container>\n </ng-container>\n </button>\n <mat-menu #submenu>\n <ng-container *ngFor=\"let es of e.subroutes?.toArray(); let i = index\">\n <button mat-menu-item\n [routerLink]=\"es.routerLink\"\n routerLinkActive=\"active\">\n <ng-container *ngIf=\"es.template as routeTemplate\">\n <ng-container *ngTemplateOutlet=\"routeTemplate\">\n </ng-container>\n </ng-container>\n </button>\n </ng-container>\n </mat-menu>\n </ng-container>\n </ng-container>\n </mat-menu>\n </ng-container>\n</ng-template>\n\n<ng-template #navMblTpl>\n <ng-container *ngTemplateOutlet=\"contentTmpl\"></ng-container>\n</ng-template>\n\n<ng-template #contentTmpl>\n <ng-content></ng-content>\n</ng-template>\n" }]
|
|
48
48
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.Router }]; }, propDecorators: { customNgClass: [{
|
|
49
49
|
type: Input
|
|
50
50
|
}], template: [{
|
|
@@ -70,4 +70,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
70
70
|
type: ContentChildren,
|
|
71
71
|
args: [LayoutSubrouteComponent]
|
|
72
72
|
}] } });
|
|
73
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LXJvdXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29uZW1ydmEvZGVzaWduLXN5c3RlbS9sYXlvdXQvc3JjL2NvbXBvbmVudHMvbGF5b3V0LXJvdXRlL2xheW91dC1yb3V0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmVtcnZhL2Rlc2lnbi1zeXN0ZW0vbGF5b3V0L3NyYy9jb21wb25lbnRzL2xheW91dC1yb3V0ZS9sYXlvdXQtcm91dGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFBRSxlQUFlLEVBQzFCLEtBQUssRUFFTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sOENBQThDLENBQUM7Ozs7OztBQU1yRixNQUFNLE9BQU8sb0JBQW9CO0lBb0JyQjtJQUNBO0lBcEJELGFBQWEsQ0FBTTtJQUVQLFFBQVEsR0FBNEIsSUFBSSxDQUFDO0lBQ3RDLGNBQWMsR0FBNEIsSUFBSSxDQUFDO0lBQzlDLGVBQWUsR0FBNEIsSUFBSSxDQUFDO0lBRWhFLFVBQVUsQ0FBeUM7SUFDbkQsdUJBQXVCLENBQU87SUFDOUIsTUFBTSxDQUFVO0lBQ2hCLHNCQUFzQixDQUFVO0lBQ2hDLEtBQUssQ0FBVTtJQUd4QixTQUFTLENBQXNDO0lBRS9DLFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBQ0QsWUFDVSxFQUFxQixFQUNyQixNQUFjO1FBRGQsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFDckIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUV4QixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUNFLElBQUksQ0FBQyxVQUFVLEtBQUssSUFBSTtZQUN4QixJQUFJLENBQUMsVUFBVSxLQUFLLFNBQVMsRUFBRztZQUNoQyxJQUFJLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtnQkFDL0IsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUMvQyxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ2hFLE9BQVEsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2hEO1NBQ0Y7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7d0dBeENVLG9CQUFvQjs0RkFBcEIsb0JBQW9CLG9TQWFkLHVCQUF1QiwrVEMzQjFDLDRrRUF5REE7OzRGRDNDYSxvQkFBb0I7a0JBSmhDLFNBQVM7K0JBQ0Usc0JBQXNCOzZIQUl2QixhQUFhO3NCQUFyQixLQUFLO2dCQUVlLFFBQVE7c0JBQTVCLFNBQVM7dUJBQUMsUUFBUTtnQkFDSyxjQUFjO3NCQUFyQyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ0csZUFBZTtzQkFBdkMsU0FBUzt1QkFBQyxZQUFZO2dCQUVkLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csdUJBQXVCO3NCQUEvQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxzQkFBc0I7c0JBQTlCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUdOLFNBQVM7c0JBRFIsZUFBZTt1QkFBQyx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LCBDb250ZW50Q2hpbGRyZW4sXG4gIElucHV0LCBRdWVyeUxpc3QsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtSb3V0ZXIsIFJvdXRlckxpbmt9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge0xheW91dFN1YnJvdXRlQ29tcG9uZW50fSBmcm9tIFwiLi4vbGF5b3V0LXN1YnJvdXRlL2xheW91dC1zdWJyb3V0ZS5jb21wb25lbnRcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnb25lbXJ2YS1sYXlvdXQtcm91dGUnLFxuICB0ZW1wbGF0ZVVybDogJ2xheW91dC1yb3V0ZS5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgTGF5b3V0Um91dGVDb21wb25lbnQge1xuICBASW5wdXQoKSBjdXN0b21OZ0NsYXNzOiBhbnk7XG5cbiAgQFZpZXdDaGlsZCgnbmF2VHBsJykgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsID0gbnVsbDtcbiAgQFZpZXdDaGlsZCgnbmF2TWJsVHBsJykgbW9iaWxlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsID0gbnVsbDtcbiAgQFZpZXdDaGlsZCgnY29udGVudFRwbCcpIGNvbnRlbnRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuXG4gIEBJbnB1dCgpIHJvdXRlckxpbms6IHR5cGVvZiBSb3V0ZXJMaW5rLnByb3RvdHlwZS5yb3V0ZXJMaW5rO1xuICBASW5wdXQoKSByb3V0ZXJMaW5rQWN0aXZlT3B0aW9ucz86IGFueTtcbiAgQElucHV0KCkgZGF0YUN5Pzogc3RyaW5nO1xuICBASW5wdXQoKSBiYXNlUm91dGVGb3JBY3RpdmVNZW51Pzogc3RyaW5nO1xuICBASW5wdXQoKSBsYWJlbD86IHN0cmluZztcblxuICBAQ29udGVudENoaWxkcmVuKExheW91dFN1YnJvdXRlQ29tcG9uZW50KVxuICBzdWJyb3V0ZXM/OiBRdWVyeUxpc3Q8TGF5b3V0U3Vicm91dGVDb21wb25lbnQ+O1xuXG4gIGhhc1N1YnJvdXRlcygpIHtcbiAgICByZXR1cm4gdGhpcy5zdWJyb3V0ZXMgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnN1YnJvdXRlcy5sZW5ndGggPiAwO1xuICB9XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXJcbiAgKSB7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBpc1JvdXRlQWN0aXZlKCkge1xuICAgIGlmIChcbiAgICAgIHRoaXMucm91dGVyTGluayA9PT0gbnVsbCB8fFxuICAgICAgdGhpcy5yb3V0ZXJMaW5rID09PSB1bmRlZmluZWQgKSB7XG4gICAgICBpZiAodGhpcy5iYXNlUm91dGVGb3JBY3RpdmVNZW51KSB7XG4gICAgICAgIGNvbnN0IHNwbGl0X3JvdXRlID0gdGhpcy5yb3V0ZXIudXJsLnNwbGl0KCcvJyk7XG4gICAgICAgIGNvbnN0IHNwbGl0X21lbnVfcm91dGUgPSB0aGlzLmJhc2VSb3V0ZUZvckFjdGl2ZU1lbnUuc3BsaXQoJy8nKTtcbiAgICAgICAgcmV0dXJuICBzcGxpdF9yb3V0ZVsxXSA9PT0gc3BsaXRfbWVudV9yb3V0ZVsxXTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iLCJcbjxuZy10ZW1wbGF0ZSAjbmF2VHBsPlxuICA8bmctY29udGFpbmVyICAqbmdJZj1cIiFoYXNTdWJyb3V0ZXMoKVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50VG1wbFwiPjwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGFzU3Vicm91dGVzKClcIj5cbiAgICA8c3BhblxuICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIj5cbiAgICAgIHt7IGxhYmVsIH19XG4gICAgPC9zcGFuPlxuICAgIDxtYXQtaWNvblxuICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIiBzdHlsZT1cIndpZHRoOiAxNnB4O1wiPmV4cGFuZF9tb3JlPC9tYXQtaWNvbj5cbiAgICA8bWF0LW1lbnUgI21lbnU+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlIG9mIHN1YnJvdXRlcz8udG9BcnJheSgpOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZS5oYXNTdWJyb3V0ZXMoKVwiPlxuICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiZS5yb3V0ZXJMaW5rXCJcbiAgICAgICAgICAgICAgICAgIHJvdXRlckxpbmtBY3RpdmU9XCJhY3RpdmVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlLnRlbXBsYXRlIGFzIHJvdXRlVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInJvdXRlVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImUuaGFzU3Vicm91dGVzKClcIj5cbiAgICAgICAgICA8YnV0dG9uICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cInN1Ym1lbnVcIlxuICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXSA9IFwieydhY3RpdmUnOiBlLmhhc0FjdGl2ZVN1YnJvdXRlKCl9XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZS50ZW1wbGF0ZSBhcyByb3V0ZVRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJyb3V0ZVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8bWF0LW1lbnUgI3N1Ym1lbnU+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlcyBvZiBlLnN1YnJvdXRlcz8udG9BcnJheSgpOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cImVzLnJvdXRlckxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgIHJvdXRlckxpbmtBY3RpdmU9XCJhY3RpdmVcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZXMudGVtcGxhdGUgYXMgcm91dGVUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInJvdXRlVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbWF0LW1lbnU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9tYXQtbWVudT5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI25hdk1ibFRwbD5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRUbXBsXCI+PC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2NvbnRlbnRUbXBsPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
import { Component, ContentChildren, Input, TemplateRef, ViewChild, } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/router";
|
|
3
4
|
export class LayoutSubrouteComponent {
|
|
4
5
|
cd;
|
|
6
|
+
router;
|
|
5
7
|
customNgClass;
|
|
6
8
|
template;
|
|
7
9
|
routerLink;
|
|
8
10
|
routerLinkActiveOptions;
|
|
9
11
|
dataCy;
|
|
10
12
|
subroutes;
|
|
11
|
-
constructor(cd) {
|
|
13
|
+
constructor(cd, router) {
|
|
12
14
|
this.cd = cd;
|
|
15
|
+
this.router = router;
|
|
13
16
|
}
|
|
14
17
|
ngAfterViewInit() {
|
|
15
18
|
this.cd.detectChanges();
|
|
@@ -17,13 +20,27 @@ export class LayoutSubrouteComponent {
|
|
|
17
20
|
hasSubroutes() {
|
|
18
21
|
return this.subroutes !== undefined && this.subroutes.length > 0;
|
|
19
22
|
}
|
|
20
|
-
|
|
23
|
+
hasActiveSubroute() {
|
|
24
|
+
return this.subroutes?.some(x => this.isActiveRoute(x)) ?? false;
|
|
25
|
+
}
|
|
26
|
+
isActiveRoute(subroute) {
|
|
27
|
+
if (!!subroute.routerLink) {
|
|
28
|
+
let routerLink = Array.isArray(subroute.routerLink)
|
|
29
|
+
? this.router.createUrlTree(subroute.routerLink)
|
|
30
|
+
: subroute.routerLink;
|
|
31
|
+
return this.router.isActive(routerLink, { paths: 'exact', queryParams: 'exact', fragment: 'ignored', matrixParams: 'ignored' });
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LayoutSubrouteComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Component });
|
|
21
38
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: LayoutSubrouteComponent, selector: "onemrva-layout-subroute", inputs: { customNgClass: "customNgClass", routerLink: "routerLink", routerLinkActiveOptions: "routerLinkActiveOptions", dataCy: "dataCy" }, queries: [{ propertyName: "subroutes", predicate: LayoutSubrouteComponent }], viewQueries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0, template: "<!--\n// This does not seem to work for sub menus as they how the sub menu only on click instead of on hover\n<ng-template #navTpl>\n <ng-container *ngIf=\"!hasSubroutes()\">\n <button mat-menu-item\n [routerLink]=\"routerLink\"\n routerLinkActive=\"active\">\n <ng-container *ngIf=\"template as routeTemplate\">\n\n <ng-container *ngTemplateOutlet=\"contentTmpl\"></ng-container>\n </ng-container>\n </button>\n </ng-container>\n\n <ng-container *ngIf=\"hasSubroutes()\">\n <button mat-menu-item\n [matMenuTriggerFor]=\"submenu\">\n <ng-container *ngTemplateOutlet=\"contentTmpl\"></ng-container>\n </button>\n <mat-menu #submenu>\n <ng-container *ngFor=\"let e of subroutes?.toArray(); let i = index\">\n <button mat-menu-item\n [routerLink]=\"e.routerLink\"\n routerLinkActive=\"active\">\n <ng-container *ngIf=\"e.template as routeTemplate\">\n <ng-container *ngTemplateOutlet=\"routeTemplate\">\n\n </ng-container>\n </ng-container>\n </button>\n </ng-container>\n </mat-menu>\n </ng-container>\n\n <ng-template #contentTmpl>\n <ng-content></ng-content>\n </ng-template>\n\n</ng-template>-->\n\n\n <ng-template>\n <ng-content></ng-content>\n </ng-template>\n" });
|
|
22
39
|
}
|
|
23
40
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LayoutSubrouteComponent, decorators: [{
|
|
24
41
|
type: Component,
|
|
25
42
|
args: [{ selector: 'onemrva-layout-subroute', template: "<!--\n// This does not seem to work for sub menus as they how the sub menu only on click instead of on hover\n<ng-template #navTpl>\n <ng-container *ngIf=\"!hasSubroutes()\">\n <button mat-menu-item\n [routerLink]=\"routerLink\"\n routerLinkActive=\"active\">\n <ng-container *ngIf=\"template as routeTemplate\">\n\n <ng-container *ngTemplateOutlet=\"contentTmpl\"></ng-container>\n </ng-container>\n </button>\n </ng-container>\n\n <ng-container *ngIf=\"hasSubroutes()\">\n <button mat-menu-item\n [matMenuTriggerFor]=\"submenu\">\n <ng-container *ngTemplateOutlet=\"contentTmpl\"></ng-container>\n </button>\n <mat-menu #submenu>\n <ng-container *ngFor=\"let e of subroutes?.toArray(); let i = index\">\n <button mat-menu-item\n [routerLink]=\"e.routerLink\"\n routerLinkActive=\"active\">\n <ng-container *ngIf=\"e.template as routeTemplate\">\n <ng-container *ngTemplateOutlet=\"routeTemplate\">\n\n </ng-container>\n </ng-container>\n </button>\n </ng-container>\n </mat-menu>\n </ng-container>\n\n <ng-template #contentTmpl>\n <ng-content></ng-content>\n </ng-template>\n\n</ng-template>-->\n\n\n <ng-template>\n <ng-content></ng-content>\n </ng-template>\n" }]
|
|
26
|
-
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { customNgClass: [{
|
|
43
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.Router }]; }, propDecorators: { customNgClass: [{
|
|
27
44
|
type: Input
|
|
28
45
|
}], template: [{
|
|
29
46
|
type: ViewChild,
|
|
@@ -38,4 +55,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
38
55
|
type: ContentChildren,
|
|
39
56
|
args: [LayoutSubrouteComponent]
|
|
40
57
|
}] } });
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LXN1YnJvdXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29uZW1ydmEvZGVzaWduLXN5c3RlbS9sYXlvdXQvc3JjL2NvbXBvbmVudHMvbGF5b3V0LXN1YnJvdXRlL2xheW91dC1zdWJyb3V0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmVtcnZhL2Rlc2lnbi1zeXN0ZW0vbGF5b3V0L3NyYy9jb21wb25lbnRzL2xheW91dC1zdWJyb3V0ZS9sYXlvdXQtc3Vicm91dGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFBRSxlQUFlLEVBQzFCLEtBQUssRUFDTCxXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDOzs7QUFPdkIsTUFBTSxPQUFPLHVCQUF1QjtJQVlkO0lBQStCO0lBWDFDLGFBQWEsQ0FBTTtJQUVKLFFBQVEsQ0FBb0I7SUFFM0MsVUFBVSxDQUFrRDtJQUM1RCx1QkFBdUIsQ0FBTztJQUM5QixNQUFNLENBQVU7SUFHekIsU0FBUyxDQUFzQztJQUUvQyxZQUFvQixFQUFxQixFQUFVLE1BQWM7UUFBN0MsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO0lBQUksQ0FBQztJQUV0RSxlQUFlO1FBQ2IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsWUFBWTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRCxpQkFBaUI7UUFDZixPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQztJQUNuRSxDQUFDO0lBRU8sYUFBYSxDQUFDLFFBQWlDO1FBQ3JELElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUU7WUFDekIsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO2dCQUNqRCxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztnQkFDaEQsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7WUFFeEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQ3BDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7U0FDM0Y7YUFBTTtZQUNMLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7SUFDSCxDQUFDO3dHQXJDVSx1QkFBdUI7NEZBQXZCLHVCQUF1QixxT0FTakIsdUJBQXVCLHVFQU43QixXQUFXLGdEQ2hCeEIsMnpDQTRDQTs7NEZEL0JhLHVCQUF1QjtrQkFKbkMsU0FBUzsrQkFDRSx5QkFBeUI7NkhBSTFCLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRWtCLFFBQVE7c0JBQS9CLFNBQVM7dUJBQUMsV0FBVztnQkFFYixVQUFVO3NCQUFsQixLQUFLO2dCQUNHLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBR04sU0FBUztzQkFEUixlQUFlO3VCQUFDLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbixcbiAgSW5wdXQsIFF1ZXJ5TGlzdCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIsIFJvdXRlckxpbmsgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvbmVtcnZhLWxheW91dC1zdWJyb3V0ZScsXG4gIHRlbXBsYXRlVXJsOiAnbGF5b3V0LXN1YnJvdXRlLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBMYXlvdXRTdWJyb3V0ZUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGN1c3RvbU5nQ2xhc3M6IGFueTtcblxuICBAVmlld0NoaWxkKFRlbXBsYXRlUmVmKSB0ZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQElucHV0KCkgcm91dGVyTGluazogdHlwZW9mIFJvdXRlckxpbmsucHJvdG90eXBlLnJvdXRlckxpbmsgfCBzdHJpbmc7XG4gIEBJbnB1dCgpIHJvdXRlckxpbmtBY3RpdmVPcHRpb25zPzogYW55O1xuICBASW5wdXQoKSBkYXRhQ3k/OiBzdHJpbmc7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihMYXlvdXRTdWJyb3V0ZUNvbXBvbmVudClcbiAgc3Vicm91dGVzPzogUXVlcnlMaXN0PExheW91dFN1YnJvdXRlQ29tcG9uZW50PjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikgeyB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgaGFzU3Vicm91dGVzKCkge1xuICAgIHJldHVybiB0aGlzLnN1YnJvdXRlcyAhPT0gdW5kZWZpbmVkICYmIHRoaXMuc3Vicm91dGVzLmxlbmd0aCA+IDA7XG4gIH1cblxuICBoYXNBY3RpdmVTdWJyb3V0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zdWJyb3V0ZXM/LnNvbWUoeCA9PiB0aGlzLmlzQWN0aXZlUm91dGUoeCkpID8/IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0FjdGl2ZVJvdXRlKHN1YnJvdXRlOiBMYXlvdXRTdWJyb3V0ZUNvbXBvbmVudCk6IGJvb2xlYW4ge1xuICAgIGlmICghIXN1YnJvdXRlLnJvdXRlckxpbmspIHtcbiAgICAgIGxldCByb3V0ZXJMaW5rID0gQXJyYXkuaXNBcnJheShzdWJyb3V0ZS5yb3V0ZXJMaW5rKVxuICAgICAgICA/IHRoaXMucm91dGVyLmNyZWF0ZVVybFRyZWUoc3Vicm91dGUucm91dGVyTGluaylcbiAgICAgICAgOiBzdWJyb3V0ZS5yb3V0ZXJMaW5rO1xuXG4gICAgICByZXR1cm4gdGhpcy5yb3V0ZXIuaXNBY3RpdmUocm91dGVyTGluayxcbiAgICAgICAgeyBwYXRoczogJ2V4YWN0JywgcXVlcnlQYXJhbXM6ICdleGFjdCcsIGZyYWdtZW50OiAnaWdub3JlZCcsIG1hdHJpeFBhcmFtczogJ2lnbm9yZWQnIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG59XG4iLCI8IS0tXG4vLyBUaGlzIGRvZXMgbm90IHNlZW0gdG8gd29yayBmb3Igc3ViIG1lbnVzIGFzIHRoZXkgaG93IHRoZSBzdWIgbWVudSBvbmx5IG9uIGNsaWNrIGluc3RlYWQgb2Ygb24gaG92ZXJcbjxuZy10ZW1wbGF0ZSAjbmF2VHBsPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWhhc1N1YnJvdXRlcygpXCI+XG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICBbcm91dGVyTGlua109XCJyb3V0ZXJMaW5rXCJcbiAgICAgICAgICAgIHJvdXRlckxpbmtBY3RpdmU9XCJhY3RpdmVcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0ZW1wbGF0ZSBhcyByb3V0ZVRlbXBsYXRlXCI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRUbXBsXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2J1dHRvbj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc1N1YnJvdXRlcygpXCI+XG4gICAgPGJ1dHRvbiAgbWF0LW1lbnUtaXRlbVxuICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cInN1Ym1lbnVcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFRtcGxcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2J1dHRvbj5cbiAgICA8bWF0LW1lbnUgI3N1Ym1lbnU+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlIG9mIHN1YnJvdXRlcz8udG9BcnJheSgpOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cImUucm91dGVyTGlua1wiXG4gICAgICAgICAgICAgICAgcm91dGVyTGlua0FjdGl2ZT1cImFjdGl2ZVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlLnRlbXBsYXRlIGFzIHJvdXRlVGVtcGxhdGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJyb3V0ZVRlbXBsYXRlXCI+XG5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbWF0LW1lbnU+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy10ZW1wbGF0ZSAjY29udGVudFRtcGw+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L25nLXRlbXBsYXRlPlxuXG48L25nLXRlbXBsYXRlPi0tPlxuXG5cbiAgPG5nLXRlbXBsYXRlPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -2,8 +2,7 @@ import { Component, ContentChildren, forwardRef, HostBinding, Input, QueryList }
|
|
|
2
2
|
import { FormControl, NG_VALUE_ACCESSOR } from "@angular/forms";
|
|
3
3
|
import { MatFormFieldControl } from "@angular/material/form-field";
|
|
4
4
|
import { MatOption } from "@angular/material/core";
|
|
5
|
-
import { map, startWith } from "rxjs
|
|
6
|
-
import { Observable } from "rxjs";
|
|
5
|
+
import { debounceTime, map, Observable, startWith, Subject, takeUntil } from "rxjs";
|
|
7
6
|
import * as i0 from "@angular/core";
|
|
8
7
|
import * as i1 from "@ngx-translate/core";
|
|
9
8
|
import * as i2 from "@angular/common";
|
|
@@ -15,6 +14,7 @@ import * as i7 from "@onemrvapublic/design-system/mat-select-search";
|
|
|
15
14
|
let NEXT_ID = 0;
|
|
16
15
|
export class OnemrvaMatMultiSelectComponent extends MatFormFieldControl {
|
|
17
16
|
translate;
|
|
17
|
+
cd;
|
|
18
18
|
counter = 0;
|
|
19
19
|
_values = [];
|
|
20
20
|
stateChanges = new Observable();
|
|
@@ -28,18 +28,23 @@ export class OnemrvaMatMultiSelectComponent extends MatFormFieldControl {
|
|
|
28
28
|
searchFilter = new FormControl('');
|
|
29
29
|
matOptions = new QueryList();
|
|
30
30
|
matOptions$;
|
|
31
|
+
onDestroy$ = new Subject();
|
|
31
32
|
get opacity() {
|
|
32
33
|
return this.disabled ? 0.25 : 1;
|
|
33
34
|
}
|
|
34
|
-
constructor(translate) {
|
|
35
|
+
constructor(translate, cd) {
|
|
35
36
|
super();
|
|
36
37
|
this.translate = translate;
|
|
38
|
+
this.cd = cd;
|
|
37
39
|
}
|
|
38
40
|
// Function to call when the rating changes.
|
|
39
41
|
onChange = (values) => {
|
|
42
|
+
console.log('onChange');
|
|
40
43
|
};
|
|
41
44
|
// Function to call when the input is touched (when a star is clicked).
|
|
42
|
-
onTouched = () => {
|
|
45
|
+
onTouched = () => {
|
|
46
|
+
console.log('onTouched');
|
|
47
|
+
};
|
|
43
48
|
// Allows Angular to update the model (rating).
|
|
44
49
|
// Update the model and changes needed for the view here.
|
|
45
50
|
writeValue(values) {
|
|
@@ -78,25 +83,29 @@ export class OnemrvaMatMultiSelectComponent extends MatFormFieldControl {
|
|
|
78
83
|
}
|
|
79
84
|
setDescribedByIds(ids) {
|
|
80
85
|
}
|
|
81
|
-
ngAfterViewInit() {
|
|
82
|
-
}
|
|
83
86
|
ngOnDestroy() {
|
|
87
|
+
this.onDestroy$.next('');
|
|
88
|
+
this.onDestroy$.complete();
|
|
84
89
|
}
|
|
85
90
|
ngOnInit() {
|
|
86
|
-
this.
|
|
87
|
-
if (value === '') {
|
|
88
|
-
return this.matOptions.filter((o) => { return true; });
|
|
89
|
-
}
|
|
90
|
-
return this.matOptions.filter((option) => {
|
|
91
|
-
return option?._text?.nativeElement.innerHTML.toLowerCase().includes(value.toLowerCase());
|
|
92
|
-
});
|
|
93
|
-
}));
|
|
94
|
-
this.formControl.valueChanges.subscribe((values) => {
|
|
91
|
+
this.formControl.valueChanges.pipe(takeUntil(this.onDestroy$)).subscribe((values) => {
|
|
95
92
|
this._values = values;
|
|
96
93
|
this.counter = this._values.length;
|
|
97
94
|
});
|
|
98
95
|
}
|
|
99
|
-
|
|
96
|
+
ngAfterContentChecked() {
|
|
97
|
+
if (this.matOptions.length > 0) {
|
|
98
|
+
this.matOptions$ = this.searchFilter.valueChanges.pipe(debounceTime(200), startWith(''), map((value) => {
|
|
99
|
+
if (value === '') {
|
|
100
|
+
return this.matOptions.filter((o) => { return true; });
|
|
101
|
+
}
|
|
102
|
+
return this.matOptions.filter((option) => {
|
|
103
|
+
return option?._text?.nativeElement.innerHTML.toLowerCase().includes(value.toLowerCase());
|
|
104
|
+
});
|
|
105
|
+
}));
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OnemrvaMatMultiSelectComponent, deps: [{ token: i1.TranslateService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
100
109
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: OnemrvaMatMultiSelectComponent, selector: "onemrva-mat-multi-select", inputs: { formControl: "formControl", role: ["attr.role", "role"], label: ["attr.arai-label", "label"], invalid: ["attr.aria-invalid", "invalid"], showFilter: "showFilter", selectionToggle: "selectionToggle", dataCy: ["attr.data-cy", "dataCy"] }, host: { properties: { "style.opacity": "this.opacity" } }, providers: [
|
|
101
110
|
{
|
|
102
111
|
provide: MatFormFieldControl,
|
|
@@ -140,7 +149,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
140
149
|
// useExisting: OnemrvaMatMultiSelectComponent,
|
|
141
150
|
// },
|
|
142
151
|
], template: "<mat-select multiple=\"true\" [formControl]=\"formControl\" [attr.data-cy]=\"dataCy\" [attr.role]=\"role\" [attr.aria-label]=\"label\">\n<div class=\"selection-choice\" *ngIf=\"selectionToggle\">\n <a class=\"small\"\n [ngClass]=\"{'disabled':isAllSelected()}\"\n (click)=\"selectAll()\" >{{ 'select.select.all' | translate }}</a><span class=\"small grey\"> | </span>\n <a class=\"small\"\n [ngClass]=\"{'disabled':isNoneSelected()}\"\n (click)=\"deselectAll($event)\" >{{ 'select.deselect.all' | translate }}</a></div>\n <div class=\"option-list\">\n <mat-option\n *ngIf=\"showFilter\">\n <mat-select-search\n [formControl]=\"searchFilter\"\n ariaLabel=\"{{ 'select.search.filter' | translate }}\"\n noEntriesFoundLabel=\"{{ 'select.search.notFound' | translate }}\"\n placeholderLabel=\"{{ 'select.search.filter' | translate }}\"\n ></mat-select-search>\n </mat-option>\n <ng-container *ngFor=\"let matOption of matOptions$ | async \">\n <mat-option [disabled]=\"matOption.disabled\"\n [value]=\"matOption.value\" [attr.data-cy]=\"matOption._getHostElement().dataset['cy']\">\n {{ matOption._text?.nativeElement?.innerHTML }}\n </mat-option>\n </ng-container>\n </div>\n</mat-select>\n<div class=\"mat-select-counter\" *ngIf=\"counter > 0\"><span class=\"text\">{{ counter }}</span><mat-icon (click)=\"deselectAll($event)\">close</mat-icon></div>\n" }]
|
|
143
|
-
}], ctorParameters: function () { return [{ type: i1.TranslateService }]; }, propDecorators: { formControl: [{
|
|
152
|
+
}], ctorParameters: function () { return [{ type: i1.TranslateService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { formControl: [{
|
|
144
153
|
type: Input
|
|
145
154
|
}], role: [{
|
|
146
155
|
type: Input,
|
|
@@ -165,4 +174,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
165
174
|
type: HostBinding,
|
|
166
175
|
args: ['style.opacity']
|
|
167
176
|
}] } });
|
|
168
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25lbXJ2YS1tYXQtbXVsdGktc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29uZW1ydmEvZGVzaWduLXN5c3RlbS9tYXQtbXVsdGktc2VsZWN0L3NyYy9vbmVtcnZhLW1hdC1tdWx0aS1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25lbXJ2YS9kZXNpZ24tc3lzdGVtL21hdC1tdWx0aS1zZWxlY3Qvc3JjL29uZW1ydmEtbWF0LW11bHRpLXNlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUFFLGVBQWUsRUFBZ0IsVUFBVSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQXFCLFNBQVMsRUFDdkcsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFdBQVcsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzlELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBRWpFLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRCxPQUFPLEVBQUMsR0FBRyxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTlDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7OztBQUVoQyxJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUM7QUEwQmhCLE1BQU0sT0FBTyw4QkFBK0IsU0FBUSxtQkFBd0I7SUF5Q2pFO0lBckNULE9BQU8sR0FBRyxDQUFDLENBQUM7SUFDWixPQUFPLEdBQVcsRUFBRSxDQUFDO0lBQ0wsWUFBWSxHQUFxQixJQUFJLFVBQVUsRUFBTyxDQUFDO0lBR3ZFLFdBQVcsQ0FBZTtJQUduQixJQUFJLEdBQUcsRUFBRSxDQUFDO0lBR1YsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUdYLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFHdkIsVUFBVSxHQUFZLElBQUksQ0FBQztJQUczQixlQUFlLEdBQVksSUFBSSxDQUFDO0lBR3pCLE1BQU0sR0FBRyw0QkFBNEIsT0FBTyxFQUFFLEVBQUUsQ0FBQztJQUV4RCxZQUFZLEdBQWdCLElBQUksV0FBVyxDQUFTLEVBQUUsQ0FBQyxDQUFDO0lBR3hELFVBQVUsR0FBeUIsSUFBSSxTQUFTLEVBQWEsQ0FBQztJQUM5RCxXQUFXLENBQWdDO0lBRTNDLElBQ0ksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELFlBQ1MsU0FBMkI7UUFFbEMsS0FBSyxFQUFFLENBQUM7UUFGRCxjQUFTLEdBQVQsU0FBUyxDQUFrQjtJQUlwQyxDQUFDO0lBRUQsNENBQTRDO0lBQzVDLFFBQVEsR0FBRyxDQUFDLE1BQWEsRUFBRSxFQUFFO0lBQzdCLENBQUMsQ0FBQztJQUVGLHVFQUF1RTtJQUN2RSxTQUFTLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0lBR3JCLCtDQUErQztJQUMvQyx5REFBeUQ7SUFDekQsVUFBVSxDQUFDLE1BQWE7UUFDdEIsSUFBSSxNQUFNLEtBQUssSUFBSTtZQUNqQixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDL0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELGlGQUFpRjtJQUNqRixzREFBc0Q7SUFDdEQsZ0JBQWdCLENBQUMsRUFBMEI7UUFDekMsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGlGQUFpRjtJQUNqRixzREFBc0Q7SUFDdEQsaUJBQWlCLENBQUMsRUFBYztRQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsYUFBYTtRQUNYLE9BQU8sSUFBSSxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztJQUNqRCxDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUM1QyxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELGNBQWM7UUFDWixPQUFPLElBQUksQ0FBQyxPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxXQUFXLENBQUMsTUFBa0I7UUFDNUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUFpQjtJQUNsQyxDQUFDO0lBRUQsaUJBQWlCLENBQUMsR0FBYTtJQUMvQixDQUFDO0lBRUQsZUFBZTtJQUNmLENBQUM7SUFFRCxXQUFXO0lBQ1gsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLElBQUksQ0FDcEQsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUNiLEdBQUcsQ0FBQyxDQUFDLEtBQWEsRUFBRSxFQUFFO1lBQ3BCLElBQUksS0FBSyxLQUFLLEVBQUUsRUFBRTtnQkFDaEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEdBQUUsT0FBTyxJQUFJLENBQUEsQ0FBQSxDQUFDLENBQUMsQ0FBQzthQUNwRDtZQUNELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtnQkFDdkMsT0FBTyxNQUFNLEVBQUUsS0FBSyxFQUFFLGFBQWEsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQzVGLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQ0gsQ0FBQTtRQUNELElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ2pELElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDckMsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO3dHQTVIVSw4QkFBOEI7NEZBQTlCLDhCQUE4QixxV0FyQjlCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLG1CQUFtQjtnQkFDNUIsV0FBVyxFQUFFLDhCQUE4QjtnQkFDM0MsS0FBSyxFQUFFLEtBQUs7YUFDYjtZQUNEO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsOEJBQThCLENBQUM7Z0JBQzdELEtBQUssRUFBRSxJQUFJO2FBQ1o7WUFDRCxJQUFJO1lBQ0osa0NBQWtDO1lBQ2xDLGlEQUFpRDtZQUNqRCxLQUFLO1lBQ0wsSUFBSTtZQUNKLDBDQUEwQztZQUMxQyxpREFBaUQ7WUFDakQsS0FBSztTQUNOLHFEQWlDZ0IsU0FBUyxvRENyRTVCLHU5Q0EyQkE7OzRGRFdhLDhCQUE4QjtrQkF4QjFDLFNBQVM7K0JBQ0UsMEJBQTBCLGFBRXpCO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxtQkFBbUI7NEJBQzVCLFdBQVcsZ0NBQWdDOzRCQUMzQyxLQUFLLEVBQUUsS0FBSzt5QkFDYjt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSwrQkFBK0IsQ0FBQzs0QkFDN0QsS0FBSyxFQUFFLElBQUk7eUJBQ1o7d0JBQ0QsSUFBSTt3QkFDSixrQ0FBa0M7d0JBQ2xDLGlEQUFpRDt3QkFDakQsS0FBSzt3QkFDTCxJQUFJO3dCQUNKLDBDQUEwQzt3QkFDMUMsaURBQWlEO3dCQUNqRCxLQUFLO3FCQUNOO3VHQVdELFdBQVc7c0JBRFYsS0FBSztnQkFJQyxJQUFJO3NCQURWLEtBQUs7dUJBQUMsV0FBVztnQkFJWCxLQUFLO3NCQURYLEtBQUs7dUJBQUMsaUJBQWlCO2dCQUlqQixPQUFPO3NCQURiLEtBQUs7dUJBQUMsbUJBQW1CO2dCQUkxQixVQUFVO3NCQURULEtBQUs7Z0JBSU4sZUFBZTtzQkFEZCxLQUFLO2dCQUlDLE1BQU07c0JBRFosS0FBSzt1QkFBQyxjQUFjO2dCQU1yQixVQUFVO3NCQURULGVBQWU7dUJBQUMsU0FBUztnQkFLdEIsT0FBTztzQkFEVixXQUFXO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgRXZlbnRFbWl0dGVyLCBmb3J3YXJkUmVmLCBIb3N0QmluZGluZywgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBRdWVyeUxpc3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Zvcm1Db250cm9sLCBOR19WQUxVRV9BQ0NFU1NPUn0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQge01hdEZvcm1GaWVsZENvbnRyb2x9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkXCI7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XG5pbXBvcnQge01hdE9wdGlvbn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2NvcmVcIjtcbmltcG9ydCB7bWFwLCBzdGFydFdpdGh9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHtvcHRpb259IGZyb20gXCJ5YXJnc1wiO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tIFwicnhqc1wiO1xuXG5sZXQgTkVYVF9JRCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ29uZW1ydmEtbWF0LW11bHRpLXNlbGVjdCcsXG4gIHRlbXBsYXRlVXJsOiAnb25lbXJ2YS1tYXQtbXVsdGktc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTWF0Rm9ybUZpZWxkQ29udHJvbCxcbiAgICAgIHVzZUV4aXN0aW5nOiBPbmVtcnZhTWF0TXVsdGlTZWxlY3RDb21wb25lbnQsXG4gICAgICBtdWx0aTogZmFsc2VcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gT25lbXJ2YU1hdE11bHRpU2VsZWN0Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH1cbiAgICAvLyB7XG4gICAgLy8gICBwcm92aWRlOiBNYXRGb3JtRmllbGRDb250cm9sLFxuICAgIC8vICAgdXNlRXhpc3Rpbmc6IE9uZW1ydmFNYXRNdWx0aVNlbGVjdENvbXBvbmVudCxcbiAgICAvLyB9LFxuICAgIC8vIHtcbiAgICAvLyAgIHByb3ZpZGU6IE1BVF9PUFRJT05fUEFSRU5UX0NPTVBPTkVOVCxcbiAgICAvLyAgIHVzZUV4aXN0aW5nOiBPbmVtcnZhTWF0TXVsdGlTZWxlY3RDb21wb25lbnQsXG4gICAgLy8gfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgT25lbXJ2YU1hdE11bHRpU2VsZWN0Q29tcG9uZW50IGV4dGVuZHMgTWF0Rm9ybUZpZWxkQ29udHJvbDxhbnk+XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXRcbntcblxuICBjb3VudGVyID0gMDtcbiAgX3ZhbHVlcyA6IGFueVtdID0gW107XG4gIHB1YmxpYyBvdmVycmlkZSBzdGF0ZUNoYW5nZXMgOiBPYnNlcnZhYmxlPGFueT4gPSBuZXcgT2JzZXJ2YWJsZTxhbnk+KCk7XG5cbiAgQElucHV0KClcbiAgZm9ybUNvbnRyb2whOiBGb3JtQ29udHJvbDtcblxuICBASW5wdXQoJ2F0dHIucm9sZScpXG4gIHB1YmxpYyByb2xlID0gJyc7XG5cbiAgQElucHV0KCdhdHRyLmFyYWktbGFiZWwnKVxuICBwdWJsaWMgbGFiZWwgPSAnJztcblxuICBASW5wdXQoJ2F0dHIuYXJpYS1pbnZhbGlkJylcbiAgcHVibGljIGludmFsaWQgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBzaG93RmlsdGVyOiBib29sZWFuID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBzZWxlY3Rpb25Ub2dnbGU6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBJbnB1dCgnYXR0ci5kYXRhLWN5JylcbiAgcHVibGljIGRhdGFDeSA9IGBvbmVtcnZhLW1hdC1tdWx0aS1zZWxlY3QtJHtORVhUX0lEKyt9YDtcblxuICBzZWFyY2hGaWx0ZXI6IEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sPHN0cmluZz4oJycpO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oTWF0T3B0aW9uKVxuICBtYXRPcHRpb25zOiBRdWVyeUxpc3Q8TWF0T3B0aW9uPiA9IG5ldyBRdWVyeUxpc3Q8TWF0T3B0aW9uPigpO1xuICBtYXRPcHRpb25zJD86IE9ic2VydmFibGU8TWF0T3B0aW9uPGFueT5bXT47XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5vcGFjaXR5JylcbiAgZ2V0IG9wYWNpdHkoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQgPyAwLjI1IDogMTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoKTtcblxuICB9XG5cbiAgLy8gRnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSByYXRpbmcgY2hhbmdlcy5cbiAgb25DaGFuZ2UgPSAodmFsdWVzOiBhbnlbXSkgPT4ge1xuICB9O1xuXG4gIC8vIEZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgaW5wdXQgaXMgdG91Y2hlZCAod2hlbiBhIHN0YXIgaXMgY2xpY2tlZCkuXG4gIG9uVG91Y2hlZCA9ICgpID0+IHt9O1xuXG5cbiAgLy8gQWxsb3dzIEFuZ3VsYXIgdG8gdXBkYXRlIHRoZSBtb2RlbCAocmF0aW5nKS5cbiAgLy8gVXBkYXRlIHRoZSBtb2RlbCBhbmQgY2hhbmdlcyBuZWVkZWQgZm9yIHRoZSB2aWV3IGhlcmUuXG4gIHdyaXRlVmFsdWUodmFsdWVzOiBhbnlbXSk6IHZvaWQge1xuICAgIGlmICh2YWx1ZXMgIT09IG51bGwpXG4gICAgICB0aGlzLmNvdW50ZXIgPSB2YWx1ZXMubGVuZ3RoO1xuICAgIHRoaXMuX3ZhbHVlcyA9IHZhbHVlcztcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuX3ZhbHVlcyk7XG4gIH1cblxuICAvLyBBbGxvd3MgQW5ndWxhciB0byByZWdpc3RlciBhIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgbW9kZWwgKHJhdGluZykgY2hhbmdlcy5cbiAgLy8gU2F2ZSB0aGUgZnVuY3Rpb24gYXMgYSBwcm9wZXJ0eSB0byBjYWxsIGxhdGVyIGhlcmUuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogYW55W10pID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICAvLyBBbGxvd3MgQW5ndWxhciB0byByZWdpc3RlciBhIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgaW5wdXQgaGFzIGJlZW4gdG91Y2hlZC5cbiAgLy8gU2F2ZSB0aGUgZnVuY3Rpb24gYXMgYSBwcm9wZXJ0eSB0byBjYWxsIGxhdGVyIGhlcmUuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIGlzQWxsU2VsZWN0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY291bnRlciA9PT0gdGhpcy5tYXRPcHRpb25zLmxlbmd0aDtcbiAgfVxuXG4gIHNlbGVjdEFsbCgpIHtcbiAgICB0aGlzLl92YWx1ZXMgPSB0aGlzLm1hdE9wdGlvbnMubWFwKChvcHRpb24pID0+IHtcbiAgICAgIHJldHVybiBvcHRpb24udmFsdWU7XG4gICAgfSk7XG4gICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLl92YWx1ZXMpO1xuICB9XG5cbiAgaXNOb25lU2VsZWN0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY291bnRlciA9PT0gMDtcbiAgfVxuXG4gIGRlc2VsZWN0QWxsKCRldmVudDogTW91c2VFdmVudCkge1xuICAgIHRoaXMuX3ZhbHVlcyA9IFtdO1xuICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5fdmFsdWVzKTtcbiAgfVxuXG4gIG9uQ29udGFpbmVyQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgfVxuXG4gIHNldERlc2NyaWJlZEJ5SWRzKGlkczogc3RyaW5nW10pOiB2b2lkIHtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5tYXRPcHRpb25zJCA9IHRoaXMuc2VhcmNoRmlsdGVyLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgc3RhcnRXaXRoKCcnKSxcbiAgICAgIG1hcCgodmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgICBpZiAodmFsdWUgPT09ICcnKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMubWF0T3B0aW9ucy5maWx0ZXIoKG8pPT4ge3JldHVybiB0cnVlfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMubWF0T3B0aW9ucy5maWx0ZXIoKG9wdGlvbikgPT4ge1xuICAgICAgICAgIHJldHVybiBvcHRpb24/Ll90ZXh0Py5uYXRpdmVFbGVtZW50LmlubmVySFRNTC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHZhbHVlLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgKVxuICAgIHRoaXMuZm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsdWVzKSA9PiB7XG4gICAgICB0aGlzLl92YWx1ZXMgPSB2YWx1ZXM7XG4gICAgICB0aGlzLmNvdW50ZXIgPSB0aGlzLl92YWx1ZXMubGVuZ3RoO1xuICAgIH0pXG4gIH1cbn1cbiIsIjxtYXQtc2VsZWN0IG11bHRpcGxlPVwidHJ1ZVwiIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiIFthdHRyLmRhdGEtY3ldPVwiZGF0YUN5XCIgW2F0dHIucm9sZV09XCJyb2xlXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJsYWJlbFwiPlxuPGRpdiBjbGFzcz1cInNlbGVjdGlvbi1jaG9pY2VcIiAqbmdJZj1cInNlbGVjdGlvblRvZ2dsZVwiPlxuICAgIDxhIGNsYXNzPVwic21hbGxcIlxuICAgICAgIFtuZ0NsYXNzXT1cInsnZGlzYWJsZWQnOmlzQWxsU2VsZWN0ZWQoKX1cIlxuICAgICAgIChjbGljayk9XCJzZWxlY3RBbGwoKVwiID57eyAnc2VsZWN0LnNlbGVjdC5hbGwnIHwgdHJhbnNsYXRlIH19PC9hPjxzcGFuIGNsYXNzPVwic21hbGwgZ3JleVwiPiZuYnNwOyZuYnNwO3wmbmJzcDsmbmJzcDs8L3NwYW4+XG4gICAgPGEgY2xhc3M9XCJzbWFsbFwiXG4gICAgICAgW25nQ2xhc3NdPVwieydkaXNhYmxlZCc6aXNOb25lU2VsZWN0ZWQoKX1cIlxuICAgICAgIChjbGljayk9XCJkZXNlbGVjdEFsbCgkZXZlbnQpXCIgPnt7ICdzZWxlY3QuZGVzZWxlY3QuYWxsJyB8IHRyYW5zbGF0ZSB9fTwvYT48L2Rpdj5cbiAgPGRpdiBjbGFzcz1cIm9wdGlvbi1saXN0XCI+XG4gICAgPG1hdC1vcHRpb25cbiAgICAgICpuZ0lmPVwic2hvd0ZpbHRlclwiPlxuICAgICAgPG1hdC1zZWxlY3Qtc2VhcmNoXG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJzZWFyY2hGaWx0ZXJcIlxuICAgICAgICBhcmlhTGFiZWw9XCJ7eyAnc2VsZWN0LnNlYXJjaC5maWx0ZXInIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgbm9FbnRyaWVzRm91bmRMYWJlbD1cInt7ICdzZWxlY3Quc2VhcmNoLm5vdEZvdW5kJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIHBsYWNlaG9sZGVyTGFiZWw9XCJ7eyAnc2VsZWN0LnNlYXJjaC5maWx0ZXInIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgID48L21hdC1zZWxlY3Qtc2VhcmNoPlxuICAgIDwvbWF0LW9wdGlvbj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBtYXRPcHRpb24gb2YgbWF0T3B0aW9ucyQgfCBhc3luYyBcIj5cbiAgICAgIDxtYXQtb3B0aW9uIFtkaXNhYmxlZF09XCJtYXRPcHRpb24uZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIm1hdE9wdGlvbi52YWx1ZVwiIFthdHRyLmRhdGEtY3ldPVwibWF0T3B0aW9uLl9nZXRIb3N0RWxlbWVudCgpLmRhdGFzZXRbJ2N5J11cIj5cbiAgICAgICAge3sgbWF0T3B0aW9uLl90ZXh0Py5uYXRpdmVFbGVtZW50Py5pbm5lckhUTUwgfX1cbiAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L21hdC1zZWxlY3Q+XG48ZGl2IGNsYXNzPVwibWF0LXNlbGVjdC1jb3VudGVyXCIgKm5nSWY9XCJjb3VudGVyID4gMFwiPjxzcGFuIGNsYXNzPVwidGV4dFwiPnt7IGNvdW50ZXIgfX08L3NwYW4+PG1hdC1pY29uIChjbGljayk9XCJkZXNlbGVjdEFsbCgkZXZlbnQpXCI+Y2xvc2U8L21hdC1pY29uPjwvZGl2PlxuIl19
|
|
177
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25lbXJ2YS1tYXQtbXVsdGktc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29uZW1ydmEvZGVzaWduLXN5c3RlbS9tYXQtbXVsdGktc2VsZWN0L3NyYy9vbmVtcnZhLW1hdC1tdWx0aS1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25lbXJ2YS9kZXNpZ24tc3lzdGVtL21hdC1tdWx0aS1zZWxlY3Qvc3JjL29uZW1ydmEtbWF0LW11bHRpLXNlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBSUwsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsV0FBVyxFQUNYLEtBQUssRUFHTCxTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFdBQVcsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzlELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBRWpFLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRCxPQUFPLEVBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUMsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7OztBQUVsRixJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUM7QUEwQmhCLE1BQU0sT0FBTyw4QkFBK0IsU0FBUSxtQkFBd0I7SUEwQ2pFO0lBQ0E7SUF2Q1QsT0FBTyxHQUFHLENBQUMsQ0FBQztJQUNaLE9BQU8sR0FBVyxFQUFFLENBQUM7SUFDTCxZQUFZLEdBQXFCLElBQUksVUFBVSxFQUFPLENBQUM7SUFHdkUsV0FBVyxDQUFlO0lBR25CLElBQUksR0FBRyxFQUFFLENBQUM7SUFHVixLQUFLLEdBQUcsRUFBRSxDQUFDO0lB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aUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsOEJBQThCLENBQUM7Z0JBQzdELEtBQUssRUFBRSxJQUFJO2FBQ1o7WUFDRCxJQUFJO1lBQ0osa0NBQWtDO1lBQ2xDLGlEQUFpRDtZQUNqRCxLQUFLO1lBQ0wsSUFBSTtZQUNKLDBDQUEwQztZQUMxQyxpREFBaUQ7WUFDakQsS0FBSztTQUNOLHFEQWlDaUIsU0FBUyxvREM1RTdCLHU5Q0EyQkE7OzRGRGtCYSw4QkFBOEI7a0JBeEIxQyxTQUFTOytCQUNFLDBCQUEwQixhQUV6Qjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsbUJBQW1COzRCQUM1QixXQUFXLGdDQUFnQzs0QkFDM0MsS0FBSyxFQUFFLEtBQUs7eUJBQ2I7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsK0JBQStCLENBQUM7NEJBQzdELEtBQUssRUFBRSxJQUFJO3lCQUNaO3dCQUNELElBQUk7d0JBQ0osa0NBQWtDO3dCQUNsQyxpREFBaUQ7d0JBQ2pELEtBQUs7d0JBQ0wsSUFBSTt3QkFDSiwwQ0FBMEM7d0JBQzFDLGlEQUFpRDt3QkFDakQsS0FBSztxQkFDTjt1SUFXRCxXQUFXO3NCQURWLEtBQUs7Z0JBSUMsSUFBSTtzQkFEVixLQUFLO3VCQUFDLFdBQVc7Z0JBSVgsS0FBSztzQkFEWCxLQUFLO3VCQUFDLGlCQUFpQjtnQkFJakIsT0FBTztzQkFEYixLQUFLO3VCQUFDLG1CQUFtQjtnQkFJMUIsVUFBVTtzQkFEVCxLQUFLO2dCQUlOLGVBQWU7c0JBRGQsS0FBSztnQkFJQyxNQUFNO3NCQURaLEtBQUs7dUJBQUMsY0FBYztnQkFNckIsVUFBVTtzQkFEVCxlQUFlO3VCQUFFLFNBQVM7Z0JBTXZCLE9BQU87c0JBRFYsV0FBVzt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50Q2hlY2tlZCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBmb3J3YXJkUmVmLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFF1ZXJ5TGlzdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Rm9ybUNvbnRyb2wsIE5HX1ZBTFVFX0FDQ0VTU09SfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7TWF0Rm9ybUZpZWxkQ29udHJvbH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGRcIjtcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcbmltcG9ydCB7TWF0T3B0aW9ufSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZVwiO1xuaW1wb3J0IHtkZWJvdW5jZVRpbWUsIG1hcCwgT2JzZXJ2YWJsZSwgc3RhcnRXaXRoLCBTdWJqZWN0LCB0YWtlVW50aWx9IGZyb20gXCJyeGpzXCI7XG5cbmxldCBORVhUX0lEID0gMDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnb25lbXJ2YS1tYXQtbXVsdGktc2VsZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICdvbmVtcnZhLW1hdC1tdWx0aS1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBNYXRGb3JtRmllbGRDb250cm9sLFxuICAgICAgdXNlRXhpc3Rpbmc6IE9uZW1ydmFNYXRNdWx0aVNlbGVjdENvbXBvbmVudCxcbiAgICAgIG11bHRpOiBmYWxzZVxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBPbmVtcnZhTWF0TXVsdGlTZWxlY3RDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfVxuICAgIC8vIHtcbiAgICAvLyAgIHByb3ZpZGU6IE1hdEZvcm1GaWVsZENvbnRyb2wsXG4gICAgLy8gICB1c2VFeGlzdGluZzogT25lbXJ2YU1hdE11bHRpU2VsZWN0Q29tcG9uZW50LFxuICAgIC8vIH0sXG4gICAgLy8ge1xuICAgIC8vICAgcHJvdmlkZTogTUFUX09QVElPTl9QQVJFTlRfQ09NUE9ORU5ULFxuICAgIC8vICAgdXNlRXhpc3Rpbmc6IE9uZW1ydmFNYXRNdWx0aVNlbGVjdENvbXBvbmVudCxcbiAgICAvLyB9LFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIE9uZW1ydmFNYXRNdWx0aVNlbGVjdENvbXBvbmVudCBleHRlbmRzIE1hdEZvcm1GaWVsZENvbnRyb2w8YW55PlxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlckNvbnRlbnRDaGVja2VkXG57XG5cbiAgY291bnRlciA9IDA7XG4gIF92YWx1ZXMgOiBhbnlbXSA9IFtdO1xuICBwdWJsaWMgb3ZlcnJpZGUgc3RhdGVDaGFuZ2VzIDogT2JzZXJ2YWJsZTxhbnk+ID0gbmV3IE9ic2VydmFibGU8YW55PigpO1xuXG4gIEBJbnB1dCgpXG4gIGZvcm1Db250cm9sITogRm9ybUNvbnRyb2w7XG5cbiAgQElucHV0KCdhdHRyLnJvbGUnKVxuICBwdWJsaWMgcm9sZSA9ICcnO1xuXG4gIEBJbnB1dCgnYXR0ci5hcmFpLWxhYmVsJylcbiAgcHVibGljIGxhYmVsID0gJyc7XG5cbiAgQElucHV0KCdhdHRyLmFyaWEtaW52YWxpZCcpXG4gIHB1YmxpYyBpbnZhbGlkID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgc2hvd0ZpbHRlcjogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgc2VsZWN0aW9uVG9nZ2xlOiBib29sZWFuID0gdHJ1ZTtcblxuICBASW5wdXQoJ2F0dHIuZGF0YS1jeScpXG4gIHB1YmxpYyBkYXRhQ3kgPSBgb25lbXJ2YS1tYXQtbXVsdGktc2VsZWN0LSR7TkVYVF9JRCsrfWA7XG5cbiAgc2VhcmNoRmlsdGVyOiBGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxzdHJpbmc+KCcnKTtcblxuICBAQ29udGVudENoaWxkcmVuKCBNYXRPcHRpb24pXG4gIG1hdE9wdGlvbnM6IFF1ZXJ5TGlzdDxNYXRPcHRpb24+ID0gbmV3IFF1ZXJ5TGlzdDxNYXRPcHRpb24+KCk7XG4gIG1hdE9wdGlvbnMkPzogT2JzZXJ2YWJsZTxNYXRPcHRpb248YW55PltdPjtcbiAgcHJpdmF0ZSBvbkRlc3Ryb3kkOiBTdWJqZWN0PGFueT4gPSBuZXcgU3ViamVjdDxhbnk+KCk7XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5vcGFjaXR5JylcbiAgZ2V0IG9wYWNpdHkoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQgPyAwLjI1IDogMTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHVibGljIGNkOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgLy8gRnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSByYXRpbmcgY2hhbmdlcy5cbiAgb25DaGFuZ2UgPSAodmFsdWVzOiBhbnlbXSkgPT4ge1xuICAgIGNvbnNvbGUubG9nKCdvbkNoYW5nZScpO1xuICB9O1xuXG4gIC8vIEZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgaW5wdXQgaXMgdG91Y2hlZCAod2hlbiBhIHN0YXIgaXMgY2xpY2tlZCkuXG4gIG9uVG91Y2hlZCA9ICgpID0+IHtcbiAgICBjb25zb2xlLmxvZygnb25Ub3VjaGVkJyk7XG4gIH07XG5cblxuICAvLyBBbGxvd3MgQW5ndWxhciB0byB1cGRhdGUgdGhlIG1vZGVsIChyYXRpbmcpLlxuICAvLyBVcGRhdGUgdGhlIG1vZGVsIGFuZCBjaGFuZ2VzIG5lZWRlZCBmb3IgdGhlIHZpZXcgaGVyZS5cbiAgd3JpdGVWYWx1ZSh2YWx1ZXM6IGFueVtdKTogdm9pZCB7XG4gICAgaWYgKHZhbHVlcyAhPT0gbnVsbClcbiAgICAgIHRoaXMuY291bnRlciA9IHZhbHVlcy5sZW5ndGg7XG4gICAgdGhpcy5fdmFsdWVzID0gdmFsdWVzO1xuICAgIHRoaXMub25DaGFuZ2UodGhpcy5fdmFsdWVzKTtcbiAgfVxuXG4gIC8vIEFsbG93cyBBbmd1bGFyIHRvIHJlZ2lzdGVyIGEgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSBtb2RlbCAocmF0aW5nKSBjaGFuZ2VzLlxuICAvLyBTYXZlIHRoZSBmdW5jdGlvbiBhcyBhIHByb3BlcnR5IHRvIGNhbGwgbGF0ZXIgaGVyZS5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnlbXSkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIC8vIEFsbG93cyBBbmd1bGFyIHRvIHJlZ2lzdGVyIGEgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSBpbnB1dCBoYXMgYmVlbiB0b3VjaGVkLlxuICAvLyBTYXZlIHRoZSBmdW5jdGlvbiBhcyBhIHByb3BlcnR5IHRvIGNhbGwgbGF0ZXIgaGVyZS5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgaXNBbGxTZWxlY3RlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5jb3VudGVyID09PSB0aGlzLm1hdE9wdGlvbnMubGVuZ3RoO1xuICB9XG5cbiAgc2VsZWN0QWxsKCkge1xuICAgIHRoaXMuX3ZhbHVlcyA9IHRoaXMubWF0T3B0aW9ucy5tYXAoKG9wdGlvbikgPT4ge1xuICAgICAgcmV0dXJuIG9wdGlvbi52YWx1ZTtcbiAgICB9KTtcbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMuX3ZhbHVlcyk7XG4gIH1cblxuICBpc05vbmVTZWxlY3RlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5jb3VudGVyID09PSAwO1xuICB9XG5cbiAgZGVzZWxlY3RBbGwoJGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgdGhpcy5fdmFsdWVzID0gW107XG4gICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLl92YWx1ZXMpO1xuICB9XG5cbiAgb25Db250YWluZXJDbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICB9XG5cbiAgc2V0RGVzY3JpYmVkQnlJZHMoaWRzOiBzdHJpbmdbXSk6IHZvaWQge1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5vbkRlc3Ryb3kkLm5leHQoJycpO1xuICAgIHRoaXMub25EZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG5cbiAgICB0aGlzLmZvcm1Db250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpKS5zdWJzY3JpYmUoKHZhbHVlcykgPT4ge1xuICAgICAgdGhpcy5fdmFsdWVzID0gdmFsdWVzO1xuICAgICAgdGhpcy5jb3VudGVyID0gdGhpcy5fdmFsdWVzLmxlbmd0aDtcbiAgICB9KTtcbiAgfVxuICBuZ0FmdGVyQ29udGVudENoZWNrZWQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubWF0T3B0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLm1hdE9wdGlvbnMkID0gdGhpcy5zZWFyY2hGaWx0ZXIudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgIGRlYm91bmNlVGltZSgyMDApLFxuICAgICAgICBzdGFydFdpdGgoJycpLFxuICAgICAgICBtYXAoKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICBpZiAodmFsdWUgPT09ICcnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tYXRPcHRpb25zLmZpbHRlcigobyk9PiB7cmV0dXJuIHRydWV9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRoaXMubWF0T3B0aW9ucy5maWx0ZXIoKG9wdGlvbikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIG9wdGlvbj8uX3RleHQ/Lm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModmFsdWUudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIiwiPG1hdC1zZWxlY3QgbXVsdGlwbGU9XCJ0cnVlXCIgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCIgW2F0dHIuZGF0YS1jeV09XCJkYXRhQ3lcIiBbYXR0ci5yb2xlXT1cInJvbGVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImxhYmVsXCI+XG48ZGl2IGNsYXNzPVwic2VsZWN0aW9uLWNob2ljZVwiICpuZ0lmPVwic2VsZWN0aW9uVG9nZ2xlXCI+XG4gICAgPGEgY2xhc3M9XCJzbWFsbFwiXG4gICAgICAgW25nQ2xhc3NdPVwieydkaXNhYmxlZCc6aXNBbGxTZWxlY3RlZCgpfVwiXG4gICAgICAgKGNsaWNrKT1cInNlbGVjdEFsbCgpXCIgPnt7ICdzZWxlY3Quc2VsZWN0LmFsbCcgfCB0cmFuc2xhdGUgfX08L2E+PHNwYW4gY2xhc3M9XCJzbWFsbCBncmV5XCI+Jm5ic3A7Jm5ic3A7fCZuYnNwOyZuYnNwOzwvc3Bhbj5cbiAgICA8YSBjbGFzcz1cInNtYWxsXCJcbiAgICAgICBbbmdDbGFzc109XCJ7J2Rpc2FibGVkJzppc05vbmVTZWxlY3RlZCgpfVwiXG4gICAgICAgKGNsaWNrKT1cImRlc2VsZWN0QWxsKCRldmVudClcIiA+e3sgJ3NlbGVjdC5kZXNlbGVjdC5hbGwnIHwgdHJhbnNsYXRlIH19PC9hPjwvZGl2PlxuICA8ZGl2IGNsYXNzPVwib3B0aW9uLWxpc3RcIj5cbiAgICA8bWF0LW9wdGlvblxuICAgICAgKm5nSWY9XCJzaG93RmlsdGVyXCI+XG4gICAgICA8bWF0LXNlbGVjdC1zZWFyY2hcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cInNlYXJjaEZpbHRlclwiXG4gICAgICAgIGFyaWFMYWJlbD1cInt7ICdzZWxlY3Quc2VhcmNoLmZpbHRlcicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICBub0VudHJpZXNGb3VuZExhYmVsPVwie3sgJ3NlbGVjdC5zZWFyY2gubm90Rm91bmQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgcGxhY2Vob2xkZXJMYWJlbD1cInt7ICdzZWxlY3Quc2VhcmNoLmZpbHRlcicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgPjwvbWF0LXNlbGVjdC1zZWFyY2g+XG4gICAgPC9tYXQtb3B0aW9uPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG1hdE9wdGlvbiBvZiBtYXRPcHRpb25zJCB8IGFzeW5jIFwiPlxuICAgICAgPG1hdC1vcHRpb24gW2Rpc2FibGVkXT1cIm1hdE9wdGlvbi5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICBbdmFsdWVdPVwibWF0T3B0aW9uLnZhbHVlXCIgW2F0dHIuZGF0YS1jeV09XCJtYXRPcHRpb24uX2dldEhvc3RFbGVtZW50KCkuZGF0YXNldFsnY3knXVwiPlxuICAgICAgICB7eyBtYXRPcHRpb24uX3RleHQ/Lm5hdGl2ZUVsZW1lbnQ/LmlubmVySFRNTCB9fVxuICAgICAgPC9tYXQtb3B0aW9uPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvbWF0LXNlbGVjdD5cbjxkaXYgY2xhc3M9XCJtYXQtc2VsZWN0LWNvdW50ZXJcIiAqbmdJZj1cImNvdW50ZXIgPiAwXCI+PHNwYW4gY2xhc3M9XCJ0ZXh0XCI+e3sgY291bnRlciB9fTwvc3Bhbj48bWF0LWljb24gKGNsaWNrKT1cImRlc2VsZWN0QWxsKCRldmVudClcIj5jbG9zZTwvbWF0LWljb24+PC9kaXY+XG4iXX0=
|