@igo2/context 17.0.0-next.7 → 17.0.0-next.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/esm2022/lib/context-import-export/context-import-export/context-import-export.component.mjs +4 -4
  2. package/esm2022/lib/context-import-export/context-import-export.module.mjs +4 -4
  3. package/esm2022/lib/context-import-export/shared/context-export.service.mjs +3 -3
  4. package/esm2022/lib/context-import-export/shared/context-import.service.mjs +3 -3
  5. package/esm2022/lib/context-manager/context-edit/context-edit-binding.directive.mjs +3 -3
  6. package/esm2022/lib/context-manager/context-edit/context-edit.component.mjs +3 -3
  7. package/esm2022/lib/context-manager/context-form/context-form.component.mjs +3 -3
  8. package/esm2022/lib/context-manager/context-item/context-item.component.mjs +3 -3
  9. package/esm2022/lib/context-manager/context-list/context-list-binding.directive.mjs +3 -3
  10. package/esm2022/lib/context-manager/context-list/context-list.component.mjs +3 -3
  11. package/esm2022/lib/context-manager/context-manager.module.mjs +4 -4
  12. package/esm2022/lib/context-manager/context-permissions/context-permissions-binding.directive.mjs +3 -3
  13. package/esm2022/lib/context-manager/context-permissions/context-permissions.component.mjs +3 -3
  14. package/esm2022/lib/context-manager/shared/context.service.mjs +3 -3
  15. package/esm2022/lib/context-manager/shared/layer-context.directive.mjs +3 -3
  16. package/esm2022/lib/context-manager/shared/map-context.directive.mjs +3 -3
  17. package/esm2022/lib/context-map-button/bookmark-button/bookmark-button.component.mjs +3 -3
  18. package/esm2022/lib/context-map-button/bookmark-button/bookmark-dialog.component.mjs +3 -3
  19. package/esm2022/lib/context-map-button/context-map-button.module.mjs +4 -4
  20. package/esm2022/lib/context-map-button/poi-button/poi-button.component.mjs +3 -3
  21. package/esm2022/lib/context-map-button/poi-button/poi-dialog.component.mjs +3 -3
  22. package/esm2022/lib/context-map-button/poi-button/shared/poi.service.mjs +3 -3
  23. package/esm2022/lib/context-map-button/user-button/user-button.component.mjs +3 -3
  24. package/esm2022/lib/context-map-button/user-button/user-dialog.component.mjs +3 -3
  25. package/esm2022/lib/context.module.mjs +4 -4
  26. package/esm2022/lib/share-map/share-map/share-map-api.component.mjs +3 -3
  27. package/esm2022/lib/share-map/share-map/share-map-url.component.mjs +3 -3
  28. package/esm2022/lib/share-map/share-map/share-map.component.mjs +3 -3
  29. package/esm2022/lib/share-map/share-map.module.mjs +4 -4
  30. package/esm2022/lib/share-map/shared/share-map.service.mjs +3 -3
  31. package/esm2022/lib/sidenav/sidenav.component.mjs +3 -3
  32. package/esm2022/lib/sidenav/sidenav.module.mjs +4 -4
  33. package/fesm2022/igo2-context.mjs +102 -102
  34. package/fesm2022/igo2-context.mjs.map +1 -1
  35. package/package.json +7 -7
@@ -132,10 +132,10 @@ export class ContextImportExportComponent {
132
132
  ngOnDestroy() {
133
133
  this.layers$$.unsubscribe();
134
134
  }
135
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: ContextImportExportComponent, deps: [{ token: i1.ContextImportService }, { token: i2.ContextExportService }, { token: i3.MessageService }, { token: i4.UntypedFormBuilder }, { token: i5.ConfigService }, { token: i6.ContextService }], target: i0.ɵɵFactoryTarget.Component });
136
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: ContextImportExportComponent, isStandalone: true, selector: "igo-context-import-export", inputs: { map: "map" }, ngImport: i0, template: "<div class=\"import-export-toggle mat-typography\">\n <mat-button-toggle-group\n [value]=\"activeImportExport\"\n (change)=\"onImportExportChange($event)\"\n >\n <mat-button-toggle [value]=\"'import'\">\n {{ 'igo.geo.importExportForm.importTabTitle' | translate }}\n </mat-button-toggle>\n <mat-button-toggle [value]=\"'export'\">\n {{ 'igo.geo.importExportForm.exportTabTitle' | translate }}\n </mat-button-toggle>\n </mat-button-toggle-group>\n</div>\n\n<div *ngIf=\"activeImportExport === 'import'\">\n <form class=\"igo-form\">\n <div class=\"igo-form-button-group\">\n <button\n mat-raised-button\n type=\"button\"\n (click)=\"fileInput.click()\"\n [disabled]=\"loading$ | async\"\n >\n {{ 'igo.geo.importExportForm.importButton' | translate }}\n </button>\n <igo-spinner [shown]=\"loading$ | async\"></igo-spinner>\n <input\n #fileInput\n type=\"file\"\n [style.display]=\"'none'\"\n (click)=\"fileInput.value = null\"\n (change)=\"importFiles($any($event.target).files)\"\n />\n </div>\n </form>\n <section class=\"mat-typography\">\n <h4>{{ 'igo.geo.importExportForm.importClarifications' | translate }}</h4>\n <ul>\n <li>\n {{\n 'igo.geo.importExportForm.importSizeMax'\n | translate: { size: fileSizeMb }\n }}\n </li>\n </ul>\n </section>\n</div>\n\n<form\n class=\"igo-form\"\n *ngIf=\"activeImportExport === 'export'\"\n [formGroup]=\"form\"\n>\n <div class=\"igo-input-container\">\n <mat-form-field class=\"example-full-width\">\n <mat-label>{{\n 'igo.context.contextImportExport.export.exportContextName' | translate\n }}</mat-label>\n <input formControlName=\"name\" matInput [value]=\"\" />\n </mat-form-field>\n </div>\n <div class=\"igo-input-container\">\n <mat-form-field>\n <mat-label>{{\n 'igo.context.contextImportExport.export.exportPlaceHolder' | translate\n }}</mat-label>\n <mat-select formControlName=\"layers\" multiple>\n <mat-option [value]=\"1\" (click)=\"selectAll(e)\" #e>\n {{\n 'igo.context.contextImportExport.export.exportSelectAll' | translate\n }}\n </mat-option>\n <mat-divider></mat-divider>\n <mat-option\n *ngFor=\"let layer of userControlledLayerList\"\n [value]=\"layer\"\n >{{ layer.title }}</mat-option\n >\n </mat-select>\n </mat-form-field>\n </div>\n <div class=\"igo-form-button-group\">\n <button\n mat-raised-button\n type=\"button\"\n [disabled]=\"!form.valid || (loading$ | async)\"\n (click)=\"handleExportFormSubmit(form.value)\"\n >\n {{ 'igo.geo.importExportForm.exportButton' | translate }}\n </button>\n <igo-spinner [shown]=\"loading$ | async\"></igo-spinner>\n </div>\n</form>\n", styles: [".import-export-toggle{padding:10px;text-align:center}.import-export-toggle mat-button-toggle-group{width:100%}.import-export-toggle mat-button-toggle-group mat-button-toggle{width:50%}.igo-input-container{padding:10px}.igo-input-container mat-form-field{width:100%}h4{padding:0 5px}.igo-form{padding:15px 5px}.igo-form-button-group{text-align:center;padding-top:10px}igo-spinner{position:absolute;padding-left:10px}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonToggleModule }, { kind: "directive", type: i7.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i7.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i8.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: SpinnerComponent, selector: "igo-spinner", inputs: ["shown"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i9.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i9.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i10.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i11.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i12.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatOptionModule }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i13.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i14.TranslatePipe, name: "translate" }] });
135
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ContextImportExportComponent, deps: [{ token: i1.ContextImportService }, { token: i2.ContextExportService }, { token: i3.MessageService }, { token: i4.UntypedFormBuilder }, { token: i5.ConfigService }, { token: i6.ContextService }], target: i0.ɵɵFactoryTarget.Component });
136
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: ContextImportExportComponent, isStandalone: true, selector: "igo-context-import-export", inputs: { map: "map" }, ngImport: i0, template: "<div class=\"import-export-toggle mat-typography\">\n <mat-button-toggle-group\n [value]=\"activeImportExport\"\n (change)=\"onImportExportChange($event)\"\n >\n <mat-button-toggle [value]=\"'import'\">\n {{ 'igo.geo.importExportForm.importTabTitle' | translate }}\n </mat-button-toggle>\n <mat-button-toggle [value]=\"'export'\">\n {{ 'igo.geo.importExportForm.exportTabTitle' | translate }}\n </mat-button-toggle>\n </mat-button-toggle-group>\n</div>\n\n<div *ngIf=\"activeImportExport === 'import'\">\n <form class=\"igo-form\">\n <div class=\"igo-form-button-group\">\n <button\n mat-raised-button\n type=\"button\"\n (click)=\"fileInput.click()\"\n [disabled]=\"loading$ | async\"\n >\n {{ 'igo.geo.importExportForm.importButton' | translate }}\n </button>\n <igo-spinner [shown]=\"loading$ | async\"></igo-spinner>\n <input\n #fileInput\n type=\"file\"\n [style.display]=\"'none'\"\n (click)=\"fileInput.value = null\"\n (change)=\"importFiles($any($event.target).files)\"\n />\n </div>\n </form>\n <section class=\"mat-typography\">\n <h4>{{ 'igo.geo.importExportForm.importClarifications' | translate }}</h4>\n <ul>\n <li>\n {{\n 'igo.geo.importExportForm.importSizeMax'\n | translate: { size: fileSizeMb }\n }}\n </li>\n </ul>\n </section>\n</div>\n\n<form\n class=\"igo-form\"\n *ngIf=\"activeImportExport === 'export'\"\n [formGroup]=\"form\"\n>\n <div class=\"igo-input-container\">\n <mat-form-field class=\"example-full-width\">\n <mat-label>{{\n 'igo.context.contextImportExport.export.exportContextName' | translate\n }}</mat-label>\n <input formControlName=\"name\" matInput [value]=\"\" />\n </mat-form-field>\n </div>\n <div class=\"igo-input-container\">\n <mat-form-field>\n <mat-label>{{\n 'igo.context.contextImportExport.export.exportPlaceHolder' | translate\n }}</mat-label>\n <mat-select formControlName=\"layers\" multiple>\n <mat-option [value]=\"1\" (click)=\"selectAll(e)\" #e>\n {{\n 'igo.context.contextImportExport.export.exportSelectAll' | translate\n }}\n </mat-option>\n <mat-divider></mat-divider>\n <mat-option\n *ngFor=\"let layer of userControlledLayerList\"\n [value]=\"layer\"\n >{{ layer.title }}</mat-option\n >\n </mat-select>\n </mat-form-field>\n </div>\n <div class=\"igo-form-button-group\">\n <button\n mat-raised-button\n type=\"button\"\n [disabled]=\"!form.valid || (loading$ | async)\"\n (click)=\"handleExportFormSubmit(form.value)\"\n >\n {{ 'igo.geo.importExportForm.exportButton' | translate }}\n </button>\n <igo-spinner [shown]=\"loading$ | async\"></igo-spinner>\n </div>\n</form>\n", styles: [".import-export-toggle{padding:10px;text-align:center}.import-export-toggle mat-button-toggle-group{width:100%}.import-export-toggle mat-button-toggle-group mat-button-toggle{width:50%}.igo-input-container{padding:10px}.igo-input-container mat-form-field{width:100%}h4{padding:0 5px}.igo-form{padding:15px 5px}.igo-form-button-group{text-align:center;padding-top:10px}igo-spinner{position:absolute;padding-left:10px}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonToggleModule }, { kind: "directive", type: i7.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i7.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i8.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: SpinnerComponent, selector: "igo-spinner", inputs: ["shown"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i9.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i9.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i10.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i11.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i12.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatOptionModule }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i13.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i14.TranslatePipe, name: "translate" }] });
137
137
  }
