@c8y/ngx-components 1021.22.109 → 1021.22.111
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/core/login/totp-auth.component.d.ts +1 -5
- package/core/login/totp-auth.component.d.ts.map +1 -1
- package/esm2022/core/login/totp-auth.component.mjs +2 -7
- package/esm2022/user-roles/inventory-role-selector/inventory-role-selector.component.mjs +4 -2
- package/esm2022/user-roles/roles-asset-tree/roles-asset-tree.component.mjs +6 -3
- package/fesm2022/c8y-ngx-components-user-roles.mjs +8 -3
- package/fesm2022/c8y-ngx-components-user-roles.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components.mjs +1 -6
- package/fesm2022/c8y-ngx-components.mjs.map +1 -1
- package/package.json +1 -1
- package/user-roles/inventory-role-selector/inventory-role-selector.component.d.ts +2 -1
- package/user-roles/inventory-role-selector/inventory-role-selector.component.d.ts.map +1 -1
- package/user-roles/roles-asset-tree/roles-asset-tree.component.d.ts +2 -1
- package/user-roles/roles-asset-tree/roles-asset-tree.component.d.ts.map +1 -1
|
@@ -16,11 +16,7 @@ export declare class TotpAuthComponent implements OnInit {
|
|
|
16
16
|
hasError: boolean;
|
|
17
17
|
isSetup: boolean;
|
|
18
18
|
constructor(loginService: LoginService, userService: UserService, alert: AlertService);
|
|
19
|
-
|
|
20
|
-
* In case of a setup we need the user to be authorized
|
|
21
|
-
* first.
|
|
22
|
-
*/
|
|
23
|
-
ngOnInit(): Promise<void>;
|
|
19
|
+
ngOnInit(): void;
|
|
24
20
|
onTotpSuccess(code: any): Promise<void>;
|
|
25
21
|
static ɵfac: i0.ɵɵFactoryDeclaration<TotpAuthComponent, never>;
|
|
26
22
|
static ɵcmp: i0.ɵɵComponentDeclaration<TotpAuthComponent, "c8y-totp-auth", never, { "credentials": { "alias": "credentials"; "required": false; }; "view": { "alias": "view"; "required": false; }; }, { "onCancel": "onCancel"; }, never, never, false, never>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"totp-auth.component.d.ts","sourceRoot":"","sources":["../../../core/login/totp-auth.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAU,YAAY,EAAS,MAAM,eAAe,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;;AAG3C,qBAIa,iBAAkB,YAAW,MAAM;IAUrC,YAAY,EAAE,YAAY;IACjC,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,KAAK;IAXN,WAAW,EAAE,YAAY,CAAC;IAC1B,IAAI,EAAE,UAAU,CAAC;IAChB,QAAQ,oBAAsB;IACxC,WAAW,oBAAc;IACzB,OAAO,UAAS;IAChB,QAAQ,UAAS;IACjB,OAAO,UAAS;gBAGP,YAAY,EAAE,YAAY,EACzB,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,YAAY;IAG7B
|
|
1
|
+
{"version":3,"file":"totp-auth.component.d.ts","sourceRoot":"","sources":["../../../core/login/totp-auth.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAU,YAAY,EAAS,MAAM,eAAe,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;;AAG3C,qBAIa,iBAAkB,YAAW,MAAM;IAUrC,YAAY,EAAE,YAAY;IACjC,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,KAAK;IAXN,WAAW,EAAE,YAAY,CAAC;IAC1B,IAAI,EAAE,UAAU,CAAC;IAChB,QAAQ,oBAAsB;IACxC,WAAW,oBAAc;IACzB,OAAO,UAAS;IAChB,QAAQ,UAAS;IACjB,OAAO,UAAS;gBAGP,YAAY,EAAE,YAAY,EACzB,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,YAAY;IAG7B,QAAQ;IAMF,aAAa,CAAC,IAAI,KAAA;yCArBb,iBAAiB;2CAAjB,iBAAiB;CA4C7B"}
|
|
@@ -23,13 +23,8 @@ export class TotpAuthComponent {
|
|
|
23
23
|
this.hasError = false;
|
|
24
24
|
this.isSetup = false;
|
|
25
25
|
}
|
|
26
|
-
|
|
27
|
-
* In case of a setup we need the user to be authorized
|
|
28
|
-
* first.
|
|
29
|
-
*/
|
|
30
|
-
async ngOnInit() {
|
|
26
|
+
ngOnInit() {
|
|
31
27
|
if (this.view === this.LOGIN_VIEWS.TotpSetup) {
|
|
32
|
-
await this.loginService.switchLoginMode(this.credentials);
|
|
33
28
|
this.isSetup = true;
|
|
34
29
|
}
|
|
35
30
|
}
|
|
@@ -72,4 +67,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
72
67
|
}], onCancel: [{
|
|
73
68
|
type: Output
|
|
74
69
|
}] } });
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG90cC1hdXRoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvbG9naW4vdG90cC1hdXRoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2NvcmUvbG9naW4vdG90cC1hdXRoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFnQixXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7O0FBTTFDLE1BQU0sT0FBTyxpQkFBaUI7SUFTNUIsWUFDUyxZQUEwQixFQUN6QixXQUF3QixFQUN4QixLQUFtQjtRQUZwQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUN6QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixVQUFLLEdBQUwsS0FBSyxDQUFjO1FBVG5CLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3hDLGdCQUFXLEdBQUcsVUFBVSxDQUFDO1FBQ3pCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixZQUFPLEdBQUcsS0FBSyxDQUFDO0lBTWIsQ0FBQztJQUVKLFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUM3QyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUN0QixDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSTtRQUN0QixJQUFJLENBQUM7WUFDSCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztZQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUM7WUFDNUIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2pCLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN4QyxDQUFDO1lBQ0QsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDMUQsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQzFDLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMxQyxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEtBQUssaURBQWlELEVBQUUsQ0FBQztnQkFDbkYsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLHVEQUF1RCxDQUFDLENBQUMsQ0FBQztZQUN2RixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDdkIsQ0FBQztRQUNILENBQUM7Z0JBQVMsQ0FBQztZQUNULElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLENBQUM7SUFDSCxDQUFDOzhHQTNDVSxpQkFBaUI7a0dBQWpCLGlCQUFpQiw4SUNYOUIsOFpBa0JBOzsyRkRQYSxpQkFBaUI7a0JBSjdCLFNBQVM7K0JBQ0UsZUFBZTtzSUFJaEIsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0ksUUFBUTtzQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElDcmVkZW50aWFscywgVXNlclNlcnZpY2UgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi9hbGVydC9hbGVydC5zZXJ2aWNlJztcbmltcG9ydCB7IExvZ2luU2VydmljZSB9IGZyb20gJy4vbG9naW4uc2VydmljZSc7XG5pbXBvcnQgeyBMb2dpblZpZXdzIH0gZnJvbSAnLi9sb2dpbi5tb2RlbCc7XG5pbXBvcnQgeyBnZXR0ZXh0IH0gZnJvbSAnLi4vaTE4bi9nZXR0ZXh0JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LXRvdHAtYXV0aCcsXG4gIHRlbXBsYXRlVXJsOiAnLi90b3RwLWF1dGguY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFRvdHBBdXRoQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgY3JlZGVudGlhbHM6IElDcmVkZW50aWFscztcbiAgQElucHV0KCkgdmlldzogTG9naW5WaWV3cztcbiAgQE91dHB1dCgpIG9uQ2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBMT0dJTl9WSUVXUyA9IExvZ2luVmlld3M7XG4gIGxvYWRpbmcgPSBmYWxzZTtcbiAgaGFzRXJyb3IgPSBmYWxzZTtcbiAgaXNTZXR1cCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBsb2dpblNlcnZpY2U6IExvZ2luU2VydmljZSxcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0OiBBbGVydFNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLnZpZXcgPT09IHRoaXMuTE9HSU5fVklFV1MuVG90cFNldHVwKSB7XG4gICAgICB0aGlzLmlzU2V0dXAgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG9uVG90cFN1Y2Nlc3MoY29kZSkge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5oYXNFcnJvciA9IGZhbHNlO1xuICAgICAgdGhpcy5jcmVkZW50aWFscy50ZmEgPSBjb2RlO1xuICAgICAgaWYgKHRoaXMuaXNTZXR1cCkge1xuICAgICAgICBhd2FpdCB0aGlzLnVzZXJTZXJ2aWNlLmFjdGl2YXRlVG90cCgpO1xuICAgICAgfVxuICAgICAgYXdhaXQgdGhpcy5sb2dpblNlcnZpY2Uuc3dpdGNoTG9naW5Nb2RlKHRoaXMuY3JlZGVudGlhbHMpO1xuICAgICAgYXdhaXQgdGhpcy5sb2dpblNlcnZpY2UudmVyaWZ5QXBwQWNjZXNzKCk7XG4gICAgICBhd2FpdCB0aGlzLmxvZ2luU2VydmljZS5hdXRoRnVsZmlsbGVkKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5hbGVydC5yZW1vdmVMYXN0RGFuZ2VyKCk7XG4gICAgICBpZiAoZS5kYXRhICYmIGUuZGF0YS5tZXNzYWdlID09PSAnQXV0aGVudGljYXRpb24gZmFpbGVkISA6IFVzZXIgYWNjb3VudCBpcyBsb2NrZWQnKSB7XG4gICAgICAgIHRoaXMuYWxlcnQud2FybmluZyhnZXR0ZXh0KCdBdXRoZW50aWNhdGlvbiBmYWlsZWQgZHVlIHRvOiB1c2VyIGFjY291bnQgaXMgbG9ja2VkLicpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuYWxlcnQuYWRkU2VydmVyRmFpbHVyZShlKTtcbiAgICAgICAgdGhpcy5oYXNFcnJvciA9IHRydWU7XG4gICAgICB9XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cImxlZ2VuZCBmb3JtLWJsb2NrIGNlbnRlclwiXG4gIHRyYW5zbGF0ZVxuPlxuICBUd28tZmFjdG9yIGF1dGhlbnRpY2F0aW9uXG48L2Rpdj5cblxuPGM4eS10b3RwLXNldHVwICpuZ0lmPVwiaXNTZXR1cFwiPlxuPC9jOHktdG90cC1zZXR1cD5cbjxjOHktdG90cC1jaGFsbGVuZ2VcbiAgW2lzTW9kYWxdPVwiZmFsc2VcIlxuICBbbG9hZGluZ109XCJsb2FkaW5nXCJcbiAgW2hhc0Vycm9yXT1cImhhc0Vycm9yXCJcbiAgW3ZlcmlmeV09XCJ2aWV3ID09PSBMT0dJTl9WSUVXUy5Ub3RwU2V0dXBcIlxuICAob25TdWNjZXNzKT1cIm9uVG90cFN1Y2Nlc3MoJGV2ZW50KVwiXG4gICh0b3RwVW5jb25maXJtZWRFbWl0dGVyKT1cIm9uQ2FuY2VsLmVtaXQoKVwiXG4+PC9jOHktdG90cC1jaGFsbGVuZ2U+XG5cbiJdfQ==
|
|
@@ -6,7 +6,7 @@ export class InventoryRoleSelector extends UpgradeComponent {
|
|
|
6
6
|
super('c8yInventoryRoleSelector', elementRef, injector);
|
|
7
7
|
}
|
|
8
8
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: InventoryRoleSelector, deps: [{ token: i0.ElementRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
9
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.9", type: InventoryRoleSelector, selector: "c8y-inventory-role-selector-upgraded", inputs: { assignedRoles: "assignedRoles", inheritedRoles: "inheritedRoles", inventoryRoles: "inventoryRoles", ownerAllowedRoles: "ownerAllowedRoles" }, outputs: { onApply: "onApply" }, usesInheritance: true, ngImport: i0 }); }
|
|
9
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.9", type: InventoryRoleSelector, selector: "c8y-inventory-role-selector-upgraded", inputs: { assignedRoles: "assignedRoles", inheritedRoles: "inheritedRoles", inventoryRoles: "inventoryRoles", ownerAllowedRoles: "ownerAllowedRoles", disableEditForExternalUsers: "disableEditForExternalUsers" }, outputs: { onApply: "onApply" }, usesInheritance: true, ngImport: i0 }); }
|
|
10
10
|
}
|
|
11
11
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: InventoryRoleSelector, decorators: [{
|
|
12
12
|
type: Directive,
|
|
@@ -21,7 +21,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
21
21
|
type: Input
|
|
22
22
|
}], ownerAllowedRoles: [{
|
|
23
23
|
type: Input
|
|
24
|
+
}], disableEditForExternalUsers: [{
|
|
25
|
+
type: Input
|
|
24
26
|
}], onApply: [{
|
|
25
27
|
type: Output
|
|
26
28
|
}] } });
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52ZW50b3J5LXJvbGUtc2VsZWN0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdXNlci1yb2xlcy9pbnZlbnRvcnktcm9sZS1zZWxlY3Rvci9pbnZlbnRvcnktcm9sZS1zZWxlY3Rvci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQUszRCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsZ0JBQWdCO0lBUXpELFlBQVksVUFBc0IsRUFBRSxRQUFrQjtRQUNwRCxLQUFLLENBQUMsMEJBQTBCLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzFELENBQUM7OEdBVlUscUJBQXFCO2tHQUFyQixxQkFBcUI7OzJGQUFyQixxQkFBcUI7a0JBSGpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHNDQUFzQztpQkFDakQ7c0dBRVUsYUFBYTtzQkFBckIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLDJCQUEyQjtzQkFBbkMsS0FBSztnQkFDSSxPQUFPO3NCQUFoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEluamVjdG9yLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVcGdyYWRlQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvdXBncmFkZS9zdGF0aWMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdjOHktaW52ZW50b3J5LXJvbGUtc2VsZWN0b3ItdXBncmFkZWQnXG59KVxuZXhwb3J0IGNsYXNzIEludmVudG9yeVJvbGVTZWxlY3RvciBleHRlbmRzIFVwZ3JhZGVDb21wb25lbnQge1xuICBASW5wdXQoKSBhc3NpZ25lZFJvbGVzOiBhbnk7XG4gIEBJbnB1dCgpIGluaGVyaXRlZFJvbGVzOiBhbnk7XG4gIEBJbnB1dCgpIGludmVudG9yeVJvbGVzOiBhbnk7XG4gIEBJbnB1dCgpIG93bmVyQWxsb3dlZFJvbGVzOiBhbnk7XG4gIEBJbnB1dCgpIGRpc2FibGVFZGl0Rm9yRXh0ZXJuYWxVc2VyczogYW55O1xuICBAT3V0cHV0KCkgb25BcHBseTogRXZlbnRFbWl0dGVyPGFueT47XG5cbiAgY29uc3RydWN0b3IoZWxlbWVudFJlZjogRWxlbWVudFJlZiwgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgc3VwZXIoJ2M4eUludmVudG9yeVJvbGVTZWxlY3RvcicsIGVsZW1lbnRSZWYsIGluamVjdG9yKTtcbiAgfVxufVxuIl19
|
|
@@ -13,6 +13,7 @@ export class RolesAssetTreeComponent {
|
|
|
13
13
|
constructor(c8yUserInventoryRoles, c8yRoles) {
|
|
14
14
|
this.c8yUserInventoryRoles = c8yUserInventoryRoles;
|
|
15
15
|
this.c8yRoles = c8yRoles;
|
|
16
|
+
this.disableEditForExternalUsers = false;
|
|
16
17
|
this.onChangeRoles = new EventEmitter();
|
|
17
18
|
this.onChangeItemCount = new EventEmitter();
|
|
18
19
|
this.noSubgroupTitle = gettext('No subgroups');
|
|
@@ -122,11 +123,11 @@ export class RolesAssetTreeComponent {
|
|
|
122
123
|
return true;
|
|
123
124
|
}
|
|
124
125
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: RolesAssetTreeComponent, deps: [{ token: i1.Ng1UserInventoryRolesService, optional: true }, { token: i1.Ng1RolesService, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
125
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: RolesAssetTreeComponent, selector: "c8y-roles-asset-tree-upgraded", inputs: { user: "user", searchFilter: "searchFilter", assignedRoles: "assignedRoles", ownerAssignedRoles: "ownerAssignedRoles", expandGroups: "expandGroups", pageSize: "pageSize", paginationOffset: "paginationOffset" }, outputs: { onChangeRoles: "onChangeRoles", onChangeItemCount: "onChangeItemCount" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"c8y-list__group m-b-0 no-border-last\">\n <div\n class=\"c8y-list__item\"\n *ngFor=\"\n let asset of flatAssetTree$ | async | slice: paginationOffset:paginationOffset + pageSize\n \"\n >\n <div\n class=\"c8y-list__item__block\"\n [title]=\"\n (asset._subGroups && asset.isOpened\n ? asset._subGroups.length\n ? asset._subGroups.length > 1\n ? manySubgroupsTitle\n : oneSubgroupTitle\n : noSubgroupTitle\n : clickToOpenTitle\n ) | translate: { count: asset._subGroups?.length }\n \"\n >\n <div [ngStyle]=\"{ 'padding-left': asset._depth * 8 + 'px' }\"></div>\n <div class=\"c8y-list__item__icon m-t-4 p-l-0\">\n <button\n class=\"btn-clean\"\n [attr.aria-label]=\"(!asset.isOpened ? expandAriaLabel : collapseAriaLabel) | translate\"\n type=\"button\"\n (click)=\"loadChildren(asset)\"\n >\n <i\n class=\"c8y-icon-duocolor\"\n c8yIcon=\"c8y-group\"\n *ngIf=\"!asset.isOpened\"\n ></i>\n <i\n class=\"c8y-icon-duocolor\"\n c8yIcon=\"c8y-group-open\"\n *ngIf=\"asset.isOpened\"\n ></i>\n </button>\n </div>\n <div class=\"c8y-list__item__body\">\n <div class=\"d-flex a-i-center\">\n <div class=\"col-sm-7 p-l-0 col-xs-12\">\n <button\n class=\"btn-clean\"\n type=\"button\"\n (click)=\"loadChildren(asset)\"\n >\n <span\n class=\"text-truncate\"\n [ngStyle]=\"{ cursor: 'pointer' }\"\n title=\"{{ asset.name }}\"\n >\n {{ asset.name }}\n </span>\n </button>\n </div>\n <div class=\"p-t-8 col-xs-12 visible-xs\"></div>\n <div class=\"col-sm-5 p-l-0 col-xs-12 p-r-0\">\n <div class=\"d-flex\">\n <div class=\"flex-grow form-group-sm max-width-100\">\n <c8y-inventory-role-selector-upgraded\n [ownerAllowedRoles]=\"\n ownerAllAssignedRoles ? ownerAllAssignedRoles[asset.id] : undefined\n \"\n [inheritedRoles]=\"inheritedRoles ? inheritedRoles[asset.id] : undefined\"\n [assignedRoles]=\"assignedRoles ? assignedRoles[asset.id] : undefined\"\n [inventoryRoles]=\"inventoryRoles\"\n (onApply)=\"onApply($event, asset.id)\"\n (click)=\"$event.stopPropagation()\"\n ></c8y-inventory-role-selector-upgraded>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No matching group found among the expanded groups.' | translate\"\n [subtitle]=\"'Try to expand more groups or to refine your search term.' | translate\"\n *ngIf=\"searchFilter && !(flatAssetTree$ | async).length\"\n [horizontal]=\"false\"\n ></c8y-ui-empty-state>\n</div>\n", dependencies: [{ kind: "component", type: i2.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i4.InventoryRoleSelector, selector: "c8y-inventory-role-selector-upgraded", inputs: ["assignedRoles", "inheritedRoles", "inventoryRoles", "ownerAllowedRoles"], outputs: ["onApply"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.SlicePipe, name: "slice" }] }); }
|
|
126
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: RolesAssetTreeComponent, selector: "c8y-roles-asset-tree-upgraded", inputs: { user: "user", searchFilter: "searchFilter", assignedRoles: "assignedRoles", ownerAssignedRoles: "ownerAssignedRoles", expandGroups: "expandGroups", pageSize: "pageSize", paginationOffset: "paginationOffset", disableEditForExternalUsers: "disableEditForExternalUsers" }, outputs: { onChangeRoles: "onChangeRoles", onChangeItemCount: "onChangeItemCount" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"c8y-list__group m-b-0 no-border-last\">\n <div\n class=\"c8y-list__item\"\n *ngFor=\"\n let asset of flatAssetTree$ | async | slice: paginationOffset:paginationOffset + pageSize\n \"\n >\n <div\n class=\"c8y-list__item__block\"\n [title]=\"\n (asset._subGroups && asset.isOpened\n ? asset._subGroups.length\n ? asset._subGroups.length > 1\n ? manySubgroupsTitle\n : oneSubgroupTitle\n : noSubgroupTitle\n : clickToOpenTitle\n ) | translate: { count: asset._subGroups?.length }\n \"\n >\n <div [ngStyle]=\"{ 'padding-left': asset._depth * 8 + 'px' }\"></div>\n <div class=\"c8y-list__item__icon m-t-4 p-l-0\">\n <button\n class=\"btn-clean\"\n [attr.aria-label]=\"(!asset.isOpened ? expandAriaLabel : collapseAriaLabel) | translate\"\n type=\"button\"\n (click)=\"loadChildren(asset)\"\n >\n <i\n class=\"c8y-icon-duocolor\"\n c8yIcon=\"c8y-group\"\n *ngIf=\"!asset.isOpened\"\n ></i>\n <i\n class=\"c8y-icon-duocolor\"\n c8yIcon=\"c8y-group-open\"\n *ngIf=\"asset.isOpened\"\n ></i>\n </button>\n </div>\n <div class=\"c8y-list__item__body\">\n <div class=\"d-flex a-i-center\">\n <div class=\"col-sm-7 p-l-0 col-xs-12\">\n <button\n class=\"btn-clean\"\n type=\"button\"\n (click)=\"loadChildren(asset)\"\n >\n <span\n class=\"text-truncate\"\n [ngStyle]=\"{ cursor: 'pointer' }\"\n title=\"{{ asset.name }}\"\n >\n {{ asset.name }}\n </span>\n </button>\n </div>\n <div class=\"p-t-8 col-xs-12 visible-xs\"></div>\n <div class=\"col-sm-5 p-l-0 col-xs-12 p-r-0\">\n <div class=\"d-flex\">\n <div class=\"flex-grow form-group-sm max-width-100\">\n <c8y-inventory-role-selector-upgraded\n [ownerAllowedRoles]=\"\n ownerAllAssignedRoles ? ownerAllAssignedRoles[asset.id] : undefined\n \"\n [inheritedRoles]=\"inheritedRoles ? inheritedRoles[asset.id] : undefined\"\n [assignedRoles]=\"assignedRoles ? assignedRoles[asset.id] : undefined\"\n [inventoryRoles]=\"inventoryRoles\"\n [disableEditForExternalUsers]=\"disableEditForExternalUsers\"\n (onApply)=\"onApply($event, asset.id)\"\n (click)=\"$event.stopPropagation()\"\n ></c8y-inventory-role-selector-upgraded>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No matching group found among the expanded groups.' | translate\"\n [subtitle]=\"'Try to expand more groups or to refine your search term.' | translate\"\n *ngIf=\"searchFilter && !(flatAssetTree$ | async).length\"\n [horizontal]=\"false\"\n ></c8y-ui-empty-state>\n</div>\n", dependencies: [{ kind: "component", type: i2.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i4.InventoryRoleSelector, selector: "c8y-inventory-role-selector-upgraded", inputs: ["assignedRoles", "inheritedRoles", "inventoryRoles", "ownerAllowedRoles", "disableEditForExternalUsers"], outputs: ["onApply"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.SlicePipe, name: "slice" }] }); }
|
|
126
127
|
}
|
|
127
128
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: RolesAssetTreeComponent, decorators: [{
|
|
128
129
|
type: Component,
|
|
129
|
-
args: [{ selector: 'c8y-roles-asset-tree-upgraded', template: "<div class=\"c8y-list__group m-b-0 no-border-last\">\n <div\n class=\"c8y-list__item\"\n *ngFor=\"\n let asset of flatAssetTree$ | async | slice: paginationOffset:paginationOffset + pageSize\n \"\n >\n <div\n class=\"c8y-list__item__block\"\n [title]=\"\n (asset._subGroups && asset.isOpened\n ? asset._subGroups.length\n ? asset._subGroups.length > 1\n ? manySubgroupsTitle\n : oneSubgroupTitle\n : noSubgroupTitle\n : clickToOpenTitle\n ) | translate: { count: asset._subGroups?.length }\n \"\n >\n <div [ngStyle]=\"{ 'padding-left': asset._depth * 8 + 'px' }\"></div>\n <div class=\"c8y-list__item__icon m-t-4 p-l-0\">\n <button\n class=\"btn-clean\"\n [attr.aria-label]=\"(!asset.isOpened ? expandAriaLabel : collapseAriaLabel) | translate\"\n type=\"button\"\n (click)=\"loadChildren(asset)\"\n >\n <i\n class=\"c8y-icon-duocolor\"\n c8yIcon=\"c8y-group\"\n *ngIf=\"!asset.isOpened\"\n ></i>\n <i\n class=\"c8y-icon-duocolor\"\n c8yIcon=\"c8y-group-open\"\n *ngIf=\"asset.isOpened\"\n ></i>\n </button>\n </div>\n <div class=\"c8y-list__item__body\">\n <div class=\"d-flex a-i-center\">\n <div class=\"col-sm-7 p-l-0 col-xs-12\">\n <button\n class=\"btn-clean\"\n type=\"button\"\n (click)=\"loadChildren(asset)\"\n >\n <span\n class=\"text-truncate\"\n [ngStyle]=\"{ cursor: 'pointer' }\"\n title=\"{{ asset.name }}\"\n >\n {{ asset.name }}\n </span>\n </button>\n </div>\n <div class=\"p-t-8 col-xs-12 visible-xs\"></div>\n <div class=\"col-sm-5 p-l-0 col-xs-12 p-r-0\">\n <div class=\"d-flex\">\n <div class=\"flex-grow form-group-sm max-width-100\">\n <c8y-inventory-role-selector-upgraded\n [ownerAllowedRoles]=\"\n ownerAllAssignedRoles ? ownerAllAssignedRoles[asset.id] : undefined\n \"\n [inheritedRoles]=\"inheritedRoles ? inheritedRoles[asset.id] : undefined\"\n [assignedRoles]=\"assignedRoles ? assignedRoles[asset.id] : undefined\"\n [inventoryRoles]=\"inventoryRoles\"\n (onApply)=\"onApply($event, asset.id)\"\n (click)=\"$event.stopPropagation()\"\n ></c8y-inventory-role-selector-upgraded>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No matching group found among the expanded groups.' | translate\"\n [subtitle]=\"'Try to expand more groups or to refine your search term.' | translate\"\n *ngIf=\"searchFilter && !(flatAssetTree$ | async).length\"\n [horizontal]=\"false\"\n ></c8y-ui-empty-state>\n</div>\n" }]
|
|
130
|
+
args: [{ selector: 'c8y-roles-asset-tree-upgraded', template: "<div class=\"c8y-list__group m-b-0 no-border-last\">\n <div\n class=\"c8y-list__item\"\n *ngFor=\"\n let asset of flatAssetTree$ | async | slice: paginationOffset:paginationOffset + pageSize\n \"\n >\n <div\n class=\"c8y-list__item__block\"\n [title]=\"\n (asset._subGroups && asset.isOpened\n ? asset._subGroups.length\n ? asset._subGroups.length > 1\n ? manySubgroupsTitle\n : oneSubgroupTitle\n : noSubgroupTitle\n : clickToOpenTitle\n ) | translate: { count: asset._subGroups?.length }\n \"\n >\n <div [ngStyle]=\"{ 'padding-left': asset._depth * 8 + 'px' }\"></div>\n <div class=\"c8y-list__item__icon m-t-4 p-l-0\">\n <button\n class=\"btn-clean\"\n [attr.aria-label]=\"(!asset.isOpened ? expandAriaLabel : collapseAriaLabel) | translate\"\n type=\"button\"\n (click)=\"loadChildren(asset)\"\n >\n <i\n class=\"c8y-icon-duocolor\"\n c8yIcon=\"c8y-group\"\n *ngIf=\"!asset.isOpened\"\n ></i>\n <i\n class=\"c8y-icon-duocolor\"\n c8yIcon=\"c8y-group-open\"\n *ngIf=\"asset.isOpened\"\n ></i>\n </button>\n </div>\n <div class=\"c8y-list__item__body\">\n <div class=\"d-flex a-i-center\">\n <div class=\"col-sm-7 p-l-0 col-xs-12\">\n <button\n class=\"btn-clean\"\n type=\"button\"\n (click)=\"loadChildren(asset)\"\n >\n <span\n class=\"text-truncate\"\n [ngStyle]=\"{ cursor: 'pointer' }\"\n title=\"{{ asset.name }}\"\n >\n {{ asset.name }}\n </span>\n </button>\n </div>\n <div class=\"p-t-8 col-xs-12 visible-xs\"></div>\n <div class=\"col-sm-5 p-l-0 col-xs-12 p-r-0\">\n <div class=\"d-flex\">\n <div class=\"flex-grow form-group-sm max-width-100\">\n <c8y-inventory-role-selector-upgraded\n [ownerAllowedRoles]=\"\n ownerAllAssignedRoles ? ownerAllAssignedRoles[asset.id] : undefined\n \"\n [inheritedRoles]=\"inheritedRoles ? inheritedRoles[asset.id] : undefined\"\n [assignedRoles]=\"assignedRoles ? assignedRoles[asset.id] : undefined\"\n [inventoryRoles]=\"inventoryRoles\"\n [disableEditForExternalUsers]=\"disableEditForExternalUsers\"\n (onApply)=\"onApply($event, asset.id)\"\n (click)=\"$event.stopPropagation()\"\n ></c8y-inventory-role-selector-upgraded>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No matching group found among the expanded groups.' | translate\"\n [subtitle]=\"'Try to expand more groups or to refine your search term.' | translate\"\n *ngIf=\"searchFilter && !(flatAssetTree$ | async).length\"\n [horizontal]=\"false\"\n ></c8y-ui-empty-state>\n</div>\n" }]
|
|
130
131
|
}], ctorParameters: () => [{ type: i1.Ng1UserInventoryRolesService, decorators: [{
|
|
131
132
|
type: Optional
|
|
132
133
|
}] }, { type: i1.Ng1RolesService, decorators: [{
|
|
@@ -145,9 +146,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
145
146
|
type: Input
|
|
146
147
|
}], paginationOffset: [{
|
|
147
148
|
type: Input
|
|
149
|
+
}], disableEditForExternalUsers: [{
|
|
150
|
+
type: Input
|
|
148
151
|
}], onChangeRoles: [{
|
|
149
152
|
type: Output
|
|
150
153
|
}], onChangeItemCount: [{
|
|
151
154
|
type: Output
|
|
152
155
|
}] } });
|
|
153
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZXMtYXNzZXQtdHJlZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi91c2VyLXJvbGVzL3JvbGVzLWFzc2V0LXRyZWUvcm9sZXMtYXNzZXQtdHJlZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi91c2VyLXJvbGVzL3JvbGVzLWFzc2V0LXRyZWUvcm9sZXMtYXNzZXQtdHJlZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTlDLE9BQU8sRUFDTCxTQUFTLEVBQ1QsR0FBRyxJQUFJLElBQUksRUFDWCxNQUFNLEVBQ04sT0FBTyxFQUNQLE1BQU0sRUFDTixRQUFRLEVBQ1IsUUFBUSxFQUNSLEdBQUcsRUFDSCxNQUFNLEVBQ1AsTUFBTSxXQUFXLENBQUM7QUFDbkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxQyxPQUFPLEVBQ0wsZUFBZSxFQUNmLDRCQUE0QixFQUM3QixNQUFNLCtDQUErQyxDQUFDOzs7Ozs7QUFNdkQsTUFBTSxPQUFPLHVCQUF1QjtJQXVDbEMsWUFDcUIscUJBQW1ELEVBQ25ELFFBQXlCO1FBRHpCLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBOEI7UUFDbkQsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFqQ3BDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNuQyxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBU2pELG9CQUFlLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFD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LEtBQUssQ0FBQztZQUNqQyxPQUFPLGNBQWMsQ0FBQztRQUN4QixDQUFDLEVBQ0QsRUFBRSxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTyxDQUFDLEVBQUUsRUFBRSxlQUFlO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUM7WUFDN0IsZUFBZSxFQUFFLGVBQWU7WUFDaEMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLO1NBQ2hCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBSztRQUNmLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDL0IsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQy9ELENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7OEdBeEpVLHVCQUF1QjtrR0FBdkIsdUJBQXVCLDJZQzFCcEMsd21HQXNGQTs7MkZENURhLHVCQUF1QjtrQkFKbkMsU0FBUzsrQkFDRSwrQkFBK0I7OzBCQTJDdEMsUUFBUTs7MEJBQ1IsUUFBUTt5Q0F4Q0YsSUFBSTtzQkFBWixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDSSxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE9wdGlvbmFsLCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdldHRleHQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcblxuaW1wb3J0IHtcbiAgbWVyZ2VXaXRoLFxuICBtYXAgYXMgX21hcCxcbiAgZmlsdGVyLFxuICBmbGF0dGVuLFxuICB1bmlxQnksXG4gIGlkZW50aXR5LFxuICBwcm9wZXJ0eSxcbiAgZ2V0LFxuICByZWR1Y2Vcbn0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBJSWRlbnRpZmllZCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7XG4gIE5nMVJvbGVzU2VydmljZSxcbiAgTmcxVXNlckludmVudG9yeVJvbGVzU2VydmljZVxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL3VwZ3JhZGUvdXBncmFkZWQtc2VydmljZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktcm9sZXMtYXNzZXQtdHJlZS11cGdyYWRlZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9yb2xlcy1hc3NldC10cmVlLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBSb2xlc0Fzc2V0VHJlZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgdXNlcjtcbiAgQElucHV0KCkgc2VhcmNoRmlsdGVyO1xuICBASW5wdXQoKSBhc3NpZ25lZFJvbGVzO1xuICBASW5wdXQoKSBvd25lckFzc2lnbmVkUm9sZXM7XG4gIEBJbnB1dCgpIGV4cGFuZEdyb3VwcztcbiAgQElucHV0KCkgcGFnZVNpemU7XG4gIEBJbnB1dCgpIHBhZ2luYXRpb25PZmZzZXQ7XG4gIEBPdXRwdXQoKSBvbkNoYW5nZVJvbGVzID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25DaGFuZ2VJdGVtQ291bnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcm9vdEdyb3VwcztcbiAgZmxhdEFzc2V0VHJlZTtcbiAgaW52ZW50b3J5Um9sZXM7XG4gIGxvYWRpbmdBc3NldFRyZWU7XG4gIGluaGVyaXRlZFJvbGVzO1xuICBvd25lckFsbEFzc2lnbmVkUm9sZXM7XG5cbiAgbm9TdWJncm91cFRpdGxlID0gZ2V0dGV4dCgnTm8gc3ViZ3JvdXBzJyk7XG4gIG1hbnlTdWJncm91cHNUaXRsZSA9IGdldHRleHQoJ1N1Ymdyb3Vwczoge3sgY291bnQgfX0nKTtcbiAgb25lU3ViZ3JvdXBUaXRsZSA9IGdldHRleHQoJ1N1Ymdyb3VwOiAxJyk7XG4gIGNsaWNrVG9PcGVuVGl0bGUgPSBnZXR0ZXh0KCdDbGljayB0byBmZXRjaCBzdWJncm91cHMnKTtcbiAgZXhwYW5kQXJpYUxhYmVsID0gZ2V0dGV4dCgnRXhwYW5kJyk7XG4gIGNvbGxhcHNlQXJpYUxhYmVsID0gZ2V0dGV4dCgnQ29sbGFwc2UnKTtcblxuICBzZWFyY2hUZXJtU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG4gIGZsYXRUcmVlU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SUlkZW50aWZpZWRbXT4oW10pO1xuXG4gIGZsYXRBc3NldFRyZWUkID0gY29tYmluZUxhdGVzdChbdGhpcy5zZWFyY2hUZXJtU3ViamVjdCwgdGhpcy5mbGF0VHJlZVN1YmplY3RdKS5waXBlKFxuICAgIG1hcCgoW3NlYXJjaFRlcm0sIGZsYXRUcmVlXSkgPT4ge1xuICAgICAgcmV0dXJuIGZsYXRUcmVlXG4gICAgICAgIC5maWx0ZXIoZ3JvdXAgPT4gZ3JvdXAubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRlcm0udG9Mb3dlckNhc2UoKSkpXG4gICAgICAgIC5maWx0ZXIodGhpcy5maWx0ZXJBc3NldC5iaW5kKHRoaXMpKTtcbiAgICB9KSxcbiAgICB0YXAoZmxhdFRyZWUgPT4ge1xuICAgICAgdGhpcy5vbkNoYW5nZUl0ZW1Db3VudC5lbWl0KGZsYXRUcmVlLmxlbmd0aCk7XG4gICAgfSlcbiAgKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBwdWJsaWMgYzh5VXNlckludmVudG9yeVJvbGVzOiBOZzFVc2VySW52ZW50b3J5Um9sZXNTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHB1YmxpYyBjOHlSb2xlczogTmcxUm9sZXNTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmxvYWRJbnZlbnRvcnlSb2xlcygpO1xuICB9XG5cbiAgbG9hZEFzc2V0VHJlZSgpIHtcbiAgICBjb25zdCBvbmx5Um9vdHNVc2VyID0gdGhpcy51c2VyLm93bmVyO1xuICAgIHJldHVybiB0aGlzLmM4eVVzZXJJbnZlbnRvcnlSb2xlcy5saXN0Um9vdEdyb3Vwcyh7IG9ubHlSb290c1VzZXIgfSkudGhlbihyZXN1bHQgPT4ge1xuICAgICAgdGhpcy5yb290R3JvdXBzID0gcmVzdWx0O1xuICAgICAgdGhpcy51cGRhdGVUcmVlKCk7XG4gICAgfSk7XG4gIH1cblxuICB1cGRhdGVUcmVlKCkge1xuICAgIHRoaXMuZmxhdEFzc2V0VHJlZSA9IHRoaXMuYzh5VXNlckludmVudG9yeVJvbGVzLmZsYXRUcmVlKHRoaXMucm9vdEdyb3Vwcyk7XG4gICAgdGhpcy5zZXRJbmhlcml0ZWRSb2xlcygpO1xuICAgIHRoaXMuZmxhdFRyZWVTdWJqZWN0Lm5leHQodGhpcy5mbGF0QXNzZXRUcmVlKTtcbiAgfVxuXG4gIGxvYWRDaGlsZHJlbihtbykge1xuICAgIGlmIChtby5pc09wZW5lZCkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVyc2NvcmUtZGFuZ2xlXG4gICAgICBtby5fc3ViR3JvdXBzID0gW107XG4gICAgICBtby5pc09wZW5lZCA9IGZhbHNlO1xuICAgICAgdGhpcy51cGRhdGVUcmVlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYzh5VXNlckludmVudG9yeVJvbGVzLmxvYWRDaGlsZHJlbihtbykudGhlbihfID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVUcmVlKCk7XG4gICAgICB9KTtcbiAgICAgIG1vLmlzT3BlbmVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBsb2FkSW52ZW50b3J5Um9sZXMoKSB7XG4gICAgdGhpcy5jOHlSb2xlcy5saXN0KHsgcGFnZVNpemU6IDEwMDAgfSkudGhlbihyb2xlcyA9PiB7XG4gICAgICB0aGlzLmludmVudG9yeVJvbGVzID0gcm9sZXM7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXMuc2VhcmNoRmlsdGVyKSB7XG4gICAgICB0aGlzLnNlYXJjaFRlcm1TdWJqZWN0Lm5leHQodGhpcy5zZWFyY2hGaWx0ZXIgfHwgJycpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlcy51c2VyICYmICF0aGlzLmxvYWRpbmdBc3NldFRyZWUpIHtcbiAgICAgIHRoaXMubG9hZGluZ0Fzc2V0VHJlZSA9IHRoaXMubG9hZEFzc2V0VHJlZSgpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5hc3NpZ25lZFJvbGVzIHx8IGNoYW5nZXMub3duZXJBc3NpZ25lZFJvbGVzKSB7XG4gICAgICB0aGlzLmxvYWRpbmdBc3NldFRyZWUudGhlbih0aGlzLnNldEluaGVyaXRlZFJvbGVzLmJpbmQodGhpcykpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5leHBhbmRHcm91cHMgJiYgdGhpcy5leHBhbmRHcm91cHMpIHtcbiAgICAgIHRoaXMuYzh5VXNlckludmVudG9yeVJvbGVzLmV4cGFuZEFsbCh0aGlzLnJvb3RHcm91cHMsIHRoaXMudXBkYXRlVHJlZS5iaW5kKHRoaXMpKTtcbiAgICB9XG4gIH1cblxuICBzZXRJbmhlcml0ZWRSb2xlcygpIHtcbiAgICBpZiAodGhpcy5hc3NpZ25lZFJvbGVzKSB7XG4gICAgICB0aGlzLmluaGVyaXRlZFJvbGVzID0gdGhpcy5nZXRJbnZlbnRvcnlJbmhlcml0ZWRSb2xlcyh0aGlzLmZsYXRBc3NldFRyZWUsIHRoaXMuYXNzaWduZWRSb2xlcyk7XG4gICAgfVxuICAgIGlmICh0aGlzLm93bmVyQXNzaWduZWRSb2xlcykge1xuICAgICAgY29uc3Qgb3duZXJJbmhlcml0ZWRSb2xlcyA9IHRoaXMuZ2V0SW52ZW50b3J5SW5oZXJpdGVkUm9sZXMoXG4gICAgICAgIHRoaXMuZmxhdEFzc2V0VHJlZSxcbiAgICAgICAgdGhpcy5vd25lckFzc2lnbmVkUm9sZXNcbiAgICAgICk7XG4gICAgICB0aGlzLm93bmVyQWxsQXNzaWduZWRSb2xlcyA9IG1lcmdlV2l0aChcbiAgICAgICAgb3duZXJJbmhlcml0ZWRSb2xlcyxcbiAgICAgICAgdGhpcy5vd25lckFzc2lnbmVkUm9sZXMsXG4gICAgICAgIChvYmpWYWx1ZSwgc3JjVmFsdWUpID0+IHtcbiAgICAgICAgICBpZiAoc3JjVmFsdWUpIHtcbiAgICAgICAgICAgIGlmIChvYmpWYWx1ZSkge1xuICAgICAgICAgICAgICByZXR1cm4gdW5pcUJ5KG9ialZhbHVlLmNvbmNhdChzcmNWYWx1ZS5yb2xlcyksICdpZCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHNyY1ZhbHVlLnJvbGVzO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gb2JqVmFsdWU7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgZ2V0SW52ZW50b3J5SW5oZXJpdGVkUm9sZXMoZmxhdFRyZWUsIGFzc2lnbmVkUm9sZXMpIHtcbiAgICByZXR1cm4gcmVkdWNlKFxuICAgICAgZmxhdFRyZWUsXG4gICAgICAoaW5oZXJpdGVkUm9sZXMsIGFzc2V0KSA9PiB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlcnNjb3JlLWRhbmdsZVxuICAgICAgICBsZXQgY2hhaW4gPSBhc3NldC5fcGFyZW50R3JvdXBzO1xuICAgICAgICBjaGFpbiA9IF9tYXAoY2hhaW4sIGdyb3VwID0+IGdldChhc3NpZ25lZFJvbGVzLCBncm91cC5pZCkpO1xuICAgICAgICBjaGFpbiA9IGZpbHRlcihjaGFpbiwgaWRlbnRpdHkpO1xuICAgICAgICBjaGFpbiA9IF9tYXAoY2hhaW4sIHByb3BlcnR5KCdyb2xlcycpKTtcbiAgICAgICAgY2hhaW4gPSBmbGF0dGVuKGNoYWluKTtcbiAgICAgICAgY2hhaW4gPSB1bmlxQnkoY2hhaW4sICdpZCcpO1xuICAgICAgICBpbmhlcml0ZWRSb2xlc1thc3NldC5pZF0gPSBjaGFpbjtcbiAgICAgICAgcmV0dXJuIGluaGVyaXRlZFJvbGVzO1xuICAgICAgfSxcbiAgICAgIHt9XG4gICAgKTtcbiAgfVxuXG4gIG9uQXBwbHkoZXYsIG1hbmFnZWRPYmplY3RJZCkge1xuICAgIHJldHVybiB0aGlzLm9uQ2hhbmdlUm9sZXMuZW1pdCh7XG4gICAgICBtYW5hZ2VkT2JqZWN0SWQ6IG1hbmFnZWRPYmplY3RJZCxcbiAgICAgIHJvbGVzOiBldi5yb2xlc1xuICAgIH0pO1xuICB9XG5cbiAgZmlsdGVyQXNzZXQoYXNzZXQpIHtcbiAgICBpZiAodGhpcy5vd25lckFsbEFzc2lnbmVkUm9sZXMpIHtcbiAgICAgIHJldHVybiBnZXQodGhpcy5vd25lckFsbEFzc2lnbmVkUm9sZXMsIFthc3NldC5pZCwgJ2xlbmd0aCddKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjOHktbGlzdF9fZ3JvdXAgbS1iLTAgbm8tYm9yZGVyLWxhc3RcIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiYzh5LWxpc3RfX2l0ZW1cIlxuICAgICpuZ0Zvcj1cIlxuICAgICAgbGV0IGFzc2V0IG9mIGZsYXRBc3NldFRyZWUkIHwgYXN5bmMgfCBzbGljZTogcGFnaW5hdGlvbk9mZnNldDpwYWdpbmF0aW9uT2Zmc2V0ICsgcGFnZVNpemVcbiAgICBcIlxuICA+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJjOHktbGlzdF9faXRlbV9fYmxvY2tcIlxuICAgICAgW3RpdGxlXT1cIlxuICAgICAgICAoYXNzZXQuX3N1Ykdyb3VwcyAmJiBhc3NldC5pc09wZW5lZFxuICAgICAgICAgID8gYXNzZXQuX3N1Ykdyb3Vwcy5sZW5ndGhcbiAgICAgICAgICAgID8gYXNzZXQuX3N1Ykdyb3Vwcy5sZW5ndGggPiAxXG4gICAgICAgICAgICAgID8gbWFueVN1Ymdyb3Vwc1RpdGxlXG4gICAgICAgICAgICAgIDogb25lU3ViZ3JvdXBUaXRsZVxuICAgICAgICAgICAgOiBub1N1Ymdyb3VwVGl0bGVcbiAgICAgICAgICA6IGNsaWNrVG9PcGVuVGl0bGVcbiAgICAgICAgKSB8IHRyYW5zbGF0ZTogeyBjb3VudDogYXNzZXQuX3N1Ykdyb3Vwcz8ubGVuZ3RoIH1cbiAgICAgIFwiXG4gICAgPlxuICAgICAgPGRpdiBbbmdTdHlsZV09XCJ7ICdwYWRkaW5nLWxlZnQnOiBhc3NldC5fZGVwdGggKiA4ICsgJ3B4JyB9XCI+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiYzh5LWxpc3RfX2l0ZW1fX2ljb24gbS10LTQgcC1sLTBcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYnRuLWNsZWFuXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIighYXNzZXQuaXNPcGVuZWQgPyBleHBhbmRBcmlhTGFiZWwgOiBjb2xsYXBzZUFyaWFMYWJlbCkgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIChjbGljayk9XCJsb2FkQ2hpbGRyZW4oYXNzZXQpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpXG4gICAgICAgICAgICBjbGFzcz1cImM4eS1pY29uLWR1b2NvbG9yXCJcbiAgICAgICAgICAgIGM4eUljb249XCJjOHktZ3JvdXBcIlxuICAgICAgICAgICAgKm5nSWY9XCIhYXNzZXQuaXNPcGVuZWRcIlxuICAgICAgICAgID48L2k+XG4gICAgICAgICAgPGlcbiAgICAgICAgICAgIGNsYXNzPVwiYzh5LWljb24tZHVvY29sb3JcIlxuICAgICAgICAgICAgYzh5SWNvbj1cImM4eS1ncm91cC1vcGVuXCJcbiAgICAgICAgICAgICpuZ0lmPVwiYXNzZXQuaXNPcGVuZWRcIlxuICAgICAgICAgID48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiYzh5LWxpc3RfX2l0ZW1fX2JvZHlcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhLWktY2VudGVyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS03IHAtbC0wIGNvbC14cy0xMlwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1jbGVhblwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwibG9hZENoaWxkcmVuKGFzc2V0KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCJcbiAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7IGN1cnNvcjogJ3BvaW50ZXInIH1cIlxuICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgYXNzZXQubmFtZSB9fVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBhc3NldC5uYW1lIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLXQtOCBjb2wteHMtMTIgdmlzaWJsZS14c1wiPjwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNSBwLWwtMCBjb2wteHMtMTIgcC1yLTBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtZ3JvdyBmb3JtLWdyb3VwLXNtIG1heC13aWR0aC0xMDBcIj5cbiAgICAgICAgICAgICAgICA8Yzh5LWludmVudG9yeS1yb2xlLXNlbGVjdG9yLXVwZ3JhZGVkXG4gICAgICAgICAgICAgICAgICBbb3duZXJBbGxvd2VkUm9sZXNdPVwiXG4gICAgICAgICAgICAgICAgICAgIG93bmVyQWxsQXNzaWduZWRSb2xlcyA/IG93bmVyQWxsQXNzaWduZWRSb2xlc1thc3NldC5pZF0gOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICBbaW5oZXJpdGVkUm9sZXNdPVwiaW5oZXJpdGVkUm9sZXMgPyBpbmhlcml0ZWRSb2xlc1thc3NldC5pZF0gOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgICAgICAgW2Fzc2lnbmVkUm9sZXNdPVwiYXNzaWduZWRSb2xlcyA/IGFzc2lnbmVkUm9sZXNbYXNzZXQuaWRdIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgICAgICAgIFtpbnZlbnRvcnlSb2xlc109XCJpbnZlbnRvcnlSb2xlc1wiXG4gICAgICAgICAgICAgICAgICAob25BcHBseSk9XCJvbkFwcGx5KCRldmVudCwgYXNzZXQuaWQpXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgID48L2M4eS1pbnZlbnRvcnktcm9sZS1zZWxlY3Rvci11cGdyYWRlZD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxjOHktdWktZW1wdHktc3RhdGVcbiAgICBbaWNvbl09XCInc2VhcmNoJ1wiXG4gICAgW3RpdGxlXT1cIidObyBtYXRjaGluZyBncm91cCBmb3VuZCBhbW9uZyB0aGUgZXhwYW5kZWQgZ3JvdXBzLicgfCB0cmFuc2xhdGVcIlxuICAgIFtzdWJ0aXRsZV09XCInVHJ5IHRvIGV4cGFuZCBtb3JlIGdyb3VwcyBvciB0byByZWZpbmUgeW91ciBzZWFyY2ggdGVybS4nIHwgdHJhbnNsYXRlXCJcbiAgICAqbmdJZj1cInNlYXJjaEZpbHRlciAmJiAhKGZsYXRBc3NldFRyZWUkIHwgYXN5bmMpLmxlbmd0aFwiXG4gICAgW2hvcml6b250YWxdPVwiZmFsc2VcIlxuICA+PC9jOHktdWktZW1wdHktc3RhdGU+XG48L2Rpdj5cbiJdfQ==
|
|
156
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZXMtYXNzZXQtdHJlZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi91c2VyLXJvbGVzL3JvbGVzLWFzc2V0LXRyZWUvcm9sZXMtYXNzZXQtdHJlZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi91c2VyLXJvbGVzL3JvbGVzLWFzc2V0LXRyZWUvcm9sZXMtYXNzZXQtdHJlZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTlDLE9BQU8sRUFDTCxTQUFTLEVBQ1QsR0FBRyxJQUFJLElBQUksRUFDWCxNQUFNLEVBQ04sT0FBTyxFQUNQLE1BQU0sRUFDTixRQUFRLEVBQ1IsUUFBUSxFQUNSLEdBQUcsRUFDSCxNQUFNLEVBQ1AsTUFBTSxXQUFXLENBQUM7QUFDbkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxQyxPQUFPLEVBQ0wsZUFBZSxFQUNmLDRCQUE0QixFQUM3QixNQUFNLCtDQUErQyxDQUFDOzs7Ozs7QUFNdkQsTUFBTSxPQUFPLHVCQUF1QjtJQXdDbEMsWUFDcUIscUJBQW1ELEVBQ25ELFFBQXlCO1FBRHpCLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBOEI7UUFDbkQsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFsQ3JDLGdDQUEyQixHQUFHLEtBQUssQ0FBQztRQUNuQyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbkMsc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQVNqRCxvQkFBZSxH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QUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDakMsT0FBTyxjQUFjLENBQUM7UUFDeEIsQ0FBQyxFQUNELEVBQUUsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELE9BQU8sQ0FBQyxFQUFFLEVBQUUsZUFBZTtRQUN6QixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO1lBQzdCLGVBQWUsRUFBRSxlQUFlO1lBQ2hDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSztTQUNoQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQUs7UUFDZixJQUFJLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQy9CLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUMvRCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOzhHQXpKVSx1QkFBdUI7a0dBQXZCLHVCQUF1Qix1Y0MxQnBDLHlyR0F1RkE7OzJGRDdEYSx1QkFBdUI7a0JBSm5DLFNBQVM7K0JBQ0UsK0JBQStCOzswQkE0Q3RDLFFBQVE7OzBCQUNSLFFBQVE7eUNBekNGLElBQUk7c0JBQVosS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csMkJBQTJCO3NCQUFuQyxLQUFLO2dCQUNJLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3B0aW9uYWwsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZ2V0dGV4dCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuXG5pbXBvcnQge1xuICBtZXJnZVdpdGgsXG4gIG1hcCBhcyBfbWFwLFxuICBmaWx0ZXIsXG4gIGZsYXR0ZW4sXG4gIHVuaXFCeSxcbiAgaWRlbnRpdHksXG4gIHByb3BlcnR5LFxuICBnZXQsXG4gIHJlZHVjZVxufSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IElJZGVudGlmaWVkIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHtcbiAgTmcxUm9sZXNTZXJ2aWNlLFxuICBOZzFVc2VySW52ZW50b3J5Um9sZXNTZXJ2aWNlXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvdXBncmFkZS91cGdyYWRlZC1zZXJ2aWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1yb2xlcy1hc3NldC10cmVlLXVwZ3JhZGVkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JvbGVzLWFzc2V0LXRyZWUuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFJvbGVzQXNzZXRUcmVlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSB1c2VyO1xuICBASW5wdXQoKSBzZWFyY2hGaWx0ZXI7XG4gIEBJbnB1dCgpIGFzc2lnbmVkUm9sZXM7XG4gIEBJbnB1dCgpIG93bmVyQXNzaWduZWRSb2xlcztcbiAgQElucHV0KCkgZXhwYW5kR3JvdXBzO1xuICBASW5wdXQoKSBwYWdlU2l6ZTtcbiAgQElucHV0KCkgcGFnaW5hdGlvbk9mZnNldDtcbiAgQElucHV0KCkgZGlzYWJsZUVkaXRGb3JFeHRlcm5hbFVzZXJzID0gZmFsc2U7XG4gIEBPdXRwdXQoKSBvbkNoYW5nZVJvbGVzID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25DaGFuZ2VJdGVtQ291bnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcm9vdEdyb3VwcztcbiAgZmxhdEFzc2V0VHJlZTtcbiAgaW52ZW50b3J5Um9sZXM7XG4gIGxvYWRpbmdBc3NldFRyZWU7XG4gIGluaGVyaXRlZFJvbGVzO1xuICBvd25lckFsbEFzc2lnbmVkUm9sZXM7XG5cbiAgbm9TdWJncm91cFRpdGxlID0gZ2V0dGV4dCgnTm8gc3ViZ3JvdXBzJyk7XG4gIG1hbnlTdWJncm91cHNUaXRsZSA9IGdldHRleHQoJ1N1Ymdyb3Vwczoge3sgY291bnQgfX0nKTtcbiAgb25lU3ViZ3JvdXBUaXRsZSA9IGdldHRleHQoJ1N1Ymdyb3VwOiAxJyk7XG4gIGNsaWNrVG9PcGVuVGl0bGUgPSBnZXR0ZXh0KCdDbGljayB0byBmZXRjaCBzdWJncm91cHMnKTtcbiAgZXhwYW5kQXJpYUxhYmVsID0gZ2V0dGV4dCgnRXhwYW5kJyk7XG4gIGNvbGxhcHNlQXJpYUxhYmVsID0gZ2V0dGV4dCgnQ29sbGFwc2UnKTtcblxuICBzZWFyY2hUZXJtU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG4gIGZsYXRUcmVlU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SUlkZW50aWZpZWRbXT4oW10pO1xuXG4gIGZsYXRBc3NldFRyZWUkID0gY29tYmluZUxhdGVzdChbdGhpcy5zZWFyY2hUZXJtU3ViamVjdCwgdGhpcy5mbGF0VHJlZVN1YmplY3RdKS5waXBlKFxuICAgIG1hcCgoW3NlYXJjaFRlcm0sIGZsYXRUcmVlXSkgPT4ge1xuICAgICAgcmV0dXJuIGZsYXRUcmVlXG4gICAgICAgIC5maWx0ZXIoZ3JvdXAgPT4gZ3JvdXAubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRlcm0udG9Mb3dlckNhc2UoKSkpXG4gICAgICAgIC5maWx0ZXIodGhpcy5maWx0ZXJBc3NldC5iaW5kKHRoaXMpKTtcbiAgICB9KSxcbiAgICB0YXAoZmxhdFRyZWUgPT4ge1xuICAgICAgdGhpcy5vbkNoYW5nZUl0ZW1Db3VudC5lbWl0KGZsYXRUcmVlLmxlbmd0aCk7XG4gICAgfSlcbiAgKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBwdWJsaWMgYzh5VXNlckludmVudG9yeVJvbGVzOiBOZzFVc2VySW52ZW50b3J5Um9sZXNTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHB1YmxpYyBjOHlSb2xlczogTmcxUm9sZXNTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmxvYWRJbnZlbnRvcnlSb2xlcygpO1xuICB9XG5cbiAgbG9hZEFzc2V0VHJlZSgpIHtcbiAgICBjb25zdCBvbmx5Um9vdHNVc2VyID0gdGhpcy51c2VyLm93bmVyO1xuICAgIHJldHVybiB0aGlzLmM4eVVzZXJJbnZlbnRvcnlSb2xlcy5saXN0Um9vdEdyb3Vwcyh7IG9ubHlSb290c1VzZXIgfSkudGhlbihyZXN1bHQgPT4ge1xuICAgICAgdGhpcy5yb290R3JvdXBzID0gcmVzdWx0O1xuICAgICAgdGhpcy51cGRhdGVUcmVlKCk7XG4gICAgfSk7XG4gIH1cblxuICB1cGRhdGVUcmVlKCkge1xuICAgIHRoaXMuZmxhdEFzc2V0VHJlZSA9IHRoaXMuYzh5VXNlckludmVudG9yeVJvbGVzLmZsYXRUcmVlKHRoaXMucm9vdEdyb3Vwcyk7XG4gICAgdGhpcy5zZXRJbmhlcml0ZWRSb2xlcygpO1xuICAgIHRoaXMuZmxhdFRyZWVTdWJqZWN0Lm5leHQodGhpcy5mbGF0QXNzZXRUcmVlKTtcbiAgfVxuXG4gIGxvYWRDaGlsZHJlbihtbykge1xuICAgIGlmIChtby5pc09wZW5lZCkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVyc2NvcmUtZGFuZ2xlXG4gICAgICBtby5fc3ViR3JvdXBzID0gW107XG4gICAgICBtby5pc09wZW5lZCA9IGZhbHNlO1xuICAgICAgdGhpcy51cGRhdGVUcmVlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYzh5VXNlckludmVudG9yeVJvbGVzLmxvYWRDaGlsZHJlbihtbykudGhlbihfID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVUcmVlKCk7XG4gICAgICB9KTtcbiAgICAgIG1vLmlzT3BlbmVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBsb2FkSW52ZW50b3J5Um9sZXMoKSB7XG4gICAgdGhpcy5jOHlSb2xlcy5saXN0KHsgcGFnZVNpemU6IDEwMDAgfSkudGhlbihyb2xlcyA9PiB7XG4gICAgICB0aGlzLmludmVudG9yeVJvbGVzID0gcm9sZXM7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXMuc2VhcmNoRmlsdGVyKSB7XG4gICAgICB0aGlzLnNlYXJjaFRlcm1TdWJqZWN0Lm5leHQodGhpcy5zZWFyY2hGaWx0ZXIgfHwgJycpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlcy51c2VyICYmICF0aGlzLmxvYWRpbmdBc3NldFRyZWUpIHtcbiAgICAgIHRoaXMubG9hZGluZ0Fzc2V0VHJlZSA9IHRoaXMubG9hZEFzc2V0VHJlZSgpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5hc3NpZ25lZFJvbGVzIHx8IGNoYW5nZXMub3duZXJBc3NpZ25lZFJvbGVzKSB7XG4gICAgICB0aGlzLmxvYWRpbmdBc3NldFRyZWUudGhlbih0aGlzLnNldEluaGVyaXRlZFJvbGVzLmJpbmQodGhpcykpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5leHBhbmRHcm91cHMgJiYgdGhpcy5leHBhbmRHcm91cHMpIHtcbiAgICAgIHRoaXMuYzh5VXNlckludmVudG9yeVJvbGVzLmV4cGFuZEFsbCh0aGlzLnJvb3RHcm91cHMsIHRoaXMudXBkYXRlVHJlZS5iaW5kKHRoaXMpKTtcbiAgICB9XG4gIH1cblxuICBzZXRJbmhlcml0ZWRSb2xlcygpIHtcbiAgICBpZiAodGhpcy5hc3NpZ25lZFJvbGVzKSB7XG4gICAgICB0aGlzLmluaGVyaXRlZFJvbGVzID0gdGhpcy5nZXRJbnZlbnRvcnlJbmhlcml0ZWRSb2xlcyh0aGlzLmZsYXRBc3NldFRyZWUsIHRoaXMuYXNzaWduZWRSb2xlcyk7XG4gICAgfVxuICAgIGlmICh0aGlzLm93bmVyQXNzaWduZWRSb2xlcykge1xuICAgICAgY29uc3Qgb3duZXJJbmhlcml0ZWRSb2xlcyA9IHRoaXMuZ2V0SW52ZW50b3J5SW5oZXJpdGVkUm9sZXMoXG4gICAgICAgIHRoaXMuZmxhdEFzc2V0VHJlZSxcbiAgICAgICAgdGhpcy5vd25lckFzc2lnbmVkUm9sZXNcbiAgICAgICk7XG4gICAgICB0aGlzLm93bmVyQWxsQXNzaWduZWRSb2xlcyA9IG1lcmdlV2l0aChcbiAgICAgICAgb3duZXJJbmhlcml0ZWRSb2xlcyxcbiAgICAgICAgdGhpcy5vd25lckFzc2lnbmVkUm9sZXMsXG4gICAgICAgIChvYmpWYWx1ZSwgc3JjVmFsdWUpID0+IHtcbiAgICAgICAgICBpZiAoc3JjVmFsdWUpIHtcbiAgICAgICAgICAgIGlmIChvYmpWYWx1ZSkge1xuICAgICAgICAgICAgICByZXR1cm4gdW5pcUJ5KG9ialZhbHVlLmNvbmNhdChzcmNWYWx1ZS5yb2xlcyksICdpZCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHNyY1ZhbHVlLnJvbGVzO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gb2JqVmFsdWU7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgZ2V0SW52ZW50b3J5SW5oZXJpdGVkUm9sZXMoZmxhdFRyZWUsIGFzc2lnbmVkUm9sZXMpIHtcbiAgICByZXR1cm4gcmVkdWNlKFxuICAgICAgZmxhdFRyZWUsXG4gICAgICAoaW5oZXJpdGVkUm9sZXMsIGFzc2V0KSA9PiB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlcnNjb3JlLWRhbmdsZVxuICAgICAgICBsZXQgY2hhaW4gPSBhc3NldC5fcGFyZW50R3JvdXBzO1xuICAgICAgICBjaGFpbiA9IF9tYXAoY2hhaW4sIGdyb3VwID0+IGdldChhc3NpZ25lZFJvbGVzLCBncm91cC5pZCkpO1xuICAgICAgICBjaGFpbiA9IGZpbHRlcihjaGFpbiwgaWRlbnRpdHkpO1xuICAgICAgICBjaGFpbiA9IF9tYXAoY2hhaW4sIHByb3BlcnR5KCdyb2xlcycpKTtcbiAgICAgICAgY2hhaW4gPSBmbGF0dGVuKGNoYWluKTtcbiAgICAgICAgY2hhaW4gPSB1bmlxQnkoY2hhaW4sICdpZCcpO1xuICAgICAgICBpbmhlcml0ZWRSb2xlc1thc3NldC5pZF0gPSBjaGFpbjtcbiAgICAgICAgcmV0dXJuIGluaGVyaXRlZFJvbGVzO1xuICAgICAgfSxcbiAgICAgIHt9XG4gICAgKTtcbiAgfVxuXG4gIG9uQXBwbHkoZXYsIG1hbmFnZWRPYmplY3RJZCkge1xuICAgIHJldHVybiB0aGlzLm9uQ2hhbmdlUm9sZXMuZW1pdCh7XG4gICAgICBtYW5hZ2VkT2JqZWN0SWQ6IG1hbmFnZWRPYmplY3RJZCxcbiAgICAgIHJvbGVzOiBldi5yb2xlc1xuICAgIH0pO1xuICB9XG5cbiAgZmlsdGVyQXNzZXQoYXNzZXQpIHtcbiAgICBpZiAodGhpcy5vd25lckFsbEFzc2lnbmVkUm9sZXMpIHtcbiAgICAgIHJldHVybiBnZXQodGhpcy5vd25lckFsbEFzc2lnbmVkUm9sZXMsIFthc3NldC5pZCwgJ2xlbmd0aCddKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjOHktbGlzdF9fZ3JvdXAgbS1iLTAgbm8tYm9yZGVyLWxhc3RcIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiYzh5LWxpc3RfX2l0ZW1cIlxuICAgICpuZ0Zvcj1cIlxuICAgICAgbGV0IGFzc2V0IG9mIGZsYXRBc3NldFRyZWUkIHwgYXN5bmMgfCBzbGljZTogcGFnaW5hdGlvbk9mZnNldDpwYWdpbmF0aW9uT2Zmc2V0ICsgcGFnZVNpemVcbiAgICBcIlxuICA+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJjOHktbGlzdF9faXRlbV9fYmxvY2tcIlxuICAgICAgW3RpdGxlXT1cIlxuICAgICAgICAoYXNzZXQuX3N1Ykdyb3VwcyAmJiBhc3NldC5pc09wZW5lZFxuICAgICAgICAgID8gYXNzZXQuX3N1Ykdyb3Vwcy5sZW5ndGhcbiAgICAgICAgICAgID8gYXNzZXQuX3N1Ykdyb3Vwcy5sZW5ndGggPiAxXG4gICAgICAgICAgICAgID8gbWFueVN1Ymdyb3Vwc1RpdGxlXG4gICAgICAgICAgICAgIDogb25lU3ViZ3JvdXBUaXRsZVxuICAgICAgICAgICAgOiBub1N1Ymdyb3VwVGl0bGVcbiAgICAgICAgICA6IGNsaWNrVG9PcGVuVGl0bGVcbiAgICAgICAgKSB8IHRyYW5zbGF0ZTogeyBjb3VudDogYXNzZXQuX3N1Ykdyb3Vwcz8ubGVuZ3RoIH1cbiAgICAgIFwiXG4gICAgPlxuICAgICAgPGRpdiBbbmdTdHlsZV09XCJ7ICdwYWRkaW5nLWxlZnQnOiBhc3NldC5fZGVwdGggKiA4ICsgJ3B4JyB9XCI+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiYzh5LWxpc3RfX2l0ZW1fX2ljb24gbS10LTQgcC1sLTBcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYnRuLWNsZWFuXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIighYXNzZXQuaXNPcGVuZWQgPyBleHBhbmRBcmlhTGFiZWwgOiBjb2xsYXBzZUFyaWFMYWJlbCkgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIChjbGljayk9XCJsb2FkQ2hpbGRyZW4oYXNzZXQpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpXG4gICAgICAgICAgICBjbGFzcz1cImM4eS1pY29uLWR1b2NvbG9yXCJcbiAgICAgICAgICAgIGM4eUljb249XCJjOHktZ3JvdXBcIlxuICAgICAgICAgICAgKm5nSWY9XCIhYXNzZXQuaXNPcGVuZWRcIlxuICAgICAgICAgID48L2k+XG4gICAgICAgICAgPGlcbiAgICAgICAgICAgIGNsYXNzPVwiYzh5LWljb24tZHVvY29sb3JcIlxuICAgICAgICAgICAgYzh5SWNvbj1cImM4eS1ncm91cC1vcGVuXCJcbiAgICAgICAgICAgICpuZ0lmPVwiYXNzZXQuaXNPcGVuZWRcIlxuICAgICAgICAgID48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiYzh5LWxpc3RfX2l0ZW1fX2JvZHlcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhLWktY2VudGVyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS03IHAtbC0wIGNvbC14cy0xMlwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1jbGVhblwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwibG9hZENoaWxkcmVuKGFzc2V0KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCJcbiAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7IGN1cnNvcjogJ3BvaW50ZXInIH1cIlxuICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgYXNzZXQubmFtZSB9fVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBhc3NldC5uYW1lIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLXQtOCBjb2wteHMtMTIgdmlzaWJsZS14c1wiPjwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNSBwLWwtMCBjb2wteHMtMTIgcC1yLTBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtZ3JvdyBmb3JtLWdyb3VwLXNtIG1heC13aWR0aC0xMDBcIj5cbiAgICAgICAgICAgICAgICA8Yzh5LWludmVudG9yeS1yb2xlLXNlbGVjdG9yLXVwZ3JhZGVkXG4gICAgICAgICAgICAgICAgICBbb3duZXJBbGxvd2VkUm9sZXNdPVwiXG4gICAgICAgICAgICAgICAgICAgIG93bmVyQWxsQXNzaWduZWRSb2xlcyA/IG93bmVyQWxsQXNzaWduZWRSb2xlc1thc3NldC5pZF0gOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICBbaW5oZXJpdGVkUm9sZXNdPVwiaW5oZXJpdGVkUm9sZXMgPyBpbmhlcml0ZWRSb2xlc1thc3NldC5pZF0gOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgICAgICAgW2Fzc2lnbmVkUm9sZXNdPVwiYXNzaWduZWRSb2xlcyA/IGFzc2lnbmVkUm9sZXNbYXNzZXQuaWRdIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgICAgICAgIFtpbnZlbnRvcnlSb2xlc109XCJpbnZlbnRvcnlSb2xlc1wiXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZUVkaXRGb3JFeHRlcm5hbFVzZXJzXT1cImRpc2FibGVFZGl0Rm9yRXh0ZXJuYWxVc2Vyc1wiXG4gICAgICAgICAgICAgICAgICAob25BcHBseSk9XCJvbkFwcGx5KCRldmVudCwgYXNzZXQuaWQpXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgID48L2M4eS1pbnZlbnRvcnktcm9sZS1zZWxlY3Rvci11cGdyYWRlZD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxjOHktdWktZW1wdHktc3RhdGVcbiAgICBbaWNvbl09XCInc2VhcmNoJ1wiXG4gICAgW3RpdGxlXT1cIidObyBtYXRjaGluZyBncm91cCBmb3VuZCBhbW9uZyB0aGUgZXhwYW5kZWQgZ3JvdXBzLicgfCB0cmFuc2xhdGVcIlxuICAgIFtzdWJ0aXRsZV09XCInVHJ5IHRvIGV4cGFuZCBtb3JlIGdyb3VwcyBvciB0byByZWZpbmUgeW91ciBzZWFyY2ggdGVybS4nIHwgdHJhbnNsYXRlXCJcbiAgICAqbmdJZj1cInNlYXJjaEZpbHRlciAmJiAhKGZsYXRBc3NldFRyZWUkIHwgYXN5bmMpLmxlbmd0aFwiXG4gICAgW2hvcml6b250YWxdPVwiZmFsc2VcIlxuICA+PC9jOHktdWktZW1wdHktc3RhdGU+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -14,7 +14,7 @@ class InventoryRoleSelector extends UpgradeComponent {
|
|
|
14
14
|
super('c8yInventoryRoleSelector', elementRef, injector);
|
|
15
15
|
}
|
|
16
16
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: InventoryRoleSelector, deps: [{ token: i0.ElementRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
17
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.9", type: InventoryRoleSelector, selector: "c8y-inventory-role-selector-upgraded", inputs: { assignedRoles: "assignedRoles", inheritedRoles: "inheritedRoles", inventoryRoles: "inventoryRoles", ownerAllowedRoles: "ownerAllowedRoles" }, outputs: { onApply: "onApply" }, usesInheritance: true, ngImport: i0 }); }
|
|
17
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.9", type: InventoryRoleSelector, selector: "c8y-inventory-role-selector-upgraded", inputs: { assignedRoles: "assignedRoles", inheritedRoles: "inheritedRoles", inventoryRoles: "inventoryRoles", ownerAllowedRoles: "ownerAllowedRoles", disableEditForExternalUsers: "disableEditForExternalUsers" }, outputs: { onApply: "onApply" }, usesInheritance: true, ngImport: i0 }); }
|
|
18
18
|
}
|
|
19
19
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: InventoryRoleSelector, decorators: [{
|
|
20
20
|
type: Directive,
|
|
@@ -29,6 +29,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
29
29
|
type: Input
|
|
30
30
|
}], ownerAllowedRoles: [{
|
|
31
31
|
type: Input
|
|
32
|
+
}], disableEditForExternalUsers: [{
|
|
33
|
+
type: Input
|
|
32
34
|
}], onApply: [{
|
|
33
35
|
type: Output
|
|
34
36
|
}] } });
|
|
@@ -37,6 +39,7 @@ class RolesAssetTreeComponent {
|
|
|
37
39
|
constructor(c8yUserInventoryRoles, c8yRoles) {
|
|
38
40
|
this.c8yUserInventoryRoles = c8yUserInventoryRoles;
|
|
39
41
|
this.c8yRoles = c8yRoles;
|
|
42
|
+
this.disableEditForExternalUsers = false;
|
|
40
43
|
this.onChangeRoles = new EventEmitter();
|
|
41
44
|
this.onChangeItemCount = new EventEmitter();
|
|
42
45
|
this.noSubgroupTitle = gettext('No subgroups');
|
|
@@ -146,11 +149,11 @@ class RolesAssetTreeComponent {
|
|
|
146
149
|
return true;
|
|
147
150
|
}
|
|
148
151
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: RolesAssetTreeComponent, deps: [{ token: i1.Ng1UserInventoryRolesService, optional: true }, { token: i1.Ng1RolesService, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
149
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: RolesAssetTreeComponent, selector: "c8y-roles-asset-tree-upgraded", inputs: { user: "user", searchFilter: "searchFilter", assignedRoles: "assignedRoles", ownerAssignedRoles: "ownerAssignedRoles", expandGroups: "expandGroups", pageSize: "pageSize", paginationOffset: "paginationOffset" }, outputs: { onChangeRoles: "onChangeRoles", onChangeItemCount: "onChangeItemCount" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"c8y-list__group m-b-0 no-border-last\">\n <div\n class=\"c8y-list__item\"\n *ngFor=\"\n let asset of flatAssetTree$ | async | slice: paginationOffset:paginationOffset + pageSize\n \"\n >\n <div\n class=\"c8y-list__item__block\"\n [title]=\"\n (asset._subGroups && asset.isOpened\n ? asset._subGroups.length\n ? asset._subGroups.length > 1\n ? manySubgroupsTitle\n : oneSubgroupTitle\n : noSubgroupTitle\n : clickToOpenTitle\n ) | translate: { count: asset._subGroups?.length }\n \"\n >\n <div [ngStyle]=\"{ 'padding-left': asset._depth * 8 + 'px' }\"></div>\n <div class=\"c8y-list__item__icon m-t-4 p-l-0\">\n <button\n class=\"btn-clean\"\n [attr.aria-label]=\"(!asset.isOpened ? expandAriaLabel : collapseAriaLabel) | translate\"\n type=\"button\"\n (click)=\"loadChildren(asset)\"\n >\n <i\n class=\"c8y-icon-duocolor\"\n c8yIcon=\"c8y-group\"\n *ngIf=\"!asset.isOpened\"\n ></i>\n <i\n class=\"c8y-icon-duocolor\"\n c8yIcon=\"c8y-group-open\"\n *ngIf=\"asset.isOpened\"\n ></i>\n </button>\n </div>\n <div class=\"c8y-list__item__body\">\n <div class=\"d-flex a-i-center\">\n <div class=\"col-sm-7 p-l-0 col-xs-12\">\n <button\n class=\"btn-clean\"\n type=\"button\"\n (click)=\"loadChildren(asset)\"\n >\n <span\n class=\"text-truncate\"\n [ngStyle]=\"{ cursor: 'pointer' }\"\n title=\"{{ asset.name }}\"\n >\n {{ asset.name }}\n </span>\n </button>\n </div>\n <div class=\"p-t-8 col-xs-12 visible-xs\"></div>\n <div class=\"col-sm-5 p-l-0 col-xs-12 p-r-0\">\n <div class=\"d-flex\">\n <div class=\"flex-grow form-group-sm max-width-100\">\n <c8y-inventory-role-selector-upgraded\n [ownerAllowedRoles]=\"\n ownerAllAssignedRoles ? ownerAllAssignedRoles[asset.id] : undefined\n \"\n [inheritedRoles]=\"inheritedRoles ? inheritedRoles[asset.id] : undefined\"\n [assignedRoles]=\"assignedRoles ? assignedRoles[asset.id] : undefined\"\n [inventoryRoles]=\"inventoryRoles\"\n (onApply)=\"onApply($event, asset.id)\"\n (click)=\"$event.stopPropagation()\"\n ></c8y-inventory-role-selector-upgraded>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No matching group found among the expanded groups.' | translate\"\n [subtitle]=\"'Try to expand more groups or to refine your search term.' | translate\"\n *ngIf=\"searchFilter && !(flatAssetTree$ | async).length\"\n [horizontal]=\"false\"\n ></c8y-ui-empty-state>\n</div>\n", dependencies: [{ kind: "component", type: i2.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: InventoryRoleSelector, selector: "c8y-inventory-role-selector-upgraded", inputs: ["assignedRoles", "inheritedRoles", "inventoryRoles", "ownerAllowedRoles"], outputs: ["onApply"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.SlicePipe, name: "slice" }] }); }
|
|
152
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: RolesAssetTreeComponent, selector: "c8y-roles-asset-tree-upgraded", inputs: { user: "user", searchFilter: "searchFilter", assignedRoles: "assignedRoles", ownerAssignedRoles: "ownerAssignedRoles", expandGroups: "expandGroups", pageSize: "pageSize", paginationOffset: "paginationOffset", disableEditForExternalUsers: "disableEditForExternalUsers" }, outputs: { onChangeRoles: "onChangeRoles", onChangeItemCount: "onChangeItemCount" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"c8y-list__group m-b-0 no-border-last\">\n <div\n class=\"c8y-list__item\"\n *ngFor=\"\n let asset of flatAssetTree$ | async | slice: paginationOffset:paginationOffset + pageSize\n \"\n >\n <div\n class=\"c8y-list__item__block\"\n [title]=\"\n (asset._subGroups && asset.isOpened\n ? asset._subGroups.length\n ? asset._subGroups.length > 1\n ? manySubgroupsTitle\n : oneSubgroupTitle\n : noSubgroupTitle\n : clickToOpenTitle\n ) | translate: { count: asset._subGroups?.length }\n \"\n >\n <div [ngStyle]=\"{ 'padding-left': asset._depth * 8 + 'px' }\"></div>\n <div class=\"c8y-list__item__icon m-t-4 p-l-0\">\n <button\n class=\"btn-clean\"\n [attr.aria-label]=\"(!asset.isOpened ? expandAriaLabel : collapseAriaLabel) | translate\"\n type=\"button\"\n (click)=\"loadChildren(asset)\"\n >\n <i\n class=\"c8y-icon-duocolor\"\n c8yIcon=\"c8y-group\"\n *ngIf=\"!asset.isOpened\"\n ></i>\n <i\n class=\"c8y-icon-duocolor\"\n c8yIcon=\"c8y-group-open\"\n *ngIf=\"asset.isOpened\"\n ></i>\n </button>\n </div>\n <div class=\"c8y-list__item__body\">\n <div class=\"d-flex a-i-center\">\n <div class=\"col-sm-7 p-l-0 col-xs-12\">\n <button\n class=\"btn-clean\"\n type=\"button\"\n (click)=\"loadChildren(asset)\"\n >\n <span\n class=\"text-truncate\"\n [ngStyle]=\"{ cursor: 'pointer' }\"\n title=\"{{ asset.name }}\"\n >\n {{ asset.name }}\n </span>\n </button>\n </div>\n <div class=\"p-t-8 col-xs-12 visible-xs\"></div>\n <div class=\"col-sm-5 p-l-0 col-xs-12 p-r-0\">\n <div class=\"d-flex\">\n <div class=\"flex-grow form-group-sm max-width-100\">\n <c8y-inventory-role-selector-upgraded\n [ownerAllowedRoles]=\"\n ownerAllAssignedRoles ? ownerAllAssignedRoles[asset.id] : undefined\n \"\n [inheritedRoles]=\"inheritedRoles ? inheritedRoles[asset.id] : undefined\"\n [assignedRoles]=\"assignedRoles ? assignedRoles[asset.id] : undefined\"\n [inventoryRoles]=\"inventoryRoles\"\n [disableEditForExternalUsers]=\"disableEditForExternalUsers\"\n (onApply)=\"onApply($event, asset.id)\"\n (click)=\"$event.stopPropagation()\"\n ></c8y-inventory-role-selector-upgraded>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No matching group found among the expanded groups.' | translate\"\n [subtitle]=\"'Try to expand more groups or to refine your search term.' | translate\"\n *ngIf=\"searchFilter && !(flatAssetTree$ | async).length\"\n [horizontal]=\"false\"\n ></c8y-ui-empty-state>\n</div>\n", dependencies: [{ kind: "component", type: i2.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: InventoryRoleSelector, selector: "c8y-inventory-role-selector-upgraded", inputs: ["assignedRoles", "inheritedRoles", "inventoryRoles", "ownerAllowedRoles", "disableEditForExternalUsers"], outputs: ["onApply"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.SlicePipe, name: "slice" }] }); }
|
|
150
153
|
}
|
|
151
154
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: RolesAssetTreeComponent, decorators: [{
|
|
152
155
|
type: Component,
|
|
153
|
-
args: [{ selector: 'c8y-roles-asset-tree-upgraded', template: "<div class=\"c8y-list__group m-b-0 no-border-last\">\n <div\n class=\"c8y-list__item\"\n *ngFor=\"\n let asset of flatAssetTree$ | async | slice: paginationOffset:paginationOffset + pageSize\n \"\n >\n <div\n class=\"c8y-list__item__block\"\n [title]=\"\n (asset._subGroups && asset.isOpened\n ? asset._subGroups.length\n ? asset._subGroups.length > 1\n ? manySubgroupsTitle\n : oneSubgroupTitle\n : noSubgroupTitle\n : clickToOpenTitle\n ) | translate: { count: asset._subGroups?.length }\n \"\n >\n <div [ngStyle]=\"{ 'padding-left': asset._depth * 8 + 'px' }\"></div>\n <div class=\"c8y-list__item__icon m-t-4 p-l-0\">\n <button\n class=\"btn-clean\"\n [attr.aria-label]=\"(!asset.isOpened ? expandAriaLabel : collapseAriaLabel) | translate\"\n type=\"button\"\n (click)=\"loadChildren(asset)\"\n >\n <i\n class=\"c8y-icon-duocolor\"\n c8yIcon=\"c8y-group\"\n *ngIf=\"!asset.isOpened\"\n ></i>\n <i\n class=\"c8y-icon-duocolor\"\n c8yIcon=\"c8y-group-open\"\n *ngIf=\"asset.isOpened\"\n ></i>\n </button>\n </div>\n <div class=\"c8y-list__item__body\">\n <div class=\"d-flex a-i-center\">\n <div class=\"col-sm-7 p-l-0 col-xs-12\">\n <button\n class=\"btn-clean\"\n type=\"button\"\n (click)=\"loadChildren(asset)\"\n >\n <span\n class=\"text-truncate\"\n [ngStyle]=\"{ cursor: 'pointer' }\"\n title=\"{{ asset.name }}\"\n >\n {{ asset.name }}\n </span>\n </button>\n </div>\n <div class=\"p-t-8 col-xs-12 visible-xs\"></div>\n <div class=\"col-sm-5 p-l-0 col-xs-12 p-r-0\">\n <div class=\"d-flex\">\n <div class=\"flex-grow form-group-sm max-width-100\">\n <c8y-inventory-role-selector-upgraded\n [ownerAllowedRoles]=\"\n ownerAllAssignedRoles ? ownerAllAssignedRoles[asset.id] : undefined\n \"\n [inheritedRoles]=\"inheritedRoles ? inheritedRoles[asset.id] : undefined\"\n [assignedRoles]=\"assignedRoles ? assignedRoles[asset.id] : undefined\"\n [inventoryRoles]=\"inventoryRoles\"\n (onApply)=\"onApply($event, asset.id)\"\n (click)=\"$event.stopPropagation()\"\n ></c8y-inventory-role-selector-upgraded>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No matching group found among the expanded groups.' | translate\"\n [subtitle]=\"'Try to expand more groups or to refine your search term.' | translate\"\n *ngIf=\"searchFilter && !(flatAssetTree$ | async).length\"\n [horizontal]=\"false\"\n ></c8y-ui-empty-state>\n</div>\n" }]
|
|
156
|
+
args: [{ selector: 'c8y-roles-asset-tree-upgraded', template: "<div class=\"c8y-list__group m-b-0 no-border-last\">\n <div\n class=\"c8y-list__item\"\n *ngFor=\"\n let asset of flatAssetTree$ | async | slice: paginationOffset:paginationOffset + pageSize\n \"\n >\n <div\n class=\"c8y-list__item__block\"\n [title]=\"\n (asset._subGroups && asset.isOpened\n ? asset._subGroups.length\n ? asset._subGroups.length > 1\n ? manySubgroupsTitle\n : oneSubgroupTitle\n : noSubgroupTitle\n : clickToOpenTitle\n ) | translate: { count: asset._subGroups?.length }\n \"\n >\n <div [ngStyle]=\"{ 'padding-left': asset._depth * 8 + 'px' }\"></div>\n <div class=\"c8y-list__item__icon m-t-4 p-l-0\">\n <button\n class=\"btn-clean\"\n [attr.aria-label]=\"(!asset.isOpened ? expandAriaLabel : collapseAriaLabel) | translate\"\n type=\"button\"\n (click)=\"loadChildren(asset)\"\n >\n <i\n class=\"c8y-icon-duocolor\"\n c8yIcon=\"c8y-group\"\n *ngIf=\"!asset.isOpened\"\n ></i>\n <i\n class=\"c8y-icon-duocolor\"\n c8yIcon=\"c8y-group-open\"\n *ngIf=\"asset.isOpened\"\n ></i>\n </button>\n </div>\n <div class=\"c8y-list__item__body\">\n <div class=\"d-flex a-i-center\">\n <div class=\"col-sm-7 p-l-0 col-xs-12\">\n <button\n class=\"btn-clean\"\n type=\"button\"\n (click)=\"loadChildren(asset)\"\n >\n <span\n class=\"text-truncate\"\n [ngStyle]=\"{ cursor: 'pointer' }\"\n title=\"{{ asset.name }}\"\n >\n {{ asset.name }}\n </span>\n </button>\n </div>\n <div class=\"p-t-8 col-xs-12 visible-xs\"></div>\n <div class=\"col-sm-5 p-l-0 col-xs-12 p-r-0\">\n <div class=\"d-flex\">\n <div class=\"flex-grow form-group-sm max-width-100\">\n <c8y-inventory-role-selector-upgraded\n [ownerAllowedRoles]=\"\n ownerAllAssignedRoles ? ownerAllAssignedRoles[asset.id] : undefined\n \"\n [inheritedRoles]=\"inheritedRoles ? inheritedRoles[asset.id] : undefined\"\n [assignedRoles]=\"assignedRoles ? assignedRoles[asset.id] : undefined\"\n [inventoryRoles]=\"inventoryRoles\"\n [disableEditForExternalUsers]=\"disableEditForExternalUsers\"\n (onApply)=\"onApply($event, asset.id)\"\n (click)=\"$event.stopPropagation()\"\n ></c8y-inventory-role-selector-upgraded>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No matching group found among the expanded groups.' | translate\"\n [subtitle]=\"'Try to expand more groups or to refine your search term.' | translate\"\n *ngIf=\"searchFilter && !(flatAssetTree$ | async).length\"\n [horizontal]=\"false\"\n ></c8y-ui-empty-state>\n</div>\n" }]
|
|
154
157
|
}], ctorParameters: () => [{ type: i1.Ng1UserInventoryRolesService, decorators: [{
|
|
155
158
|
type: Optional
|
|
156
159
|
}] }, { type: i1.Ng1RolesService, decorators: [{
|
|
@@ -169,6 +172,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
169
172
|
type: Input
|
|
170
173
|
}], paginationOffset: [{
|
|
171
174
|
type: Input
|
|
175
|
+
}], disableEditForExternalUsers: [{
|
|
176
|
+
type: Input
|
|
172
177
|
}], onChangeRoles: [{
|
|
173
178
|
type: Output
|
|
174
179
|
}], onChangeItemCount: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"c8y-ngx-components-user-roles.mjs","sources":["../../user-roles/inventory-role-selector/inventory-role-selector.component.ts","../../user-roles/roles-asset-tree/roles-asset-tree.component.ts","../../user-roles/roles-asset-tree/roles-asset-tree.component.html","../../user-roles/user-roles.module.ts","../../user-roles/c8y-ngx-components-user-roles.ts"],"sourcesContent":["import { Directive, ElementRef, EventEmitter, Injector, Input, Output } from '@angular/core';\nimport { UpgradeComponent } from '@angular/upgrade/static';\n\n@Directive({\n selector: 'c8y-inventory-role-selector-upgraded'\n})\nexport class InventoryRoleSelector extends UpgradeComponent {\n @Input() assignedRoles: any;\n @Input() inheritedRoles: any;\n @Input() inventoryRoles: any;\n @Input() ownerAllowedRoles: any;\n @Output() onApply: EventEmitter<any>;\n\n constructor(elementRef: ElementRef, injector: Injector) {\n super('c8yInventoryRoleSelector', elementRef, injector);\n }\n}\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Optional, Output } from '@angular/core';\nimport { gettext } from '@c8y/ngx-components';\n\nimport {\n mergeWith,\n map as _map,\n filter,\n flatten,\n uniqBy,\n identity,\n property,\n get,\n reduce\n} from 'lodash-es';\nimport { BehaviorSubject, combineLatest } from 'rxjs';\nimport { map, tap } from 'rxjs/operators';\nimport { IIdentified } from '@c8y/client';\nimport {\n Ng1RolesService,\n Ng1UserInventoryRolesService\n} from '@c8y/ngx-components/upgrade/upgraded-services';\n\n@Component({\n selector: 'c8y-roles-asset-tree-upgraded',\n templateUrl: './roles-asset-tree.component.html'\n})\nexport class RolesAssetTreeComponent implements OnInit, OnChanges {\n @Input() user;\n @Input() searchFilter;\n @Input() assignedRoles;\n @Input() ownerAssignedRoles;\n @Input() expandGroups;\n @Input() pageSize;\n @Input() paginationOffset;\n @Output() onChangeRoles = new EventEmitter();\n @Output() onChangeItemCount = new EventEmitter();\n\n rootGroups;\n flatAssetTree;\n inventoryRoles;\n loadingAssetTree;\n inheritedRoles;\n ownerAllAssignedRoles;\n\n noSubgroupTitle = gettext('No subgroups');\n manySubgroupsTitle = gettext('Subgroups: {{ count }}');\n oneSubgroupTitle = gettext('Subgroup: 1');\n clickToOpenTitle = gettext('Click to fetch subgroups');\n expandAriaLabel = gettext('Expand');\n collapseAriaLabel = gettext('Collapse');\n\n searchTermSubject = new BehaviorSubject<string>('');\n flatTreeSubject = new BehaviorSubject<IIdentified[]>([]);\n\n flatAssetTree$ = combineLatest([this.searchTermSubject, this.flatTreeSubject]).pipe(\n map(([searchTerm, flatTree]) => {\n return flatTree\n .filter(group => group.name.toLowerCase().includes(searchTerm.toLowerCase()))\n .filter(this.filterAsset.bind(this));\n }),\n tap(flatTree => {\n this.onChangeItemCount.emit(flatTree.length);\n })\n );\n\n constructor(\n @Optional() public c8yUserInventoryRoles: Ng1UserInventoryRolesService,\n @Optional() public c8yRoles: Ng1RolesService\n ) {}\n\n ngOnInit() {\n this.loadInventoryRoles();\n }\n\n loadAssetTree() {\n const onlyRootsUser = this.user.owner;\n return this.c8yUserInventoryRoles.listRootGroups({ onlyRootsUser }).then(result => {\n this.rootGroups = result;\n this.updateTree();\n });\n }\n\n updateTree() {\n this.flatAssetTree = this.c8yUserInventoryRoles.flatTree(this.rootGroups);\n this.setInheritedRoles();\n this.flatTreeSubject.next(this.flatAssetTree);\n }\n\n loadChildren(mo) {\n if (mo.isOpened) {\n // eslint-disable-next-line no-underscore-dangle\n mo._subGroups = [];\n mo.isOpened = false;\n this.updateTree();\n } else {\n this.c8yUserInventoryRoles.loadChildren(mo).then(_ => {\n this.updateTree();\n });\n mo.isOpened = true;\n }\n }\n\n loadInventoryRoles() {\n this.c8yRoles.list({ pageSize: 1000 }).then(roles => {\n this.inventoryRoles = roles;\n });\n }\n\n ngOnChanges(changes) {\n if (changes.searchFilter) {\n this.searchTermSubject.next(this.searchFilter || '');\n }\n if (changes.user && !this.loadingAssetTree) {\n this.loadingAssetTree = this.loadAssetTree();\n }\n if (changes.assignedRoles || changes.ownerAssignedRoles) {\n this.loadingAssetTree.then(this.setInheritedRoles.bind(this));\n }\n if (changes.expandGroups && this.expandGroups) {\n this.c8yUserInventoryRoles.expandAll(this.rootGroups, this.updateTree.bind(this));\n }\n }\n\n setInheritedRoles() {\n if (this.assignedRoles) {\n this.inheritedRoles = this.getInventoryInheritedRoles(this.flatAssetTree, this.assignedRoles);\n }\n if (this.ownerAssignedRoles) {\n const ownerInheritedRoles = this.getInventoryInheritedRoles(\n this.flatAssetTree,\n this.ownerAssignedRoles\n );\n this.ownerAllAssignedRoles = mergeWith(\n ownerInheritedRoles,\n this.ownerAssignedRoles,\n (objValue, srcValue) => {\n if (srcValue) {\n if (objValue) {\n return uniqBy(objValue.concat(srcValue.roles), 'id');\n }\n return srcValue.roles;\n }\n return objValue;\n }\n );\n }\n }\n\n getInventoryInheritedRoles(flatTree, assignedRoles) {\n return reduce(\n flatTree,\n (inheritedRoles, asset) => {\n // eslint-disable-next-line no-underscore-dangle\n let chain = asset._parentGroups;\n chain = _map(chain, group => get(assignedRoles, group.id));\n chain = filter(chain, identity);\n chain = _map(chain, property('roles'));\n chain = flatten(chain);\n chain = uniqBy(chain, 'id');\n inheritedRoles[asset.id] = chain;\n return inheritedRoles;\n },\n {}\n );\n }\n\n onApply(ev, managedObjectId) {\n return this.onChangeRoles.emit({\n managedObjectId: managedObjectId,\n roles: ev.roles\n });\n }\n\n filterAsset(asset) {\n if (this.ownerAllAssignedRoles) {\n return get(this.ownerAllAssignedRoles, [asset.id, 'length']);\n }\n return true;\n }\n}\n","<div class=\"c8y-list__group m-b-0 no-border-last\">\n <div\n class=\"c8y-list__item\"\n *ngFor=\"\n let asset of flatAssetTree$ | async | slice: paginationOffset:paginationOffset + pageSize\n \"\n >\n <div\n class=\"c8y-list__item__block\"\n [title]=\"\n (asset._subGroups && asset.isOpened\n ? asset._subGroups.length\n ? asset._subGroups.length > 1\n ? manySubgroupsTitle\n : oneSubgroupTitle\n : noSubgroupTitle\n : clickToOpenTitle\n ) | translate: { count: asset._subGroups?.length }\n \"\n >\n <div [ngStyle]=\"{ 'padding-left': asset._depth * 8 + 'px' }\"></div>\n <div class=\"c8y-list__item__icon m-t-4 p-l-0\">\n <button\n class=\"btn-clean\"\n [attr.aria-label]=\"(!asset.isOpened ? expandAriaLabel : collapseAriaLabel) | translate\"\n type=\"button\"\n (click)=\"loadChildren(asset)\"\n >\n <i\n class=\"c8y-icon-duocolor\"\n c8yIcon=\"c8y-group\"\n *ngIf=\"!asset.isOpened\"\n ></i>\n <i\n class=\"c8y-icon-duocolor\"\n c8yIcon=\"c8y-group-open\"\n *ngIf=\"asset.isOpened\"\n ></i>\n </button>\n </div>\n <div class=\"c8y-list__item__body\">\n <div class=\"d-flex a-i-center\">\n <div class=\"col-sm-7 p-l-0 col-xs-12\">\n <button\n class=\"btn-clean\"\n type=\"button\"\n (click)=\"loadChildren(asset)\"\n >\n <span\n class=\"text-truncate\"\n [ngStyle]=\"{ cursor: 'pointer' }\"\n title=\"{{ asset.name }}\"\n >\n {{ asset.name }}\n </span>\n </button>\n </div>\n <div class=\"p-t-8 col-xs-12 visible-xs\"></div>\n <div class=\"col-sm-5 p-l-0 col-xs-12 p-r-0\">\n <div class=\"d-flex\">\n <div class=\"flex-grow form-group-sm max-width-100\">\n <c8y-inventory-role-selector-upgraded\n [ownerAllowedRoles]=\"\n ownerAllAssignedRoles ? ownerAllAssignedRoles[asset.id] : undefined\n \"\n [inheritedRoles]=\"inheritedRoles ? inheritedRoles[asset.id] : undefined\"\n [assignedRoles]=\"assignedRoles ? assignedRoles[asset.id] : undefined\"\n [inventoryRoles]=\"inventoryRoles\"\n (onApply)=\"onApply($event, asset.id)\"\n (click)=\"$event.stopPropagation()\"\n ></c8y-inventory-role-selector-upgraded>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No matching group found among the expanded groups.' | translate\"\n [subtitle]=\"'Try to expand more groups or to refine your search term.' | translate\"\n *ngIf=\"searchFilter && !(flatAssetTree$ | async).length\"\n [horizontal]=\"false\"\n ></c8y-ui-empty-state>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@c8y/ngx-components';\nimport { InventoryRoleSelector } from './inventory-role-selector/inventory-role-selector.component';\nimport { RolesAssetTreeComponent } from './roles-asset-tree/roles-asset-tree.component';\n\n@NgModule({\n declarations: [InventoryRoleSelector, RolesAssetTreeComponent],\n imports: [CoreModule]\n})\nexport class UserRolesModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["_map","i4.InventoryRoleSelector"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"c8y-ngx-components-user-roles.mjs","sources":["../../user-roles/inventory-role-selector/inventory-role-selector.component.ts","../../user-roles/roles-asset-tree/roles-asset-tree.component.ts","../../user-roles/roles-asset-tree/roles-asset-tree.component.html","../../user-roles/user-roles.module.ts","../../user-roles/c8y-ngx-components-user-roles.ts"],"sourcesContent":["import { Directive, ElementRef, EventEmitter, Injector, Input, Output } from '@angular/core';\nimport { UpgradeComponent } from '@angular/upgrade/static';\n\n@Directive({\n selector: 'c8y-inventory-role-selector-upgraded'\n})\nexport class InventoryRoleSelector extends UpgradeComponent {\n @Input() assignedRoles: any;\n @Input() inheritedRoles: any;\n @Input() inventoryRoles: any;\n @Input() ownerAllowedRoles: any;\n @Input() disableEditForExternalUsers: any;\n @Output() onApply: EventEmitter<any>;\n\n constructor(elementRef: ElementRef, injector: Injector) {\n super('c8yInventoryRoleSelector', elementRef, injector);\n }\n}\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Optional, Output } from '@angular/core';\nimport { gettext } from '@c8y/ngx-components';\n\nimport {\n mergeWith,\n map as _map,\n filter,\n flatten,\n uniqBy,\n identity,\n property,\n get,\n reduce\n} from 'lodash-es';\nimport { BehaviorSubject, combineLatest } from 'rxjs';\nimport { map, tap } from 'rxjs/operators';\nimport { IIdentified } from '@c8y/client';\nimport {\n Ng1RolesService,\n Ng1UserInventoryRolesService\n} from '@c8y/ngx-components/upgrade/upgraded-services';\n\n@Component({\n selector: 'c8y-roles-asset-tree-upgraded',\n templateUrl: './roles-asset-tree.component.html'\n})\nexport class RolesAssetTreeComponent implements OnInit, OnChanges {\n @Input() user;\n @Input() searchFilter;\n @Input() assignedRoles;\n @Input() ownerAssignedRoles;\n @Input() expandGroups;\n @Input() pageSize;\n @Input() paginationOffset;\n @Input() disableEditForExternalUsers = false;\n @Output() onChangeRoles = new EventEmitter();\n @Output() onChangeItemCount = new EventEmitter();\n\n rootGroups;\n flatAssetTree;\n inventoryRoles;\n loadingAssetTree;\n inheritedRoles;\n ownerAllAssignedRoles;\n\n noSubgroupTitle = gettext('No subgroups');\n manySubgroupsTitle = gettext('Subgroups: {{ count }}');\n oneSubgroupTitle = gettext('Subgroup: 1');\n clickToOpenTitle = gettext('Click to fetch subgroups');\n expandAriaLabel = gettext('Expand');\n collapseAriaLabel = gettext('Collapse');\n\n searchTermSubject = new BehaviorSubject<string>('');\n flatTreeSubject = new BehaviorSubject<IIdentified[]>([]);\n\n flatAssetTree$ = combineLatest([this.searchTermSubject, this.flatTreeSubject]).pipe(\n map(([searchTerm, flatTree]) => {\n return flatTree\n .filter(group => group.name.toLowerCase().includes(searchTerm.toLowerCase()))\n .filter(this.filterAsset.bind(this));\n }),\n tap(flatTree => {\n this.onChangeItemCount.emit(flatTree.length);\n })\n );\n\n constructor(\n @Optional() public c8yUserInventoryRoles: Ng1UserInventoryRolesService,\n @Optional() public c8yRoles: Ng1RolesService\n ) {}\n\n ngOnInit() {\n this.loadInventoryRoles();\n }\n\n loadAssetTree() {\n const onlyRootsUser = this.user.owner;\n return this.c8yUserInventoryRoles.listRootGroups({ onlyRootsUser }).then(result => {\n this.rootGroups = result;\n this.updateTree();\n });\n }\n\n updateTree() {\n this.flatAssetTree = this.c8yUserInventoryRoles.flatTree(this.rootGroups);\n this.setInheritedRoles();\n this.flatTreeSubject.next(this.flatAssetTree);\n }\n\n loadChildren(mo) {\n if (mo.isOpened) {\n // eslint-disable-next-line no-underscore-dangle\n mo._subGroups = [];\n mo.isOpened = false;\n this.updateTree();\n } else {\n this.c8yUserInventoryRoles.loadChildren(mo).then(_ => {\n this.updateTree();\n });\n mo.isOpened = true;\n }\n }\n\n loadInventoryRoles() {\n this.c8yRoles.list({ pageSize: 1000 }).then(roles => {\n this.inventoryRoles = roles;\n });\n }\n\n ngOnChanges(changes) {\n if (changes.searchFilter) {\n this.searchTermSubject.next(this.searchFilter || '');\n }\n if (changes.user && !this.loadingAssetTree) {\n this.loadingAssetTree = this.loadAssetTree();\n }\n if (changes.assignedRoles || changes.ownerAssignedRoles) {\n this.loadingAssetTree.then(this.setInheritedRoles.bind(this));\n }\n if (changes.expandGroups && this.expandGroups) {\n this.c8yUserInventoryRoles.expandAll(this.rootGroups, this.updateTree.bind(this));\n }\n }\n\n setInheritedRoles() {\n if (this.assignedRoles) {\n this.inheritedRoles = this.getInventoryInheritedRoles(this.flatAssetTree, this.assignedRoles);\n }\n if (this.ownerAssignedRoles) {\n const ownerInheritedRoles = this.getInventoryInheritedRoles(\n this.flatAssetTree,\n this.ownerAssignedRoles\n );\n this.ownerAllAssignedRoles = mergeWith(\n ownerInheritedRoles,\n this.ownerAssignedRoles,\n (objValue, srcValue) => {\n if (srcValue) {\n if (objValue) {\n return uniqBy(objValue.concat(srcValue.roles), 'id');\n }\n return srcValue.roles;\n }\n return objValue;\n }\n );\n }\n }\n\n getInventoryInheritedRoles(flatTree, assignedRoles) {\n return reduce(\n flatTree,\n (inheritedRoles, asset) => {\n // eslint-disable-next-line no-underscore-dangle\n let chain = asset._parentGroups;\n chain = _map(chain, group => get(assignedRoles, group.id));\n chain = filter(chain, identity);\n chain = _map(chain, property('roles'));\n chain = flatten(chain);\n chain = uniqBy(chain, 'id');\n inheritedRoles[asset.id] = chain;\n return inheritedRoles;\n },\n {}\n );\n }\n\n onApply(ev, managedObjectId) {\n return this.onChangeRoles.emit({\n managedObjectId: managedObjectId,\n roles: ev.roles\n });\n }\n\n filterAsset(asset) {\n if (this.ownerAllAssignedRoles) {\n return get(this.ownerAllAssignedRoles, [asset.id, 'length']);\n }\n return true;\n }\n}\n","<div class=\"c8y-list__group m-b-0 no-border-last\">\n <div\n class=\"c8y-list__item\"\n *ngFor=\"\n let asset of flatAssetTree$ | async | slice: paginationOffset:paginationOffset + pageSize\n \"\n >\n <div\n class=\"c8y-list__item__block\"\n [title]=\"\n (asset._subGroups && asset.isOpened\n ? asset._subGroups.length\n ? asset._subGroups.length > 1\n ? manySubgroupsTitle\n : oneSubgroupTitle\n : noSubgroupTitle\n : clickToOpenTitle\n ) | translate: { count: asset._subGroups?.length }\n \"\n >\n <div [ngStyle]=\"{ 'padding-left': asset._depth * 8 + 'px' }\"></div>\n <div class=\"c8y-list__item__icon m-t-4 p-l-0\">\n <button\n class=\"btn-clean\"\n [attr.aria-label]=\"(!asset.isOpened ? expandAriaLabel : collapseAriaLabel) | translate\"\n type=\"button\"\n (click)=\"loadChildren(asset)\"\n >\n <i\n class=\"c8y-icon-duocolor\"\n c8yIcon=\"c8y-group\"\n *ngIf=\"!asset.isOpened\"\n ></i>\n <i\n class=\"c8y-icon-duocolor\"\n c8yIcon=\"c8y-group-open\"\n *ngIf=\"asset.isOpened\"\n ></i>\n </button>\n </div>\n <div class=\"c8y-list__item__body\">\n <div class=\"d-flex a-i-center\">\n <div class=\"col-sm-7 p-l-0 col-xs-12\">\n <button\n class=\"btn-clean\"\n type=\"button\"\n (click)=\"loadChildren(asset)\"\n >\n <span\n class=\"text-truncate\"\n [ngStyle]=\"{ cursor: 'pointer' }\"\n title=\"{{ asset.name }}\"\n >\n {{ asset.name }}\n </span>\n </button>\n </div>\n <div class=\"p-t-8 col-xs-12 visible-xs\"></div>\n <div class=\"col-sm-5 p-l-0 col-xs-12 p-r-0\">\n <div class=\"d-flex\">\n <div class=\"flex-grow form-group-sm max-width-100\">\n <c8y-inventory-role-selector-upgraded\n [ownerAllowedRoles]=\"\n ownerAllAssignedRoles ? ownerAllAssignedRoles[asset.id] : undefined\n \"\n [inheritedRoles]=\"inheritedRoles ? inheritedRoles[asset.id] : undefined\"\n [assignedRoles]=\"assignedRoles ? assignedRoles[asset.id] : undefined\"\n [inventoryRoles]=\"inventoryRoles\"\n [disableEditForExternalUsers]=\"disableEditForExternalUsers\"\n (onApply)=\"onApply($event, asset.id)\"\n (click)=\"$event.stopPropagation()\"\n ></c8y-inventory-role-selector-upgraded>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No matching group found among the expanded groups.' | translate\"\n [subtitle]=\"'Try to expand more groups or to refine your search term.' | translate\"\n *ngIf=\"searchFilter && !(flatAssetTree$ | async).length\"\n [horizontal]=\"false\"\n ></c8y-ui-empty-state>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@c8y/ngx-components';\nimport { InventoryRoleSelector } from './inventory-role-selector/inventory-role-selector.component';\nimport { RolesAssetTreeComponent } from './roles-asset-tree/roles-asset-tree.component';\n\n@NgModule({\n declarations: [InventoryRoleSelector, RolesAssetTreeComponent],\n imports: [CoreModule]\n})\nexport class UserRolesModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["_map","i4.InventoryRoleSelector"],"mappings":"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"}
|
|
@@ -16734,13 +16734,8 @@ class TotpAuthComponent {
|
|
|
16734
16734
|
this.hasError = false;
|
|
16735
16735
|
this.isSetup = false;
|
|
16736
16736
|
}
|
|
16737
|
-
|
|
16738
|
-
* In case of a setup we need the user to be authorized
|
|
16739
|
-
* first.
|
|
16740
|
-
*/
|
|
16741
|
-
async ngOnInit() {
|
|
16737
|
+
ngOnInit() {
|
|
16742
16738
|
if (this.view === this.LOGIN_VIEWS.TotpSetup) {
|
|
16743
|
-
await this.loginService.switchLoginMode(this.credentials);
|
|
16744
16739
|
this.isSetup = true;
|
|
16745
16740
|
}
|
|
16746
16741
|
}
|