138
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: ContextImportExportComponent, decorators: [{
138
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ContextImportExportComponent, decorators: [{
139
139
  type: Component,
140
140
  args: [{ selector: 'igo-context-import-export', standalone: true, imports: [
141
141
  MatButtonToggleModule,
@@ -156,4 +156,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
156
156
  }], ctorParameters: () => [{ type: i1.ContextImportService }, { type: i2.ContextExportService }, { type: i3.MessageService }, { type: i4.UntypedFormBuilder }, { type: i5.ConfigService }, { type: i6.ContextService }], propDecorators: { map: [{
157
157
  type: Input
158
158
  }] } });
159
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1pbXBvcnQtZXhwb3J0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbnRleHQvc3JjL2xpYi9jb250ZXh0LWltcG9ydC1leHBvcnQvY29udGV4dC1pbXBvcnQtZXhwb3J0L2NvbnRleHQtaW1wb3J0LWV4cG9ydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb250ZXh0L3NyYy9saWIvY29udGV4dC1pbXBvcnQtZXhwb3J0L2NvbnRleHQtaW1wb3J0LWV4cG9ydC9jb250ZXh0LWltcG9ydC1leHBvcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFDTCxXQUFXLEVBQ1gsbUJBQW1CLEVBQ25CLGtCQUFrQixFQUVsQixVQUFVLEVBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENB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aXBlLCBOZ0ZvciwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgRm9ybXNNb2R1bGUsXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gIFVudHlwZWRGb3JtQnVpbGRlcixcbiAgVW50eXBlZEZvcm1Hcm91cCxcbiAgVmFsaWRhdG9yc1xufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0QnV0dG9uVG9nZ2xlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uLXRvZ2dsZSc7XG5pbXBvcnQgeyBNYXRPcHRpb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IE1hdERpdmlkZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaXZpZGVyJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuXG5pbXBvcnQgeyBTcGlubmVyQ29tcG9uZW50IH0gZnJvbSAnQGlnbzIvY29tbW9uL3NwaW5uZXInO1xuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUvY29uZmlnJztcbmltcG9ydCB7IElnb0xhbmd1YWdlTW9kdWxlIH0gZnJvbSAnQGlnbzIvY29yZS9sYW5ndWFnZSc7XG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUvbWVzc2FnZSc7XG5pbXBvcnQgeyBMYXllciwgVmVjdG9yTGF5ZXIgfSBmcm9tICdAaWdvMi9nZW8nO1xuaW1wb3J0IHR5cGUgeyBJZ29NYXAgfSBmcm9tICdAaWdvMi9nZW8nO1xuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRGV0YWlsZWRDb250ZXh0IH0gZnJvbSAnLi4vLi4vY29udGV4dC1tYW5hZ2VyL3NoYXJlZC9jb250ZXh0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL2NvbnRleHQtbWFuYWdlci9zaGFyZWQvY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnRleHRFeHBvcnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL2NvbnRleHQtZXhwb3J0LnNlcnZpY2UnO1xuaW1wb3J0IHsgaGFuZGxlRmlsZUV4cG9ydEVycm9yIH0gZnJvbSAnLi4vc2hhcmVkL2NvbnRleHQtZXhwb3J0LnV0aWxzJztcbmltcG9ydCB7IGhhbmRsZUZpbGVFeHBvcnRTdWNjZXNzIH0gZnJvbSAnLi4vc2hhcmVkL2NvbnRleHQtZXhwb3J0LnV0aWxzJztcbmltcG9ydCB7IENvbnRleHRJbXBvcnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL2NvbnRleHQtaW1wb3J0LnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgaGFuZGxlRmlsZUltcG9ydEVycm9yLFxuICBoYW5kbGVGaWxlSW1wb3J0U3VjY2Vzc1xufSBmcm9tICcuLi9zaGFyZWQvY29udGV4dC1pbXBvcnQudXRpbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZ28tY29udGV4dC1pbXBvcnQtZXhwb3J0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbnRleHQtaW1wb3J0LWV4cG9ydC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbnRleHQtaW1wb3J0LWV4cG9ydC5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTWF0QnV0dG9uVG9nZ2xlTW9kdWxlLFxuICAgIE5nSWYsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIFNwaW5uZXJDb21wb25lbnQsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgTWF0U2VsZWN0TW9kdWxlLFxuICAgIE1hdE9wdGlvbk1vZHVsZSxcbiAgICBNYXREaXZpZGVyTW9kdWxlLFxuICAgIE5nRm9yLFxuICAgIEFzeW5jUGlwZSxcbiAgICBJZ29MYW5ndWFnZU1vZHVsZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIENvbnRleHRJbXBvcnRFeHBvcnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHB1YmxpYyBmb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xuICBwdWJsaWMgbGF5ZXJzOiBWZWN0b3JMYXllcltdO1xuICBwdWJsaWMgaW5wdXRQcm9qOiBzdHJpbmcgPSAnRVBTRzo0MzI2JztcbiAgcHVibGljIGxvYWRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIHB1YmxpYyBmb3JjZU5hbWluZyA9IGZhbHNlO1xuICBwdWJsaWMgbGF5ZXJMaXN0OiBMYXllcltdO1xuICBwdWJsaWMgdXNlckNvbnRyb2xsZWRMYXllckxpc3Q6IExheWVyW107XG4gIHB1YmxpYyByZXM6IERldGFpbGVkQ29udGV4dDtcbiAgcHJpdmF0ZSBjbGllbnRTaWRlRmlsZVNpemVNYXg6IG51bWJlcjtcbiAgcHVibGljIGZpbGVTaXplTWI6IG51bWJlcjtcbiAgcHVibGljIGFjdGl2ZUltcG9ydEV4cG9ydDogc3RyaW5nID0gJ2ltcG9ydCc7XG5cbiAgcHJpdmF0ZSBsYXllcnMkJDogU3Vic2NyaXB0aW9uO1xuXG4gIEBJbnB1dCgpIG1hcDogSWdvTWFwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY29udGV4dEltcG9ydFNlcnZpY2U6IENvbnRleHRJbXBvcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29udGV4dEV4cG9ydFNlcnZpY2U6IENvbnRleHRFeHBvcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIGNvbmZpZzogQ29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIGNvbnRleHRTZXJ2aWNlOiBDb250ZXh0U2VydmljZVxuICApIHtcbiAgICB0aGlzLmJ1aWxkRm9ybSgpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgY29uc3QgY29uZmlnRmlsZVNpemVNYiA9IHRoaXMuY29uZmlnLmdldENvbmZpZyhcbiAgICAgICdpbXBvcnRFeHBvcnQuY2xpZW50U2lkZUZpbGVTaXplTWF4TWInXG4gICAgKTtcbiAgICB0aGlzLmNsaWVudFNpZGVGaWxlU2l6ZU1heCA9XG4gICAgICAoY29uZmlnRmlsZVNpemVNYiA/IGNvbmZpZ0ZpbGVTaXplTWIgOiAzMCkgKiBNYXRoLnBvdygxMDI0LCAyKTtcbiAgICB0aGlzLmZpbGVTaXplTWIgPSB0aGlzLmNsaWVudFNpZGVGaWxlU2l6ZU1heCAvIE1hdGgucG93KDEwMjQsIDIpO1xuICAgIHRoaXMubGF5ZXJzJCQgPSB0aGlzLm1hcC5sYXllcnMkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmxheWVyTGlzdCA9IHRoaXMuY29udGV4dFNlcnZpY2UuZ2V0Q29udGV4dExheWVycyh0aGlzLm1hcCk7XG4gICAgICB0aGlzLnVzZXJDb250cm9sbGVkTGF5ZXJMaXN0ID0gdGhpcy5sYXllckxpc3QuZmlsdGVyKFxuICAgICAgICAobGF5ZXIpID0+IGxheWVyLnNob3dJbkxheWVyTGlzdFxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIGltcG9ydEZpbGVzKGZpbGVzOiBGaWxlW10pIHtcbiAgICB0aGlzLmxvYWRpbmckLm5leHQodHJ1ZSk7XG4gICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICB0aGlzLmNvbnRleHRJbXBvcnRTZXJ2aWNlXG4gICAgICAgIC5pbXBvcnQoZmlsZSlcbiAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAoY29udGV4dDogRGV0YWlsZWRDb250ZXh0KSA9PiB0aGlzLm9uRmlsZUltcG9ydFN1Y2Nlc3MoZmlsZSwgY29udGV4dCksXG4gICAgICAgICAgKGVycm9yOiBFcnJvcikgPT4gdGhpcy5vbkZpbGVJbXBvcnRFcnJvcihmaWxlLCBlcnJvciksXG4gICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlRXhwb3J0Rm9ybVN1Ym1pdChjb250ZXh0T3B0aW9ucykge1xuICAgIHRoaXMubG9hZGluZyQubmV4dCh0cnVlKTtcbiAgICB0aGlzLnJlcyA9IHRoaXMuY29udGV4dFNlcnZpY2UuZ2V0Q29udGV4dEZyb21MYXllcnMoXG4gICAgICB0aGlzLm1hcCxcbiAgICAgIGNvbnRleHRPcHRpb25zLmxheWVycyxcbiAgICAgIGNvbnRleHRPcHRpb25zLm5hbWUsXG4gICAgICBmYWxzZVxuICAgICk7XG4gICAgdGhpcy5yZXMuaW1wb3J0ZWQgPSB0cnVlO1xuICAgIHRoaXMuY29udGV4dEV4cG9ydFNlcnZpY2VcbiAgICAgIC5leHBvcnQodGhpcy5yZXMpXG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgKCkgPT4ge30sXG4gICAgICAgIChlcnJvcjogRXJyb3IpID0+IHRoaXMub25GaWxlRXhwb3J0RXJyb3IoZXJyb3IpLFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5vbkZpbGVFeHBvcnRTdWNjZXNzKCk7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRGb3JtKCkge1xuICAgIHRoaXMuZm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgbGF5ZXJzOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBuYW1lOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb25GaWxlSW1wb3J0U3VjY2VzcyhmaWxlOiBGaWxlLCBjb250ZXh0OiBEZXRhaWxlZENvbnRleHQpIHtcbiAgICBoYW5kbGVGaWxlSW1wb3J0U3VjY2VzcyhcbiAgICAgIGZpbGUsXG4gICAgICBjb250ZXh0LFxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZSxcbiAgICAgIHRoaXMuY29udGV4dFNlcnZpY2VcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkZpbGVJbXBvcnRFcnJvcihmaWxlOiBGaWxlLCBlcnJvcjogRXJyb3IpIHtcbiAgICB0aGlzLmxvYWRpbmckLm5leHQoZmFsc2UpO1xuICAgIGhhbmRsZUZpbGVJbXBvcnRFcnJvcihmaWxlLCBlcnJvciwgdGhpcy5tZXNzYWdlU2VydmljZSwgdGhpcy5maWxlU2l6ZU1iKTtcbiAgfVxuXG4gIHByaXZhdGUgb25GaWxlRXhwb3J0RXJyb3IoZXJyb3I6IEVycm9yKSB7XG4gICAgdGhpcy5sb2FkaW5nJC5uZXh0KGZhbHNlKTtcbiAgICBoYW5kbGVGaWxlRXhwb3J0RXJyb3IoZXJyb3IsIHRoaXMubWVzc2FnZVNlcnZpY2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkZpbGVFeHBvcnRTdWNjZXNzKCkge1xuICAgIGhhbmRsZUZpbGVFeHBvcnRTdWNjZXNzKHRoaXMubWVzc2FnZVNlcnZpY2UpO1xuICB9XG5cbiAgc2VsZWN0QWxsKGUpIHtcbiAgICBpZiAoZS5fc2VsZWN0ZWQpIHtcbiAgICAgIHRoaXMuZm9ybS5jb250cm9scy5sYXllcnMuc2V0VmFsdWUodGhpcy51c2VyQ29udHJvbGxlZExheWVyTGlzdCk7XG4gICAgICBlLl9zZWxlY3RlZCA9IHRydWU7XG4gICAgfVxuICAgIGlmIChlLl9zZWxlY3RlZCA9PT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuZm9ybS5jb250cm9scy5sYXllcnMuc2V0VmFsdWUoW10pO1xuICAgIH1cbiAgfVxuXG4gIG9uSW1wb3J0RXhwb3J0Q2hhbmdlKGV2ZW50KSB7XG4gICAgdGhpcy5hY3RpdmVJbXBvcnRFeHBvcnQgPSBldmVudC52YWx1ZTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMubGF5ZXJzJCQudW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImltcG9ydC1leHBvcnQtdG9nZ2xlIG1hdC10eXBvZ3JhcGh5XCI+XG4gIDxtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cFxuICAgIFt2YWx1ZV09XCJhY3RpdmVJbXBvcnRFeHBvcnRcIlxuICAgIChjaGFuZ2UpPVwib25JbXBvcnRFeHBvcnRDaGFuZ2UoJGV2ZW50KVwiXG4gID5cbiAgICA8bWF0LWJ1dHRvbi10b2dnbGUgW3ZhbHVlXT1cIidpbXBvcnQnXCI+XG4gICAgICB7eyAnaWdvLmdlby5pbXBvcnRFeHBvcnRGb3JtLmltcG9ydFRhYlRpdGxlJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XG4gICAgPG1hdC1idXR0b24tdG9nZ2xlIFt2YWx1ZV09XCInZXhwb3J0J1wiPlxuICAgICAge3sgJ2lnby5nZW8uaW1wb3J0RXhwb3J0Rm9ybS5leHBvcnRUYWJUaXRsZScgfCB0cmFuc2xhdGUgfX1cbiAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxuICA8L21hdC1idXR0b24tdG9nZ2xlLWdyb3VwPlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCJhY3RpdmVJbXBvcnRFeHBvcnQgPT09ICdpbXBvcnQnXCI+XG4gIDxmb3JtIGNsYXNzPVwiaWdvLWZvcm1cIj5cbiAgICA8ZGl2IGNsYXNzPVwiaWdvLWZvcm0tYnV0dG9uLWdyb3VwXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIG1hdC1yYWlzZWQtYnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwibG9hZGluZyQgfCBhc3luY1wiXG4gICAgICA+XG4gICAgICAgIHt7ICdpZ28uZ2VvLmltcG9ydEV4cG9ydEZvcm0uaW1wb3J0QnV0dG9uJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8aWdvLXNwaW5uZXIgW3Nob3duXT1cImxvYWRpbmckIHwgYXN5bmNcIj48L2lnby1zcGlubmVyPlxuICAgICAgPGlucHV0XG4gICAgICAgICNmaWxlSW5wdXRcbiAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICBbc3R5bGUuZGlzcGxheV09XCInbm9uZSdcIlxuICAgICAgICAoY2xpY2spPVwiZmlsZUlucHV0LnZhbHVlID0gbnVsbFwiXG4gICAgICAgIChjaGFuZ2UpPVwiaW1wb3J0RmlsZXMoJGFueSgkZXZlbnQudGFyZ2V0KS5maWxlcylcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgPC9mb3JtPlxuICA8c2VjdGlvbiBjbGFzcz1cIm1hdC10eXBvZ3JhcGh5XCI+XG4gICAgPGg0Pnt7ICdpZ28uZ2VvLmltcG9ydEV4cG9ydEZvcm0uaW1wb3J0Q2xhcmlmaWNhdGlvbnMnIHwgdHJhbnNsYXRlIH19PC9oND5cbiAgICA8dWw+XG4gICAgICA8bGk+XG4gICAgICAgIHt7XG4gICAgICAgICAgJ2lnby5nZW8uaW1wb3J0RXhwb3J0Rm9ybS5pbXBvcnRTaXplTWF4J1xuICAgICAgICAgICAgfCB0cmFuc2xhdGU6IHsgc2l6ZTogZmlsZVNpemVNYiB9XG4gICAgICAgIH19XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gIDwvc2VjdGlvbj5cbjwvZGl2PlxuXG48Zm9ybVxuICBjbGFzcz1cImlnby1mb3JtXCJcbiAgKm5nSWY9XCJhY3RpdmVJbXBvcnRFeHBvcnQgPT09ICdleHBvcnQnXCJcbiAgW2Zvcm1Hcm91cF09XCJmb3JtXCJcbj5cbiAgPGRpdiBjbGFzcz1cImlnby1pbnB1dC1jb250YWluZXJcIj5cbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJleGFtcGxlLWZ1bGwtd2lkdGhcIj5cbiAgICAgIDxtYXQtbGFiZWw+e3tcbiAgICAgICAgJ2lnby5jb250ZXh0LmNvbnRleHRJbXBvcnRFeHBvcnQuZXhwb3J0LmV4cG9ydENvbnRleHROYW1lJyB8IHRyYW5zbGF0ZVxuICAgICAgfX08L21hdC1sYWJlbD5cbiAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCIgbWF0SW5wdXQgW3ZhbHVlXT1cIlwiIC8+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJpZ28taW5wdXQtY29udGFpbmVyXCI+XG4gICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgPG1hdC1sYWJlbD57e1xuICAgICAgICAnaWdvLmNvbnRleHQuY29udGV4dEltcG9ydEV4cG9ydC5leHBvcnQuZXhwb3J0UGxhY2VIb2xkZXInIHwgdHJhbnNsYXRlXG4gICAgICB9fTwvbWF0LWxhYmVsPlxuICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwibGF5ZXJzXCIgbXVsdGlwbGU+XG4gICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCIxXCIgKGNsaWNrKT1cInNlbGVjdEFsbChlKVwiICNlPlxuICAgICAgICAgIHt7XG4gICAgICAgICAgICAnaWdvLmNvbnRleHQuY29udGV4dEltcG9ydEV4cG9ydC5leHBvcnQuZXhwb3J0U2VsZWN0QWxsJyB8IHRyYW5zbGF0ZVxuICAgICAgICAgIH19XG4gICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XG4gICAgICAgIDxtYXQtb3B0aW9uXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGxheWVyIG9mIHVzZXJDb250cm9sbGVkTGF5ZXJMaXN0XCJcbiAgICAgICAgICBbdmFsdWVdPVwibGF5ZXJcIlxuICAgICAgICAgID57eyBsYXllci50aXRsZSB9fTwvbWF0LW9wdGlvblxuICAgICAgICA+XG4gICAgICA8L21hdC1zZWxlY3Q+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJpZ28tZm9ybS1idXR0b24tZ3JvdXBcIj5cbiAgICA8YnV0dG9uXG4gICAgICBtYXQtcmFpc2VkLWJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBbZGlzYWJsZWRdPVwiIWZvcm0udmFsaWQgfHwgKGxvYWRpbmckIHwgYXN5bmMpXCJcbiAgICAgIChjbGljayk9XCJoYW5kbGVFeHBvcnRGb3JtU3VibWl0KGZvcm0udmFsdWUpXCJcbiAgICA+XG4gICAgICB7eyAnaWdvLmdlby5pbXBvcnRFeHBvcnRGb3JtLmV4cG9ydEJ1dHRvbicgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8aWdvLXNwaW5uZXIgW3Nob3duXT1cImxvYWRpbmckIHwgYXN5bmNcIj48L2lnby1zcGlubmVyPlxuICA8L2Rpdj5cbjwvZm9ybT5cbiJdfQ==
159
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1pbXBvcnQtZXhwb3J0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbnRleHQvc3JjL2xpYi9jb250ZXh0LWltcG9ydC1leHBvcnQvY29udGV4dC1pbXBvcnQtZXhwb3J0L2NvbnRleHQtaW1wb3J0LWV4cG9ydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb250ZXh0L3NyYy9saWIvY29udGV4dC1pbXBvcnQtZXhwb3J0L2NvbnRleHQtaW1wb3J0LWV4cG9ydC9jb250ZXh0LWltcG9ydC1leHBvcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFDTCxXQUFXLEVBQ1gsbUJBQW1CLEVBQ25CLGtCQUFrQixFQUVsQixVQUFVLEVBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENB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aXBlLCBOZ0ZvciwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgRm9ybXNNb2R1bGUsXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gIFVudHlwZWRGb3JtQnVpbGRlcixcbiAgVW50eXBlZEZvcm1Hcm91cCxcbiAgVmFsaWRhdG9yc1xufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0QnV0dG9uVG9nZ2xlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uLXRvZ2dsZSc7XG5pbXBvcnQgeyBNYXRPcHRpb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IE1hdERpdmlkZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaXZpZGVyJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuXG5pbXBvcnQgeyBTcGlubmVyQ29tcG9uZW50IH0gZnJvbSAnQGlnbzIvY29tbW9uL3NwaW5uZXInO1xuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUvY29uZmlnJztcbmltcG9ydCB7IElnb0xhbmd1YWdlTW9kdWxlIH0gZnJvbSAnQGlnbzIvY29yZS9sYW5ndWFnZSc7XG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUvbWVzc2FnZSc7XG5pbXBvcnQgeyBMYXllciwgVmVjdG9yTGF5ZXIgfSBmcm9tICdAaWdvMi9nZW8nO1xuaW1wb3J0IHR5cGUgeyBJZ29NYXAgfSBmcm9tICdAaWdvMi9nZW8nO1xuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRGV0YWlsZWRDb250ZXh0IH0gZnJvbSAnLi4vLi4vY29udGV4dC1tYW5hZ2VyL3NoYXJlZC9jb250ZXh0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL2NvbnRleHQtbWFuYWdlci9zaGFyZWQvY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnRleHRFeHBvcnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL2NvbnRleHQtZXhwb3J0LnNlcnZpY2UnO1xuaW1wb3J0IHsgaGFuZGxlRmlsZUV4cG9ydEVycm9yIH0gZnJvbSAnLi4vc2hhcmVkL2NvbnRleHQtZXhwb3J0LnV0aWxzJztcbmltcG9ydCB7IGhhbmRsZUZpbGVFeHBvcnRTdWNjZXNzIH0gZnJvbSAnLi4vc2hhcmVkL2NvbnRleHQtZXhwb3J0LnV0aWxzJztcbmltcG9ydCB7IENvbnRleHRJbXBvcnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL2NvbnRleHQtaW1wb3J0LnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgaGFuZGxlRmlsZUltcG9ydEVycm9yLFxuICBoYW5kbGVGaWxlSW1wb3J0U3VjY2Vzc1xufSBmcm9tICcuLi9zaGFyZWQvY29udGV4dC1pbXBvcnQudXRpbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZ28tY29udGV4dC1pbXBvcnQtZXhwb3J0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbnRleHQtaW1wb3J0LWV4cG9ydC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbnRleHQtaW1wb3J0LWV4cG9ydC5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTWF0QnV0dG9uVG9nZ2xlTW9kdWxlLFxuICAgIE5nSWYsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIFNwaW5uZXJDb21wb25lbnQsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgTWF0U2VsZWN0TW9kdWxlLFxuICAgIE1hdE9wdGlvbk1vZHVsZSxcbiAgICBNYXREaXZpZGVyTW9kdWxlLFxuICAgIE5nRm9yLFxuICAgIEFzeW5jUGlwZSxcbiAgICBJZ29MYW5ndWFnZU1vZHVsZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIENvbnRleHRJbXBvcnRFeHBvcnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHB1YmxpYyBmb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xuICBwdWJsaWMgbGF5ZXJzOiBWZWN0b3JMYXllcltdO1xuICBwdWJsaWMgaW5wdXRQcm9qOiBzdHJpbmcgPSAnRVBTRzo0MzI2JztcbiAgcHVibGljIGxvYWRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIHB1YmxpYyBmb3JjZU5hbWluZyA9IGZhbHNlO1xuICBwdWJsaWMgbGF5ZXJMaXN0OiBMYXllcltdO1xuICBwdWJsaWMgdXNlckNvbnRyb2xsZWRMYXllckxpc3Q6IExheWVyW107XG4gIHB1YmxpYyByZXM6IERldGFpbGVkQ29udGV4dDtcbiAgcHJpdmF0ZSBjbGllbnRTaWRlRmlsZVNpemVNYXg6IG51bWJlcjtcbiAgcHVibGljIGZpbGVTaXplTWI6IG51bWJlcjtcbiAgcHVibGljIGFjdGl2ZUltcG9ydEV4cG9ydDogc3RyaW5nID0gJ2ltcG9ydCc7XG5cbiAgcHJpdmF0ZSBsYXllcnMkJDogU3Vic2NyaXB0aW9uO1xuXG4gIEBJbnB1dCgpIG1hcDogSWdvTWFwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY29udGV4dEltcG9ydFNlcnZpY2U6IENvbnRleHRJbXBvcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29udGV4dEV4cG9ydFNlcnZpY2U6IENvbnRleHRFeHBvcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIGNvbmZpZzogQ29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIGNvbnRleHRTZXJ2aWNlOiBDb250ZXh0U2VydmljZVxuICApIHtcbiAgICB0aGlzLmJ1aWxkRm9ybSgpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgY29uc3QgY29uZmlnRmlsZVNpemVNYiA9IHRoaXMuY29uZmlnLmdldENvbmZpZyhcbiAgICAgICdpbXBvcnRFeHBvcnQuY2xpZW50U2lkZUZpbGVTaXplTWF4TWInXG4gICAgKTtcbiAgICB0aGlzLmNsaWVudFNpZGVGaWxlU2l6ZU1heCA9XG4gICAgICAoY29uZmlnRmlsZVNpemVNYiA/IGNvbmZpZ0ZpbGVTaXplTWIgOiAzMCkgKiBNYXRoLnBvdygxMDI0LCAyKTtcbiAgICB0aGlzLmZpbGVTaXplTWIgPSB0aGlzLmNsaWVudFNpZGVGaWxlU2l6ZU1heCAvIE1hdGgucG93KDEwMjQsIDIpO1xuICAgIHRoaXMubGF5ZXJzJCQgPSB0aGlzLm1hcC5sYXllcnMkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmxheWVyTGlzdCA9IHRoaXMuY29udGV4dFNlcnZpY2UuZ2V0Q29udGV4dExheWVycyh0aGlzLm1hcCk7XG4gICAgICB0aGlzLnVzZXJDb250cm9sbGVkTGF5ZXJMaXN0ID0gdGhpcy5sYXllckxpc3QuZmlsdGVyKFxuICAgICAgICAobGF5ZXIpID0+IGxheWVyLnNob3dJbkxheWVyTGlzdFxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIGltcG9ydEZpbGVzKGZpbGVzOiBGaWxlW10pIHtcbiAgICB0aGlzLmxvYWRpbmckLm5leHQodHJ1ZSk7XG4gICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICB0aGlzLmNvbnRleHRJbXBvcnRTZXJ2aWNlXG4gICAgICAgIC5pbXBvcnQoZmlsZSlcbiAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAoY29udGV4dDogRGV0YWlsZWRDb250ZXh0KSA9PiB0aGlzLm9uRmlsZUltcG9ydFN1Y2Nlc3MoZmlsZSwgY29udGV4dCksXG4gICAgICAgICAgKGVycm9yOiBFcnJvcikgPT4gdGhpcy5vbkZpbGVJbXBvcnRFcnJvcihmaWxlLCBlcnJvciksXG4gICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlRXhwb3J0Rm9ybVN1Ym1pdChjb250ZXh0T3B0aW9ucykge1xuICAgIHRoaXMubG9hZGluZyQubmV4dCh0cnVlKTtcbiAgICB0aGlzLnJlcyA9IHRoaXMuY29udGV4dFNlcnZpY2UuZ2V0Q29udGV4dEZyb21MYXllcnMoXG4gICAgICB0aGlzLm1hcCxcbiAgICAgIGNvbnRleHRPcHRpb25zLmxheWVycyxcbiAgICAgIGNvbnRleHRPcHRpb25zLm5hbWUsXG4gICAgICBmYWxzZVxuICAgICk7XG4gICAgdGhpcy5yZXMuaW1wb3J0ZWQgPSB0cnVlO1xuICAgIHRoaXMuY29udGV4dEV4cG9ydFNlcnZpY2VcbiAgICAgIC5leHBvcnQodGhpcy5yZXMpXG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgKCkgPT4ge30sXG4gICAgICAgIChlcnJvcjogRXJyb3IpID0+IHRoaXMub25GaWxlRXhwb3J0RXJyb3IoZXJyb3IpLFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5vbkZpbGVFeHBvcnRTdWNjZXNzKCk7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRGb3JtKCkge1xuICAgIHRoaXMuZm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgbGF5ZXJzOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBuYW1lOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb25GaWxlSW1wb3J0U3VjY2VzcyhmaWxlOiBGaWxlLCBjb250ZXh0OiBEZXRhaWxlZENvbnRleHQpIHtcbiAgICBoYW5kbGVGaWxlSW1wb3J0U3VjY2VzcyhcbiAgICAgIGZpbGUsXG4gICAgICBjb250ZXh0LFxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZSxcbiAgICAgIHRoaXMuY29udGV4dFNlcnZpY2VcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkZpbGVJbXBvcnRFcnJvcihmaWxlOiBGaWxlLCBlcnJvcjogRXJyb3IpIHtcbiAgICB0aGlzLmxvYWRpbmckLm5leHQoZmFsc2UpO1xuICAgIGhhbmRsZUZpbGVJbXBvcnRFcnJvcihmaWxlLCBlcnJvciwgdGhpcy5tZXNzYWdlU2VydmljZSwgdGhpcy5maWxlU2l6ZU1iKTtcbiAgfVxuXG4gIHByaXZhdGUgb25GaWxlRXhwb3J0RXJyb3IoZXJyb3I6IEVycm9yKSB7XG4gICAgdGhpcy5sb2FkaW5nJC5uZXh0KGZhbHNlKTtcbiAgICBoYW5kbGVGaWxlRXhwb3J0RXJyb3IoZXJyb3IsIHRoaXMubWVzc2FnZVNlcnZpY2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkZpbGVFeHBvcnRTdWNjZXNzKCkge1xuICAgIGhhbmRsZUZpbGVFeHBvcnRTdWNjZXNzKHRoaXMubWVzc2FnZVNlcnZpY2UpO1xuICB9XG5cbiAgc2VsZWN0QWxsKGUpIHtcbiAgICBpZiAoZS5fc2VsZWN0ZWQpIHtcbiAgICAgIHRoaXMuZm9ybS5jb250cm9scy5sYXllcnMuc2V0VmFsdWUodGhpcy51c2VyQ29udHJvbGxlZExheWVyTGlzdCk7XG4gICAgICBlLl9zZWxlY3RlZCA9IHRydWU7XG4gICAgfVxuICAgIGlmIChlLl9zZWxlY3RlZCA9PT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuZm9ybS5jb250cm9scy5sYXllcnMuc2V0VmFsdWUoW10pO1xuICAgIH1cbiAgfVxuXG4gIG9uSW1wb3J0RXhwb3J0Q2hhbmdlKGV2ZW50KSB7XG4gICAgdGhpcy5hY3RpdmVJbXBvcnRFeHBvcnQgPSBldmVudC52YWx1ZTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMubGF5ZXJzJCQudW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImltcG9ydC1leHBvcnQtdG9nZ2xlIG1hdC10eXBvZ3JhcGh5XCI+XG4gIDxtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cFxuICAgIFt2YWx1ZV09XCJhY3RpdmVJbXBvcnRFeHBvcnRcIlxuICAgIChjaGFuZ2UpPVwib25JbXBvcnRFeHBvcnRDaGFuZ2UoJGV2ZW50KVwiXG4gID5cbiAgICA8bWF0LWJ1dHRvbi10b2dnbGUgW3ZhbHVlXT1cIidpbXBvcnQnXCI+XG4gICAgICB7eyAnaWdvLmdlby5pbXBvcnRFeHBvcnRGb3JtLmltcG9ydFRhYlRpdGxlJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XG4gICAgPG1hdC1idXR0b24tdG9nZ2xlIFt2YWx1ZV09XCInZXhwb3J0J1wiPlxuICAgICAge3sgJ2lnby5nZW8uaW1wb3J0RXhwb3J0Rm9ybS5leHBvcnRUYWJUaXRsZScgfCB0cmFuc2xhdGUgfX1cbiAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxuICA8L21hdC1idXR0b24tdG9nZ2xlLWdyb3VwPlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCJhY3RpdmVJbXBvcnRFeHBvcnQgPT09ICdpbXBvcnQnXCI+XG4gIDxmb3JtIGNsYXNzPVwiaWdvLWZvcm1cIj5cbiAgICA8ZGl2IGNsYXNzPVwiaWdvLWZvcm0tYnV0dG9uLWdyb3VwXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIG1hdC1yYWlzZWQtYnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwibG9hZGluZyQgfCBhc3luY1wiXG4gICAgICA+XG4gICAgICAgIHt7ICdpZ28uZ2VvLmltcG9ydEV4cG9ydEZvcm0uaW1wb3J0QnV0dG9uJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8aWdvLXNwaW5uZXIgW3Nob3duXT1cImxvYWRpbmckIHwgYXN5bmNcIj48L2lnby1zcGlubmVyPlxuICAgICAgPGlucHV0XG4gICAgICAgICNmaWxlSW5wdXRcbiAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICBbc3R5bGUuZGlzcGxheV09XCInbm9uZSdcIlxuICAgICAgICAoY2xpY2spPVwiZmlsZUlucHV0LnZhbHVlID0gbnVsbFwiXG4gICAgICAgIChjaGFuZ2UpPVwiaW1wb3J0RmlsZXMoJGFueSgkZXZlbnQudGFyZ2V0KS5maWxlcylcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgPC9mb3JtPlxuICA8c2VjdGlvbiBjbGFzcz1cIm1hdC10eXBvZ3JhcGh5XCI+XG4gICAgPGg0Pnt7ICdpZ28uZ2VvLmltcG9ydEV4cG9ydEZvcm0uaW1wb3J0Q2xhcmlmaWNhdGlvbnMnIHwgdHJhbnNsYXRlIH19PC9oND5cbiAgICA8dWw+XG4gICAgICA8bGk+XG4gICAgICAgIHt7XG4gICAgICAgICAgJ2lnby5nZW8uaW1wb3J0RXhwb3J0Rm9ybS5pbXBvcnRTaXplTWF4J1xuICAgICAgICAgICAgfCB0cmFuc2xhdGU6IHsgc2l6ZTogZmlsZVNpemVNYiB9XG4gICAgICAgIH19XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gIDwvc2VjdGlvbj5cbjwvZGl2PlxuXG48Zm9ybVxuICBjbGFzcz1cImlnby1mb3JtXCJcbiAgKm5nSWY9XCJhY3RpdmVJbXBvcnRFeHBvcnQgPT09ICdleHBvcnQnXCJcbiAgW2Zvcm1Hcm91cF09XCJmb3JtXCJcbj5cbiAgPGRpdiBjbGFzcz1cImlnby1pbnB1dC1jb250YWluZXJcIj5cbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJleGFtcGxlLWZ1bGwtd2lkdGhcIj5cbiAgICAgIDxtYXQtbGFiZWw+e3tcbiAgICAgICAgJ2lnby5jb250ZXh0LmNvbnRleHRJbXBvcnRFeHBvcnQuZXhwb3J0LmV4cG9ydENvbnRleHROYW1lJyB8IHRyYW5zbGF0ZVxuICAgICAgfX08L21hdC1sYWJlbD5cbiAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCIgbWF0SW5wdXQgW3ZhbHVlXT1cIlwiIC8+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJpZ28taW5wdXQtY29udGFpbmVyXCI+XG4gICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgPG1hdC1sYWJlbD57e1xuICAgICAgICAnaWdvLmNvbnRleHQuY29udGV4dEltcG9ydEV4cG9ydC5leHBvcnQuZXhwb3J0UGxhY2VIb2xkZXInIHwgdHJhbnNsYXRlXG4gICAgICB9fTwvbWF0LWxhYmVsPlxuICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwibGF5ZXJzXCIgbXVsdGlwbGU+XG4gICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCIxXCIgKGNsaWNrKT1cInNlbGVjdEFsbChlKVwiICNlPlxuICAgICAgICAgIHt7XG4gICAgICAgICAgICAnaWdvLmNvbnRleHQuY29udGV4dEltcG9ydEV4cG9ydC5leHBvcnQuZXhwb3J0U2VsZWN0QWxsJyB8IHRyYW5zbGF0ZVxuICAgICAgICAgIH19XG4gICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XG4gICAgICAgIDxtYXQtb3B0aW9uXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGxheWVyIG9mIHVzZXJDb250cm9sbGVkTGF5ZXJMaXN0XCJcbiAgICAgICAgICBbdmFsdWVdPVwibGF5ZXJcIlxuICAgICAgICAgID57eyBsYXllci50aXRsZSB9fTwvbWF0LW9wdGlvblxuICAgICAgICA+XG4gICAgICA8L21hdC1zZWxlY3Q+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJpZ28tZm9ybS1idXR0b24tZ3JvdXBcIj5cbiAgICA8YnV0dG9uXG4gICAgICBtYXQtcmFpc2VkLWJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBbZGlzYWJsZWRdPVwiIWZvcm0udmFsaWQgfHwgKGxvYWRpbmckIHwgYXN5bmMpXCJcbiAgICAgIChjbGljayk9XCJoYW5kbGVFeHBvcnRGb3JtU3VibWl0KGZvcm0udmFsdWUpXCJcbiAgICA+XG4gICAgICB7eyAnaWdvLmdlby5pbXBvcnRFeHBvcnRGb3JtLmV4cG9ydEJ1dHRvbicgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8aWdvLXNwaW5uZXIgW3Nob3duXT1cImxvYWRpbmckIHwgYXN5bmNcIj48L2lnby1zcGlubmVyPlxuICA8L2Rpdj5cbjwvZm9ybT5cbiJdfQ==
@@ -10,11 +10,11 @@ export class IgoContextImportExportModule {
10
10
  ngModule: IgoContextImportExportModule
11
11
  };
12
12
  }
13
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: IgoContextImportExportModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
14
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.2.4", ngImport: i0, type: IgoContextImportExportModule, imports: [ContextImportExportComponent], exports: [ContextImportExportComponent] });
15
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: IgoContextImportExportModule, imports: [ContextImportExportComponent] });
13
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: IgoContextImportExportModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
14
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.9", ngImport: i0, type: IgoContextImportExportModule, imports: [ContextImportExportComponent], exports: [ContextImportExportComponent] });
15
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: IgoContextImportExportModule, imports: [ContextImportExportComponent] });
16
16
  }
17
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: IgoContextImportExportModule, decorators: [{
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: IgoContextImportExportModule, decorators: [{
18
18
  type: NgModule,
19
19
  args: [{
20
20
  imports: [ContextImportExportComponent],
@@ -26,10 +26,10 @@ export class ContextExportService {
26
26
  }
27
27
  return false;
28
28
  }
29
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: ContextExportService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
30
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: ContextExportService, providedIn: 'root' });
29
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ContextExportService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
30
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ContextExportService, providedIn: 'root' });
31
31
  }
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: ContextExportService, decorators: [{
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ContextExportService, decorators: [{
33
33
  type: Injectable,
34
34
  args: [{
35
35
  providedIn: 'root'
@@ -70,10 +70,10 @@ export class ContextImportService {
70
70
  const context = JSON.parse(data);
71
71
  return context;
72
72
  }
73
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: ContextImportService, deps: [{ token: i1.ConfigService }], target: i0.ɵɵFactoryTarget.Injectable });
74
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: ContextImportService, providedIn: 'root' });
73
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ContextImportService, deps: [{ token: i1.ConfigService }], target: i0.ɵɵFactoryTarget.Injectable });
74
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ContextImportService, providedIn: 'root' });
75
75
  }
76
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: ContextImportService, decorators: [{
76
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ContextImportService, decorators: [{
77
77
  type: Injectable,
78
78
  args: [{
79
79
  providedIn: 'root'
@@ -36,10 +36,10 @@ export class ContextEditBindingDirective {
36
36
  handleEditedContextChange(context) {
37
37
  this.component.context = context;
38
38
  }
39
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: ContextEditBindingDirective, deps: [{ token: i1.ContextEditComponent, self: true }, { token: i2.ContextService }, { token: i3.MessageService }], target: i0.ɵɵFactoryTarget.Directive });
40
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.4", type: ContextEditBindingDirective, isStandalone: true, selector: "[igoContextEditBinding]", outputs: { submitSuccessed: "submitSuccessed" }, host: { listeners: { "submitForm": "onEdit($event)" } }, ngImport: i0 });
39
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ContextEditBindingDirective, deps: [{ token: i1.ContextEditComponent, self: true }, { token: i2.ContextService }, { token: i3.MessageService }], target: i0.ɵɵFactoryTarget.Directive });
40
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.9", type: ContextEditBindingDirective, isStandalone: true, selector: "[igoContextEditBinding]", outputs: { submitSuccessed: "submitSuccessed" }, host: { listeners: { "submitForm": "onEdit($event)" } }, ngImport: i0 });
41
41
  }
42
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: ContextEditBindingDirective, decorators: [{
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ContextEditBindingDirective, decorators: [{
43
43
  type: Directive,
44
44
  args: [{
45
45
  selector: '[igoContextEditBinding]',
@@ -21,10 +21,10 @@ export class ContextEditComponent {
21
21
  refresh() {
22
22
  this.cd.detectChanges();
23
23
  }
24
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: ContextEditComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
25
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: ContextEditComponent, isStandalone: true, selector: "igo-context-edit", inputs: { context: "context" }, outputs: { submitForm: "submitForm" }, ngImport: i0, template: "<igo-context-form\n *ngIf=\"context\"\n [btnSubmitText]=\"'igo.context.contextManager.save' | translate\"\n [context]=\"context\"\n (submitForm)=\"submitForm.emit($event)\"\n>\n</igo-context-form>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ContextFormComponent, selector: "igo-context-form", inputs: ["btnSubmitText", "context", "disabled"], outputs: ["submitForm", "clone", "delete"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
24
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ContextEditComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
25
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: ContextEditComponent, isStandalone: true, selector: "igo-context-edit", inputs: { context: "context" }, outputs: { submitForm: "submitForm" }, ngImport: i0, template: "<igo-context-form\n *ngIf=\"context\"\n [btnSubmitText]=\"'igo.context.contextManager.save' | translate\"\n [context]=\"context\"\n (submitForm)=\"submitForm.emit($event)\"\n>\n</igo-context-form>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ContextFormComponent, selector: "igo-context-form", inputs: ["btnSubmitText", "context", "disabled"], outputs: ["submitForm", "clone", "delete"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
26
26
  }
27
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: ContextEditComponent, decorators: [{
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ContextEditComponent, decorators: [{
28
28
  type: Component,
29
29
  args: [{ selector: 'igo-context-edit', standalone: true, imports: [NgIf, ContextFormComponent, IgoLanguageModule], template: "<igo-context-form\n *ngIf=\"context\"\n [btnSubmitText]=\"'igo.context.contextManager.save' | translate\"\n [context]=\"context\"\n (submitForm)=\"submitForm.emit($event)\"\n>\n</igo-context-form>\n" }]
30
30
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { context: [{
@@ -85,10 +85,10 @@ export class ContextFormComponent {
85
85
  uri: [uri || ' ']
86
86
  });
87
87
  }
88
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: ContextFormComponent, deps: [{ token: i1.UntypedFormBuilder }, { token: i2.MessageService }], target: i0.ɵɵFactoryTarget.Component });
89
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: ContextFormComponent, isStandalone: true, selector: "igo-context-form", inputs: { btnSubmitText: "btnSubmitText", context: "context", disabled: "disabled" }, outputs: { submitForm: "submitForm", clone: "clone", delete: "delete" }, ngImport: i0, template: "<form\n class=\"igo-form\"\n [formGroup]=\"form\"\n (ngSubmit)=\"handleFormSubmit(form.value)\"\n>\n <mat-form-field class=\"full-width\">\n <input\n matInput\n required\n maxlength=\"128\"\n [placeholder]=\"'igo.context.contextManager.form.title' | translate\"\n formControlName=\"title\"\n />\n <mat-error>\n {{ 'igo.context.contextManager.form.titleRequired' | translate }}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field id=\"uriInput\" class=\"full-width\">\n <span *ngIf=\"prefix\" class=\"prefix\">{{ prefix }}-</span>\n <span class=\"fieldWrapper\">\n <input\n matInput\n maxlength=\"64\"\n floatLabel=\"always\"\n [placeholder]=\"'igo.context.contextManager.form.uri' | translate\"\n formControlName=\"uri\"\n />\n </span>\n </mat-form-field>\n\n <button\n id=\"copyButton\"\n type=\"button\"\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.context.contextManager.form.copy' | translate\"\n color=\"primary\"\n (click)=\"copyTextToClipboard()\"\n >\n <mat-icon>content_copy</mat-icon>\n </button>\n\n <div class=\"igo-form-button-group\">\n <button\n mat-raised-button\n type=\"submit\"\n [disabled]=\"!form.valid || disabled\"\n >\n {{ 'igo.context.contextManager.form.edit' | translate }}\n </button>\n </div>\n</form>\n", styles: ["form{margin:10px}.full-width{width:100%}#uriInput .fieldWrapper{display:block;overflow:hidden}#uriInput .prefix{float:left}#copyButton{width:24px;float:right;position:relative;top:-58px;left:5px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }] });
88
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ContextFormComponent, deps: [{ token: i1.UntypedFormBuilder }, { token: i2.MessageService }], target: i0.ɵɵFactoryTarget.Component });
89
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: ContextFormComponent, isStandalone: true, selector: "igo-context-form", inputs: { btnSubmitText: "btnSubmitText", context: "context", disabled: "disabled" }, outputs: { submitForm: "submitForm", clone: "clone", delete: "delete" }, ngImport: i0, template: "<form\n class=\"igo-form\"\n [formGroup]=\"form\"\n (ngSubmit)=\"handleFormSubmit(form.value)\"\n>\n <mat-form-field class=\"full-width\">\n <input\n matInput\n required\n maxlength=\"128\"\n [placeholder]=\"'igo.context.contextManager.form.title' | translate\"\n formControlName=\"title\"\n />\n <mat-error>\n {{ 'igo.context.contextManager.form.titleRequired' | translate }}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field id=\"uriInput\" class=\"full-width\">\n <span *ngIf=\"prefix\" class=\"prefix\">{{ prefix }}-</span>\n <span class=\"fieldWrapper\">\n <input\n matInput\n maxlength=\"64\"\n floatLabel=\"always\"\n [placeholder]=\"'igo.context.contextManager.form.uri' | translate\"\n formControlName=\"uri\"\n />\n </span>\n </mat-form-field>\n\n <button\n id=\"copyButton\"\n type=\"button\"\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.context.contextManager.form.copy' | translate\"\n color=\"primary\"\n (click)=\"copyTextToClipboard()\"\n >\n <mat-icon>content_copy</mat-icon>\n </button>\n\n <div class=\"igo-form-button-group\">\n <button\n mat-raised-button\n type=\"submit\"\n [disabled]=\"!form.valid || disabled\"\n >\n {{ 'igo.context.contextManager.form.edit' | translate }}\n </button>\n </div>\n</form>\n", styles: ["form{margin:10px}.full-width{width:100%}#uriInput .fieldWrapper{display:block;overflow:hidden}#uriInput .prefix{float:left}#copyButton{width:24px;float:right;position:relative;top:-58px;left:5px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }] });
90
90
  }
91
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: ContextFormComponent, decorators: [{
91
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ContextFormComponent, decorators: [{
92
92
  type: Component,
93
93
  args: [{ selector: 'igo-context-form', standalone: true, imports: [
94
94
  FormsModule,
@@ -50,10 +50,10 @@ export class ContextItemComponent {
50
50
  favoriteClick(context) {
51
51
  this.favorite.emit(context);
52
52
  }
53
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: ContextItemComponent, deps: [{ token: i1.AuthService }, { token: i2.StorageService }], target: i0.ɵɵFactoryTarget.Component });
54
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: ContextItemComponent, isStandalone: true, selector: "igo-context-item", inputs: { showFavorite: "showFavorite", context: "context", default: "default", selected: "selected" }, outputs: { edit: "edit", delete: "delete", save: "save", clone: "clone", hide: "hide", show: "show", favorite: "favorite", managePermissions: "managePermissions", manageTools: "manageTools" }, ngImport: i0, template: "<mat-list-item\n class=\"mat-list-item\"\n [ngClass]=\"{ 'mat-list-item-light': hidden }\"\n>\n <button\n *ngIf=\"auth.authenticated\"\n matListItemAvatar\n mat-icon-button\n igoStopPropagation\n [matTooltip]=\"\n auth.authenticated\n ? ('igo.context.contextManager.favorite' | translate)\n : ''\n \"\n matTooltipShowDelay=\"500\"\n [color]=\"default ? 'primary' : 'default'\"\n (click)=\"favoriteClick(context)\"\n >\n <mat-icon *ngIf=\"!context.iconImage\">{{\n context.icon\n ? context.icon\n : context.scope === 'public'\n ? 'public'\n : 'star'\n }}</mat-icon>\n <img *ngIf=\"context.iconImage\" [src]=\"context.iconImage\" />\n </button>\n <button\n matListItemAvatar\n *ngIf=\"!auth.authenticated && showFavorite\"\n mat-icon-button\n igoStopPropagation\n [matTooltip]=\"'igo.context.contextManager.favorite' | translate\"\n matTooltipShowDelay=\"500\"\n [color]=\"default ? 'primary' : 'default'\"\n (click)=\"favoriteClick(context)\"\n >\n <mat-icon>star</mat-icon>\n </button>\n <span matListItemTitle>{{ context.title }}</span>\n\n <div\n *ngIf=\"auth.authenticated\"\n matListItemMeta\n igoStopPropagation\n class=\"igo-actions-container\"\n >\n <button\n *ngIf=\"\n collapsed &&\n selected &&\n (context.permission === typePermission[typePermission.write] ||\n context.imported)\n \"\n class=\"save-button\"\n mat-icon-button\n [matTooltip]=\"'igo.context.contextManager.save' | translate\"\n matTooltipShowDelay=\"500\"\n [color]=\"color\"\n (click)=\"save.emit(context)\"\n >\n <mat-icon>save</mat-icon>\n </button>\n\n <div #actions class=\"igo-actions-expand-container\">\n <button\n *ngIf=\"canShare && !context.imported\"\n mat-icon-button\n [matTooltip]=\"\n 'igo.context.contextManager.managePermissions' | translate\n \"\n matTooltipShowDelay=\"500\"\n [color]=\"color\"\n (click)=\"managePermissions.emit(context)\"\n >\n <mat-icon>manage_accounts</mat-icon>\n </button>\n\n <button\n *ngIf=\"!context.imported\"\n class=\"clone-button\"\n mat-icon-button\n [matTooltip]=\"'igo.context.contextManager.clone' | translate\"\n matTooltipShowDelay=\"500\"\n [color]=\"color\"\n (click)=\"clone.emit(context)\"\n >\n <mat-icon>content_copy</mat-icon>\n </button>\n\n <button\n *ngIf=\"\n context.permission === typePermission[typePermission.write] &&\n !context.imported\n \"\n class=\"edit-button\"\n mat-icon-button\n [color]=\"color\"\n [matTooltip]=\"'igo.context.contextManager.edit' | translate\"\n matTooltipShowDelay=\"500\"\n (click)=\"edit.emit(context)\"\n >\n <mat-icon>edit</mat-icon>\n </button>\n\n <button\n *ngIf=\"!context.hidden && !context.imported\"\n class=\"hide-button\"\n mat-icon-button\n [color]=\"color\"\n [matTooltip]=\"'igo.context.contextManager.hide' | translate\"\n matTooltipShowDelay=\"500\"\n (click)=\"hide.emit(context)\"\n >\n <mat-icon>visibility</mat-icon>\n </button>\n\n <button\n *ngIf=\"context.hidden && !context.imported\"\n class=\"hide-button\"\n mat-icon-button\n [color]=\"color\"\n [matTooltip]=\"'igo.context.contextManager.show' | translate\"\n matTooltipShowDelay=\"500\"\n (click)=\"show.emit(context)\"\n >\n <mat-icon>visibility_off</mat-icon>\n </button>\n\n <button\n *ngIf=\"\n context.permission === typePermission[typePermission.write] ||\n context.imported\n \"\n class=\"delete-button\"\n mat-icon-button\n color=\"warn\"\n [matTooltip]=\"'igo.context.contextManager.delete' | translate\"\n matTooltipShowDelay=\"500\"\n (click)=\"delete.emit(context)\"\n >\n <mat-icon>delete</mat-icon>\n </button>\n </div>\n\n <button\n class=\"actions-button\"\n mat-icon-button\n igoCollapse\n [color]=\"color\"\n [target]=\"actions\"\n [collapsed]=\"collapsed\"\n (click)=\"collapsed = !collapsed\"\n >\n <mat-icon>more_horiz</mat-icon>\n </button>\n </div>\n</mat-list-item>\n", styles: [":host{overflow:hidden}:host .igo-actions-container{flex-shrink:0}:host .igo-actions-expand-container{display:inline-flex}:host mat-icon.disabled{color:#00000061}:host button[matlistitemavatar]{margin-right:8px}\n"], dependencies: [{ kind: "ngmodule", type: MatListModule }, { kind: "component", type: i3.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i3.MatListItemAvatar, selector: "[matListItemAvatar]" }, { kind: "directive", type: i3.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "directive", type: i3.MatListItemMeta, selector: "[matListItemMeta]" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: StopPropagationDirective, selector: "[igoStopPropagation]" }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: CollapseDirective, selector: "[igoCollapse]", inputs: ["target", "collapsed"], outputs: ["toggle"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
53
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ContextItemComponent, deps: [{ token: i1.AuthService }, { token: i2.StorageService }], target: i0.ɵɵFactoryTarget.Component });
54
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: ContextItemComponent, isStandalone: true, selector: "igo-context-item", inputs: { showFavorite: "showFavorite", context: "context", default: "default", selected: "selected" }, outputs: { edit: "edit", delete: "delete", save: "save", clone: "clone", hide: "hide", show: "show", favorite: "favorite", managePermissions: "managePermissions", manageTools: "manageTools" }, ngImport: i0, template: "<mat-list-item\n class=\"mat-list-item\"\n [ngClass]=\"{ 'mat-list-item-light': hidden }\"\n>\n <button\n *ngIf=\"auth.authenticated\"\n matListItemAvatar\n mat-icon-button\n igoStopPropagation\n [matTooltip]=\"\n auth.authenticated\n ? ('igo.context.contextManager.favorite' | translate)\n : ''\n \"\n matTooltipShowDelay=\"500\"\n [color]=\"default ? 'primary' : 'default'\"\n (click)=\"favoriteClick(context)\"\n >\n <mat-icon *ngIf=\"!context.iconImage\">{{\n context.icon\n ? context.icon\n : context.scope === 'public'\n ? 'public'\n : 'star'\n }}</mat-icon>\n <img *ngIf=\"context.iconImage\" [src]=\"context.iconImage\" />\n </button>\n <button\n matListItemAvatar\n *ngIf=\"!auth.authenticated && showFavorite\"\n mat-icon-button\n igoStopPropagation\n [matTooltip]=\"'igo.context.contextManager.favorite' | translate\"\n matTooltipShowDelay=\"500\"\n [color]=\"default ? 'primary' : 'default'\"\n (click)=\"favoriteClick(context)\"\n >\n <mat-icon>star</mat-icon>\n </button>\n <span matListItemTitle>{{ context.title }}</span>\n\n <div\n *ngIf=\"auth.authenticated\"\n matListItemMeta\n igoStopPropagation\n class=\"igo-actions-container\"\n >\n <button\n *ngIf=\"\n collapsed &&\n selected &&\n (context.permission === typePermission[typePermission.write] ||\n context.imported)\n \"\n class=\"save-button\"\n mat-icon-button\n [matTooltip]=\"'igo.context.contextManager.save' | translate\"\n matTooltipShowDelay=\"500\"\n [color]=\"color\"\n (click)=\"save.emit(context)\"\n >\n <mat-icon>save</mat-icon>\n </button>\n\n <div #actions class=\"igo-actions-expand-container\">\n <button\n *ngIf=\"canShare && !context.imported\"\n mat-icon-button\n [matTooltip]=\"\n 'igo.context.contextManager.managePermissions' | translate\n \"\n matTooltipShowDelay=\"500\"\n [color]=\"color\"\n (click)=\"managePermissions.emit(context)\"\n >\n <mat-icon>manage_accounts</mat-icon>\n </button>\n\n <button\n *ngIf=\"!context.imported\"\n class=\"clone-button\"\n mat-icon-button\n [matTooltip]=\"'igo.context.contextManager.clone' | translate\"\n matTooltipShowDelay=\"500\"\n [color]=\"color\"\n (click)=\"clone.emit(context)\"\n >\n <mat-icon>content_copy</mat-icon>\n </button>\n\n <button\n *ngIf=\"\n context.permission === typePermission[typePermission.write] &&\n !context.imported\n \"\n class=\"edit-button\"\n mat-icon-button\n [color]=\"color\"\n [matTooltip]=\"'igo.context.contextManager.edit' | translate\"\n matTooltipShowDelay=\"500\"\n (click)=\"edit.emit(context)\"\n >\n <mat-icon>edit</mat-icon>\n </button>\n\n <button\n *ngIf=\"!context.hidden && !context.imported\"\n class=\"hide-button\"\n mat-icon-button\n [color]=\"color\"\n [matTooltip]=\"'igo.context.contextManager.hide' | translate\"\n matTooltipShowDelay=\"500\"\n (click)=\"hide.emit(context)\"\n >\n <mat-icon>visibility</mat-icon>\n </button>\n\n <button\n *ngIf=\"context.hidden && !context.imported\"\n class=\"hide-button\"\n mat-icon-button\n [color]=\"color\"\n [matTooltip]=\"'igo.context.contextManager.show' | translate\"\n matTooltipShowDelay=\"500\"\n (click)=\"show.emit(context)\"\n >\n <mat-icon>visibility_off</mat-icon>\n </button>\n\n <button\n *ngIf=\"\n context.permission === typePermission[typePermission.write] ||\n context.imported\n \"\n class=\"delete-button\"\n mat-icon-button\n color=\"warn\"\n [matTooltip]=\"'igo.context.contextManager.delete' | translate\"\n matTooltipShowDelay=\"500\"\n (click)=\"delete.emit(context)\"\n >\n <mat-icon>delete</mat-icon>\n </button>\n </div>\n\n <button\n class=\"actions-button\"\n mat-icon-button\n igoCollapse\n [color]=\"color\"\n [target]=\"actions\"\n [collapsed]=\"collapsed\"\n (click)=\"collapsed = !collapsed\"\n >\n <mat-icon>more_horiz</mat-icon>\n </button>\n </div>\n</mat-list-item>\n", styles: [":host{overflow:hidden}:host .igo-actions-container{flex-shrink:0}:host .igo-actions-expand-container{display:inline-flex}:host mat-icon.disabled{color:#00000061}:host button[matlistitemavatar]{margin-right:8px}\n"], dependencies: [{ kind: "ngmodule", type: MatListModule }, { kind: "component", type: i3.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i3.MatListItemAvatar, selector: "[matListItemAvatar]" }, { kind: "directive", type: i3.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "directive", type: i3.MatListItemMeta, selector: "[matListItemMeta]" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: StopPropagationDirective, selector: "[igoStopPropagation]" }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: CollapseDirective, selector: "[igoCollapse]", inputs: ["target", "collapsed"], outputs: ["toggle"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
55
55
  }
56
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: ContextItemComponent, decorators: [{
56
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ContextItemComponent, decorators: [{
57
57
  type: Component,
58
58
  args: [{ selector: 'igo-context-item', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
59
59
  MatListModule,
@@ -208,10 +208,10 @@ export class ContextListBindingDirective {
208
208
  handleContextsChange(contexts) {
209
209
  this.component.contexts = contexts;
210
210
  }
211
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: ContextListBindingDirective, deps: [{ token: i1.ContextListComponent, self: true }, { token: i2.ContextService }, { token: i3.MapService }, { token: i4.LanguageService }, { token: i5.ConfirmDialogService }, { token: i6.MessageService }, { token: i7.AuthService }, { token: i8.StorageService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
212
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.4", type: ContextListBindingDirective, isStandalone: true, selector: "[igoContextListBinding]", host: { listeners: { "select": "onSelect($event)", "edit": "onEdit($event)", "save": "onSave($event)", "favorite": "onFavorite($event)", "manageTools": "onManageTools($event)", "managePermissions": "onManagePermissions($event)", "delete": "onDelete($event)", "clone": "onClone($event)", "create": "onCreate($event)", "filterPermissionsChanged": "loadContexts()", "showHiddenContexts": "showHiddenContexts()", "show": "onShowContext($event)", "hide": "onHideContext($event)" } }, providers: [ConfirmDialogService], ngImport: i0 });
211
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ContextListBindingDirective, deps: [{ token: i1.ContextListComponent, self: true }, { token: i2.ContextService }, { token: i3.MapService }, { token: i4.LanguageService }, { token: i5.ConfirmDialogService }, { token: i6.MessageService }, { token: i7.AuthService }, { token: i8.StorageService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
212
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.9", type: ContextListBindingDirective, isStandalone: true, selector: "[igoContextListBinding]", host: { listeners: { "select": "onSelect($event)", "edit": "onEdit($event)", "save": "onSave($event)", "favorite": "onFavorite($event)", "manageTools": "onManageTools($event)", "managePermissions": "onManagePermissions($event)", "delete": "onDelete($event)", "clone": "onClone($event)", "create": "onCreate($event)", "filterPermissionsChanged": "loadContexts()", "showHiddenContexts": "showHiddenContexts()", "show": "onShowContext($event)", "hide": "onHideContext($event)" } }, providers: [ConfirmDialogService], ngImport: i0 });
213
213
  }
214
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: ContextListBindingDirective, decorators: [{
214
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ContextListBindingDirective, decorators: [{
215
215
  type: Directive,
216
216
  args: [{
217
217
  selector: '[igoContextListBinding]',
@@ -356,10 +356,10 @@ export class ContextListComponent {
356
356
  context.hidden = false;
357
357
  this.show.emit(context);
358
358
  }
359
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: ContextListComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.ConfigService }, { token: i2.AuthService }, { token: i3.MatDialog }, { token: i4.LanguageService }, { token: i5.StorageService }], target: i0.ɵɵFactoryTarget.Component });
360
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: ContextListComponent, isStandalone: true, selector: "igo-context-list", inputs: { contexts: "contexts", selectedContext: "selectedContext", map: "map", defaultContextId: "defaultContextId", term: "term" }, outputs: { select: "select", unselect: "unselect", edit: "edit", delete: "delete", save: "save", clone: "clone", create: "create", hide: "hide", show: "show", showHiddenContexts: "showHiddenContexts", favorite: "favorite", managePermissions: "managePermissions", manageTools: "manageTools", filterPermissionsChanged: "filterPermissionsChanged" }, ngImport: i0, template: "<igo-list [navigation]=\"true\">\n <div class=\"context-filter-container\">\n <mat-form-field *ngIf=\"showFilter()\" floatLabel=\"always\">\n <mat-label>{{\n 'igo.context.contextManager.filterPlaceHolder' | translate\n }}</mat-label>\n <input\n matInput\n type=\"text\"\n [placeholder]=\"\n 'igo.context.contextManager.filterPlaceHolder' | translate\n \"\n [(ngModel)]=\"term\"\n />\n <button\n mat-icon-button\n matSuffix\n class=\"clear-button\"\n *ngIf=\"term.length\"\n aria-label=\"Clear\"\n color=\"warn\"\n (click)=\"clearFilter()\"\n >\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n\n <div class=\"actions-container\">\n <button\n class=\"sort-alpha\"\n [class.--active]=\"sortedAlpha\"\n mat-icon-button\n [matTooltip]=\"\n 'igo.context.contextManager.sortAlphabetically' | translate\n \"\n matTooltipShowDelay=\"500\"\n (click)=\"toggleSort()\"\n >\n <mat-icon color=\"primary\">sort_by_alpha</mat-icon>\n </button>\n\n <igo-actionbar\n *ngIf=\"auth.authenticated && contextConfigs\"\n class=\"add-context-button\"\n [iconColor]=\"color\"\n [store]=\"actionStore\"\n [withIcon]=\"true\"\n icon=\"add\"\n [withTitle]=\"actionbarMode === 'overlay'\"\n [horizontal]=\"false\"\n [mode]=\"actionbarMode\"\n >\n </igo-actionbar>\n\n <button\n *ngIf=\"auth.authenticated && contextConfigs\"\n class=\"users-filter\"\n mat-icon-button\n [matTooltip]=\"'igo.context.contextManager.filterUser' | translate\"\n matTooltipShowDelay=\"500\"\n [matMenuTriggerFor]=\"accountMenu\"\n >\n <mat-icon color=\"primary\">fitler_alt</mat-icon>\n </button>\n <mat-menu #accountMenu=\"matMenu\">\n <ng-container *ngFor=\"let user of users\">\n <button\n *ngIf=\"!user.childs; else withSubMenu\"\n mat-menu-item\n class=\"profil-menu\"\n >\n <mat-checkbox\n [checked]=\"getPermission(user).checked\"\n [indeterminate]=\"getPermission(user).indeterminate\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"handleToggleCategory(user)\"\n >\n </mat-checkbox>\n <span>{{ user.title }}</span>\n </button>\n <ng-template #withSubMenu>\n <button\n mat-menu-item\n [matMenuTriggerFor]=\"subAccountMenu\"\n class=\"profil-menu\"\n >\n <mat-checkbox\n [checked]=\"getPermission(user).checked\"\n [indeterminate]=\"getPermission(user).indeterminate\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"handleToggleCategory(user)\"\n >\n </mat-checkbox>\n <span>{{ user.title }}</span>\n </button>\n\n <mat-menu #subAccountMenu=\"matMenu\">\n <button\n mat-menu-item\n *ngFor=\"let child of user.childs\"\n class=\"profil-menu\"\n >\n <mat-checkbox\n [checked]=\"getPermission(child).checked\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"handleToggleCategory(child, user)\"\n >\n {{ child.title }}\n </mat-checkbox>\n </button>\n </mat-menu>\n </ng-template>\n </ng-container>\n\n <button mat-menu-item class=\"profil-menu\">\n <mat-checkbox\n [checked]=\"showHidden\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"showHiddenContexts.emit()\"\n >\n </mat-checkbox>\n <span>\n {{ 'igo.context.contextManager.showHidden' | translate }}\n </span>\n </button>\n </mat-menu>\n </div>\n </div>\n\n <ng-template\n ngFor\n let-groupContexts\n [ngForOf]=\"$any(contexts$ | async) | keyvalue\"\n >\n <igo-collapsible\n *ngIf=\"$any(groupContexts).value.length && auth.authenticated\"\n [title]=\"titleMapping[$any(groupContexts).key] | translate\"\n [collapsed]=\"$any(collapsed[titleMapping[$any(groupContexts).key]])\"\n (toggle)=\"collapsed[titleMapping[$any(groupContexts).key]] = $any($event)\"\n >\n <ng-template ngFor let-context [ngForOf]=\"$any(groupContexts).value\">\n <igo-context-item\n igoListItem\n color=\"accent\"\n [selected]=\"selectedContext && selectedContext.uri === context.uri\"\n [context]=\"context\"\n [default]=\"\n context.id &&\n this.defaultContextId &&\n this.defaultContextId === context.id\n \"\n (edit)=\"edit.emit(context)\"\n (delete)=\"delete.emit(context)\"\n (clone)=\"clone.emit(context)\"\n (save)=\"save.emit(context)\"\n (hide)=\"hideContext(context)\"\n (show)=\"showContext(context)\"\n (favorite)=\"favorite.emit(context)\"\n (manageTools)=\"manageTools.emit(context)\"\n (managePermissions)=\"managePermissions.emit(context)\"\n (select)=\"select.emit(context)\"\n (unselect)=\"unselect.emit(context)\"\n >\n </igo-context-item>\n </ng-template>\n </igo-collapsible>\n\n <ng-template\n *ngIf=\"$any(groupContexts).value.length && !auth.authenticated\"\n ngFor\n let-context\n [ngForOf]=\"$any(groupContexts).value\"\n >\n <igo-context-item\n igoListItem\n color=\"accent\"\n [showFavorite]=\"\n configService.getConfig('favoriteContext4NonAuthenticated')\n \"\n [selected]=\"selectedContext && selectedContext.uri === context.uri\"\n [context]=\"context\"\n [default]=\"\n contextConfigs\n ? defaultContextId === context.id\n : defaultContextId === context.uri\n \"\n (favorite)=\"favorite.emit(context)\"\n (select)=\"select.emit(context)\"\n (unselect)=\"unselect.emit(context)\"\n >\n </igo-context-item>\n </ng-template>\n </ng-template>\n\n <div *ngIf=\"isEmpty\" class=\"no-result\">\n {{ 'igo.context.contextManager.noResult' | translate }}\n </div>\n</igo-list>\n", styles: [":host ::ng-deep mat-form-field .mat-mdc-form-field-subscript-wrapper{display:none}.context-filter-container{display:flex;align-items:center;padding:8px 4px}.context-filter-container mat-form-field{flex:1}.sort-alpha.--active mat-icon{color:red}.context-filter-min-width{width:calc(100% - 135px);margin:5px;padding-left:6px}.profil-menu{padding-left:8px}.profil-menu mat-checkbox{margin-right:8px}.add-context-button{margin:0;width:40px;display:inline-flex;overflow:hidden}.actions-container{margin-left:4px}.no-result{padding:16px}\n"], dependencies: [{ kind: "component", type: ListComponent, selector: "igo-list", inputs: ["navigation", "selection"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i9.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i11.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: ActionbarComponent, selector: "igo-actionbar", inputs: ["store", "mode", "withToggleButton", "horizontal", "color", "iconColor", "withTitle", "withTooltip", "scrollActive", "withIcon", "icon", "xPosition", "yPosition", "overlayClass"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i12.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i12.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i12.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i13.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: CollapsibleComponent, selector: "igo-collapsible", inputs: ["title", "collapsed"], outputs: ["toggle"] }, { kind: "component", type: ContextItemComponent, selector: "igo-context-item", inputs: ["showFavorite", "context", "default", "selected"], outputs: ["edit", "delete", "save", "clone", "hide", "show", "favorite", "managePermissions", "manageTools"] }, { kind: "directive", type: ListItemDirective, selector: "[igoListItem]", inputs: ["color", "focused", "selected", "disabled"], outputs: ["beforeSelect", "beforeFocus", "beforeUnselect", "beforeUnfocus", "beforeDisable", "beforeEnable", "focus", "unfocus", "select", "unselect", "disable", "enable"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: KeyValuePipe, name: "keyvalue" }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i14.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
359
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ContextListComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.ConfigService }, { token: i2.AuthService }, { token: i3.MatDialog }, { token: i4.LanguageService }, { token: i5.StorageService }], target: i0.ɵɵFactoryTarget.Component });
360
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: ContextListComponent, isStandalone: true, selector: "igo-context-list", inputs: { contexts: "contexts", selectedContext: "selectedContext", map: "map", defaultContextId: "defaultContextId", term: "term" }, outputs: { select: "select", unselect: "unselect", edit: "edit", delete: "delete", save: "save", clone: "clone", create: "create", hide: "hide", show: "show", showHiddenContexts: "showHiddenContexts", favorite: "favorite", managePermissions: "managePermissions", manageTools: "manageTools", filterPermissionsChanged: "filterPermissionsChanged" }, ngImport: i0, template: "<igo-list [navigation]=\"true\">\n <div class=\"context-filter-container\">\n <mat-form-field *ngIf=\"showFilter()\" floatLabel=\"always\">\n <mat-label>{{\n 'igo.context.contextManager.filterPlaceHolder' | translate\n }}</mat-label>\n <input\n matInput\n type=\"text\"\n [placeholder]=\"\n 'igo.context.contextManager.filterPlaceHolder' | translate\n \"\n [(ngModel)]=\"term\"\n />\n <button\n mat-icon-button\n matSuffix\n class=\"clear-button\"\n *ngIf=\"term.length\"\n aria-label=\"Clear\"\n color=\"warn\"\n (click)=\"clearFilter()\"\n >\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n\n <div class=\"actions-container\">\n <button\n class=\"sort-alpha\"\n [class.--active]=\"sortedAlpha\"\n mat-icon-button\n [matTooltip]=\"\n 'igo.context.contextManager.sortAlphabetically' | translate\n \"\n matTooltipShowDelay=\"500\"\n (click)=\"toggleSort()\"\n >\n <mat-icon color=\"primary\">sort_by_alpha</mat-icon>\n </button>\n\n <igo-actionbar\n *ngIf=\"auth.authenticated && contextConfigs\"\n class=\"add-context-button\"\n [iconColor]=\"color\"\n [store]=\"actionStore\"\n [withIcon]=\"true\"\n icon=\"add\"\n [withTitle]=\"actionbarMode === 'overlay'\"\n [horizontal]=\"false\"\n [mode]=\"actionbarMode\"\n >\n </igo-actionbar>\n\n <button\n *ngIf=\"auth.authenticated && contextConfigs\"\n class=\"users-filter\"\n mat-icon-button\n [matTooltip]=\"'igo.context.contextManager.filterUser' | translate\"\n matTooltipShowDelay=\"500\"\n [matMenuTriggerFor]=\"accountMenu\"\n >\n <mat-icon color=\"primary\">fitler_alt</mat-icon>\n </button>\n <mat-menu #accountMenu=\"matMenu\">\n <ng-container *ngFor=\"let user of users\">\n <button\n *ngIf=\"!user.childs; else withSubMenu\"\n mat-menu-item\n class=\"profil-menu\"\n >\n <mat-checkbox\n [checked]=\"getPermission(user).checked\"\n [indeterminate]=\"getPermission(user).indeterminate\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"handleToggleCategory(user)\"\n >\n </mat-checkbox>\n <span>{{ user.title }}</span>\n </button>\n <ng-template #withSubMenu>\n <button\n mat-menu-item\n [matMenuTriggerFor]=\"subAccountMenu\"\n class=\"profil-menu\"\n >\n <mat-checkbox\n [checked]=\"getPermission(user).checked\"\n [indeterminate]=\"getPermission(user).indeterminate\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"handleToggleCategory(user)\"\n >\n </mat-checkbox>\n <span>{{ user.title }}</span>\n </button>\n\n <mat-menu #subAccountMenu=\"matMenu\">\n <button\n mat-menu-item\n *ngFor=\"let child of user.childs\"\n class=\"profil-menu\"\n >\n <mat-checkbox\n [checked]=\"getPermission(child).checked\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"handleToggleCategory(child, user)\"\n >\n {{ child.title }}\n </mat-checkbox>\n </button>\n </mat-menu>\n </ng-template>\n </ng-container>\n\n <button mat-menu-item class=\"profil-menu\">\n <mat-checkbox\n [checked]=\"showHidden\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"showHiddenContexts.emit()\"\n >\n </mat-checkbox>\n <span>\n {{ 'igo.context.contextManager.showHidden' | translate }}\n </span>\n </button>\n </mat-menu>\n </div>\n </div>\n\n <ng-template\n ngFor\n let-groupContexts\n [ngForOf]=\"$any(contexts$ | async) | keyvalue\"\n >\n <igo-collapsible\n *ngIf=\"$any(groupContexts).value.length && auth.authenticated\"\n [title]=\"titleMapping[$any(groupContexts).key] | translate\"\n [collapsed]=\"$any(collapsed[titleMapping[$any(groupContexts).key]])\"\n (toggle)=\"collapsed[titleMapping[$any(groupContexts).key]] = $any($event)\"\n >\n <ng-template ngFor let-context [ngForOf]=\"$any(groupContexts).value\">\n <igo-context-item\n igoListItem\n color=\"accent\"\n [selected]=\"selectedContext && selectedContext.uri === context.uri\"\n [context]=\"context\"\n [default]=\"\n context.id &&\n this.defaultContextId &&\n this.defaultContextId === context.id\n \"\n (edit)=\"edit.emit(context)\"\n (delete)=\"delete.emit(context)\"\n (clone)=\"clone.emit(context)\"\n (save)=\"save.emit(context)\"\n (hide)=\"hideContext(context)\"\n (show)=\"showContext(context)\"\n (favorite)=\"favorite.emit(context)\"\n (manageTools)=\"manageTools.emit(context)\"\n (managePermissions)=\"managePermissions.emit(context)\"\n (select)=\"select.emit(context)\"\n (unselect)=\"unselect.emit(context)\"\n >\n </igo-context-item>\n </ng-template>\n </igo-collapsible>\n\n <ng-template\n *ngIf=\"$any(groupContexts).value.length && !auth.authenticated\"\n ngFor\n let-context\n [ngForOf]=\"$any(groupContexts).value\"\n >\n <igo-context-item\n igoListItem\n color=\"accent\"\n [showFavorite]=\"\n configService.getConfig('favoriteContext4NonAuthenticated')\n \"\n [selected]=\"selectedContext && selectedContext.uri === context.uri\"\n [context]=\"context\"\n [default]=\"\n contextConfigs\n ? defaultContextId === context.id\n : defaultContextId === context.uri\n \"\n (favorite)=\"favorite.emit(context)\"\n (select)=\"select.emit(context)\"\n (unselect)=\"unselect.emit(context)\"\n >\n </igo-context-item>\n </ng-template>\n </ng-template>\n\n <div *ngIf=\"isEmpty\" class=\"no-result\">\n {{ 'igo.context.contextManager.noResult' | translate }}\n </div>\n</igo-list>\n", styles: [":host ::ng-deep mat-form-field .mat-mdc-form-field-subscript-wrapper{display:none}.context-filter-container{display:flex;align-items:center;padding:8px 4px}.context-filter-container mat-form-field{flex:1}.sort-alpha.--active mat-icon{color:red}.context-filter-min-width{width:calc(100% - 135px);margin:5px;padding-left:6px}.profil-menu{padding-left:8px}.profil-menu mat-checkbox{margin-right:8px}.add-context-button{margin:0;width:40px;display:inline-flex;overflow:hidden}.actions-container{margin-left:4px}.no-result{padding:16px}\n"], dependencies: [{ kind: "component", type: ListComponent, selector: "igo-list", inputs: ["navigation", "selection"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i9.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i11.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: ActionbarComponent, selector: "igo-actionbar", inputs: ["store", "mode", "withToggleButton", "horizontal", "color", "iconColor", "withTitle", "withTooltip", "scrollActive", "withIcon", "icon", "xPosition", "yPosition", "overlayClass"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i12.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i12.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i12.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i13.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: CollapsibleComponent, selector: "igo-collapsible", inputs: ["title", "collapsed"], outputs: ["toggle"] }, { kind: "component", type: ContextItemComponent, selector: "igo-context-item", inputs: ["showFavorite", "context", "default", "selected"], outputs: ["edit", "delete", "save", "clone", "hide", "show", "favorite", "managePermissions", "manageTools"] }, { kind: "directive", type: ListItemDirective, selector: "[igoListItem]", inputs: ["color", "focused", "selected", "disabled"], outputs: ["beforeSelect", "beforeFocus", "beforeUnselect", "beforeUnfocus", "beforeDisable", "beforeEnable", "focus", "unfocus", "select", "unselect", "disable", "enable"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: KeyValuePipe, name: "keyvalue" }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i14.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
361
361
  }
362
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: ContextListComponent, decorators: [{
362
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ContextListComponent, decorators: [{
363
363
  type: Component,
364
364
  args: [{ selector: 'igo-context-list', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
365
365
  ListComponent,
@@ -19,8 +19,8 @@ export class IgoContextManagerModule {
19
19
  ngModule: IgoContextManagerModule
20
20
  };
21
21
  }
22
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: IgoContextManagerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
23
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.2.4", ngImport: i0, type: IgoContextManagerModule, imports: [ContextListComponent,
22
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: IgoContextManagerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
23
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.9", ngImport: i0, type: IgoContextManagerModule, imports: [ContextListComponent,
24
24
  ContextListBindingDirective,
25
25
  ContextItemComponent,
26
26
  ContextFormComponent,
@@ -39,13 +39,13 @@ export class IgoContextManagerModule {
39
39
  ContextPermissionsBindingDirective,
40
40
  LayerContextDirective,
41
41
  MapContextDirective] });
42
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: IgoContextManagerModule, imports: [ContextListComponent,
42
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: IgoContextManagerModule, imports: [ContextListComponent,
43
43
  ContextItemComponent,
44
44
  ContextFormComponent,
45
45
  ContextEditComponent,
46
46
  ContextPermissionsComponent] });
47
47
  }
48
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: IgoContextManagerModule, decorators: [{
48
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: IgoContextManagerModule, decorators: [{
49
49
  type: NgModule,
50
50
  args: [{
51
51
  imports: [
@@ -85,10 +85,10 @@ export class ContextPermissionsBindingDirective {
85
85
  });
86
86
  }
87
87
  }
88
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: ContextPermissionsBindingDirective, deps: [{ token: i1.ContextPermissionsComponent, self: true }, { token: i2.ContextService }, { token: i3.LanguageService }, { token: i4.MessageService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
89
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.4", type: ContextPermissionsBindingDirective, isStandalone: true, selector: "[igoContextPermissionsBinding]", host: { listeners: { "addPermission": "onAddPermission($event)", "removePermission": "onRemovePermission($event)", "scopeChanged": "onScopeChanged($event)" } }, ngImport: i0 });
88
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ContextPermissionsBindingDirective, deps: [{ token: i1.ContextPermissionsComponent, self: true }, { token: i2.ContextService }, { token: i3.LanguageService }, { token: i4.MessageService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
89
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.9", type: ContextPermissionsBindingDirective, isStandalone: true, selector: "[igoContextPermissionsBinding]", host: { listeners: { "addPermission": "onAddPermission($event)", "removePermission": "onRemovePermission($event)", "scopeChanged": "onScopeChanged($event)" } }, ngImport: i0 });
90
90
  }
91
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: ContextPermissionsBindingDirective, decorators: [{
91
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ContextPermissionsBindingDirective, decorators: [{
92
92
  type: Directive,
93
93
  args: [{
94
94
  selector: '[igoContextPermissionsBinding]',
@@ -131,10 +131,10 @@ export class ContextPermissionsComponent {
131
131
  typePermission: this.form.value.typePermission
132
132
  });
133
133
  }
134
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: ContextPermissionsComponent, deps: [{ token: i1.UntypedFormBuilder }, { token: i0.ChangeDetectorRef }, { token: i2.HttpClient }, { token: i3.AuthService }, { token: i4.ConfigService }], target: i0.ɵɵFactoryTarget.Component });
135
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: ContextPermissionsComponent, isStandalone: true, selector: "igo-context-permissions", inputs: { context: "context", permissions: "permissions" }, outputs: { addPermission: "addPermission", removePermission: "removePermission", scopeChanged: "scopeChanged" }, ngImport: i0, template: "<div *ngIf=\"context\">\n <div *ngIf=\"!canWrite\" class=\"scopeForm\">\n <h4>{{ 'igo.context.permission.readOnlyTitle' | translate }}</h4>\n <p>{{ 'igo.context.permission.readOnlyMsg' | translate }}</p>\n </div>\n\n <div *ngIf=\"canWrite\" class=\"scopeForm\">\n <mat-radio-group\n [(ngModel)]=\"context.scope\"\n (change)=\"scopeChanged.emit(context)\"\n >\n <mat-radio-button value=\"private\">\n {{ 'igo.context.permission.scope.private' | translate }}\n </mat-radio-button>\n <mat-radio-button value=\"protected\">\n {{ 'igo.context.permission.scope.shared' | translate }}\n </mat-radio-button>\n <mat-radio-button *ngIf=\"authService.isAdmin\" value=\"public\">\n {{ 'igo.context.permission.scope.public' | translate }}\n </mat-radio-button>\n </mat-radio-group>\n </div>\n\n <form\n *ngIf=\"context.scope !== 'private' && canWrite\"\n [formGroup]=\"form\"\n (ngSubmit)=\"handleFormSubmit(form.value)\"\n >\n <mat-form-field class=\"full-width\">\n <input\n matInput\n required\n [placeholder]=\"'igo.context.permission.user' | translate\"\n [formControl]=\"formControl\"\n [matAutocomplete]=\"auto\"\n />\n <mat-autocomplete\n #auto=\"matAutocomplete\"\n (optionSelected)=\"onProfilSelected($event.option.value)\"\n [displayWith]=\"displayFn\"\n >\n <mat-option *ngFor=\"let profil of this.profils\" [value]=\"profil\">\n {{ profil.title }}<br />\n <small class=\"mat-typography\">{{ profil.name }}</small>\n </mat-option>\n </mat-autocomplete>\n <mat-error>\n {{ 'igo.context.permission.profilRequired' | translate }}\n </mat-error>\n </mat-form-field>\n\n <mat-radio-group formControlName=\"typePermission\">\n <mat-radio-button value=\"read\">\n {{ 'igo.context.permission.read' | translate }}\n </mat-radio-button>\n <mat-radio-button value=\"write\">\n {{ 'igo.context.permission.write' | translate }}\n </mat-radio-button>\n </mat-radio-group>\n\n <div class=\"igo-form-button-group\">\n <button mat-raised-button type=\"submit\" [disabled]=\"!form.valid\">\n {{ 'igo.context.permission.addBtn' | translate }}\n </button>\n </div>\n </form>\n\n <igo-list *ngIf=\"permissions && context.scope !== 'private'\">\n <ng-template ngFor let-groupPermissions [ngForOf]=\"permissions | keyvalue\">\n <igo-collapsible\n *ngIf=\"groupPermissions.value.length\"\n [title]=\"'igo.context.permission.' + groupPermissions.key | translate\"\n >\n <ng-template ngFor let-permission [ngForOf]=\"groupPermissions.value\">\n <mat-list-item>\n <mat-icon matListItemIcon>person</mat-icon>\n <h4 matListItemTitle>\n {{ permission.profilTitle }}\n <small class=\"mat-typography\">{{ permission.profil }}</small>\n </h4>\n\n <div\n matListItemMeta\n igoStopPropagation\n class=\"igo-actions-container\"\n >\n <button\n *ngIf=\"\n canWrite ||\n permission.profil === authService.decodeToken().user.sourceId\n \"\n mat-icon-button\n [matTooltip]=\"'igo.context.permission.delete' | translate\"\n matTooltipShowDelay=\"500\"\n color=\"warn\"\n (click)=\"removePermission.emit(permission)\"\n >\n <mat-icon>delete</mat-icon>\n </button>\n </div>\n </mat-list-item>\n </ng-template>\n </igo-collapsible>\n </ng-template>\n </igo-list>\n</div>\n", styles: [":host{margin:10px}.full-width{width:100%}mat-radio-button{padding:14px 14px 14px 0}.scopeForm,form{padding:5px}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatRadioModule }, { kind: "directive", type: i5.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i5.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i8.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i9.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i8.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: MatOptionModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i10.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i10.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: ListComponent, selector: "igo-list", inputs: ["navigation", "selection"] }, { kind: "component", type: CollapsibleComponent, selector: "igo-collapsible", inputs: ["title", "collapsed"], outputs: ["toggle"] }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i11.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i11.MatListItemIcon, selector: "[matListItemIcon]" }, { kind: "directive", type: i11.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "directive", type: i11.MatListItemMeta, selector: "[matListItemMeta]" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i12.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: StopPropagationDirective, selector: "[igoStopPropagation]" }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i13.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "pipe", type: KeyValuePipe, name: "keyvalue" }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i14.TranslatePipe, name: "translate" }] });
134
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ContextPermissionsComponent, deps: [{ token: i1.UntypedFormBuilder }, { token: i0.ChangeDetectorRef }, { token: i2.HttpClient }, { token: i3.AuthService }, { token: i4.ConfigService }], target: i0.ɵɵFactoryTarget.Component });
135
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: ContextPermissionsComponent, isStandalone: true, selector: "igo-context-permissions", inputs: { context: "context", permissions: "permissions" }, outputs: { addPermission: "addPermission", removePermission: "removePermission", scopeChanged: "scopeChanged" }, ngImport: i0, template: "<div *ngIf=\"context\">\n <div *ngIf=\"!canWrite\" class=\"scopeForm\">\n <h4>{{ 'igo.context.permission.readOnlyTitle' | translate }}</h4>\n <p>{{ 'igo.context.permission.readOnlyMsg' | translate }}</p>\n </div>\n\n <div *ngIf=\"canWrite\" class=\"scopeForm\">\n <mat-radio-group\n [(ngModel)]=\"context.scope\"\n (change)=\"scopeChanged.emit(context)\"\n >\n <mat-radio-button value=\"private\">\n {{ 'igo.context.permission.scope.private' | translate }}\n </mat-radio-button>\n <mat-radio-button value=\"protected\">\n {{ 'igo.context.permission.scope.shared' | translate }}\n </mat-radio-button>\n <mat-radio-button *ngIf=\"authService.isAdmin\" value=\"public\">\n {{ 'igo.context.permission.scope.public' | translate }}\n </mat-radio-button>\n </mat-radio-group>\n </div>\n\n <form\n *ngIf=\"context.scope !== 'private' && canWrite\"\n [formGroup]=\"form\"\n (ngSubmit)=\"handleFormSubmit(form.value)\"\n >\n <mat-form-field class=\"full-width\">\n <input\n matInput\n required\n [placeholder]=\"'igo.context.permission.user' | translate\"\n [formControl]=\"formControl\"\n [matAutocomplete]=\"auto\"\n />\n <mat-autocomplete\n #auto=\"matAutocomplete\"\n (optionSelected)=\"onProfilSelected($event.option.value)\"\n [displayWith]=\"displayFn\"\n >\n <mat-option *ngFor=\"let profil of this.profils\" [value]=\"profil\">\n {{ profil.title }}<br />\n <small class=\"mat-typography\">{{ profil.name }}</small>\n </mat-option>\n </mat-autocomplete>\n <mat-error>\n {{ 'igo.context.permission.profilRequired' | translate }}\n </mat-error>\n </mat-form-field>\n\n <mat-radio-group formControlName=\"typePermission\">\n <mat-radio-button value=\"read\">\n {{ 'igo.context.permission.read' | translate }}\n </mat-radio-button>\n <mat-radio-button value=\"write\">\n {{ 'igo.context.permission.write' | translate }}\n </mat-radio-button>\n </mat-radio-group>\n\n <div class=\"igo-form-button-group\">\n <button mat-raised-button type=\"submit\" [disabled]=\"!form.valid\">\n {{ 'igo.context.permission.addBtn' | translate }}\n </button>\n </div>\n </form>\n\n <igo-list *ngIf=\"permissions && context.scope !== 'private'\">\n <ng-template ngFor let-groupPermissions [ngForOf]=\"permissions | keyvalue\">\n <igo-collapsible\n *ngIf=\"groupPermissions.value.length\"\n [title]=\"'igo.context.permission.' + groupPermissions.key | translate\"\n >\n <ng-template ngFor let-permission [ngForOf]=\"groupPermissions.value\">\n <mat-list-item>\n <mat-icon matListItemIcon>person</mat-icon>\n <h4 matListItemTitle>\n {{ permission.profilTitle }}\n <small class=\"mat-typography\">{{ permission.profil }}</small>\n </h4>\n\n <div\n matListItemMeta\n igoStopPropagation\n class=\"igo-actions-container\"\n >\n <button\n *ngIf=\"\n canWrite ||\n permission.profil === authService.decodeToken().user.sourceId\n \"\n mat-icon-button\n [matTooltip]=\"'igo.context.permission.delete' | translate\"\n matTooltipShowDelay=\"500\"\n color=\"warn\"\n (click)=\"removePermission.emit(permission)\"\n >\n <mat-icon>delete</mat-icon>\n </button>\n </div>\n </mat-list-item>\n </ng-template>\n </igo-collapsible>\n </ng-template>\n </igo-list>\n</div>\n", styles: [":host{margin:10px}.full-width{width:100%}mat-radio-button{padding:14px 14px 14px 0}.scopeForm,form{padding:5px}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatRadioModule }, { kind: "directive", type: i5.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i5.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i8.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i9.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i8.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: MatOptionModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i10.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i10.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: ListComponent, selector: "igo-list", inputs: ["navigation", "selection"] }, { kind: "component", type: CollapsibleComponent, selector: "igo-collapsible", inputs: ["title", "collapsed"], outputs: ["toggle"] }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i11.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i11.MatListItemIcon, selector: "[matListItemIcon]" }, { kind: "directive", type: i11.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "directive", type: i11.MatListItemMeta, selector: "[matListItemMeta]" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i12.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: StopPropagationDirective, selector: "[igoStopPropagation]" }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i13.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "pipe", type: KeyValuePipe, name: "keyvalue" }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i14.TranslatePipe, name: "translate" }] });
136
136
  }
137
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: ContextPermissionsComponent, decorators: [{
137
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ContextPermissionsComponent, decorators: [{
138
138
  type: Component,
139
139
  args: [{ selector: 'igo-context-permissions', standalone: true, imports: [
140
140
  NgIf,