geonetwork-ui 2.4.0-alpha.2.bef577f7b → 2.4.0-alpha.2.decc890d1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.mjs +6 -3
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.mjs +3 -3
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.mjs +12 -6
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.mjs +12 -7
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.mjs +13 -7
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.mjs +1 -1
- package/esm2022/libs/ui/inputs/src/lib/file-input/file-input.component.mjs +7 -4
- package/esm2022/libs/ui/inputs/src/lib/image-input/image-input.component.mjs +7 -4
- package/esm2022/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.mjs +6 -3
- package/esm2022/translations/de.json +1 -1
- package/esm2022/translations/en.json +1 -1
- package/esm2022/translations/es.json +1 -1
- package/esm2022/translations/fr.json +1 -1
- package/esm2022/translations/it.json +1 -1
- package/esm2022/translations/nl.json +1 -1
- package/esm2022/translations/pt.json +1 -1
- package/fesm2022/geonetwork-ui.mjs +53 -35
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts +2 -1
- package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.d.ts +4 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.d.ts +4 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.d.ts +4 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/file-input/file-input.component.d.ts +2 -1
- package/libs/ui/inputs/src/lib/file-input/file-input.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/image-input/image-input.component.d.ts +2 -1
- package/libs/ui/inputs/src/lib/image-input/image-input.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.d.ts +2 -1
- package/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.html +2 -0
- package/src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.ts +1 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.html +1 -1
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.html +55 -41
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.ts +8 -2
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.html +83 -67
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.ts +8 -2
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.html +22 -11
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.ts +10 -4
- package/src/libs/ui/inputs/src/lib/file-input/file-input.component.html +5 -4
- package/src/libs/ui/inputs/src/lib/file-input/file-input.component.ts +1 -0
- package/src/libs/ui/inputs/src/lib/image-input/image-input.component.html +15 -5
- package/src/libs/ui/inputs/src/lib/image-input/image-input.component.ts +1 -0
- package/src/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.html +1 -0
- package/src/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.ts +1 -0
- package/translations/de.json +1 -1
- package/translations/en.json +1 -1
- package/translations/es.json +1 -1
- package/translations/fr.json +1 -1
- package/translations/it.json +1 -1
- package/translations/nl.json +1 -1
- package/translations/pt.json +1 -1
- package/translations/sk.json +1 -1
|
@@ -14,6 +14,7 @@ import * as i4 from "@angular/forms";
|
|
|
14
14
|
import * as i5 from "@ngx-translate/core";
|
|
15
15
|
export class OnlineServiceResourceInputComponent {
|
|
16
16
|
constructor() {
|
|
17
|
+
this.disabled = false;
|
|
17
18
|
this.protocolOptions = [
|
|
18
19
|
{
|
|
19
20
|
label: 'OGC API',
|
|
@@ -50,7 +51,7 @@ export class OnlineServiceResourceInputComponent {
|
|
|
50
51
|
this.protocolOptions.find((option) => option.value === this.service.accessServiceProtocol)?.value ?? 'other';
|
|
51
52
|
}
|
|
52
53
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OnlineServiceResourceInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
53
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: OnlineServiceResourceInputComponent, isStandalone: true, selector: "gn-ui-online-service-resource-input", inputs: { service: "service", protocolHint: "protocolHint" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"flex flex-row justify-between\">\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.protocol\n </h3>\n <span\n *ngIf=\"protocolHint\"\n class=\"material-symbols-outlined m-2 gn-ui-icon-small\"\n [matTooltip]=\"protocolHint\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n</div>\n<div class=\"flex flex-row items-center gap-[16px] h-[48px]\">\n <mat-radio-group\n aria-labelledby=\"example-radio-group-label\"\n class=\"flex flex-row gap-[8px]\"\n [(ngModel)]=\"service.accessServiceProtocol\"\n >\n <mat-radio-button\n *ngFor=\"let protocolOption of protocolOptions\"\n [value]=\"protocolOption.value\"\n >\n {{ protocolOption.label | translate }}\n </mat-radio-button>\n </mat-radio-group>\n</div>\n<gn-ui-text-input\n [(value)]=\"service.identifierInService\"\n data-cy=\"identifier-in-service\"\n></gn-ui-text-input>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatRadioModule }, { kind: "directive", type: i3.MatRadioGroup, selector: "mat-radio-group", exportAs: ["matRadioGroup"] }, { kind: "component", type: i3.MatRadioButton, selector: "mat-radio-button", inputs: ["disableRipple", "tabIndex"], exportAs: ["matRadioButton"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "placeholder", "required", "disabled"], outputs: ["valueChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }, { kind: "directive", type: i5.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
54
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: OnlineServiceResourceInputComponent, isStandalone: true, selector: "gn-ui-online-service-resource-input", inputs: { service: "service", protocolHint: "protocolHint", disabled: "disabled" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"flex flex-row justify-between\">\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.protocol\n </h3>\n <span\n *ngIf=\"protocolHint\"\n class=\"material-symbols-outlined m-2 gn-ui-icon-small\"\n [matTooltip]=\"protocolHint\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n</div>\n<div class=\"flex flex-row items-center gap-[16px] h-[48px]\">\n <mat-radio-group\n aria-labelledby=\"example-radio-group-label\"\n class=\"flex flex-row gap-[8px]\"\n [(ngModel)]=\"service.accessServiceProtocol\"\n [disabled]=\"disabled\"\n >\n <mat-radio-button\n *ngFor=\"let protocolOption of protocolOptions\"\n [value]=\"protocolOption.value\"\n >\n {{ protocolOption.label | translate }}\n </mat-radio-button>\n </mat-radio-group>\n</div>\n<gn-ui-text-input\n [(value)]=\"service.identifierInService\"\n data-cy=\"identifier-in-service\"\n [disabled]=\"disabled\"\n></gn-ui-text-input>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatRadioModule }, { kind: "directive", type: i3.MatRadioGroup, selector: "mat-radio-group", exportAs: ["matRadioGroup"] }, { kind: "component", type: i3.MatRadioButton, selector: "mat-radio-button", inputs: ["disableRipple", "tabIndex"], exportAs: ["matRadioButton"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "placeholder", "required", "disabled"], outputs: ["valueChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }, { kind: "directive", type: i5.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
54
55
|
}
|
|
55
56
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OnlineServiceResourceInputComponent, decorators: [{
|
|
56
57
|
type: Component,
|
|
@@ -61,10 +62,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
61
62
|
FormsModule,
|
|
62
63
|
TextInputComponent,
|
|
63
64
|
TranslateModule,
|
|
64
|
-
], template: "<div class=\"flex flex-row justify-between\">\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.protocol\n </h3>\n <span\n *ngIf=\"protocolHint\"\n class=\"material-symbols-outlined m-2 gn-ui-icon-small\"\n [matTooltip]=\"protocolHint\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n</div>\n<div class=\"flex flex-row items-center gap-[16px] h-[48px]\">\n <mat-radio-group\n aria-labelledby=\"example-radio-group-label\"\n class=\"flex flex-row gap-[8px]\"\n [(ngModel)]=\"service.accessServiceProtocol\"\n >\n <mat-radio-button\n *ngFor=\"let protocolOption of protocolOptions\"\n [value]=\"protocolOption.value\"\n >\n {{ protocolOption.label | translate }}\n </mat-radio-button>\n </mat-radio-group>\n</div>\n<gn-ui-text-input\n [(value)]=\"service.identifierInService\"\n data-cy=\"identifier-in-service\"\n></gn-ui-text-input>\n" }]
|
|
65
|
+
], template: "<div class=\"flex flex-row justify-between\">\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.protocol\n </h3>\n <span\n *ngIf=\"protocolHint\"\n class=\"material-symbols-outlined m-2 gn-ui-icon-small\"\n [matTooltip]=\"protocolHint\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n</div>\n<div class=\"flex flex-row items-center gap-[16px] h-[48px]\">\n <mat-radio-group\n aria-labelledby=\"example-radio-group-label\"\n class=\"flex flex-row gap-[8px]\"\n [(ngModel)]=\"service.accessServiceProtocol\"\n [disabled]=\"disabled\"\n >\n <mat-radio-button\n *ngFor=\"let protocolOption of protocolOptions\"\n [value]=\"protocolOption.value\"\n >\n {{ protocolOption.label | translate }}\n </mat-radio-button>\n </mat-radio-group>\n</div>\n<gn-ui-text-input\n [(value)]=\"service.identifierInService\"\n data-cy=\"identifier-in-service\"\n [disabled]=\"disabled\"\n></gn-ui-text-input>\n" }]
|
|
65
66
|
}], propDecorators: { service: [{
|
|
66
67
|
type: Input
|
|
67
68
|
}], protocolHint: [{
|
|
68
69
|
type: Input
|
|
70
|
+
}], disabled: [{
|
|
71
|
+
type: Input
|
|
69
72
|
}] } });
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25saW5lLXNlcnZpY2UtcmVzb3VyY2UtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9mZWF0dXJlL2VkaXRvci9zcmMvbGliL2NvbXBvbmVudHMvb25saW5lLXNlcnZpY2UtcmVzb3VyY2UtaW5wdXQvb25saW5lLXNlcnZpY2UtcmVzb3VyY2UtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9mZWF0dXJlL2VkaXRvci9zcmMvbGliL2NvbXBvbmVudHMvb25saW5lLXNlcnZpY2UtcmVzb3VyY2UtaW5wdXQvb25saW5lLXNlcnZpY2UtcmVzb3VyY2UtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzlDLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssR0FFTixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDNUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQ3hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBQzVELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQTtBQUtoRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQTtBQUM1RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUE7Ozs7Ozs7QUFpQnJELE1BQU0sT0FBTyxtQ0FBbUM7SUFmaEQ7UUFrQlcsYUFBUSxHQUFJLEtBQUssQ0FBQTtRQUkxQixvQkFBZSxHQUdUO1lBQ0o7Z0JBQ0UsS0FBSyxFQUFFLFNBQVM7Z0JBQ2hCLEtBQUssRUFBRSxhQUFhO2FBQ3JCO1lBQ0Q7Z0JBQ0UsS0FBSyxFQUFFLEtBQUs7Z0JBQ1osS0FBSyxFQUFFLEtBQUs7YUFDYjtZQUNEO2dCQUNFLEtBQUssRUFBRSxLQUFLO2dCQUNaLEtBQUssRUFBRSxLQUFLO2FBQ2I7WUFDRDtnQkFDRSxLQUFLLEVBQUUsTUFBTTtnQkFDYixLQUFLLEVBQUUsTUFBTTthQUNkO1lBQ0Q7Z0JBQ0UsS0FBSyxFQUFFLEtBQUs7Z0JBQ1osS0FBSyxFQUFFLEtBQUs7YUFDYjtZQUNEO2dCQUNFLEtBQUssRUFBRSxXQUFXO2dCQUNsQixLQUFLLEVBQUUsVUFBVTthQUNsQjtZQUNEO2dCQUNFLEtBQUssRUFBRSxNQUFNLENBQUMsNkNBQTZDLENBQUM7Z0JBQzVELEtBQUssRUFBRSxPQUFPO2FBQ2Y7U0FDRixDQUFBO0tBUUY7SUFOQyxXQUFXO1FBQ1QsSUFBSSxDQUFDLGdCQUFnQjtZQUNuQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FDdkIsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FDaEUsRUFBRSxLQUFLLElBQUksT0FBTyxDQUFBO0lBQ3ZCLENBQUM7K0dBOUNVLG1DQUFtQzttR0FBbkMsbUNBQW1DLHdNQ2pDaEQsaWdDQWlDQSx5RERSSSxZQUFZLCtQQUNaLGdCQUFnQiw4SEFDaEIsY0FBYywwUkFDZCxXQUFXLCtWQUNYLGtCQUFrQiw4SkFDbEIsZUFBZTs7NEZBR04sbUNBQW1DO2tCQWYvQyxTQUFTOytCQUNFLHFDQUFxQyxtQkFHOUIsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixnQkFBZ0I7d0JBQ2hCLGNBQWM7d0JBQ2QsV0FBVzt3QkFDWCxrQkFBa0I7d0JBQ2xCLGVBQWU7cUJBQ2hCOzhCQUdRLE9BQU87c0JBQWYsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3JtcydcbmltcG9ydCB7IE1hdFJhZGlvTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcmFkaW8nXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCdcbmltcG9ydCB7IG1hcmtlciB9IGZyb20gJ0BiaWVzYmplcmcvbmd4LXRyYW5zbGF0ZS1leHRyYWN0LW1hcmtlcidcbmltcG9ydCB7XG4gIERhdGFzZXRTZXJ2aWNlRGlzdHJpYnV0aW9uLFxuICBTZXJ2aWNlUHJvdG9jb2wsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3JlY29yZCdcbmltcG9ydCB7IFRleHRJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvaW5wdXRzL3NyYydcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2duLXVpLW9ubGluZS1zZXJ2aWNlLXJlc291cmNlLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL29ubGluZS1zZXJ2aWNlLXJlc291cmNlLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vb25saW5lLXNlcnZpY2UtcmVzb3VyY2UtaW5wdXQuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxuICAgIE1hdFJhZGlvTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFRleHRJbnB1dENvbXBvbmVudCxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE9ubGluZVNlcnZpY2VSZXNvdXJjZUlucHV0Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgc2VydmljZTogT21pdDxEYXRhc2V0U2VydmljZURpc3RyaWJ1dGlvbiwgJ3VybCc+XG4gIEBJbnB1dCgpIHByb3RvY29sSGludD86IHN0cmluZ1xuICBASW5wdXQoKSBkaXNhYmxlZD8gPSBmYWxzZVxuXG4gIHNlbGVjdGVkUHJvdG9jb2w6IFNlcnZpY2VQcm90b2NvbFxuXG4gIHByb3RvY29sT3B0aW9uczoge1xuICAgIGxhYmVsOiBzdHJpbmdcbiAgICB2YWx1ZTogU2VydmljZVByb3RvY29sXG4gIH1bXSA9IFtcbiAgICB7XG4gICAgICBsYWJlbDogJ09HQyBBUEknLFxuICAgICAgdmFsdWU6ICdvZ2NGZWF0dXJlcycsXG4gICAgfSxcbiAgICB7XG4gICAgICBsYWJlbDogJ1dGUycsXG4gICAgICB2YWx1ZTogJ3dmcycsXG4gICAgfSxcbiAgICB7XG4gICAgICBsYWJlbDogJ1dNUycsXG4gICAgICB2YWx1ZTogJ3dtcycsXG4gICAgfSxcbiAgICB7XG4gICAgICBsYWJlbDogJ1dNVFMnLFxuICAgICAgdmFsdWU6ICd3bXRzJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGxhYmVsOiAnV1BTJyxcbiAgICAgIHZhbHVlOiAnd3BzJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGxhYmVsOiAnRVNSSSBSRVNUJyxcbiAgICAgIHZhbHVlOiAnZXNyaVJlc3QnLFxuICAgIH0sXG4gICAge1xuICAgICAgbGFiZWw6IG1hcmtlcignZWRpdG9yLnJlY29yZC5vbmxpbmVSZXNvdXJjZS5wcm90b2NvbC5vdGhlcicpLFxuICAgICAgdmFsdWU6ICdvdGhlcicsXG4gICAgfSxcbiAgXVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIHRoaXMuc2VsZWN0ZWRQcm90b2NvbCA9XG4gICAgICB0aGlzLnByb3RvY29sT3B0aW9ucy5maW5kKFxuICAgICAgICAob3B0aW9uKSA9PiBvcHRpb24udmFsdWUgPT09IHRoaXMuc2VydmljZS5hY2Nlc3NTZXJ2aWNlUHJvdG9jb2xcbiAgICAgICk/LnZhbHVlID8/ICdvdGhlcidcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cganVzdGlmeS1iZXR3ZWVuXCI+XG4gIDxoMyBjbGFzcz1cInRleHQtWzE2cHhdIGZvbnQtYm9sZCB0ZXh0LW1haW4gbWItWzEycHhdXCIgdHJhbnNsYXRlPlxuICAgIGVkaXRvci5yZWNvcmQuZm9ybS5maWVsZC5vbmxpbmVSZXNvdXJjZS5lZGl0LnByb3RvY29sXG4gIDwvaDM+XG4gIDxzcGFuXG4gICAgKm5nSWY9XCJwcm90b2NvbEhpbnRcIlxuICAgIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBtLTIgZ24tdWktaWNvbi1zbWFsbFwiXG4gICAgW21hdFRvb2x0aXBdPVwicHJvdG9jb2xIaW50XCJcbiAgICBtYXRUb29sdGlwUG9zaXRpb249XCJhYm92ZVwiXG4gID5cbiAgICBoZWxwXG4gIDwvc3Bhbj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgaXRlbXMtY2VudGVyIGdhcC1bMTZweF0gaC1bNDhweF1cIj5cbiAgPG1hdC1yYWRpby1ncm91cFxuICAgIGFyaWEtbGFiZWxsZWRieT1cImV4YW1wbGUtcmFkaW8tZ3JvdXAtbGFiZWxcIlxuICAgIGNsYXNzPVwiZmxleCBmbGV4LXJvdyBnYXAtWzhweF1cIlxuICAgIFsobmdNb2RlbCldPVwic2VydmljZS5hY2Nlc3NTZXJ2aWNlUHJvdG9jb2xcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gID5cbiAgICA8bWF0LXJhZGlvLWJ1dHRvblxuICAgICAgKm5nRm9yPVwibGV0IHByb3RvY29sT3B0aW9uIG9mIHByb3RvY29sT3B0aW9uc1wiXG4gICAgICBbdmFsdWVdPVwicHJvdG9jb2xPcHRpb24udmFsdWVcIlxuICAgID5cbiAgICAgIHt7IHByb3RvY29sT3B0aW9uLmxhYmVsIHwgdHJhbnNsYXRlIH19XG4gICAgPC9tYXQtcmFkaW8tYnV0dG9uPlxuICA8L21hdC1yYWRpby1ncm91cD5cbjwvZGl2PlxuPGduLXVpLXRleHQtaW5wdXRcbiAgWyh2YWx1ZSldPVwic2VydmljZS5pZGVudGlmaWVySW5TZXJ2aWNlXCJcbiAgZGF0YS1jeT1cImlkZW50aWZpZXItaW4tc2VydmljZVwiXG4gIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4+PC9nbi11aS10ZXh0LWlucHV0PlxuIl19
|
|
@@ -87,7 +87,7 @@ export class FormFieldContactsComponent {
|
|
|
87
87
|
this.subscription.unsubscribe();
|
|
88
88
|
}
|
|
89
89
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldContactsComponent, deps: [{ token: i1.PlatformServiceInterface }, { token: i2.OrganizationsServiceInterface }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
90
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormFieldContactsComponent, isStandalone: true, selector: "gn-ui-form-field-contacts", inputs: { value: "value" }, outputs: { valueChange: "valueChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"flex flex-col gap-3\">\n <gn-ui-autocomplete\n [placeholder]=\"'Choose a contact'\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"addContact($event)\"\n [displayWithFn]=\"displayWithFn\"\n [minCharacterCount]=\"1\"\n [clearOnSelection]=\"true\"\n >\n </gn-ui-autocomplete>\n\n <ng-container *ngIf=\"contacts.length > 0; else noContact\">\n <ng-container *ngIf=\"contacts.length === 1\">\n <ng-container *ngFor=\"let contact of contacts; let index = index\">\n <gn-ui-contact-card\n [contact]=\"contact\"\n ></gn-ui-contact-card> </ng-container\n ></ng-container>\n\n <ng-container *ngIf=\"contacts.length > 1\">\n <gn-ui-sortable-list\n [items]=\"contacts\"\n (itemsOrderChange)=\"handleContactsChanged($event)\"\n [elementTemplate]=\"contactTemplate\"\n ></gn-ui-sortable-list>\n <ng-template #contactTemplate let-contact>\n <gn-ui-contact-card [contact]=\"contact\"></gn-ui-contact-card>\n </ng-template>\n </ng-container>\n </ng-container>\n</div>\n\n<ng-template #noContact>\n <div\n class=\"p-4 border border-primary bg-primary-lightest rounded-lg\"\n translate\n >\n editor.record.form.field.contacts.noContact\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: UiInputsModule }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: UiWidgetsModule }, { kind: "component", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: ["placeholder", "action", "value", "clearOnSelection", "preventCompleteOnSelection", "autoFocus", "minCharacterCount", "allowSubmit", "displayWithFn"], outputs: ["itemSelected", "inputSubmitted", "inputCleared"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i4.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ContactCardComponent, selector: "gn-ui-contact-card", inputs: ["contact"] }, { kind: "component", type: SortableListComponent, selector: "gn-ui-sortable-list", inputs: ["elementTemplate", "items"], outputs: ["itemsOrderChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
90
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormFieldContactsComponent, isStandalone: true, selector: "gn-ui-form-field-contacts", inputs: { value: "value" }, outputs: { valueChange: "valueChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"flex flex-col gap-3\">\n <gn-ui-autocomplete\n [placeholder]=\"'Choose a contact'\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"addContact($event)\"\n [displayWithFn]=\"displayWithFn\"\n [minCharacterCount]=\"1\"\n [clearOnSelection]=\"true\"\n >\n </gn-ui-autocomplete>\n\n <ng-container *ngIf=\"contacts.length > 0; else noContact\">\n <ng-container *ngIf=\"contacts.length === 1\">\n <ng-container *ngFor=\"let contact of contacts; let index = index\">\n <gn-ui-contact-card\n [contact]=\"contact\"\n ></gn-ui-contact-card> </ng-container\n ></ng-container>\n\n <ng-container *ngIf=\"contacts.length > 1\">\n <gn-ui-sortable-list\n [items]=\"contacts\"\n (itemsOrderChange)=\"handleContactsChanged($event)\"\n [elementTemplate]=\"contactTemplate\"\n ></gn-ui-sortable-list>\n <ng-template #contactTemplate let-contact>\n <gn-ui-contact-card [contact]=\"contact\"></gn-ui-contact-card>\n </ng-template>\n </ng-container>\n </ng-container>\n</div>\n\n<ng-template #noContact>\n <div\n class=\"p-4 text-sm border border-primary bg-primary-lightest rounded-lg\"\n translate\n >\n editor.record.form.field.contacts.noContact\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: UiInputsModule }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: UiWidgetsModule }, { kind: "component", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: ["placeholder", "action", "value", "clearOnSelection", "preventCompleteOnSelection", "autoFocus", "minCharacterCount", "allowSubmit", "displayWithFn"], outputs: ["itemSelected", "inputSubmitted", "inputCleared"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i4.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ContactCardComponent, selector: "gn-ui-contact-card", inputs: ["contact"] }, { kind: "component", type: SortableListComponent, selector: "gn-ui-sortable-list", inputs: ["elementTemplate", "items"], outputs: ["itemsOrderChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
91
91
|
}
|
|
92
92
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldContactsComponent, decorators: [{
|
|
93
93
|
type: Component,
|
|
@@ -100,10 +100,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
100
100
|
TranslateModule,
|
|
101
101
|
ContactCardComponent,
|
|
102
102
|
SortableListComponent,
|
|
103
|
-
], template: "<div class=\"flex flex-col gap-3\">\n <gn-ui-autocomplete\n [placeholder]=\"'Choose a contact'\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"addContact($event)\"\n [displayWithFn]=\"displayWithFn\"\n [minCharacterCount]=\"1\"\n [clearOnSelection]=\"true\"\n >\n </gn-ui-autocomplete>\n\n <ng-container *ngIf=\"contacts.length > 0; else noContact\">\n <ng-container *ngIf=\"contacts.length === 1\">\n <ng-container *ngFor=\"let contact of contacts; let index = index\">\n <gn-ui-contact-card\n [contact]=\"contact\"\n ></gn-ui-contact-card> </ng-container\n ></ng-container>\n\n <ng-container *ngIf=\"contacts.length > 1\">\n <gn-ui-sortable-list\n [items]=\"contacts\"\n (itemsOrderChange)=\"handleContactsChanged($event)\"\n [elementTemplate]=\"contactTemplate\"\n ></gn-ui-sortable-list>\n <ng-template #contactTemplate let-contact>\n <gn-ui-contact-card [contact]=\"contact\"></gn-ui-contact-card>\n </ng-template>\n </ng-container>\n </ng-container>\n</div>\n\n<ng-template #noContact>\n <div\n class=\"p-4 border border-primary bg-primary-lightest rounded-lg\"\n translate\n >\n editor.record.form.field.contacts.noContact\n </div>\n</ng-template>\n" }]
|
|
103
|
+
], template: "<div class=\"flex flex-col gap-3\">\n <gn-ui-autocomplete\n [placeholder]=\"'Choose a contact'\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"addContact($event)\"\n [displayWithFn]=\"displayWithFn\"\n [minCharacterCount]=\"1\"\n [clearOnSelection]=\"true\"\n >\n </gn-ui-autocomplete>\n\n <ng-container *ngIf=\"contacts.length > 0; else noContact\">\n <ng-container *ngIf=\"contacts.length === 1\">\n <ng-container *ngFor=\"let contact of contacts; let index = index\">\n <gn-ui-contact-card\n [contact]=\"contact\"\n ></gn-ui-contact-card> </ng-container\n ></ng-container>\n\n <ng-container *ngIf=\"contacts.length > 1\">\n <gn-ui-sortable-list\n [items]=\"contacts\"\n (itemsOrderChange)=\"handleContactsChanged($event)\"\n [elementTemplate]=\"contactTemplate\"\n ></gn-ui-sortable-list>\n <ng-template #contactTemplate let-contact>\n <gn-ui-contact-card [contact]=\"contact\"></gn-ui-contact-card>\n </ng-template>\n </ng-container>\n </ng-container>\n</div>\n\n<ng-template #noContact>\n <div\n class=\"p-4 text-sm border border-primary bg-primary-lightest rounded-lg\"\n translate\n >\n editor.record.form.field.contacts.noContact\n </div>\n</ng-template>\n" }]
|
|
104
104
|
}], ctorParameters: function () { return [{ type: i1.PlatformServiceInterface }, { type: i2.OrganizationsServiceInterface }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { value: [{
|
|
105
105
|
type: Input
|
|
106
106
|
}], valueChange: [{
|
|
107
107
|
type: Output
|
|
108
108
|
}] } });
|
|
109
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1jb250YWN0cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvZWRpdG9yL3NyYy9saWIvY29tcG9uZW50cy9yZWNvcmQtZm9ybS9mb3JtLWZpZWxkL2Zvcm0tZmllbGQtY29udGFjdHMvZm9ybS1maWVsZC1jb250YWN0cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvZWRpdG9yL3NyYy9saWIvY29tcG9uZW50cy9yZWNvcmQtZm9ybS9mb3JtLWZpZWxkL2Zvcm0tZmllbGQtY29udGFjdHMvZm9ybS1maWVsZC1jb250YWN0cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDOUMsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFDTCxxQkFBcUIsRUFDckIseUJBQXlCLEVBQ3pCLGNBQWMsR0FDZixNQUFNLCtDQUErQyxDQUFBO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQTtBQUtoRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDckQsT0FBTyxFQUNMLFlBQVksRUFDWixvQkFBb0IsRUFDcEIsY0FBYyxFQUVkLFlBQVksRUFDWixTQUFTLEdBQ1YsTUFBTSxNQUFNLENBQUE7QUFFYixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrRkFBa0YsQ0FBQTtBQUMzSCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx1RkFBdUYsQ0FBQTtBQUNySSxPQUFPLEVBQUUsb0JBQW9CLEVB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Q0FBQzsrR0FoSFUsMEJBQTBCO21HQUExQiwwQkFBMEIsK0tDeER2Qyx3d0NBd0NBLHlERE9JLGNBQWMsOEJBQ2QsWUFBWSwrUEFDWixlQUFlLCtCQUNmLHFCQUFxQiwyUkFDckIsZUFBZSxzS0FDZixvQkFBb0Isb0ZBQ3BCLHFCQUFxQjs7NEZBR1osMEJBQTBCO2tCQWpCdEMsU0FBUzsrQkFDRSwyQkFBMkIsbUJBR3BCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNQLHlCQUF5Qjt3QkFDekIsY0FBYzt3QkFDZCxZQUFZO3dCQUNaLGVBQWU7d0JBQ2YscUJBQXFCO3dCQUNyQixlQUFlO3dCQUNmLG9CQUFvQjt3QkFDcEIscUJBQXFCO3FCQUN0QjsyTEFHUSxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHtcbiAgQXV0b2NvbXBsZXRlQ29tcG9uZW50LFxuICBEcm9wZG93blNlbGVjdG9yQ29tcG9uZW50LFxuICBVaUlucHV0c01vZHVsZSxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS9pbnB1dHMvc3JjJ1xuaW1wb3J0IHsgVWlXaWRnZXRzTW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS93aWRnZXRzL3NyYydcbmltcG9ydCB7XG4gIEluZGl2aWR1YWwsXG4gIE9yZ2FuaXphdGlvbixcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvcmVjb3JkJ1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcbmltcG9ydCB7XG4gIGRlYm91bmNlVGltZSxcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gIGZpcnN0VmFsdWVGcm9tLFxuICBPYnNlcnZhYmxlLFxuICBTdWJzY3JpcHRpb24sXG4gIHN3aXRjaE1hcCxcbn0gZnJvbSAncnhqcydcbmltcG9ydCB7IFVzZXJNb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3VzZXInXG5pbXBvcnQgeyBQbGF0Zm9ybVNlcnZpY2VJbnRlcmZhY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9wbGF0Zm9ybS5zZXJ2aWNlLmludGVyZmFjZSdcbmltcG9ydCB7IE9yZ2FuaXphdGlvbnNTZXJ2aWNlSW50ZXJmYWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvb3JnYW5pemF0aW9ucy5zZXJ2aWNlLmludGVyZmFjZSdcbmltcG9ydCB7IENvbnRhY3RDYXJkQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29udGFjdC1jYXJkL2NvbnRhY3QtY2FyZC5jb21wb25lbnQnXG5pbXBvcnQgeyBjcmVhdGVGdXp6eUZpbHRlciB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdXRpbC9zaGFyZWQvc3JjJ1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5pbXBvcnQgeyBTb3J0YWJsZUxpc3RDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2xheW91dC9zcmMnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2duLXVpLWZvcm0tZmllbGQtY29udGFjdHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybS1maWVsZC1jb250YWN0cy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Zvcm0tZmllbGQtY29udGFjdHMuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIERyb3Bkb3duU2VsZWN0b3JDb21wb25lbnQsXG4gICAgVWlJbnB1dHNNb2R1bGUsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFVpV2lkZ2V0c01vZHVsZSxcbiAgICBBdXRvY29tcGxldGVDb21wb25lbnQsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIENvbnRhY3RDYXJkQ29tcG9uZW50LFxuICAgIFNvcnRhYmxlTGlzdENvbXBvbmVudCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybUZpZWxkQ29udGFjdHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHZhbHVlOiBJbmRpdmlkdWFsW11cbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8SW5kaXZpZHVhbFtdPiA9IG5ldyBFdmVudEVtaXR0ZXIoKVxuXG4gIGNvbnRhY3RzOiBJbmRpdmlkdWFsW10gPSBbXVxuXG4gIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpXG5cbiAgYWxsVXNlcnMkOiBPYnNlcnZhYmxlPFVzZXJNb2RlbFtdPlxuXG4gIGFsbE9yZ2FuaXphdGlvbnM6IE1hcDxzdHJpbmcsIE9yZ2FuaXphdGlvbj4gPSBuZXcgTWFwKClcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBsYXRmb3JtU2VydmljZUludGVyZmFjZTogUGxhdGZvcm1TZXJ2aWNlSW50ZXJmYWNlLFxuICAgIHByaXZhdGUgb3JnYW5pemF0aW9uc1NlcnZpY2VJbnRlcmZhY2U6IE9yZ2FuaXphdGlvbnNTZXJ2aWNlSW50ZXJmYWNlLFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHRoaXMuYWxsVXNlcnMkID0gdGhpcy5wbGF0Zm9ybVNlcnZpY2VJbnRlcmZhY2UuZ2V0VXNlcnMoKVxuICB9XG5cbiAgYXN5bmMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGNvbnRhY3RzQ2hhbmdlcyA9IGNoYW5nZXNbJ3ZhbHVlJ11cblxuICAgIGlmIChjb250YWN0c0NoYW5nZXMuZmlyc3RDaGFuZ2UpIHtcbiAgICAgIHRoaXMuYWxsT3JnYW5pemF0aW9ucyA9IG5ldyBNYXA8c3RyaW5nLCBPcmdhbml6YXRpb24+KFxuICAgICAgICAoXG4gICAgICAgICAgYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICAgICAgICB0aGlzLm9yZ2FuaXphdGlvbnNTZXJ2aWNlSW50ZXJmYWNlLm9yZ2FuaXNhdGlvbnMkXG4gICAgICAgICAgKVxuICAgICAgICApLm1hcCgob3JnYW5pemF0aW9uKSA9PiBbb3JnYW5pemF0aW9uLm5hbWUsIG9yZ2FuaXphdGlvbl0pXG4gICAgICApXG4gICAgfVxuXG4gICAgaWYgKGNvbnRhY3RzQ2hhbmdlcy5jdXJyZW50VmFsdWUgIT09IGNvbnRhY3RzQ2hhbmdlcy5wcmV2aW91c1ZhbHVlKSB7XG4gICAgICB0aGlzLnVwZGF0ZUNvbnRhY3RzKClcblxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKVxuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZUNvbnRhY3RzKCkge1xuICAgIHRoaXMuY29udGFjdHMgPSB0aGlzLnZhbHVlLnJlZHVjZSgoYWNjLCBjb250YWN0KSA9PiB7XG4gICAgICBjb25zdCBjb21wbGV0ZU9yZ2FuaXphdGlvbiA9IHRoaXMuYWxsT3JnYW5pemF0aW9ucy5nZXQoXG4gICAgICAgIGNvbnRhY3Qub3JnYW5pemF0aW9uLm5hbWVcbiAgICAgIClcblxuICAgICAgY29uc3QgdXBkYXRlZENvbnRhY3QgPSB7XG4gICAgICAgIC4uLmNvbnRhY3QsXG4gICAgICAgIG9yZ2FuaXphdGlvbjpcbiAgICAgICAgICBjb21wbGV0ZU9yZ2FuaXphdGlvbiA/P1xuICAgICAgICAgICh7IG5hbWU6IGNvbnRhY3Qub3JnYW5pemF0aW9uLm5hbWUgfSBhcyBPcmdhbml6YXRpb24pLFxuICAgICAgfVxuXG4gICAgICBhY2MucHVzaCh1cGRhdGVkQ29udGFjdClcblxuICAgICAgcmV0dXJuIGFjY1xuICAgIH0sIFtdIGFzIEluZGl2aWR1YWxbXSlcbiAgfVxuXG4gIGhhbmRsZUNvbnRhY3RzQ2hhbmdlZChpdGVtczogdW5rbm93bltdKSB7XG4gICAgY29uc3QgY29udGFjdHMgPSBpdGVtcyBhcyBJbmRpdmlkdWFsW11cblxuICAgIHRoaXMuY29udGFjdHMgPSBjb250YWN0c1xuXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KGNvbnRhY3RzKVxuICB9XG5cbiAgLyoqXG4gICAqIGduLXVpLWF1dG9jb21wbGV0ZVxuICAgKi9cbiAgZGlzcGxheVdpdGhGbjogKHVzZXI6IFVzZXJNb2RlbCkgPT4gc3RyaW5nID0gKHVzZXIpID0+XG4gICAgYCR7dXNlci5uYW1lfSAke3VzZXIuc3VybmFtZX0gJHtcbiAgICAgIHVzZXIub3JnYW5pc2F0aW9uID8gYCgke3VzZXIub3JnYW5pc2F0aW9ufSlgIDogJydcbiAgICB9YFxuXG4gIC8qKlxuICAgKiBnbi11aS1hdXRvY29tcGxldGVcbiAgICovXG4gIGF1dG9Db21wbGV0ZUFjdGlvbiA9IChxdWVyeTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgZnV6enlGaWx0ZXIgPSBjcmVhdGVGdXp6eUZpbHRlcihxdWVyeSlcbiAgICByZXR1cm4gdGhpcy5hbGxVc2VycyQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgodXNlcnMpID0+IFtcbiAgICAgICAgdXNlcnMuZmlsdGVyKCh1c2VyKSA9PiBmdXp6eUZpbHRlcih1c2VyLnVzZXJuYW1lKSksXG4gICAgICBdKSxcbiAgICAgIG1hcCgocmVzdWx0cykgPT4gcmVzdWx0cy5zbGljZSgwLCAxMCkpLFxuICAgICAgZGVib3VuY2VUaW1lKDMwMCksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgKVxuICB9XG5cbiAgLyoqXG4gICAqIGduLXVpLWF1dG9jb21wbGV0ZVxuICAgKi9cbiAgYWRkQ29udGFjdChjb250YWN0OiBVc2VyTW9kZWwpIHtcbiAgICBjb25zdCBuZXdDb250YWN0ID0ge1xuICAgICAgZmlyc3ROYW1lOiBjb250YWN0Lm5hbWUgPz8gJycsXG4gICAgICBsYXN0TmFtZTogY29udGFjdC5zdXJuYW1lID8/ICcnLFxuICAgICAgb3JnYW5pemF0aW9uOlxuICAgICAgICB0aGlzLmFsbE9yZ2FuaXphdGlvbnMuZ2V0KGNvbnRhY3Qub3JnYW5pc2F0aW9uKSA/P1xuICAgICAgICAoeyBuYW1lOiBjb250YWN0Lm9yZ2FuaXNhdGlvbiB9IGFzIE9yZ2FuaXphdGlvbiksXG4gICAgICBlbWFpbDogY29udGFjdC5lbWFpbCA/PyAnJyxcbiAgICAgIHJvbGU6ICdwb2ludF9vZl9jb250YWN0JyxcbiAgICAgIGFkZHJlc3M6ICcnLFxuICAgICAgcGhvbmU6ICcnLFxuICAgICAgcG9zaXRpb246ICcnLFxuICAgIH0gYXMgSW5kaXZpZHVhbFxuXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KFsuLi50aGlzLnZhbHVlLCBuZXdDb250YWN0XSlcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKClcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTNcIj5cbiAgPGduLXVpLWF1dG9jb21wbGV0ZVxuICAgIFtwbGFjZWhvbGRlcl09XCInQ2hvb3NlIGEgY29udGFjdCdcIlxuICAgIFthY3Rpb25dPVwiYXV0b0NvbXBsZXRlQWN0aW9uXCJcbiAgICAoaXRlbVNlbGVjdGVkKT1cImFkZENvbnRhY3QoJGV2ZW50KVwiXG4gICAgW2Rpc3BsYXlXaXRoRm5dPVwiZGlzcGxheVdpdGhGblwiXG4gICAgW21pbkNoYXJhY3RlckNvdW50XT1cIjFcIlxuICAgIFtjbGVhck9uU2VsZWN0aW9uXT1cInRydWVcIlxuICA+XG4gIDwvZ24tdWktYXV0b2NvbXBsZXRlPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250YWN0cy5sZW5ndGggPiAwOyBlbHNlIG5vQ29udGFjdFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250YWN0cy5sZW5ndGggPT09IDFcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbnRhY3Qgb2YgY29udGFjdHM7IGxldCBpbmRleCA9IGluZGV4XCI+XG4gICAgICAgIDxnbi11aS1jb250YWN0LWNhcmRcbiAgICAgICAgICBbY29udGFjdF09XCJjb250YWN0XCJcbiAgICAgICAgPjwvZ24tdWktY29udGFjdC1jYXJkPiA8L25nLWNvbnRhaW5lclxuICAgID48L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250YWN0cy5sZW5ndGggPiAxXCI+XG4gICAgICA8Z24tdWktc29ydGFibGUtbGlzdFxuICAgICAgICBbaXRlbXNdPVwiY29udGFjdHNcIlxuICAgICAgICAoaXRlbXNPcmRlckNoYW5nZSk9XCJoYW5kbGVDb250YWN0c0NoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgIFtlbGVtZW50VGVtcGxhdGVdPVwiY29udGFjdFRlbXBsYXRlXCJcbiAgICAgID48L2duLXVpLXNvcnRhYmxlLWxpc3Q+XG4gICAgICA8bmctdGVtcGxhdGUgI2NvbnRhY3RUZW1wbGF0ZSBsZXQtY29udGFjdD5cbiAgICAgICAgPGduLXVpLWNvbnRhY3QtY2FyZCBbY29udGFjdF09XCJjb250YWN0XCI+PC9nbi11aS1jb250YWN0LWNhcmQ+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI25vQ29udGFjdD5cbiAgPGRpdlxuICAgIGNsYXNzPVwicC00IGJvcmRlciBib3JkZXItcHJpbWFyeSBiZy1wcmltYXJ5LWxpZ2h0ZXN0IHJvdW5kZWQtbGdcIlxuICAgIHRyYW5zbGF0ZVxuICA+XG4gICAgZWRpdG9yLnJlY29yZC5mb3JtLmZpZWxkLmNvbnRhY3RzLm5vQ29udGFjdFxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1jb250YWN0cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvZWRpdG9yL3NyYy9saWIvY29tcG9uZW50cy9yZWNvcmQtZm9ybS9mb3JtLWZpZWxkL2Zvcm0tZmllbGQtY29udGFjdHMvZm9ybS1maWVsZC1jb250YWN0cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvZWRpdG9yL3NyYy9saWIvY29tcG9uZW50cy9yZWNvcmQtZm9ybS9mb3JtLWZpZWxkL2Zvcm0tZmllbGQtY29udGFjdHMvZm9ybS1maWVsZC1jb250YWN0cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDOUMsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFDTCxxQkFBcUIsRUFDckIseUJBQXlCLEVBQ3pCLGNBQWMsR0FDZixNQUFNLCtDQUErQyxDQUFBO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQTtBQUtoRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDckQsT0FBTyxFQUNMLFlBQVksRUFDWixvQkFBb0IsRUFDcEIsY0FBYyxFQUVkLFlBQVksRUFDWixTQUFTLEdBQ1YsTUFBTSxNQUFNLENBQUE7QUFFYixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrRkFBa0YsQ0FBQTtBQUMzSCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx1RkFBdUYsQ0FBQTtBQUNySSxPQUFPLEVBQUUsb0JBQW9CLEVB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Q0FBQzsrR0FoSFUsMEJBQTBCO21HQUExQiwwQkFBMEIsK0tDeER2QyxneENBd0NBLHlERE9JLGNBQWMsOEJBQ2QsWUFBWSwrUEFDWixlQUFlLCtCQUNmLHFCQUFxQiwyUkFDckIsZUFBZSxzS0FDZixvQkFBb0Isb0ZBQ3BCLHFCQUFxQjs7NEZBR1osMEJBQTBCO2tCQWpCdEMsU0FBUzsrQkFDRSwyQkFBMkIsbUJBR3BCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNQLHlCQUF5Qjt3QkFDekIsY0FBYzt3QkFDZCxZQUFZO3dCQUNaLGVBQWU7d0JBQ2YscUJBQXFCO3dCQUNyQixlQUFlO3dCQUNmLG9CQUFvQjt3QkFDcEIscUJBQXFCO3FCQUN0QjsyTEFHUSxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHtcbiAgQXV0b2NvbXBsZXRlQ29tcG9uZW50LFxuICBEcm9wZG93blNlbGVjdG9yQ29tcG9uZW50LFxuICBVaUlucHV0c01vZHVsZSxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS9pbnB1dHMvc3JjJ1xuaW1wb3J0IHsgVWlXaWRnZXRzTW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS93aWRnZXRzL3NyYydcbmltcG9ydCB7XG4gIEluZGl2aWR1YWwsXG4gIE9yZ2FuaXphdGlvbixcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvcmVjb3JkJ1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcbmltcG9ydCB7XG4gIGRlYm91bmNlVGltZSxcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gIGZpcnN0VmFsdWVGcm9tLFxuICBPYnNlcnZhYmxlLFxuICBTdWJzY3JpcHRpb24sXG4gIHN3aXRjaE1hcCxcbn0gZnJvbSAncnhqcydcbmltcG9ydCB7IFVzZXJNb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3VzZXInXG5pbXBvcnQgeyBQbGF0Zm9ybVNlcnZpY2VJbnRlcmZhY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9wbGF0Zm9ybS5zZXJ2aWNlLmludGVyZmFjZSdcbmltcG9ydCB7IE9yZ2FuaXphdGlvbnNTZXJ2aWNlSW50ZXJmYWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvb3JnYW5pemF0aW9ucy5zZXJ2aWNlLmludGVyZmFjZSdcbmltcG9ydCB7IENvbnRhY3RDYXJkQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29udGFjdC1jYXJkL2NvbnRhY3QtY2FyZC5jb21wb25lbnQnXG5pbXBvcnQgeyBjcmVhdGVGdXp6eUZpbHRlciB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdXRpbC9zaGFyZWQvc3JjJ1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5pbXBvcnQgeyBTb3J0YWJsZUxpc3RDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2xheW91dC9zcmMnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2duLXVpLWZvcm0tZmllbGQtY29udGFjdHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybS1maWVsZC1jb250YWN0cy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Zvcm0tZmllbGQtY29udGFjdHMuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIERyb3Bkb3duU2VsZWN0b3JDb21wb25lbnQsXG4gICAgVWlJbnB1dHNNb2R1bGUsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFVpV2lkZ2V0c01vZHVsZSxcbiAgICBBdXRvY29tcGxldGVDb21wb25lbnQsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIENvbnRhY3RDYXJkQ29tcG9uZW50LFxuICAgIFNvcnRhYmxlTGlzdENvbXBvbmVudCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybUZpZWxkQ29udGFjdHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHZhbHVlOiBJbmRpdmlkdWFsW11cbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8SW5kaXZpZHVhbFtdPiA9IG5ldyBFdmVudEVtaXR0ZXIoKVxuXG4gIGNvbnRhY3RzOiBJbmRpdmlkdWFsW10gPSBbXVxuXG4gIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpXG5cbiAgYWxsVXNlcnMkOiBPYnNlcnZhYmxlPFVzZXJNb2RlbFtdPlxuXG4gIGFsbE9yZ2FuaXphdGlvbnM6IE1hcDxzdHJpbmcsIE9yZ2FuaXphdGlvbj4gPSBuZXcgTWFwKClcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBsYXRmb3JtU2VydmljZUludGVyZmFjZTogUGxhdGZvcm1TZXJ2aWNlSW50ZXJmYWNlLFxuICAgIHByaXZhdGUgb3JnYW5pemF0aW9uc1NlcnZpY2VJbnRlcmZhY2U6IE9yZ2FuaXphdGlvbnNTZXJ2aWNlSW50ZXJmYWNlLFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHRoaXMuYWxsVXNlcnMkID0gdGhpcy5wbGF0Zm9ybVNlcnZpY2VJbnRlcmZhY2UuZ2V0VXNlcnMoKVxuICB9XG5cbiAgYXN5bmMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGNvbnRhY3RzQ2hhbmdlcyA9IGNoYW5nZXNbJ3ZhbHVlJ11cblxuICAgIGlmIChjb250YWN0c0NoYW5nZXMuZmlyc3RDaGFuZ2UpIHtcbiAgICAgIHRoaXMuYWxsT3JnYW5pemF0aW9ucyA9IG5ldyBNYXA8c3RyaW5nLCBPcmdhbml6YXRpb24+KFxuICAgICAgICAoXG4gICAgICAgICAgYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICAgICAgICB0aGlzLm9yZ2FuaXphdGlvbnNTZXJ2aWNlSW50ZXJmYWNlLm9yZ2FuaXNhdGlvbnMkXG4gICAgICAgICAgKVxuICAgICAgICApLm1hcCgob3JnYW5pemF0aW9uKSA9PiBbb3JnYW5pemF0aW9uLm5hbWUsIG9yZ2FuaXphdGlvbl0pXG4gICAgICApXG4gICAgfVxuXG4gICAgaWYgKGNvbnRhY3RzQ2hhbmdlcy5jdXJyZW50VmFsdWUgIT09IGNvbnRhY3RzQ2hhbmdlcy5wcmV2aW91c1ZhbHVlKSB7XG4gICAgICB0aGlzLnVwZGF0ZUNvbnRhY3RzKClcblxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKVxuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZUNvbnRhY3RzKCkge1xuICAgIHRoaXMuY29udGFjdHMgPSB0aGlzLnZhbHVlLnJlZHVjZSgoYWNjLCBjb250YWN0KSA9PiB7XG4gICAgICBjb25zdCBjb21wbGV0ZU9yZ2FuaXphdGlvbiA9IHRoaXMuYWxsT3JnYW5pemF0aW9ucy5nZXQoXG4gICAgICAgIGNvbnRhY3Qub3JnYW5pemF0aW9uLm5hbWVcbiAgICAgIClcblxuICAgICAgY29uc3QgdXBkYXRlZENvbnRhY3QgPSB7XG4gICAgICAgIC4uLmNvbnRhY3QsXG4gICAgICAgIG9yZ2FuaXphdGlvbjpcbiAgICAgICAgICBjb21wbGV0ZU9yZ2FuaXphdGlvbiA/P1xuICAgICAgICAgICh7IG5hbWU6IGNvbnRhY3Qub3JnYW5pemF0aW9uLm5hbWUgfSBhcyBPcmdhbml6YXRpb24pLFxuICAgICAgfVxuXG4gICAgICBhY2MucHVzaCh1cGRhdGVkQ29udGFjdClcblxuICAgICAgcmV0dXJuIGFjY1xuICAgIH0sIFtdIGFzIEluZGl2aWR1YWxbXSlcbiAgfVxuXG4gIGhhbmRsZUNvbnRhY3RzQ2hhbmdlZChpdGVtczogdW5rbm93bltdKSB7XG4gICAgY29uc3QgY29udGFjdHMgPSBpdGVtcyBhcyBJbmRpdmlkdWFsW11cblxuICAgIHRoaXMuY29udGFjdHMgPSBjb250YWN0c1xuXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KGNvbnRhY3RzKVxuICB9XG5cbiAgLyoqXG4gICAqIGduLXVpLWF1dG9jb21wbGV0ZVxuICAgKi9cbiAgZGlzcGxheVdpdGhGbjogKHVzZXI6IFVzZXJNb2RlbCkgPT4gc3RyaW5nID0gKHVzZXIpID0+XG4gICAgYCR7dXNlci5uYW1lfSAke3VzZXIuc3VybmFtZX0gJHtcbiAgICAgIHVzZXIub3JnYW5pc2F0aW9uID8gYCgke3VzZXIub3JnYW5pc2F0aW9ufSlgIDogJydcbiAgICB9YFxuXG4gIC8qKlxuICAgKiBnbi11aS1hdXRvY29tcGxldGVcbiAgICovXG4gIGF1dG9Db21wbGV0ZUFjdGlvbiA9IChxdWVyeTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgZnV6enlGaWx0ZXIgPSBjcmVhdGVGdXp6eUZpbHRlcihxdWVyeSlcbiAgICByZXR1cm4gdGhpcy5hbGxVc2VycyQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgodXNlcnMpID0+IFtcbiAgICAgICAgdXNlcnMuZmlsdGVyKCh1c2VyKSA9PiBmdXp6eUZpbHRlcih1c2VyLnVzZXJuYW1lKSksXG4gICAgICBdKSxcbiAgICAgIG1hcCgocmVzdWx0cykgPT4gcmVzdWx0cy5zbGljZSgwLCAxMCkpLFxuICAgICAgZGVib3VuY2VUaW1lKDMwMCksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgKVxuICB9XG5cbiAgLyoqXG4gICAqIGduLXVpLWF1dG9jb21wbGV0ZVxuICAgKi9cbiAgYWRkQ29udGFjdChjb250YWN0OiBVc2VyTW9kZWwpIHtcbiAgICBjb25zdCBuZXdDb250YWN0ID0ge1xuICAgICAgZmlyc3ROYW1lOiBjb250YWN0Lm5hbWUgPz8gJycsXG4gICAgICBsYXN0TmFtZTogY29udGFjdC5zdXJuYW1lID8/ICcnLFxuICAgICAgb3JnYW5pemF0aW9uOlxuICAgICAgICB0aGlzLmFsbE9yZ2FuaXphdGlvbnMuZ2V0KGNvbnRhY3Qub3JnYW5pc2F0aW9uKSA/P1xuICAgICAgICAoeyBuYW1lOiBjb250YWN0Lm9yZ2FuaXNhdGlvbiB9IGFzIE9yZ2FuaXphdGlvbiksXG4gICAgICBlbWFpbDogY29udGFjdC5lbWFpbCA/PyAnJyxcbiAgICAgIHJvbGU6ICdwb2ludF9vZl9jb250YWN0JyxcbiAgICAgIGFkZHJlc3M6ICcnLFxuICAgICAgcGhvbmU6ICcnLFxuICAgICAgcG9zaXRpb246ICcnLFxuICAgIH0gYXMgSW5kaXZpZHVhbFxuXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KFsuLi50aGlzLnZhbHVlLCBuZXdDb250YWN0XSlcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKClcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTNcIj5cbiAgPGduLXVpLWF1dG9jb21wbGV0ZVxuICAgIFtwbGFjZWhvbGRlcl09XCInQ2hvb3NlIGEgY29udGFjdCdcIlxuICAgIFthY3Rpb25dPVwiYXV0b0NvbXBsZXRlQWN0aW9uXCJcbiAgICAoaXRlbVNlbGVjdGVkKT1cImFkZENvbnRhY3QoJGV2ZW50KVwiXG4gICAgW2Rpc3BsYXlXaXRoRm5dPVwiZGlzcGxheVdpdGhGblwiXG4gICAgW21pbkNoYXJhY3RlckNvdW50XT1cIjFcIlxuICAgIFtjbGVhck9uU2VsZWN0aW9uXT1cInRydWVcIlxuICA+XG4gIDwvZ24tdWktYXV0b2NvbXBsZXRlPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250YWN0cy5sZW5ndGggPiAwOyBlbHNlIG5vQ29udGFjdFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250YWN0cy5sZW5ndGggPT09IDFcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbnRhY3Qgb2YgY29udGFjdHM7IGxldCBpbmRleCA9IGluZGV4XCI+XG4gICAgICAgIDxnbi11aS1jb250YWN0LWNhcmRcbiAgICAgICAgICBbY29udGFjdF09XCJjb250YWN0XCJcbiAgICAgICAgPjwvZ24tdWktY29udGFjdC1jYXJkPiA8L25nLWNvbnRhaW5lclxuICAgID48L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250YWN0cy5sZW5ndGggPiAxXCI+XG4gICAgICA8Z24tdWktc29ydGFibGUtbGlzdFxuICAgICAgICBbaXRlbXNdPVwiY29udGFjdHNcIlxuICAgICAgICAoaXRlbXNPcmRlckNoYW5nZSk9XCJoYW5kbGVDb250YWN0c0NoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgIFtlbGVtZW50VGVtcGxhdGVdPVwiY29udGFjdFRlbXBsYXRlXCJcbiAgICAgID48L2duLXVpLXNvcnRhYmxlLWxpc3Q+XG4gICAgICA8bmctdGVtcGxhdGUgI2NvbnRhY3RUZW1wbGF0ZSBsZXQtY29udGFjdD5cbiAgICAgICAgPGduLXVpLWNvbnRhY3QtY2FyZCBbY29udGFjdF09XCJjb250YWN0XCI+PC9nbi11aS1jb250YWN0LWNhcmQ+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI25vQ29udGFjdD5cbiAgPGRpdlxuICAgIGNsYXNzPVwicC00IHRleHQtc20gYm9yZGVyIGJvcmRlci1wcmltYXJ5IGJnLXByaW1hcnktbGlnaHRlc3Qgcm91bmRlZC1sZ1wiXG4gICAgdHJhbnNsYXRlXG4gID5cbiAgICBlZGl0b3IucmVjb3JkLmZvcm0uZmllbGQuY29udGFjdHMubm9Db250YWN0XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -6,30 +6,36 @@ import { ModalDialogComponent, SortableListComponent, } from '../../../../../../
|
|
|
6
6
|
import { NotificationsService } from '../../../../../../../../../libs/feature/notifications/src';
|
|
7
7
|
import { TranslateModule, TranslateService } from '@ngx-translate/core';
|
|
8
8
|
import { PlatformServiceInterface } from '../../../../../../../../../libs/common/domain/src/lib/platform.service.interface';
|
|
9
|
+
import { map } from 'rxjs';
|
|
9
10
|
import { MatDialog } from '@angular/material/dialog';
|
|
10
11
|
import { MAX_UPLOAD_SIZE_MB } from '../../../../fields.config';
|
|
12
|
+
import { EditorFacade } from '../../../../+state/editor.facade';
|
|
11
13
|
import * as i0 from "@angular/core";
|
|
12
14
|
import * as i1 from "../../../../../../../../../libs/feature/notifications/src";
|
|
13
15
|
import * as i2 from "@ngx-translate/core";
|
|
14
16
|
import * as i3 from "../../../../../../../../../libs/common/domain/src/lib/platform.service.interface";
|
|
15
17
|
import * as i4 from "@angular/material/dialog";
|
|
18
|
+
import * as i5 from "../../../../+state/editor.facade";
|
|
19
|
+
import * as i6 from "@angular/common";
|
|
16
20
|
export class FormFieldOnlineLinkResourcesComponent {
|
|
17
21
|
set value(onlineResources) {
|
|
18
22
|
this.allResources = onlineResources;
|
|
19
23
|
this.linkResources = onlineResources.filter((res) => res.type === 'link');
|
|
20
24
|
}
|
|
21
|
-
constructor(notificationsService, translateService, platformService, cd, dialog) {
|
|
25
|
+
constructor(notificationsService, translateService, platformService, cd, dialog, editorFacade) {
|
|
22
26
|
this.notificationsService = notificationsService;
|
|
23
27
|
this.translateService = translateService;
|
|
24
28
|
this.platformService = platformService;
|
|
25
29
|
this.cd = cd;
|
|
26
30
|
this.dialog = dialog;
|
|
31
|
+
this.editorFacade = editorFacade;
|
|
27
32
|
this.valueChange = new EventEmitter();
|
|
28
33
|
this.allResources = [];
|
|
29
34
|
this.linkResources = [];
|
|
30
35
|
this.uploadProgress = undefined;
|
|
31
36
|
this.uploadSubscription = null;
|
|
32
37
|
this.MAX_UPLOAD_SIZE_MB = MAX_UPLOAD_SIZE_MB;
|
|
38
|
+
this.disabled$ = this.editorFacade.alreadySavedOnce$.pipe(map((alreadySavedOnce) => !alreadySavedOnce));
|
|
33
39
|
}
|
|
34
40
|
handleFileChange(file) {
|
|
35
41
|
this.uploadProgress = 0;
|
|
@@ -123,8 +129,8 @@ export class FormFieldOnlineLinkResourcesComponent {
|
|
|
123
129
|
]);
|
|
124
130
|
});
|
|
125
131
|
}
|
|
126
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldOnlineLinkResourcesComponent, deps: [{ token: i1.NotificationsService }, { token: i2.TranslateService }, { token: i3.PlatformServiceInterface }, { token: i0.ChangeDetectorRef }, { token: i4.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
127
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormFieldOnlineLinkResourcesComponent, isStandalone: true, selector: "gn-ui-form-field-online-link-resources", inputs: { metadataUuid: "metadataUuid", value: "value" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "dialogTemplate", first: true, predicate: ["dialogTemplate"], descendants: true }], ngImport: i0, template: "<gn-ui-file-input\n
|
|
132
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldOnlineLinkResourcesComponent, deps: [{ token: i1.NotificationsService }, { token: i2.TranslateService }, { token: i3.PlatformServiceInterface }, { token: i0.ChangeDetectorRef }, { token: i4.MatDialog }, { token: i5.EditorFacade }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
133
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormFieldOnlineLinkResourcesComponent, isStandalone: true, selector: "gn-ui-form-field-online-link-resources", inputs: { metadataUuid: "metadataUuid", value: "value" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "dialogTemplate", first: true, predicate: ["dialogTemplate"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-col\">\n <gn-ui-file-input\n [maxSizeMB]=\"MAX_UPLOAD_SIZE_MB\"\n (fileChange)=\"handleFileChange($event)\"\n (uploadCancel)=\"handleUploadCancel()\"\n [uploadProgress]=\"uploadProgress\"\n (urlChange)=\"handleUrlChange($event)\"\n [disabled]=\"disabled$ | async\"\n ></gn-ui-file-input>\n <div class=\"h-[8px]\"></div>\n <gn-ui-sortable-list\n [items]=\"linkResources\"\n (itemsOrderChange)=\"handleResourcesChange($event)\"\n [elementTemplate]=\"template\"\n >\n </gn-ui-sortable-list>\n <ng-template #template let-onlineResource let-index=\"index\">\n <gn-ui-online-resource-card\n [onlineResource]=\"onlineResource\"\n (modifyClick)=\"handleResourceModify(onlineResource, index)\"\n ></gn-ui-online-resource-card>\n </ng-template>\n\n <ng-template #dialogTemplate let-onlineResource>\n <div class=\"flex flex-col gap-[16px]\">\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.title\n </h3>\n <gn-ui-text-input [(value)]=\"onlineResource.name\"></gn-ui-text-input>\n </div>\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.description\n </h3>\n <gn-ui-text-area\n [(value)]=\"onlineResource.description\"\n ></gn-ui-text-area>\n </div>\n <span class=\"w-full border-b border-gray-300\"></span>\n <gn-ui-url-input\n class=\"w-full\"\n [disabled]=\"true\"\n [value]=\"onlineResource.url\"\n [showUploadButton]=\"false\"\n [disabled]=\"disabled$ | async\"\n ></gn-ui-url-input>\n </div>\n </ng-template>\n <div\n *ngIf=\"disabled$ | async\"\n class=\"p-4 text-sm border border-primary bg-primary-lightest rounded-lg\"\n translate\n data-testid=\"disabled-message\"\n >\n editor.record.form.field.draft.only.disabled\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: FileInputComponent, selector: "gn-ui-file-input", inputs: ["maxSizeMB", "uploadProgress", "disabled"], outputs: ["fileChange", "urlChange", "uploadCancel"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "component", type: SortableListComponent, selector: "gn-ui-sortable-list", inputs: ["elementTemplate", "items"], outputs: ["itemsOrderChange"] }, { kind: "component", type: OnlineResourceCardComponent, selector: "gn-ui-online-resource-card", inputs: ["onlineResource"], outputs: ["modifyClick"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "placeholder", "required", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: TextAreaComponent, selector: "gn-ui-text-area", inputs: ["value", "disabled", "extraClass", "placeholder", "required"], outputs: ["valueChange"] }, { kind: "component", type: UrlInputComponent, selector: "gn-ui-url-input", inputs: ["value", "extraClass", "placeholder", "disabled", "showUploadButton"], outputs: ["valueChange", "uploadClick"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
128
134
|
}
|
|
129
135
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldOnlineLinkResourcesComponent, decorators: [{
|
|
130
136
|
type: Component,
|
|
@@ -137,8 +143,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
137
143
|
TextAreaComponent,
|
|
138
144
|
UrlInputComponent,
|
|
139
145
|
TranslateModule,
|
|
140
|
-
], template: "<gn-ui-file-input\n
|
|
141
|
-
}], ctorParameters: function () { return [{ type: i1.NotificationsService }, { type: i2.TranslateService }, { type: i3.PlatformServiceInterface }, { type: i0.ChangeDetectorRef }, { type: i4.MatDialog }]; }, propDecorators: { metadataUuid: [{
|
|
146
|
+
], template: "<div class=\"flex flex-col\">\n <gn-ui-file-input\n [maxSizeMB]=\"MAX_UPLOAD_SIZE_MB\"\n (fileChange)=\"handleFileChange($event)\"\n (uploadCancel)=\"handleUploadCancel()\"\n [uploadProgress]=\"uploadProgress\"\n (urlChange)=\"handleUrlChange($event)\"\n [disabled]=\"disabled$ | async\"\n ></gn-ui-file-input>\n <div class=\"h-[8px]\"></div>\n <gn-ui-sortable-list\n [items]=\"linkResources\"\n (itemsOrderChange)=\"handleResourcesChange($event)\"\n [elementTemplate]=\"template\"\n >\n </gn-ui-sortable-list>\n <ng-template #template let-onlineResource let-index=\"index\">\n <gn-ui-online-resource-card\n [onlineResource]=\"onlineResource\"\n (modifyClick)=\"handleResourceModify(onlineResource, index)\"\n ></gn-ui-online-resource-card>\n </ng-template>\n\n <ng-template #dialogTemplate let-onlineResource>\n <div class=\"flex flex-col gap-[16px]\">\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.title\n </h3>\n <gn-ui-text-input [(value)]=\"onlineResource.name\"></gn-ui-text-input>\n </div>\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.description\n </h3>\n <gn-ui-text-area\n [(value)]=\"onlineResource.description\"\n ></gn-ui-text-area>\n </div>\n <span class=\"w-full border-b border-gray-300\"></span>\n <gn-ui-url-input\n class=\"w-full\"\n [disabled]=\"true\"\n [value]=\"onlineResource.url\"\n [showUploadButton]=\"false\"\n [disabled]=\"disabled$ | async\"\n ></gn-ui-url-input>\n </div>\n </ng-template>\n <div\n *ngIf=\"disabled$ | async\"\n class=\"p-4 text-sm border border-primary bg-primary-lightest rounded-lg\"\n translate\n data-testid=\"disabled-message\"\n >\n editor.record.form.field.draft.only.disabled\n </div>\n</div>\n" }]
|
|
147
|
+
}], ctorParameters: function () { return [{ type: i1.NotificationsService }, { type: i2.TranslateService }, { type: i3.PlatformServiceInterface }, { type: i0.ChangeDetectorRef }, { type: i4.MatDialog }, { type: i5.EditorFacade }]; }, propDecorators: { metadataUuid: [{
|
|
142
148
|
type: Input
|
|
143
149
|
}], value: [{
|
|
144
150
|
type: Input
|
|
@@ -148,4 +154,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
148
154
|
type: ViewChild,
|
|
149
155
|
args: ['dialogTemplate']
|
|
150
156
|
}] } });
|
|
151
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1vbmxpbmUtbGluay1yZXNvdXJjZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9mZWF0dXJlL2VkaXRvci9zcmMvbGliL2NvbXBvbmVudHMvcmVjb3JkLWZvcm0vZm9ybS1maWVsZC9mb3JtLWZpZWxkLW9ubGluZS1saW5rLXJlc291cmNlcy9mb3JtLWZpZWxkLW9ubGluZS1saW5rLXJlc291cmNlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvZWRpdG9yL3NyYy9saWIvY29tcG9uZW50cy9yZWNvcmQtZm9ybS9mb3JtLWZpZWxkL2Zvcm0tZmllbGQtb25saW5lLWxpbmstcmVzb3VyY2VzL2Zvcm0tZmllbGQtb25saW5lLWxpbmstcmVzb3VyY2VzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFBO0FBS3RCLE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUNsQixpQkFBaUIsR0FDbEIsTUFBTSwrQ0FBK0MsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDOUMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOERBQThELENBQUE7QUFDMUcsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixxQkFBcUIsR0FDdEIsTUFBTSwrQ0FBK0MsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyREFBMkQsQ0FBQTtBQUNoRyxPQUFPLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDdkUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sa0ZBQWtGLENBQUE7QUFFM0gsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBQ3BELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJCQUEyQixDQUFBOzs7Ozs7QUFtQjlELE1BQU0sT0FBTyxxQ0FBcUM7SUFFaEQsSUFBYSxLQUFLLENBQUMsZUFBc0M7UUFDdkQsSUFBSSxDQUFDLFlBQVksR0FBRyxlQUFlLENBQUE7UUFDbkMsSUFBSSxDQUFDLGFBQWEsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUN6QyxDQUFDLEdBQUcsRUFBNkIsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUN4RCxDQUFBO0lBQ0gsQ0FBQztJQWFELFlBQ1Usb0JBQTBDLEVBQzFDLGdCQUFrQyxFQUNsQyxlQUF5QyxFQUN6QyxFQUFxQixFQUNyQixNQUFpQjtRQUpqQix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQzFDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsb0JBQWUsR0FBZixlQUFlLENBQTBCO1FBQ3pDLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQ3JCLFdBQU0sR0FBTixNQUFNLENBQVc7UUFqQmpCLGdCQUFXLEdBQ25CLElBQUksWUFBWSxFQUFFLENBQUE7UUFJWixpQkFBWSxHQUFxQixFQUFFLENBQUE7UUFDM0Msa0JBQWEsR0FBeUIsRUFBRSxDQUFBO1FBQ3hDLG1CQUFjLEdBQVksU0FBUyxDQUFBO1FBQ25DLHVCQUFrQixHQUFpQixJQUFJLENBQUE7UUFFN0IsdUJBQWtCLEdBQUcsa0JBQWtCLENBQUE7SUFROUMsQ0FBQztJQUVKLGdCQUFnQixDQUFDLElBQVU7UUFDekIsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUE7UUFDdkIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxlQUFlO2FBQzNDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDO2FBQzNDLFNBQVMsQ0FBQztZQUNULElBQUksRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNkLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxVQUFVLEVBQUU7b0JBQzdCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQTtvQkFDcEMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQTtpQkFDeEI7cUJBQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRTtvQkFDbkMsSUFBSSxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUE7b0JBQy9CLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUE7b0JBQ3ZCLE1BQU0sV0FBVyxHQUF1Qjt3QkFDdEMsSUFBSSxFQUFFLE1BQU07d0JBQ1osR0FBRyxFQUFFLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO3dCQUNsQyxJQUFJLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRO3FCQUNoQyxDQUFBO29CQUNELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUE7aUJBQzNEO1lBQ0gsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLEtBQVksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7U0FDakQsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUMzQixJQUFJLENBQUMsY0FBYyxHQUFHLFNBQVMsQ0FBQTtZQUMvQixJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxFQUFFLENBQUE7U0FDdEM7SUFDSCxDQUFDO0lBRUQsZUFBZSxDQUFDLEdBQVc7UUFDekIsSUFBSTtZQUNGLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUE7WUFDakMsTUFBTSxPQUFPLEdBQXVCO2dCQUNsQyxJQUFJLEVBQUUsTUFBTTtnQkFDWixHQUFHLEVBQUUsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDO2dCQUNqQixJQUFJO2FBQ0wsQ0FBQTtZQUNELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUE7U0FDdkQ7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBVSxDQUFDLENBQUE7U0FDN0I7SUFDSCxDQUFDO0lBRUQscUJBQXFCLENBQUMsS0FBZ0I7UUFDcEMsTUFBTSxLQUFLLEdBQUcsS0FBeUIsQ0FBQTtRQUN2QyxNQUFNLFlBQVksR0FBRztZQUNuQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQztZQUNyRCxHQUFHLEtBQUs7U0FDVCxDQUFBO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUE7SUFDckMsQ0FBQztJQUVELG9CQUFvQixDQUFDLFFBQTRCLEVBQUUsS0FBYTtRQUM5RCxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUN0QyxDQUFDO0lBRU8sV0FBVyxDQUFDLEtBQVk7UUFDOUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUE7UUFDL0IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQTtRQUN2QixJQUFJLENBQUMsb0JBQW9CLENBQUMsZ0JBQWdCLENBQUM7WUFDekMsSUFBSSxFQUFFLE9BQU87WUFDYixLQUFLLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FDbEMseUNBQXlDLENBQzFDO1lBQ0QsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FDcEMsd0NBQXdDLENBQ3pDLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUNwQixZQUFZLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FDekMsZ0RBQWdELENBQ2pEO1NBQ0YsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVPLGNBQWMsQ0FBQyxRQUE0QixFQUFFLEtBQWE7UUFDaEUsTUFBTSxZQUFZLEdBQUc7WUFDbkIsR0FBRyxRQUFRO1NBQ1osQ0FBQTtRQUNELElBQUksQ0FBQyxNQUFNO2FBQ1IsSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBQzFCLEtBQUssRUFBRSxPQUFPO1lBQ2QsSUFBSSxFQUFFO2dCQUNKLEtBQUssRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUNsQyxxREFBcUQsQ0FDdEQ7Z0JBQ0QsSUFBSSxFQUFFLElBQUksQ0FBQyxjQUFjO2dCQUN6QixXQUFXLEVBQUUsWUFBWTtnQkFDekIsV0FBVyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQ3hDLGlEQUFpRCxDQUNsRDtnQkFDRCxVQUFVLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FDdkMsZ0RBQWdELENBQ2pEO2FBQ0Y7U0FDRixDQUFDO2FBQ0QsV0FBVyxFQUFFO2FBQ2IsU0FBUyxDQUFDLENBQUMsU0FBa0IsRUFBRSxFQUFFO1lBQ2hDLElBQUksQ0FBQyxTQUFTO2dCQUFFLE9BQU07WUFDdEIsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQTtZQUN4QyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUE7WUFDdkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7Z0JBQ3BCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDO2dCQUNyRCxHQUFHLFFBQVE7YUFDWixDQUFDLENBQUE7UUFDSixDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7K0dBdElVLHFDQUFxQzttR0FBckMscUNBQXFDLHVUQ2xEbEQsK2hEQTRDQSwwRERKSSxrQkFBa0IsMkpBQ2xCLFlBQVksK0JBQ1oscUJBQXFCLHFJQUNyQiwyQkFBMkIsNkhBQzNCLGtCQUFrQiwrSkFDbEIsaUJBQWlCLDhKQUNqQixpQkFBaUIsb0xBQ2pCLGVBQWU7OzRGQUdOLHFDQUFxQztrQkFqQmpELFNBQVM7K0JBQ0Usd0NBQXdDLG1CQUdqQyx1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUDt3QkFDUCxrQkFBa0I7d0JBQ2xCLFlBQVk7d0JBQ1oscUJBQXFCO3dCQUNyQiwyQkFBMkI7d0JBQzNCLGtCQUFrQjt3QkFDbEIsaUJBQWlCO3dCQUNqQixpQkFBaUI7d0JBQ2pCLGVBQWU7cUJBQ2hCO3lPQUdRLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ08sS0FBSztzQkFBakIsS0FBSztnQkFNSSxXQUFXO3NCQUFwQixNQUFNO2dCQUdzQixjQUFjO3NCQUExQyxTQUFTO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQge1xuICBPbmxpbmVMaW5rUmVzb3VyY2UsXG4gIE9ubGluZVJlc291cmNlLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5pbXBvcnQge1xuICBGaWxlSW5wdXRDb21wb25lbnQsXG4gIFRleHRBcmVhQ29tcG9uZW50LFxuICBUZXh0SW5wdXRDb21wb25lbnQsXG4gIFVybElucHV0Q29tcG9uZW50LFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2lucHV0cy9zcmMnXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQgeyBPbmxpbmVSZXNvdXJjZUNhcmRDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9vbmxpbmUtcmVzb3VyY2UtY2FyZC9vbmxpbmUtcmVzb3VyY2UtY2FyZC5jb21wb25lbnQnXG5pbXBvcnQge1xuICBNb2RhbERpYWxvZ0NvbXBvbmVudCxcbiAgU29ydGFibGVMaXN0Q29tcG9uZW50LFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2xheW91dC9zcmMnXG5pbXBvcnQgeyBOb3RpZmljYXRpb25zU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9ub3RpZmljYXRpb25zL3NyYydcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5pbXBvcnQgeyBQbGF0Zm9ybVNlcnZpY2VJbnRlcmZhY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9wbGF0Zm9ybS5zZXJ2aWNlLmludGVyZmFjZSdcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnXG5pbXBvcnQgeyBNQVhfVVBMT0FEX1NJWkVfTUIgfSBmcm9tICcuLi8uLi8uLi8uLi9maWVsZHMuY29uZmlnJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnbi11aS1mb3JtLWZpZWxkLW9ubGluZS1saW5rLXJlc291cmNlcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWZpZWxkLW9ubGluZS1saW5rLXJlc291cmNlcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Zvcm0tZmllbGQtb25saW5lLWxpbmstcmVzb3VyY2VzLmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBGaWxlSW5wdXRDb21wb25lbnQsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFNvcnRhYmxlTGlzdENvbXBvbmVudCxcbiAgICBPbmxpbmVSZXNvdXJjZUNhcmRDb21wb25lbnQsXG4gICAgVGV4dElucHV0Q29tcG9uZW50LFxuICAgIFRleHRBcmVhQ29tcG9uZW50LFxuICAgIFVybElucHV0Q29tcG9uZW50LFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybUZpZWxkT25saW5lTGlua1Jlc291cmNlc0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpIG1ldGFkYXRhVXVpZDogc3RyaW5nXG4gIEBJbnB1dCgpIHNldCB2YWx1ZShvbmxpbmVSZXNvdXJjZXM6IEFycmF5PE9ubGluZVJlc291cmNlPikge1xuICAgIHRoaXMuYWxsUmVzb3VyY2VzID0gb25saW5lUmVzb3VyY2VzXG4gICAgdGhpcy5saW5rUmVzb3VyY2VzID0gb25saW5lUmVzb3VyY2VzLmZpbHRlcihcbiAgICAgIChyZXMpOiByZXMgaXMgT25saW5lTGlua1Jlc291cmNlID0+IHJlcy50eXBlID09PSAnbGluaydcbiAgICApXG4gIH1cbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8QXJyYXk8T25saW5lUmVzb3VyY2U+PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcigpXG5cbiAgQFZpZXdDaGlsZCgnZGlhbG9nVGVtcGxhdGUnKSBkaWFsb2dUZW1wbGF0ZTogVGVtcGxhdGVSZWY8T25saW5lUmVzb3VyY2U+XG5cbiAgcHJpdmF0ZSBhbGxSZXNvdXJjZXM6IE9ubGluZVJlc291cmNlW10gPSBbXVxuICBsaW5rUmVzb3VyY2VzOiBPbmxpbmVMaW5rUmVzb3VyY2VbXSA9IFtdXG4gIHVwbG9hZFByb2dyZXNzPzogbnVtYmVyID0gdW5kZWZpbmVkXG4gIHVwbG9hZFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gbnVsbFxuXG4gIHByb3RlY3RlZCBNQVhfVVBMT0FEX1NJWkVfTUIgPSBNQVhfVVBMT0FEX1NJWkVfTUJcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvbnNTZXJ2aWNlOiBOb3RpZmljYXRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwbGF0Zm9ybVNlcnZpY2U6IFBsYXRmb3JtU2VydmljZUludGVyZmFjZSxcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nXG4gICkge31cblxuICBoYW5kbGVGaWxlQ2hhbmdlKGZpbGU6IEZpbGUpIHtcbiAgICB0aGlzLnVwbG9hZFByb2dyZXNzID0gMFxuICAgIHRoaXMudXBsb2FkU3Vic2NyaXB0aW9uID0gdGhpcy5wbGF0Zm9ybVNlcnZpY2VcbiAgICAgIC5hdHRhY2hGaWxlVG9SZWNvcmQodGhpcy5tZXRhZGF0YVV1aWQsIGZpbGUpXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKGV2ZW50KSA9PiB7XG4gICAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT09ICdwcm9ncmVzcycpIHtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkUHJvZ3Jlc3MgPSBldmVudC5wcm9ncmVzc1xuICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKClcbiAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT09ICdzdWNjZXNzJykge1xuICAgICAgICAgICAgdGhpcy51cGxvYWRQcm9ncmVzcyA9IHVuZGVmaW5lZFxuICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKClcbiAgICAgICAgICAgIGNvbnN0IG5ld1Jlc291cmNlOiBPbmxpbmVMaW5rUmVzb3VyY2UgPSB7XG4gICAgICAgICAgICAgIHR5cGU6ICdsaW5rJyxcbiAgICAgICAgICAgICAgdXJsOiBuZXcgVVJMKGV2ZW50LmF0dGFjaG1lbnQudXJsKSxcbiAgICAgICAgICAgICAgbmFtZTogZXZlbnQuYXR0YWNobWVudC5maWxlTmFtZSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChbLi4udGhpcy5hbGxSZXNvdXJjZXMsIG5ld1Jlc291cmNlXSlcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyb3I6IEVycm9yKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycm9yKSxcbiAgICAgIH0pXG4gIH1cblxuICBoYW5kbGVVcGxvYWRDYW5jZWwoKSB7XG4gICAgaWYgKHRoaXMudXBsb2FkU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnVwbG9hZFByb2dyZXNzID0gdW5kZWZpbmVkXG4gICAgICB0aGlzLnVwbG9hZFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpXG4gICAgfVxuICB9XG5cbiAgaGFuZGxlVXJsQ2hhbmdlKHVybDogc3RyaW5nKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG5hbWUgPSB1cmwuc3BsaXQoJy8nKS5wb3AoKVxuICAgICAgY29uc3QgbmV3TGluazogT25saW5lTGlua1Jlc291cmNlID0ge1xuICAgICAgICB0eXBlOiAnbGluaycsXG4gICAgICAgIHVybDogbmV3IFVSTCh1cmwpLFxuICAgICAgICBuYW1lLFxuICAgICAgfVxuICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KFsuLi50aGlzLmFsbFJlc291cmNlcywgbmV3TGlua10pXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5oYW5kbGVFcnJvcihlIGFzIEVycm9yKVxuICAgIH1cbiAgfVxuXG4gIGhhbmRsZVJlc291cmNlc0NoYW5nZShpdGVtczogdW5rbm93bltdKSB7XG4gICAgY29uc3QgbGlua3MgPSBpdGVtcyBhcyBPbmxpbmVSZXNvdXJjZVtdXG4gICAgY29uc3QgbmV3UmVzb3VyY2VzID0gW1xuICAgICAgLi4udGhpcy5hbGxSZXNvdXJjZXMuZmlsdGVyKChyKSA9PiByLnR5cGUgIT09ICdsaW5rJyksXG4gICAgICAuLi5saW5rcyxcbiAgICBdXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KG5ld1Jlc291cmNlcylcbiAgfVxuXG4gIGhhbmRsZVJlc291cmNlTW9kaWZ5KHJlc291cmNlOiBPbmxpbmVMaW5rUmVzb3VyY2UsIGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLm9wZW5FZGl0RGlhbG9nKHJlc291cmNlLCBpbmRleClcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlRXJyb3IoZXJyb3I6IEVycm9yKSB7XG4gICAgdGhpcy51cGxvYWRQcm9ncmVzcyA9IHVuZGVmaW5lZFxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpXG4gICAgdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS5zaG93Tm90aWZpY2F0aW9uKHtcbiAgICAgIHR5cGU6ICdlcnJvcicsXG4gICAgICB0aXRsZTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICdlZGl0b3IucmVjb3JkLm9ubGluZVJlc291cmNlRXJyb3IudGl0bGUnXG4gICAgICApLFxuICAgICAgdGV4dDogYCR7dGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICdlZGl0b3IucmVjb3JkLm9ubGluZVJlc291cmNlRXJyb3IuYm9keSdcbiAgICAgICl9ICR7ZXJyb3IubWVzc2FnZX1gLFxuICAgICAgY2xvc2VNZXNzYWdlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgJ2VkaXRvci5yZWNvcmQub25saW5lUmVzb3VyY2VFcnJvci5jbG9zZU1lc3NhZ2UnXG4gICAgICApLFxuICAgIH0pXG4gIH1cblxuICBwcml2YXRlIG9wZW5FZGl0RGlhbG9nKHJlc291cmNlOiBPbmxpbmVMaW5rUmVzb3VyY2UsIGluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCByZXNvdXJjZUNvcHkgPSB7XG4gICAgICAuLi5yZXNvdXJjZSxcbiAgICB9XG4gICAgdGhpcy5kaWFsb2dcbiAgICAgIC5vcGVuKE1vZGFsRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgIHdpZHRoOiAnODAwcHgnLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgdGl0bGU6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgICAgJ2VkaXRvci5yZWNvcmQuZm9ybS5maWVsZC5vbmxpbmVSZXNvdXJjZS5kaWFsb2dUaXRsZSdcbiAgICAgICAgICApLFxuICAgICAgICAgIGJvZHk6IHRoaXMuZGlhbG9nVGVtcGxhdGUsXG4gICAgICAgICAgYm9keUNvbnRleHQ6IHJlc291cmNlQ29weSxcbiAgICAgICAgICBjb25maXJtVGV4dDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICAgICAnZWRpdG9yLnJlY29yZC5mb3JtLmZpZWxkLm9ubGluZVJlc291cmNlLmNvbmZpcm0nXG4gICAgICAgICAgKSxcbiAgICAgICAgICBjYW5jZWxUZXh0OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICAgICdlZGl0b3IucmVjb3JkLmZvcm0uZmllbGQub25saW5lUmVzb3VyY2UuY2FuY2VsJ1xuICAgICAgICAgICksXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgIC5zdWJzY3JpYmUoKGNvbmZpcm1lZDogYm9vbGVhbikgPT4ge1xuICAgICAgICBpZiAoIWNvbmZpcm1lZCkgcmV0dXJuXG4gICAgICAgIGNvbnN0IG5ld0xpbmtzID0gWy4uLnRoaXMubGlua1Jlc291cmNlc11cbiAgICAgICAgbmV3TGlua3Muc3BsaWNlKGluZGV4LCAxLCByZXNvdXJjZUNvcHkpXG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChbXG4gICAgICAgICAgLi4udGhpcy5hbGxSZXNvdXJjZXMuZmlsdGVyKChyKSA9PiByLnR5cGUgIT09ICdsaW5rJyksXG4gICAgICAgICAgLi4ubmV3TGlua3MsXG4gICAgICAgIF0pXG4gICAgICB9KVxuICB9XG59XG4iLCI8Z24tdWktZmlsZS1pbnB1dFxuICBbbWF4U2l6ZU1CXT1cIk1BWF9VUExPQURfU0laRV9NQlwiXG4gIChmaWxlQ2hhbmdlKT1cImhhbmRsZUZpbGVDaGFuZ2UoJGV2ZW50KVwiXG4gICh1cGxvYWRDYW5jZWwpPVwiaGFuZGxlVXBsb2FkQ2FuY2VsKClcIlxuICBbdXBsb2FkUHJvZ3Jlc3NdPVwidXBsb2FkUHJvZ3Jlc3NcIlxuICAodXJsQ2hhbmdlKT1cImhhbmRsZVVybENoYW5nZSgkZXZlbnQpXCJcbj48L2duLXVpLWZpbGUtaW5wdXQ+XG48ZGl2IGNsYXNzPVwiaC1bOHB4XVwiPjwvZGl2PlxuPGduLXVpLXNvcnRhYmxlLWxpc3RcbiAgW2l0ZW1zXT1cImxpbmtSZXNvdXJjZXNcIlxuICAoaXRlbXNPcmRlckNoYW5nZSk9XCJoYW5kbGVSZXNvdXJjZXNDaGFuZ2UoJGV2ZW50KVwiXG4gIFtlbGVtZW50VGVtcGxhdGVdPVwidGVtcGxhdGVcIlxuPlxuPC9nbi11aS1zb3J0YWJsZS1saXN0PlxuPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZSBsZXQtb25saW5lUmVzb3VyY2UgbGV0LWluZGV4PVwiaW5kZXhcIj5cbiAgPGduLXVpLW9ubGluZS1yZXNvdXJjZS1jYXJkXG4gICAgW29ubGluZVJlc291cmNlXT1cIm9ubGluZVJlc291cmNlXCJcbiAgICAobW9kaWZ5Q2xpY2spPVwiaGFuZGxlUmVzb3VyY2VNb2RpZnkob25saW5lUmVzb3VyY2UsIGluZGV4KVwiXG4gID48L2duLXVpLW9ubGluZS1yZXNvdXJjZS1jYXJkPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNkaWFsb2dUZW1wbGF0ZSBsZXQtb25saW5lUmVzb3VyY2U+XG4gIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC1bMTZweF1cIj5cbiAgICA8ZGl2PlxuICAgICAgPGgzIGNsYXNzPVwidGV4dC1bMTZweF0gZm9udC1ib2xkIHRleHQtbWFpbiBtYi1bMTJweF1cIiB0cmFuc2xhdGU+XG4gICAgICAgIGVkaXRvci5yZWNvcmQuZm9ybS5maWVsZC5vbmxpbmVSZXNvdXJjZS5lZGl0LnRpdGxlXG4gICAgICA8L2gzPlxuICAgICAgPGduLXVpLXRleHQtaW5wdXQgWyh2YWx1ZSldPVwib25saW5lUmVzb3VyY2UubmFtZVwiPjwvZ24tdWktdGV4dC1pbnB1dD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2PlxuICAgICAgPGgzIGNsYXNzPVwidGV4dC1bMTZweF0gZm9udC1ib2xkIHRleHQtbWFpbiBtYi1bMTJweF1cIiB0cmFuc2xhdGU+XG4gICAgICAgIGVkaXRvci5yZWNvcmQuZm9ybS5maWVsZC5vbmxpbmVSZXNvdXJjZS5lZGl0LmRlc2NyaXB0aW9uXG4gICAgICA8L2gzPlxuICAgICAgPGduLXVpLXRleHQtYXJlYSBbKHZhbHVlKV09XCJvbmxpbmVSZXNvdXJjZS5kZXNjcmlwdGlvblwiPjwvZ24tdWktdGV4dC1hcmVhPlxuICAgIDwvZGl2PlxuICAgIDxzcGFuIGNsYXNzPVwidy1mdWxsIGJvcmRlci1iIGJvcmRlci1ncmF5LTMwMFwiPjwvc3Bhbj5cbiAgICA8Z24tdWktdXJsLWlucHV0XG4gICAgICBjbGFzcz1cInctZnVsbFwiXG4gICAgICBbZGlzYWJsZWRdPVwidHJ1ZVwiXG4gICAgICBbdmFsdWVdPVwib25saW5lUmVzb3VyY2UudXJsXCJcbiAgICAgIFtzaG93VXBsb2FkQnV0dG9uXT1cImZhbHNlXCJcbiAgICA+PC9nbi11aS11cmwtaW5wdXQ+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
157
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1vbmxpbmUtbGluay1yZXNvdXJjZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9mZWF0dXJlL2VkaXRvci9zcmMvbGliL2NvbXBvbmVudHMvcmVjb3JkLWZvcm0vZm9ybS1maWVsZC9mb3JtLWZpZWxkLW9ubGluZS1saW5rLXJlc291cmNlcy9mb3JtLWZpZWxkLW9ubGluZS1saW5rLXJlc291cmNlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvZWRpdG9yL3NyYy9saWIvY29tcG9uZW50cy9yZWNvcmQtZm9ybS9mb3JtLWZpZWxkL2Zvcm0tZmllbGQtb25saW5lLWxpbmstcmVzb3VyY2VzL2Zvcm0tZmllbGQtb25saW5lLWxpbmstcmVzb3VyY2VzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFBO0FBS3RCLE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUNsQixpQkFBaUIsR0FDbEIsTUFBTSwrQ0FBK0MsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDOUMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOERBQThELENBQUE7QUFDMUcsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixxQkFBcUIsR0FDdEIsTUFBTSwrQ0FBK0MsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyREFBMkQsQ0FBQTtBQUNoRyxPQUFPLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixF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Q3RCLE1BQU0sUUFBUSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUE7WUFDeEMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFBO1lBQ3ZDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO2dCQUNwQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQztnQkFDckQsR0FBRyxRQUFRO2FBQ1osQ0FBQyxDQUFBO1FBQ0osQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDOytHQTNJVSxxQ0FBcUM7bUdBQXJDLHFDQUFxQyx1VENuRGxELGcvREEwREEsMEREakJJLGtCQUFrQix1S0FDbEIsWUFBWSx3TEFDWixxQkFBcUIscUlBQ3JCLDJCQUEyQiw2SEFDM0Isa0JBQWtCLCtKQUNsQixpQkFBaUIsOEpBQ2pCLGlCQUFpQixvTEFDakIsZUFBZTs7NEZBR04scUNBQXFDO2tCQWpCakQsU0FBUzsrQkFDRSx3Q0FBd0MsbUJBR2pDLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNQLGtCQUFrQjt3QkFDbEIsWUFBWTt3QkFDWixxQkFBcUI7d0JBQ3JCLDJCQUEyQjt3QkFDM0Isa0JBQWtCO3dCQUNsQixpQkFBaUI7d0JBQ2pCLGlCQUFpQjt3QkFDakIsZUFBZTtxQkFDaEI7b1FBR1EsWUFBWTtzQkFBcEIsS0FBSztnQkFDTyxLQUFLO3NCQUFqQixLQUFLO2dCQU1JLFdBQVc7c0JBQXBCLE1BQU07Z0JBR3NCLGNBQWM7c0JBQTFDLFNBQVM7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7XG4gIE9ubGluZUxpbmtSZXNvdXJjZSxcbiAgT25saW5lUmVzb3VyY2UsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3JlY29yZCdcbmltcG9ydCB7XG4gIEZpbGVJbnB1dENvbXBvbmVudCxcbiAgVGV4dEFyZWFDb21wb25lbnQsXG4gIFRleHRJbnB1dENvbXBvbmVudCxcbiAgVXJsSW5wdXRDb21wb25lbnQsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvaW5wdXRzL3NyYydcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7IE9ubGluZVJlc291cmNlQ2FyZENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL29ubGluZS1yZXNvdXJjZS1jYXJkL29ubGluZS1yZXNvdXJjZS1jYXJkLmNvbXBvbmVudCdcbmltcG9ydCB7XG4gIE1vZGFsRGlhbG9nQ29tcG9uZW50LFxuICBTb3J0YWJsZUxpc3RDb21wb25lbnQsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvbGF5b3V0L3NyYydcbmltcG9ydCB7IE5vdGlmaWNhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9mZWF0dXJlL25vdGlmaWNhdGlvbnMvc3JjJ1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcbmltcG9ydCB7IFBsYXRmb3JtU2VydmljZUludGVyZmFjZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL3BsYXRmb3JtLnNlcnZpY2UuaW50ZXJmYWNlJ1xuaW1wb3J0IHsgbWFwLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJ1xuaW1wb3J0IHsgTUFYX1VQTE9BRF9TSVpFX01CIH0gZnJvbSAnLi4vLi4vLi4vLi4vZmllbGRzLmNvbmZpZydcbmltcG9ydCB7IEVkaXRvckZhY2FkZSB9IGZyb20gJy4uLy4uLy4uLy4uLytzdGF0ZS9lZGl0b3IuZmFjYWRlJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnbi11aS1mb3JtLWZpZWxkLW9ubGluZS1saW5rLXJlc291cmNlcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWZpZWxkLW9ubGluZS1saW5rLXJlc291cmNlcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Zvcm0tZmllbGQtb25saW5lLWxpbmstcmVzb3VyY2VzLmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBGaWxlSW5wdXRDb21wb25lbnQsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFNvcnRhYmxlTGlzdENvbXBvbmVudCxcbiAgICBPbmxpbmVSZXNvdXJjZUNhcmRDb21wb25lbnQsXG4gICAgVGV4dElucHV0Q29tcG9uZW50LFxuICAgIFRleHRBcmVhQ29tcG9uZW50LFxuICAgIFVybElucHV0Q29tcG9uZW50LFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybUZpZWxkT25saW5lTGlua1Jlc291cmNlc0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpIG1ldGFkYXRhVXVpZDogc3RyaW5nXG4gIEBJbnB1dCgpIHNldCB2YWx1ZShvbmxpbmVSZXNvdXJjZXM6IEFycmF5PE9ubGluZVJlc291cmNlPikge1xuICAgIHRoaXMuYWxsUmVzb3VyY2VzID0gb25saW5lUmVzb3VyY2VzXG4gICAgdGhpcy5saW5rUmVzb3VyY2VzID0gb25saW5lUmVzb3VyY2VzLmZpbHRlcihcbiAgICAgIChyZXMpOiByZXMgaXMgT25saW5lTGlua1Jlc291cmNlID0+IHJlcy50eXBlID09PSAnbGluaydcbiAgICApXG4gIH1cbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8QXJyYXk8T25saW5lUmVzb3VyY2U+PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcigpXG5cbiAgQFZpZXdDaGlsZCgnZGlhbG9nVGVtcGxhdGUnKSBkaWFsb2dUZW1wbGF0ZTogVGVtcGxhdGVSZWY8T25saW5lUmVzb3VyY2U+XG5cbiAgcHJpdmF0ZSBhbGxSZXNvdXJjZXM6IE9ubGluZVJlc291cmNlW10gPSBbXVxuICBsaW5rUmVzb3VyY2VzOiBPbmxpbmVMaW5rUmVzb3VyY2VbXSA9IFtdXG4gIHVwbG9hZFByb2dyZXNzPzogbnVtYmVyID0gdW5kZWZpbmVkXG4gIHVwbG9hZFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gbnVsbFxuXG4gIHByb3RlY3RlZCBNQVhfVVBMT0FEX1NJWkVfTUIgPSBNQVhfVVBMT0FEX1NJWkVfTUJcblxuICBkaXNhYmxlZCQgPSB0aGlzLmVkaXRvckZhY2FkZS5hbHJlYWR5U2F2ZWRPbmNlJC5waXBlKFxuICAgIG1hcCgoYWxyZWFkeVNhdmVkT25jZSkgPT4gIWFscmVhZHlTYXZlZE9uY2UpXG4gIClcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvbnNTZXJ2aWNlOiBOb3RpZmljYXRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwbGF0Zm9ybVNlcnZpY2U6IFBsYXRmb3JtU2VydmljZUludGVyZmFjZSxcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgIHByaXZhdGUgZWRpdG9yRmFjYWRlOiBFZGl0b3JGYWNhZGVcbiAgKSB7fVxuXG4gIGhhbmRsZUZpbGVDaGFuZ2UoZmlsZTogRmlsZSkge1xuICAgIHRoaXMudXBsb2FkUHJvZ3Jlc3MgPSAwXG4gICAgdGhpcy51cGxvYWRTdWJzY3JpcHRpb24gPSB0aGlzLnBsYXRmb3JtU2VydmljZVxuICAgICAgLmF0dGFjaEZpbGVUb1JlY29yZCh0aGlzLm1ldGFkYXRhVXVpZCwgZmlsZSlcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoZXZlbnQpID0+IHtcbiAgICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ3Byb2dyZXNzJykge1xuICAgICAgICAgICAgdGhpcy51cGxvYWRQcm9ncmVzcyA9IGV2ZW50LnByb2dyZXNzXG4gICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKVxuICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQudHlwZSA9PT0gJ3N1Y2Nlc3MnKSB7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZFByb2dyZXNzID0gdW5kZWZpbmVkXG4gICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKVxuICAgICAgICAgICAgY29uc3QgbmV3UmVzb3VyY2U6IE9ubGluZUxpbmtSZXNvdXJjZSA9IHtcbiAgICAgICAgICAgICAgdHlwZTogJ2xpbmsnLFxuICAgICAgICAgICAgICB1cmw6IG5ldyBVUkwoZXZlbnQuYXR0YWNobWVudC51cmwpLFxuICAgICAgICAgICAgICBuYW1lOiBldmVudC5hdHRhY2htZW50LmZpbGVOYW1lLFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KFsuLi50aGlzLmFsbFJlc291cmNlcywgbmV3UmVzb3VyY2VdKVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnJvcjogRXJyb3IpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpLFxuICAgICAgfSlcbiAgfVxuXG4gIGhhbmRsZVVwbG9hZENhbmNlbCgpIHtcbiAgICBpZiAodGhpcy51cGxvYWRTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMudXBsb2FkUHJvZ3Jlc3MgPSB1bmRlZmluZWRcbiAgICAgIHRoaXMudXBsb2FkU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKClcbiAgICB9XG4gIH1cblxuICBoYW5kbGVVcmxDaGFuZ2UodXJsOiBzdHJpbmcpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgbmFtZSA9IHVybC5zcGxpdCgnLycpLnBvcCgpXG4gICAgICBjb25zdCBuZXdMaW5rOiBPbmxpbmVMaW5rUmVzb3VyY2UgPSB7XG4gICAgICAgIHR5cGU6ICdsaW5rJyxcbiAgICAgICAgdXJsOiBuZXcgVVJMKHVybCksXG4gICAgICAgIG5hbWUsXG4gICAgICB9XG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoWy4uLnRoaXMuYWxsUmVzb3VyY2VzLCBuZXdMaW5rXSlcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmhhbmRsZUVycm9yKGUgYXMgRXJyb3IpXG4gICAgfVxuICB9XG5cbiAgaGFuZGxlUmVzb3VyY2VzQ2hhbmdlKGl0ZW1zOiB1bmtub3duW10pIHtcbiAgICBjb25zdCBsaW5rcyA9IGl0ZW1zIGFzIE9ubGluZVJlc291cmNlW11cbiAgICBjb25zdCBuZXdSZXNvdXJjZXMgPSBbXG4gICAgICAuLi50aGlzLmFsbFJlc291cmNlcy5maWx0ZXIoKHIpID0+IHIudHlwZSAhPT0gJ2xpbmsnKSxcbiAgICAgIC4uLmxpbmtzLFxuICAgIF1cbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQobmV3UmVzb3VyY2VzKVxuICB9XG5cbiAgaGFuZGxlUmVzb3VyY2VNb2RpZnkocmVzb3VyY2U6IE9ubGluZUxpbmtSZXNvdXJjZSwgaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMub3BlbkVkaXREaWFsb2cocmVzb3VyY2UsIGluZGV4KVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVFcnJvcihlcnJvcjogRXJyb3IpIHtcbiAgICB0aGlzLnVwbG9hZFByb2dyZXNzID0gdW5kZWZpbmVkXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKClcbiAgICB0aGlzLm5vdGlmaWNhdGlvbnNTZXJ2aWNlLnNob3dOb3RpZmljYXRpb24oe1xuICAgICAgdHlwZTogJ2Vycm9yJyxcbiAgICAgIHRpdGxlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgJ2VkaXRvci5yZWNvcmQub25saW5lUmVzb3VyY2VFcnJvci50aXRsZSdcbiAgICAgICksXG4gICAgICB0ZXh0OiBgJHt0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgJ2VkaXRvci5yZWNvcmQub25saW5lUmVzb3VyY2VFcnJvci5ib2R5J1xuICAgICAgKX0gJHtlcnJvci5tZXNzYWdlfWAsXG4gICAgICBjbG9zZU1lc3NhZ2U6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAnZWRpdG9yLnJlY29yZC5vbmxpbmVSZXNvdXJjZUVycm9yLmNsb3NlTWVzc2FnZSdcbiAgICAgICksXG4gICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgb3BlbkVkaXREaWFsb2cocmVzb3VyY2U6IE9ubGluZUxpbmtSZXNvdXJjZSwgaW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IHJlc291cmNlQ29weSA9IHtcbiAgICAgIC4uLnJlc291cmNlLFxuICAgIH1cbiAgICB0aGlzLmRpYWxvZ1xuICAgICAgLm9wZW4oTW9kYWxEaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgd2lkdGg6ICc4MDBweCcsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICB0aXRsZTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICAgICAnZWRpdG9yLnJlY29yZC5mb3JtLmZpZWxkLm9ubGluZVJlc291cmNlLmRpYWxvZ1RpdGxlJ1xuICAgICAgICAgICksXG4gICAgICAgICAgYm9keTogdGhpcy5kaWFsb2dUZW1wbGF0ZSxcbiAgICAgICAgICBib2R5Q29udGV4dDogcmVzb3VyY2VDb3B5LFxuICAgICAgICAgIGNvbmZpcm1UZXh0OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICAgICdlZGl0b3IucmVjb3JkLmZvcm0uZmllbGQub25saW5lUmVzb3VyY2UuY29uZmlybSdcbiAgICAgICAgICApLFxuICAgICAgICAgIGNhbmNlbFRleHQ6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgICAgJ2VkaXRvci5yZWNvcmQuZm9ybS5maWVsZC5vbmxpbmVSZXNvdXJjZS5jYW5jZWwnXG4gICAgICAgICAgKSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgLnN1YnNjcmliZSgoY29uZmlybWVkOiBib29sZWFuKSA9PiB7XG4gICAgICAgIGlmICghY29uZmlybWVkKSByZXR1cm5cbiAgICAgICAgY29uc3QgbmV3TGlua3MgPSBbLi4udGhpcy5saW5rUmVzb3VyY2VzXVxuICAgICAgICBuZXdMaW5rcy5zcGxpY2UoaW5kZXgsIDEsIHJlc291cmNlQ29weSlcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KFtcbiAgICAgICAgICAuLi50aGlzLmFsbFJlc291cmNlcy5maWx0ZXIoKHIpID0+IHIudHlwZSAhPT0gJ2xpbmsnKSxcbiAgICAgICAgICAuLi5uZXdMaW5rcyxcbiAgICAgICAgXSlcbiAgICAgIH0pXG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sXCI+XG4gIDxnbi11aS1maWxlLWlucHV0XG4gICAgW21heFNpemVNQl09XCJNQVhfVVBMT0FEX1NJWkVfTUJcIlxuICAgIChmaWxlQ2hhbmdlKT1cImhhbmRsZUZpbGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgKHVwbG9hZENhbmNlbCk9XCJoYW5kbGVVcGxvYWRDYW5jZWwoKVwiXG4gICAgW3VwbG9hZFByb2dyZXNzXT1cInVwbG9hZFByb2dyZXNzXCJcbiAgICAodXJsQ2hhbmdlKT1cImhhbmRsZVVybENoYW5nZSgkZXZlbnQpXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQkIHwgYXN5bmNcIlxuICA+PC9nbi11aS1maWxlLWlucHV0PlxuICA8ZGl2IGNsYXNzPVwiaC1bOHB4XVwiPjwvZGl2PlxuICA8Z24tdWktc29ydGFibGUtbGlzdFxuICAgIFtpdGVtc109XCJsaW5rUmVzb3VyY2VzXCJcbiAgICAoaXRlbXNPcmRlckNoYW5nZSk9XCJoYW5kbGVSZXNvdXJjZXNDaGFuZ2UoJGV2ZW50KVwiXG4gICAgW2VsZW1lbnRUZW1wbGF0ZV09XCJ0ZW1wbGF0ZVwiXG4gID5cbiAgPC9nbi11aS1zb3J0YWJsZS1saXN0PlxuICA8bmctdGVtcGxhdGUgI3RlbXBsYXRlIGxldC1vbmxpbmVSZXNvdXJjZSBsZXQtaW5kZXg9XCJpbmRleFwiPlxuICAgIDxnbi11aS1vbmxpbmUtcmVzb3VyY2UtY2FyZFxuICAgICAgW29ubGluZVJlc291cmNlXT1cIm9ubGluZVJlc291cmNlXCJcbiAgICAgIChtb2RpZnlDbGljayk9XCJoYW5kbGVSZXNvdXJjZU1vZGlmeShvbmxpbmVSZXNvdXJjZSwgaW5kZXgpXCJcbiAgICA+PC9nbi11aS1vbmxpbmUtcmVzb3VyY2UtY2FyZD5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8bmctdGVtcGxhdGUgI2RpYWxvZ1RlbXBsYXRlIGxldC1vbmxpbmVSZXNvdXJjZT5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtWzE2cHhdXCI+XG4gICAgICA8ZGl2PlxuICAgICAgICA8aDMgY2xhc3M9XCJ0ZXh0LVsxNnB4XSBmb250LWJvbGQgdGV4dC1tYWluIG1iLVsxMnB4XVwiIHRyYW5zbGF0ZT5cbiAgICAgICAgICBlZGl0b3IucmVjb3JkLmZvcm0uZmllbGQub25saW5lUmVzb3VyY2UuZWRpdC50aXRsZVxuICAgICAgICA8L2gzPlxuICAgICAgICA8Z24tdWktdGV4dC1pbnB1dCBbKHZhbHVlKV09XCJvbmxpbmVSZXNvdXJjZS5uYW1lXCI+PC9nbi11aS10ZXh0LWlucHV0PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2PlxuICAgICAgICA8aDMgY2xhc3M9XCJ0ZXh0LVsxNnB4XSBmb250LWJvbGQgdGV4dC1tYWluIG1iLVsxMnB4XVwiIHRyYW5zbGF0ZT5cbiAgICAgICAgICBlZGl0b3IucmVjb3JkLmZvcm0uZmllbGQub25saW5lUmVzb3VyY2UuZWRpdC5kZXNjcmlwdGlvblxuICAgICAgICA8L2gzPlxuICAgICAgICA8Z24tdWktdGV4dC1hcmVhXG4gICAgICAgICAgWyh2YWx1ZSldPVwib25saW5lUmVzb3VyY2UuZGVzY3JpcHRpb25cIlxuICAgICAgICA+PC9nbi11aS10ZXh0LWFyZWE+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxzcGFuIGNsYXNzPVwidy1mdWxsIGJvcmRlci1iIGJvcmRlci1ncmF5LTMwMFwiPjwvc3Bhbj5cbiAgICAgIDxnbi11aS11cmwtaW5wdXRcbiAgICAgICAgY2xhc3M9XCJ3LWZ1bGxcIlxuICAgICAgICBbZGlzYWJsZWRdPVwidHJ1ZVwiXG4gICAgICAgIFt2YWx1ZV09XCJvbmxpbmVSZXNvdXJjZS51cmxcIlxuICAgICAgICBbc2hvd1VwbG9hZEJ1dHRvbl09XCJmYWxzZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCQgfCBhc3luY1wiXG4gICAgICA+PC9nbi11aS11cmwtaW5wdXQ+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDxkaXZcbiAgICAqbmdJZj1cImRpc2FibGVkJCB8IGFzeW5jXCJcbiAgICBjbGFzcz1cInAtNCB0ZXh0LXNtIGJvcmRlciBib3JkZXItcHJpbWFyeSBiZy1wcmltYXJ5LWxpZ2h0ZXN0IHJvdW5kZWQtbGdcIlxuICAgIHRyYW5zbGF0ZVxuICAgIGRhdGEtdGVzdGlkPVwiZGlzYWJsZWQtbWVzc2FnZVwiXG4gID5cbiAgICBlZGl0b3IucmVjb3JkLmZvcm0uZmllbGQuZHJhZnQub25seS5kaXNhYmxlZFxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -7,26 +7,30 @@ import { NotificationsService } from '../../../../../../../../../libs/feature/no
|
|
|
7
7
|
import { FileInputComponent, SwitchToggleComponent, TextAreaComponent, TextInputComponent, UrlInputComponent, } from '../../../../../../../../../libs/ui/inputs/src';
|
|
8
8
|
import { ModalDialogComponent, SortableListComponent, } from '../../../../../../../../../libs/ui/layout/src';
|
|
9
9
|
import { TranslateModule, TranslateService } from '@ngx-translate/core';
|
|
10
|
+
import { map } from 'rxjs';
|
|
10
11
|
import { MAX_UPLOAD_SIZE_MB } from '../../../../fields.config';
|
|
11
12
|
import { OnlineResourceCardComponent } from '../../../online-resource-card/online-resource-card.component';
|
|
12
13
|
import { OnlineServiceResourceInputComponent } from '../../../online-service-resource-input/online-service-resource-input.component';
|
|
14
|
+
import { EditorFacade } from '../../../../+state/editor.facade';
|
|
13
15
|
import * as i0 from "@angular/core";
|
|
14
16
|
import * as i1 from "../../../../../../../../../libs/feature/notifications/src";
|
|
15
17
|
import * as i2 from "@ngx-translate/core";
|
|
16
18
|
import * as i3 from "../../../../../../../../../libs/common/domain/src/lib/platform.service.interface";
|
|
17
19
|
import * as i4 from "@angular/material/dialog";
|
|
18
|
-
import * as i5 from "
|
|
20
|
+
import * as i5 from "../../../../+state/editor.facade";
|
|
21
|
+
import * as i6 from "@angular/common";
|
|
19
22
|
export class FormFieldOnlineResourcesComponent {
|
|
20
23
|
set value(onlineResources) {
|
|
21
24
|
this.allResources = onlineResources;
|
|
22
25
|
this.notLinkResources = onlineResources.filter((res) => res.type !== 'link');
|
|
23
26
|
}
|
|
24
|
-
constructor(notificationsService, translateService, platformService, cd, dialog) {
|
|
27
|
+
constructor(notificationsService, translateService, platformService, cd, dialog, editorFacade) {
|
|
25
28
|
this.notificationsService = notificationsService;
|
|
26
29
|
this.translateService = translateService;
|
|
27
30
|
this.platformService = platformService;
|
|
28
31
|
this.cd = cd;
|
|
29
32
|
this.dialog = dialog;
|
|
33
|
+
this.editorFacade = editorFacade;
|
|
30
34
|
this.valueChange = new EventEmitter();
|
|
31
35
|
this.typeOptions = [
|
|
32
36
|
{
|
|
@@ -51,6 +55,7 @@ export class FormFieldOnlineResourcesComponent {
|
|
|
51
55
|
identifierInService: '',
|
|
52
56
|
};
|
|
53
57
|
this.MAX_UPLOAD_SIZE_MB = MAX_UPLOAD_SIZE_MB;
|
|
58
|
+
this.disabled$ = this.editorFacade.alreadySavedOnce$.pipe(map((alreadySavedOnce) => !alreadySavedOnce));
|
|
54
59
|
}
|
|
55
60
|
onSelectedTypeChange(selectedType) {
|
|
56
61
|
this.selectedType = selectedType;
|
|
@@ -161,8 +166,8 @@ export class FormFieldOnlineResourcesComponent {
|
|
|
161
166
|
]);
|
|
162
167
|
});
|
|
163
168
|
}
|
|
164
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldOnlineResourcesComponent, deps: [{ token: i1.NotificationsService }, { token: i2.TranslateService }, { token: i3.PlatformServiceInterface }, { token: i0.ChangeDetectorRef }, { token: i4.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
165
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormFieldOnlineResourcesComponent, isStandalone: true, selector: "gn-ui-form-field-online-resources", inputs: { metadataUuid: "metadataUuid", value: "value" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "dialogTemplate", first: true, predicate: ["dialogTemplate"], descendants: true }], ngImport: i0, template: "<gn-ui-switch-toggle\n
|
|
169
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldOnlineResourcesComponent, deps: [{ token: i1.NotificationsService }, { token: i2.TranslateService }, { token: i3.PlatformServiceInterface }, { token: i0.ChangeDetectorRef }, { token: i4.MatDialog }, { token: i5.EditorFacade }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
170
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormFieldOnlineResourcesComponent, isStandalone: true, selector: "gn-ui-form-field-online-resources", inputs: { metadataUuid: "metadataUuid", value: "value" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "dialogTemplate", first: true, predicate: ["dialogTemplate"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-col\">\n <gn-ui-switch-toggle\n [options]=\"typeOptions\"\n (selectedValue)=\"onSelectedTypeChange($event.value)\"\n extraClasses=\"grow text-sm\"\n data-cy=\"online-resources-type\"\n [disabled]=\"disabled$ | async\"\n ></gn-ui-switch-toggle>\n <div class=\"h-[8px]\"></div>\n <gn-ui-file-input\n *ngIf=\"selectedType === 'download'\"\n [maxSizeMB]=\"MAX_UPLOAD_SIZE_MB\"\n (fileChange)=\"handleFileChange($event)\"\n (uploadCancel)=\"handleUploadCancel()\"\n [uploadProgress]=\"uploadProgress\"\n (urlChange)=\"handleDownloadUrlChange($event)\"\n [disabled]=\"disabled$ | async\"\n ></gn-ui-file-input>\n <div\n *ngIf=\"selectedType === 'service'\"\n class=\"w-full border-2 border-dashed rounded-lg p-6 flex flex-col gap-[16px]\"\n >\n <gn-ui-online-service-resource-input\n [service]=\"newService\"\n [disabled]=\"disabled$ | async\"\n ></gn-ui-online-service-resource-input>\n <span class=\"w-full border-b border-gray-300\"></span>\n <gn-ui-url-input\n class=\"w-full\"\n (uploadClick)=\"handleServiceUrlChange($event)\"\n [disabled]=\"disabled$ | async\"\n ></gn-ui-url-input>\n </div>\n <div class=\"h-[8px]\"></div>\n <gn-ui-sortable-list\n [items]=\"notLinkResources\"\n (itemsOrderChange)=\"handleResourcesChange($event)\"\n [elementTemplate]=\"template\"\n >\n </gn-ui-sortable-list>\n <ng-template #template let-onlineResource let-index=\"index\">\n <gn-ui-online-resource-card\n [onlineResource]=\"onlineResource\"\n (modifyClick)=\"handleResourceModify(onlineResource, index)\"\n ></gn-ui-online-resource-card>\n </ng-template>\n\n <ng-template #dialogTemplate let-onlineResource>\n <div class=\"flex flex-col gap-[16px]\">\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.title\n </h3>\n <gn-ui-text-input [(value)]=\"onlineResource.name\"></gn-ui-text-input>\n </div>\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.description\n </h3>\n <gn-ui-text-area\n [(value)]=\"onlineResource.description\"\n ></gn-ui-text-area>\n </div>\n <ng-container *ngIf=\"onlineResource.type === 'service'\">\n <span class=\"w-full border-b border-gray-300\"></span>\n <gn-ui-online-service-resource-input\n [service]=\"onlineResource\"\n [disabled]=\"disabled$ | async\"\n ></gn-ui-online-service-resource-input>\n </ng-container>\n <span class=\"w-full border-b border-gray-300\"></span>\n <gn-ui-url-input\n class=\"w-full\"\n [disabled]=\"true\"\n [value]=\"onlineResource.url\"\n [showUploadButton]=\"false\"\n ></gn-ui-url-input>\n </div>\n </ng-template>\n <div\n *ngIf=\"disabled$ | async\"\n class=\"p-4 text-sm border border-primary bg-primary-lightest rounded-lg\"\n translate\n data-test=\"disabled-message\"\n >\n editor.record.form.field.draft.only.disabled\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "component", type: SwitchToggleComponent, selector: "gn-ui-switch-toggle", inputs: ["options", "ariaLabel", "extraClasses", "disabled"], outputs: ["selectedValue"] }, { kind: "component", type: FileInputComponent, selector: "gn-ui-file-input", inputs: ["maxSizeMB", "uploadProgress", "disabled"], outputs: ["fileChange", "urlChange", "uploadCancel"] }, { kind: "component", type: OnlineServiceResourceInputComponent, selector: "gn-ui-online-service-resource-input", inputs: ["service", "protocolHint", "disabled"] }, { kind: "component", type: UrlInputComponent, selector: "gn-ui-url-input", inputs: ["value", "extraClass", "placeholder", "disabled", "showUploadButton"], outputs: ["valueChange", "uploadClick"] }, { kind: "component", type: SortableListComponent, selector: "gn-ui-sortable-list", inputs: ["elementTemplate", "items"], outputs: ["itemsOrderChange"] }, { kind: "component", type: OnlineResourceCardComponent, selector: "gn-ui-online-resource-card", inputs: ["onlineResource"], outputs: ["modifyClick"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "placeholder", "required", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: TextAreaComponent, selector: "gn-ui-text-area", inputs: ["value", "disabled", "extraClass", "placeholder", "required"], outputs: ["valueChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
166
171
|
}
|
|
167
172
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldOnlineResourcesComponent, decorators: [{
|
|
168
173
|
type: Component,
|
|
@@ -177,8 +182,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
177
182
|
TextInputComponent,
|
|
178
183
|
TextAreaComponent,
|
|
179
184
|
TranslateModule,
|
|
180
|
-
], template: "<gn-ui-switch-toggle\n
|
|
181
|
-
}], ctorParameters: function () { return [{ type: i1.NotificationsService }, { type: i2.TranslateService }, { type: i3.PlatformServiceInterface }, { type: i0.ChangeDetectorRef }, { type: i4.MatDialog }]; }, propDecorators: { metadataUuid: [{
|
|
185
|
+
], template: "<div class=\"flex flex-col\">\n <gn-ui-switch-toggle\n [options]=\"typeOptions\"\n (selectedValue)=\"onSelectedTypeChange($event.value)\"\n extraClasses=\"grow text-sm\"\n data-cy=\"online-resources-type\"\n [disabled]=\"disabled$ | async\"\n ></gn-ui-switch-toggle>\n <div class=\"h-[8px]\"></div>\n <gn-ui-file-input\n *ngIf=\"selectedType === 'download'\"\n [maxSizeMB]=\"MAX_UPLOAD_SIZE_MB\"\n (fileChange)=\"handleFileChange($event)\"\n (uploadCancel)=\"handleUploadCancel()\"\n [uploadProgress]=\"uploadProgress\"\n (urlChange)=\"handleDownloadUrlChange($event)\"\n [disabled]=\"disabled$ | async\"\n ></gn-ui-file-input>\n <div\n *ngIf=\"selectedType === 'service'\"\n class=\"w-full border-2 border-dashed rounded-lg p-6 flex flex-col gap-[16px]\"\n >\n <gn-ui-online-service-resource-input\n [service]=\"newService\"\n [disabled]=\"disabled$ | async\"\n ></gn-ui-online-service-resource-input>\n <span class=\"w-full border-b border-gray-300\"></span>\n <gn-ui-url-input\n class=\"w-full\"\n (uploadClick)=\"handleServiceUrlChange($event)\"\n [disabled]=\"disabled$ | async\"\n ></gn-ui-url-input>\n </div>\n <div class=\"h-[8px]\"></div>\n <gn-ui-sortable-list\n [items]=\"notLinkResources\"\n (itemsOrderChange)=\"handleResourcesChange($event)\"\n [elementTemplate]=\"template\"\n >\n </gn-ui-sortable-list>\n <ng-template #template let-onlineResource let-index=\"index\">\n <gn-ui-online-resource-card\n [onlineResource]=\"onlineResource\"\n (modifyClick)=\"handleResourceModify(onlineResource, index)\"\n ></gn-ui-online-resource-card>\n </ng-template>\n\n <ng-template #dialogTemplate let-onlineResource>\n <div class=\"flex flex-col gap-[16px]\">\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.title\n </h3>\n <gn-ui-text-input [(value)]=\"onlineResource.name\"></gn-ui-text-input>\n </div>\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.description\n </h3>\n <gn-ui-text-area\n [(value)]=\"onlineResource.description\"\n ></gn-ui-text-area>\n </div>\n <ng-container *ngIf=\"onlineResource.type === 'service'\">\n <span class=\"w-full border-b border-gray-300\"></span>\n <gn-ui-online-service-resource-input\n [service]=\"onlineResource\"\n [disabled]=\"disabled$ | async\"\n ></gn-ui-online-service-resource-input>\n </ng-container>\n <span class=\"w-full border-b border-gray-300\"></span>\n <gn-ui-url-input\n class=\"w-full\"\n [disabled]=\"true\"\n [value]=\"onlineResource.url\"\n [showUploadButton]=\"false\"\n ></gn-ui-url-input>\n </div>\n </ng-template>\n <div\n *ngIf=\"disabled$ | async\"\n class=\"p-4 text-sm border border-primary bg-primary-lightest rounded-lg\"\n translate\n data-test=\"disabled-message\"\n >\n editor.record.form.field.draft.only.disabled\n </div>\n</div>\n" }]
|
|
186
|
+
}], ctorParameters: function () { return [{ type: i1.NotificationsService }, { type: i2.TranslateService }, { type: i3.PlatformServiceInterface }, { type: i0.ChangeDetectorRef }, { type: i4.MatDialog }, { type: i5.EditorFacade }]; }, propDecorators: { metadataUuid: [{
|
|
182
187
|
type: Input
|
|
183
188
|
}], value: [{
|
|
184
189
|
type: Input
|
|
@@ -188,4 +193,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
188
193
|
type: ViewChild,
|
|
189
194
|
args: ['dialogTemplate']
|
|
190
195
|
}] } });
|
|
191
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1vbmxpbmUtcmVzb3VyY2VzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9lZGl0b3Ivc3JjL2xpYi9jb21wb25lbnRzL3JlY29yZC1mb3JtL2Zvcm0tZmllbGQvZm9ybS1maWVsZC1vbmxpbmUtcmVzb3VyY2VzL2Zvcm0tZmllbGQtb25saW5lLXJlc291cmNlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvZWRpdG9yL3NyYy9saWIvY29tcG9uZW50cy9yZWNvcmQtZm9ybS9mb3JtLWZpZWxkL2Zvcm0tZmllbGQtb25saW5lLXJlc291cmNlcy9mb3JtLWZpZWxkLW9ubGluZS1yZXNvdXJjZXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzlDLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0seUNBQXlDLENBQUE7QUFPaEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sa0ZBQWtGLENBQUE7QUFDM0gsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkRBQTJELENBQUE7QUFDaEcsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixxQkFBcUIsRUFFckIsaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUNsQixpQkFBaUIsR0FDbEIsTUFBTSwrQ0FBK0MsQ0FBQTtBQUN0RCxPQUFPLEVBQ0wsb0JB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LENBQUE7UUFDSixDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7K0dBaExVLGlDQUFpQzttR0FBakMsaUNBQWlDLGtUQy9EOUMsOGhGQXdFQSx5RERyQkksWUFBWSxtSUFDWixxQkFBcUIsOElBQ3JCLGtCQUFrQiw0SkFDbEIsbUNBQW1DLHFIQUNuQyxpQkFBaUIscUxBQ2pCLHFCQUFxQixxSUFDckIsMkJBQTJCLDZIQUMzQixrQkFBa0IsK0pBQ2xCLGlCQUFpQiw2SkFDakIsZUFBZTs7NEZBR04saUNBQWlDO2tCQW5CN0MsU0FBUzsrQkFDRSxtQ0FBbUMsbUJBRzVCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1oscUJBQXFCO3dCQUNyQixrQkFBa0I7d0JBQ2xCLG1DQUFtQzt3QkFDbkMsaUJBQWlCO3dCQUNqQixxQkFBcUI7d0JBQ3JCLDJCQUEyQjt3QkFDM0Isa0JBQWtCO3dCQUNsQixpQkFBaUI7d0JBQ2pCLGVBQWU7cUJBQ2hCO3lPQUdRLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ08sS0FBSztzQkFBakIsS0FBSztnQkFNSSxXQUFXO3NCQUFwQixNQUFNO2dCQUdzQixjQUFjO3NCQUExQyxTQUFTO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnXG5pbXBvcnQgeyBtYXJrZXIgfSBmcm9tICdAYmllc2JqZXJnL25neC10cmFuc2xhdGUtZXh0cmFjdC1tYXJrZXInXG5pbXBvcnQge1xuICBEYXRhc2V0RG93bmxvYWREaXN0cmlidXRpb24sXG4gIERhdGFzZXRTZXJ2aWNlRGlzdHJpYnV0aW9uLFxuICBPbmxpbmVSZXNvdXJjZSxcbiAgU2VydmljZUVuZHBvaW50LFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5pbXBvcnQgeyBQbGF0Zm9ybVNlcnZpY2VJbnRlcmZhY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9wbGF0Zm9ybS5zZXJ2aWNlLmludGVyZmFjZSdcbmltcG9ydCB7IE5vdGlmaWNhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9mZWF0dXJlL25vdGlmaWNhdGlvbnMvc3JjJ1xuaW1wb3J0IHtcbiAgRmlsZUlucHV0Q29tcG9uZW50LFxuICBTd2l0Y2hUb2dnbGVDb21wb25lbnQsXG4gIFN3aXRjaFRvZ2dsZU9wdGlvbixcbiAgVGV4dEFyZWFDb21wb25lbnQsXG4gIFRleHRJbnB1dENvbXBvbmVudCxcbiAgVXJsSW5wdXRDb21wb25lbnQsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvaW5wdXRzL3NyYydcbmltcG9ydCB7XG4gIE1vZGFsRGlhbG9nQ29tcG9uZW50LFxuICBTb3J0YWJsZUxpc3RDb21wb25lbnQsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvbGF5b3V0L3NyYydcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgTUFYX1VQTE9BRF9TSVpFX01CIH0gZnJvbSAnLi4vLi4vLi4vLi4vZmllbGRzLmNvbmZpZydcbmltcG9ydCB7IE9ubGluZVJlc291cmNlQ2FyZENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL29ubGluZS1yZXNvdXJjZS1jYXJkL29ubGluZS1yZXNvdXJjZS1jYXJkLmNvbXBvbmVudCdcbmltcG9ydCB7IE9ubGluZVNlcnZpY2VSZXNvdXJjZUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vb25saW5lLXNlcnZpY2UtcmVzb3VyY2UtaW5wdXQvb25saW5lLXNlcnZpY2UtcmVzb3VyY2UtaW5wdXQuY29tcG9uZW50J1xuXG50eXBlIE9ubGluZU5vdExpbmtSZXNvdXJjZSA9XG4gIHwgRGF0YXNldERvd25sb2FkRGlzdHJpYnV0aW9uXG4gIHwgRGF0YXNldFNlcnZpY2VEaXN0cmlidXRpb25cbiAgfCBTZXJ2aWNlRW5kcG9pbnRcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ24tdWktZm9ybS1maWVsZC1vbmxpbmUtcmVzb3VyY2VzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tZmllbGQtb25saW5lLXJlc291cmNlcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Zvcm0tZmllbGQtb25saW5lLXJlc291cmNlcy5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFN3aXRjaFRvZ2dsZUNvbXBvbmVudCxcbiAgICBGaWxlSW5wdXRDb21wb25lbnQsXG4gICAgT25saW5lU2VydmljZVJlc291cmNlSW5wdXRDb21wb25lbnQsXG4gICAgVXJsSW5wdXRDb21wb25lbnQsXG4gICAgU29ydGFibGVMaXN0Q29tcG9uZW50LFxuICAgIE9ubGluZVJlc291cmNlQ2FyZENvbXBvbmVudCxcbiAgICBUZXh0SW5wdXRDb21wb25lbnQsXG4gICAgVGV4dEFyZWFDb21wb25lbnQsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtRmllbGRPbmxpbmVSZXNvdXJjZXNDb21wb25lbnQge1xuICBASW5wdXQoKSBtZXRhZGF0YVV1aWQ6IHN0cmluZ1xuICBASW5wdXQoKSBzZXQgdmFsdWUob25saW5lUmVzb3VyY2VzOiBBcnJheTxPbmxpbmVSZXNvdXJjZT4pIHtcbiAgICB0aGlzLmFsbFJlc291cmNlcyA9IG9ubGluZVJlc291cmNlc1xuICAgIHRoaXMubm90TGlua1Jlc291cmNlcyA9IG9ubGluZVJlc291cmNlcy5maWx0ZXIoXG4gICAgICAocmVzKTogcmVzIGlzIE9ubGluZU5vdExpbmtSZXNvdXJjZSA9PiByZXMudHlwZSAhPT0gJ2xpbmsnXG4gICAgKVxuICB9XG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPEFycmF5PE9ubGluZVJlc291cmNlPj4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXIoKVxuXG4gIEBWaWV3Q2hpbGQoJ2RpYWxvZ1RlbXBsYXRlJykgZGlhbG9nVGVtcGxhdGU6IFRlbXBsYXRlUmVmPE9ubGluZVJlc291cmNlPlxuXG4gIHR5cGVPcHRpb25zOiBTd2l0Y2hUb2dnbGVPcHRpb25bXSA9IFtcbiAgICB7XG4gICAgICBsYWJlbDogbWFya2VyKCdlZGl0b3IucmVjb3JkLmZvcm0uZmllbGQub25saW5lUmVzb3VyY2UudG9nZ2xlLmRhdGFzZXQnKSxcbiAgICAgIHZhbHVlOiAnZG93bmxvYWQnLFxuICAgICAgY2hlY2tlZDogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGxhYmVsOiBtYXJrZXIoJ2VkaXRvci5yZWNvcmQuZm9ybS5maWVsZC5vbmxpbmVSZXNvdXJjZS50b2dnbGUuc2VydmljZScpLFxuICAgICAgdmFsdWU6ICdzZXJ2aWNlJyxcbiAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgIH0sXG4gIF1cbiAgc2VsZWN0ZWRUeXBlOiAnZG93bmxvYWQnIHwgJ3NlcnZpY2UnID0gJ2Rvd25sb2FkJ1xuXG4gIHByaXZhdGUgYWxsUmVzb3VyY2VzOiBPbmxpbmVSZXNvdXJjZVtdID0gW11cbiAgbm90TGlua1Jlc291cmNlczogT25saW5lTm90TGlua1Jlc291cmNlW10gPSBbXVxuICB1cGxvYWRQcm9ncmVzcyA9IHVuZGVmaW5lZFxuICB1cGxvYWRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IG51bGxcbiAgbmV3U2VydmljZSA9IHtcbiAgICB0eXBlOiAnc2VydmljZScsXG4gICAgYWNjZXNzU2VydmljZVByb3RvY29sOiAnb2djRmVhdHVyZXMnLFxuICAgIGlkZW50aWZpZXJJblNlcnZpY2U6ICcnLFxuICB9IGFzIE9taXQ8RGF0YXNldFNlcnZpY2VEaXN0cmlidXRpb24sICd1cmwnPlxuXG4gIHByb3RlY3RlZCBNQVhfVVBMT0FEX1NJWkVfTUIgPSBNQVhfVVBMT0FEX1NJWkVfTUJcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvbnNTZXJ2aWNlOiBOb3RpZmljYXRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwbGF0Zm9ybVNlcnZpY2U6IFBsYXRmb3JtU2VydmljZUludGVyZmFjZSxcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nXG4gICkge31cblxuICBvblNlbGVjdGVkVHlwZUNoYW5nZShzZWxlY3RlZFR5cGU6IHVua25vd24pIHtcbiAgICB0aGlzLnNlbGVjdGVkVHlwZSA9IHNlbGVjdGVkVHlwZSBhcyAnZG93bmxvYWQnIHwgJ3NlcnZpY2UnXG4gIH1cblxuICBoYW5kbGVGaWxlQ2hhbmdlKGZpbGU6IEZpbGUpIHtcbiAgICB0aGlzLnVwbG9hZFByb2dyZXNzID0gMFxuICAgIHRoaXMudXBsb2FkU3Vic2NyaXB0aW9uID0gdGhpcy5wbGF0Zm9ybVNlcnZpY2VcbiAgICAgIC5hdHRhY2hGaWxlVG9SZWNvcmQodGhpcy5tZXRhZGF0YVV1aWQsIGZpbGUpXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKGV2ZW50KSA9PiB7XG4gICAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT09ICdwcm9ncmVzcycpIHtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkUHJvZ3Jlc3MgPSBldmVudC5wcm9ncmVzc1xuICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKClcbiAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT09ICdzdWNjZXNzJykge1xuICAgICAgICAgICAgdGhpcy51cGxvYWRQcm9ncmVzcyA9IHVuZGVmaW5lZFxuICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKClcbiAgICAgICAgICAgIGNvbnN0IG5ld1Jlc291cmNlOiBEYXRhc2V0RG93bmxvYWREaXN0cmlidXRpb24gPSB7XG4gICAgICAgICAgICAgIHR5cGU6ICdkb3dubG9hZCcsXG4gICAgICAgICAgICAgIHVybDogbmV3IFVSTChldmVudC5hdHRhY2htZW50LnVybCksXG4gICAgICAgICAgICAgIG5hbWU6IGV2ZW50LmF0dGFjaG1lbnQuZmlsZU5hbWUsXG4gICAgICAgICAgICAgIHNpemVCeXRlczogZXZlbnQuc2l6ZUJ5dGVzLCAvLyBXQVJOSU5HOiB0aGlzIGlzIHRoZSBvbmx5IHRpbWUgdGhhdCBzaXplQnl0ZXMgaXMgc2V0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoWy4uLnRoaXMuYWxsUmVzb3VyY2VzLCBuZXdSZXNvdXJjZV0pXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycm9yOiBFcnJvcikgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnJvciksXG4gICAgICB9KVxuICB9XG5cbiAgaGFuZGxlVXBsb2FkQ2FuY2VsKCkge1xuICAgIGlmICh0aGlzLnVwbG9hZFN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy51cGxvYWRQcm9ncmVzcyA9IHVuZGVmaW5lZFxuICAgICAgdGhpcy51cGxvYWRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKVxuICAgIH1cbiAgfVxuXG4gIGhhbmRsZURvd25sb2FkVXJsQ2hhbmdlKHVybDogc3RyaW5nKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG5hbWUgPSB1cmwuc3BsaXQoJy8nKS5wb3AoKVxuICAgICAgY29uc3QgbmV3TGluazogRGF0YXNldERvd25sb2FkRGlzdHJpYnV0aW9uID0ge1xuICAgICAgICB0eXBlOiAnZG93bmxvYWQnLFxuICAgICAgICB1cmw6IG5ldyBVUkwodXJsKSxcbiAgICAgICAgbmFtZSxcbiAgICAgIH1cbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChbLi4udGhpcy5hbGxSZXNvdXJjZXMsIG5ld0xpbmtdKVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZSBhcyBFcnJvcilcbiAgICB9XG4gIH1cblxuICBoYW5kbGVTZXJ2aWNlVXJsQ2hhbmdlKHVybDogc3RyaW5nKSB7XG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KFtcbiAgICAgIC4uLnRoaXMuYWxsUmVzb3VyY2VzLFxuICAgICAge1xuICAgICAgICAuLi50aGlzLm5ld1NlcnZpY2UsXG4gICAgICAgIHVybDogbmV3IFVSTCh1cmwpLFxuICAgICAgfSxcbiAgICBdKVxuICB9XG5cbiAgaGFuZGxlU2VydmljZU1vZGlmeShcbiAgICBvbGRTZXJ2aWNlOiBEYXRhc2V0U2VydmljZURpc3RyaWJ1dGlvbixcbiAgICBuZXdTZXJ2aWNlOiBEYXRhc2V0U2VydmljZURpc3RyaWJ1dGlvblxuICApIHtcbiAgICBvbGRTZXJ2aWNlLmFjY2Vzc1NlcnZpY2VQcm90b2NvbCA9IG5ld1NlcnZpY2UuYWNjZXNzU2VydmljZVByb3RvY29sXG4gICAgb2xkU2VydmljZS5pZGVudGlmaWVySW5TZXJ2aWNlID0gbmV3U2VydmljZS5pZGVudGlmaWVySW5TZXJ2aWNlXG4gICAgb2xkU2VydmljZS51cmwgPSBuZXdTZXJ2aWNlLnVybFxuICB9XG5cbiAgaGFuZGxlUmVzb3VyY2VzQ2hhbmdlKGl0ZW1zOiB1bmtub3duW10pIHtcbiAgICBjb25zdCBub3RMaW5rcyA9IGl0ZW1zIGFzIE9ubGluZU5vdExpbmtSZXNvdXJjZVtdXG4gICAgY29uc3QgbmV3UmVzb3VyY2VzID0gW1xuICAgICAgLi4udGhpcy5hbGxSZXNvdXJjZXMuZmlsdGVyKChyKSA9PiByLnR5cGUgPT09ICdsaW5rJyksXG4gICAgICAuLi5ub3RMaW5rcyxcbiAgICBdXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KG5ld1Jlc291cmNlcylcbiAgfVxuXG4gIGhhbmRsZVJlc291cmNlTW9kaWZ5KHJlc291cmNlOiBPbmxpbmVOb3RMaW5rUmVzb3VyY2UsIGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLm9wZW5FZGl0RGlhbG9nKHJlc291cmNlLCBpbmRleClcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlRXJyb3IoZXJyb3I6IEVycm9yKSB7XG4gICAgdGhpcy51cGxvYWRQcm9ncmVzcyA9IHVuZGVmaW5lZFxuICAgIHRoaXMubm90aWZpY2F0aW9uc1NlcnZpY2Uuc2hvd05vdGlmaWNhdGlvbih7XG4gICAgICB0eXBlOiAnZXJyb3InLFxuICAgICAgdGl0bGU6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAnZWRpdG9yLnJlY29yZC5vbmxpbmVSZXNvdXJjZUVycm9yLnRpdGxlJ1xuICAgICAgKSxcbiAgICAgIHRleHQ6IGAke3RoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAnZWRpdG9yLnJlY29yZC5vbmxpbmVSZXNvdXJjZUVycm9yLmJvZHknXG4gICAgICApfSAke2Vycm9yLm1lc3NhZ2V9YCxcbiAgICAgIGNsb3NlTWVzc2FnZTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICdlZGl0b3IucmVjb3JkLm9ubGluZVJlc291cmNlRXJyb3IuY2xvc2VNZXNzYWdlJ1xuICAgICAgKSxcbiAgICB9KVxuICB9XG5cbiAgcHJpdmF0ZSBvcGVuRWRpdERpYWxvZyhyZXNvdXJjZTogT25saW5lTm90TGlua1Jlc291cmNlLCBpbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3QgcmVzb3VyY2VDb3B5ID0ge1xuICAgICAgLi4ucmVzb3VyY2UsXG4gICAgfVxuICAgIHRoaXMuZGlhbG9nXG4gICAgICAub3BlbihNb2RhbERpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICB3aWR0aDogJzgwMHB4JyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIHRpdGxlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICAgICdlZGl0b3IucmVjb3JkLmZvcm0uZmllbGQub25saW5lUmVzb3VyY2UuZGlhbG9nVGl0bGUnXG4gICAgICAgICAgKSxcbiAgICAgICAgICBib2R5OiB0aGlzLmRpYWxvZ1RlbXBsYXRlLFxuICAgICAgICAgIGJvZHlDb250ZXh0OiByZXNvdXJjZUNvcHksXG4gICAgICAgICAgY29uZmlybVRleHQ6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgICAgJ2VkaXRvci5yZWNvcmQuZm9ybS5maWVsZC5vbmxpbmVSZXNvdXJjZS5jb25maXJtJ1xuICAgICAgICAgICksXG4gICAgICAgICAgY2FuY2VsVGV4dDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICAgICAnZWRpdG9yLnJlY29yZC5mb3JtLmZpZWxkLm9ubGluZVJlc291cmNlLmNhbmNlbCdcbiAgICAgICAgICApLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICAgIC5hZnRlckNsb3NlZCgpXG4gICAgICAuc3Vic2NyaWJlKChjb25maXJtZWQ6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgaWYgKCFjb25maXJtZWQpIHJldHVyblxuICAgICAgICBjb25zdCBuZXdOb3RMaW5rcyA9IFsuLi50aGlzLm5vdExpbmtSZXNvdXJjZXNdXG4gICAgICAgIG5ld05vdExpbmtzLnNwbGljZShpbmRleCwgMSwgcmVzb3VyY2VDb3B5KVxuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoW1xuICAgICAgICAgIC4uLnRoaXMuYWxsUmVzb3VyY2VzLmZpbHRlcigocikgPT4gci50eXBlID09PSAnbGluaycpLFxuICAgICAgICAgIC4uLm5ld05vdExpbmtzLFxuICAgICAgICBdKVxuICAgICAgfSlcbiAgfVxufVxuIiwiPGduLXVpLXN3aXRjaC10b2dnbGVcbiAgW29wdGlvbnNdPVwidHlwZU9wdGlvbnNcIlxuICAoc2VsZWN0ZWRWYWx1ZSk9XCJvblNlbGVjdGVkVHlwZUNoYW5nZSgkZXZlbnQudmFsdWUpXCJcbiAgZXh0cmFDbGFzc2VzPVwiZ3JvdyB0ZXh0LXNtXCJcbiAgZGF0YS1jeT1cIm9ubGluZS1yZXNvdXJjZXMtdHlwZVwiXG4+PC9nbi11aS1zd2l0Y2gtdG9nZ2xlPlxuPGRpdiBjbGFzcz1cImgtWzhweF1cIj48L2Rpdj5cbjxnbi11aS1maWxlLWlucHV0XG4gICpuZ0lmPVwic2VsZWN0ZWRUeXBlID09PSAnZG93bmxvYWQnXCJcbiAgW21heFNpemVNQl09XCJNQVhfVVBMT0FEX1NJWkVfTUJcIlxuICAoZmlsZUNoYW5nZSk9XCJoYW5kbGVGaWxlQ2hhbmdlKCRldmVudClcIlxuICAodXBsb2FkQ2FuY2VsKT1cImhhbmRsZVVwbG9hZENhbmNlbCgpXCJcbiAgW3VwbG9hZFByb2dyZXNzXT1cInVwbG9hZFByb2dyZXNzXCJcbiAgKHVybENoYW5nZSk9XCJoYW5kbGVEb3dubG9hZFVybENoYW5nZSgkZXZlbnQpXCJcbj48L2duLXVpLWZpbGUtaW5wdXQ+XG48ZGl2XG4gICpuZ0lmPVwic2VsZWN0ZWRUeXBlID09PSAnc2VydmljZSdcIlxuICBjbGFzcz1cInctZnVsbCBib3JkZXItMiBib3JkZXItZGFzaGVkIHJvdW5kZWQtbGcgcC02IGZsZXggZmxleC1jb2wgZ2FwLVsxNnB4XVwiXG4+XG4gIDxnbi11aS1vbmxpbmUtc2VydmljZS1yZXNvdXJjZS1pbnB1dFxuICAgIFtzZXJ2aWNlXT1cIm5ld1NlcnZpY2VcIlxuICA+PC9nbi11aS1vbmxpbmUtc2VydmljZS1yZXNvdXJjZS1pbnB1dD5cbiAgPHNwYW4gY2xhc3M9XCJ3LWZ1bGwgYm9yZGVyLWIgYm9yZGVyLWdyYXktMzAwXCI+PC9zcGFuPlxuICA8Z24tdWktdXJsLWlucHV0XG4gICAgY2xhc3M9XCJ3LWZ1bGxcIlxuICAgIFt1cmxDYW5QYXJzZV09XCJ0cnVlXCJcbiAgICAodXBsb2FkQ2xpY2spPVwiaGFuZGxlU2VydmljZVVybENoYW5nZSgkZXZlbnQpXCJcbiAgPjwvZ24tdWktdXJsLWlucHV0PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiaC1bOHB4XVwiPjwvZGl2PlxuPGduLXVpLXNvcnRhYmxlLWxpc3RcbiAgW2l0ZW1zXT1cIm5vdExpbmtSZXNvdXJjZXNcIlxuICAoaXRlbXNPcmRlckNoYW5nZSk9XCJoYW5kbGVSZXNvdXJjZXNDaGFuZ2UoJGV2ZW50KVwiXG4gIFtlbGVtZW50VGVtcGxhdGVdPVwidGVtcGxhdGVcIlxuPlxuPC9nbi11aS1zb3J0YWJsZS1saXN0PlxuPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZSBsZXQtb25saW5lUmVzb3VyY2UgbGV0LWluZGV4PVwiaW5kZXhcIj5cbiAgPGduLXVpLW9ubGluZS1yZXNvdXJjZS1jYXJkXG4gICAgW29ubGluZVJlc291cmNlXT1cIm9ubGluZVJlc291cmNlXCJcbiAgICAobW9kaWZ5Q2xpY2spPVwiaGFuZGxlUmVzb3VyY2VNb2RpZnkob25saW5lUmVzb3VyY2UsIGluZGV4KVwiXG4gID48L2duLXVpLW9ubGluZS1yZXNvdXJjZS1jYXJkPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNkaWFsb2dUZW1wbGF0ZSBsZXQtb25saW5lUmVzb3VyY2U+XG4gIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC1bMTZweF1cIj5cbiAgICA8ZGl2PlxuICAgICAgPGgzIGNsYXNzPVwidGV4dC1bMTZweF0gZm9udC1ib2xkIHRleHQtbWFpbiBtYi1bMTJweF1cIiB0cmFuc2xhdGU+XG4gICAgICAgIGVkaXRvci5yZWNvcmQuZm9ybS5maWVsZC5vbmxpbmVSZXNvdXJjZS5lZGl0LnRpdGxlXG4gICAgICA8L2gzPlxuICAgICAgPGduLXVpLXRleHQtaW5wdXQgWyh2YWx1ZSldPVwib25saW5lUmVzb3VyY2UubmFtZVwiPjwvZ24tdWktdGV4dC1pbnB1dD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2PlxuICAgICAgPGgzIGNsYXNzPVwidGV4dC1bMTZweF0gZm9udC1ib2xkIHRleHQtbWFpbiBtYi1bMTJweF1cIiB0cmFuc2xhdGU+XG4gICAgICAgIGVkaXRvci5yZWNvcmQuZm9ybS5maWVsZC5vbmxpbmVSZXNvdXJjZS5lZGl0LmRlc2NyaXB0aW9uXG4gICAgICA8L2gzPlxuICAgICAgPGduLXVpLXRleHQtYXJlYSBbKHZhbHVlKV09XCJvbmxpbmVSZXNvdXJjZS5kZXNjcmlwdGlvblwiPjwvZ24tdWktdGV4dC1hcmVhPlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvbmxpbmVSZXNvdXJjZS50eXBlID09PSAnc2VydmljZSdcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwidy1mdWxsIGJvcmRlci1iIGJvcmRlci1ncmF5LTMwMFwiPjwvc3Bhbj5cbiAgICAgIDxnbi11aS1vbmxpbmUtc2VydmljZS1yZXNvdXJjZS1pbnB1dFxuICAgICAgICBbc2VydmljZV09XCJvbmxpbmVSZXNvdXJjZVwiXG4gICAgICA+PC9nbi11aS1vbmxpbmUtc2VydmljZS1yZXNvdXJjZS1pbnB1dD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8c3BhbiBjbGFzcz1cInctZnVsbCBib3JkZXItYiBib3JkZXItZ3JheS0zMDBcIj48L3NwYW4+XG4gICAgPGduLXVpLXVybC1pbnB1dFxuICAgICAgY2xhc3M9XCJ3LWZ1bGxcIlxuICAgICAgW2Rpc2FibGVkXT1cInRydWVcIlxuICAgICAgW3ZhbHVlXT1cIm9ubGluZVJlc291cmNlLnVybFwiXG4gICAgICBbc2hvd1VwbG9hZEJ1dHRvbl09XCJmYWxzZVwiXG4gICAgPjwvZ24tdWktdXJsLWlucHV0PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
196
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1vbmxpbmUtcmVzb3VyY2VzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9lZGl0b3Ivc3JjL2xpYi9jb21wb25lbnRzL3JlY29yZC1mb3JtL2Zvcm0tZmllbGQvZm9ybS1maWVsZC1vbmxpbmUtcmVzb3VyY2VzL2Zvcm0tZmllbGQtb25saW5lLXJlc291cmNlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvZWRpdG9yL3NyYy9saWIvY29tcG9uZW50cy9yZWNvcmQtZm9ybS9mb3JtLWZpZWxkL2Zvcm0tZmllbGQtb25saW5lLXJlc291cmNlcy9mb3JtLWZpZWxkLW9ubGluZS1yZXNvdXJjZXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzlDLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0seUNBQXlDLENBQUE7QUFPaEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sa0ZBQWtGLENBQUE7QUFDM0gsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkRBQTJELENBQUE7QUFDaEcsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixxQkFBcUIsRUFFckIsaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUNsQixpQkFBaUIsR0FDbEIsTUFBTSwrQ0FBK0MsQ0FBQTtBQUN0RCxPQUFPLEVBQ0wsb0JB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LElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO1lBQzlDLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQTtZQUMxQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztnQkFDcEIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxNQUFNLENBQUM7Z0JBQ3JELEdBQUcsV0FBVzthQUNmLENBQUMsQ0FBQTtRQUNKLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQzsrR0FyTFUsaUNBQWlDO21HQUFqQyxpQ0FBaUMsa1RDaEU5QywrbkdBd0ZBLHlERHBDSSxZQUFZLHdMQUNaLHFCQUFxQiwwSkFDckIsa0JBQWtCLHdLQUNsQixtQ0FBbUMsaUlBQ25DLGlCQUFpQixxTEFDakIscUJBQXFCLHFJQUNyQiwyQkFBMkIsNkhBQzNCLGtCQUFrQiwrSkFDbEIsaUJBQWlCLDZKQUNqQixlQUFlOzs0RkFHTixpQ0FBaUM7a0JBbkI3QyxTQUFTOytCQUNFLG1DQUFtQyxtQkFHNUIsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixxQkFBcUI7d0JBQ3JCLGtCQUFrQjt3QkFDbEIsbUNBQW1DO3dCQUNuQyxpQkFBaUI7d0JBQ2pCLHFCQUFxQjt3QkFDckIsMkJBQTJCO3dCQUMzQixrQkFBa0I7d0JBQ2xCLGlCQUFpQjt3QkFDakIsZUFBZTtxQkFDaEI7b1FBR1EsWUFBWTtzQkFBcEIsS0FBSztnQkFDTyxLQUFLO3NCQUFqQixLQUFLO2dCQU1JLFdBQVc7c0JBQXBCLE1BQU07Z0JBR3NCLGNBQWM7c0JBQTFDLFNBQVM7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZydcbmltcG9ydCB7IG1hcmtlciB9IGZyb20gJ0BiaWVzYmplcmcvbmd4LXRyYW5zbGF0ZS1leHRyYWN0LW1hcmtlcidcbmltcG9ydCB7XG4gIERhdGFzZXREb3dubG9hZERpc3RyaWJ1dGlvbixcbiAgRGF0YXNldFNlcnZpY2VEaXN0cmlidXRpb24sXG4gIE9ubGluZVJlc291cmNlLFxuICBTZXJ2aWNlRW5kcG9pbnQsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3JlY29yZCdcbmltcG9ydCB7IFBsYXRmb3JtU2VydmljZUludGVyZmFjZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL3BsYXRmb3JtLnNlcnZpY2UuaW50ZXJmYWNlJ1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvbm90aWZpY2F0aW9ucy9zcmMnXG5pbXBvcnQge1xuICBGaWxlSW5wdXRDb21wb25lbnQsXG4gIFN3aXRjaFRvZ2dsZUNvbXBvbmVudCxcbiAgU3dpdGNoVG9nZ2xlT3B0aW9uLFxuICBUZXh0QXJlYUNvbXBvbmVudCxcbiAgVGV4dElucHV0Q29tcG9uZW50LFxuICBVcmxJbnB1dENvbXBvbmVudCxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS9pbnB1dHMvc3JjJ1xuaW1wb3J0IHtcbiAgTW9kYWxEaWFsb2dDb21wb25lbnQsXG4gIFNvcnRhYmxlTGlzdENvbXBvbmVudCxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS9sYXlvdXQvc3JjJ1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcbmltcG9ydCB7IG1hcCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IE1BWF9VUExPQURfU0laRV9NQiB9IGZyb20gJy4uLy4uLy4uLy4uL2ZpZWxkcy5jb25maWcnXG5pbXBvcnQgeyBPbmxpbmVSZXNvdXJjZUNhcmRDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9vbmxpbmUtcmVzb3VyY2UtY2FyZC9vbmxpbmUtcmVzb3VyY2UtY2FyZC5jb21wb25lbnQnXG5pbXBvcnQgeyBPbmxpbmVTZXJ2aWNlUmVzb3VyY2VJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL29ubGluZS1zZXJ2aWNlLXJlc291cmNlLWlucHV0L29ubGluZS1zZXJ2aWNlLXJlc291cmNlLWlucHV0LmNvbXBvbmVudCdcbmltcG9ydCB7IEVkaXRvckZhY2FkZSB9IGZyb20gJy4uLy4uLy4uLy4uLytzdGF0ZS9lZGl0b3IuZmFjYWRlJ1xuXG50eXBlIE9ubGluZU5vdExpbmtSZXNvdXJjZSA9XG4gIHwgRGF0YXNldERvd25sb2FkRGlzdHJpYnV0aW9uXG4gIHwgRGF0YXNldFNlcnZpY2VEaXN0cmlidXRpb25cbiAgfCBTZXJ2aWNlRW5kcG9pbnRcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ24tdWktZm9ybS1maWVsZC1vbmxpbmUtcmVzb3VyY2VzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tZmllbGQtb25saW5lLXJlc291cmNlcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Zvcm0tZmllbGQtb25saW5lLXJlc291cmNlcy5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFN3aXRjaFRvZ2dsZUNvbXBvbmVudCxcbiAgICBGaWxlSW5wdXRDb21wb25lbnQsXG4gICAgT25saW5lU2VydmljZVJlc291cmNlSW5wdXRDb21wb25lbnQsXG4gICAgVXJsSW5wdXRDb21wb25lbnQsXG4gICAgU29ydGFibGVMaXN0Q29tcG9uZW50LFxuICAgIE9ubGluZVJlc291cmNlQ2FyZENvbXBvbmVudCxcbiAgICBUZXh0SW5wdXRDb21wb25lbnQsXG4gICAgVGV4dEFyZWFDb21wb25lbnQsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtRmllbGRPbmxpbmVSZXNvdXJjZXNDb21wb25lbnQge1xuICBASW5wdXQoKSBtZXRhZGF0YVV1aWQ6IHN0cmluZ1xuICBASW5wdXQoKSBzZXQgdmFsdWUob25saW5lUmVzb3VyY2VzOiBBcnJheTxPbmxpbmVSZXNvdXJjZT4pIHtcbiAgICB0aGlzLmFsbFJlc291cmNlcyA9IG9ubGluZVJlc291cmNlc1xuICAgIHRoaXMubm90TGlua1Jlc291cmNlcyA9IG9ubGluZVJlc291cmNlcy5maWx0ZXIoXG4gICAgICAocmVzKTogcmVzIGlzIE9ubGluZU5vdExpbmtSZXNvdXJjZSA9PiByZXMudHlwZSAhPT0gJ2xpbmsnXG4gICAgKVxuICB9XG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPEFycmF5PE9ubGluZVJlc291cmNlPj4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXIoKVxuXG4gIEBWaWV3Q2hpbGQoJ2RpYWxvZ1RlbXBsYXRlJykgZGlhbG9nVGVtcGxhdGU6IFRlbXBsYXRlUmVmPE9ubGluZVJlc291cmNlPlxuXG4gIHR5cGVPcHRpb25zOiBTd2l0Y2hUb2dnbGVPcHRpb25bXSA9IFtcbiAgICB7XG4gICAgICBsYWJlbDogbWFya2VyKCdlZGl0b3IucmVjb3JkLmZvcm0uZmllbGQub25saW5lUmVzb3VyY2UudG9nZ2xlLmRhdGFzZXQnKSxcbiAgICAgIHZhbHVlOiAnZG93bmxvYWQnLFxuICAgICAgY2hlY2tlZDogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGxhYmVsOiBtYXJrZXIoJ2VkaXRvci5yZWNvcmQuZm9ybS5maWVsZC5vbmxpbmVSZXNvdXJjZS50b2dnbGUuc2VydmljZScpLFxuICAgICAgdmFsdWU6ICdzZXJ2aWNlJyxcbiAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgIH0sXG4gIF1cbiAgc2VsZWN0ZWRUeXBlOiAnZG93bmxvYWQnIHwgJ3NlcnZpY2UnID0gJ2Rvd25sb2FkJ1xuXG4gIHByaXZhdGUgYWxsUmVzb3VyY2VzOiBPbmxpbmVSZXNvdXJjZVtdID0gW11cbiAgbm90TGlua1Jlc291cmNlczogT25saW5lTm90TGlua1Jlc291cmNlW10gPSBbXVxuICB1cGxvYWRQcm9ncmVzcyA9IHVuZGVmaW5lZFxuICB1cGxvYWRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IG51bGxcbiAgbmV3U2VydmljZSA9IHtcbiAgICB0eXBlOiAnc2VydmljZScsXG4gICAgYWNjZXNzU2VydmljZVByb3RvY29sOiAnb2djRmVhdHVyZXMnLFxuICAgIGlkZW50aWZpZXJJblNlcnZpY2U6ICcnLFxuICB9IGFzIE9taXQ8RGF0YXNldFNlcnZpY2VEaXN0cmlidXRpb24sICd1cmwnPlxuXG4gIHByb3RlY3RlZCBNQVhfVVBMT0FEX1NJWkVfTUIgPSBNQVhfVVBMT0FEX1NJWkVfTUJcblxuICBkaXNhYmxlZCQgPSB0aGlzLmVkaXRvckZhY2FkZS5hbHJlYWR5U2F2ZWRPbmNlJC5waXBlKFxuICAgIG1hcCgoYWxyZWFkeVNhdmVkT25jZSkgPT4gIWFscmVhZHlTYXZlZE9uY2UpXG4gIClcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvbnNTZXJ2aWNlOiBOb3RpZmljYXRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwbGF0Zm9ybVNlcnZpY2U6IFBsYXRmb3JtU2VydmljZUludGVyZmFjZSxcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgIHByaXZhdGUgZWRpdG9yRmFjYWRlOiBFZGl0b3JGYWNhZGVcbiAgKSB7fVxuXG4gIG9uU2VsZWN0ZWRUeXBlQ2hhbmdlKHNlbGVjdGVkVHlwZTogdW5rbm93bikge1xuICAgIHRoaXMuc2VsZWN0ZWRUeXBlID0gc2VsZWN0ZWRUeXBlIGFzICdkb3dubG9hZCcgfCAnc2VydmljZSdcbiAgfVxuXG4gIGhhbmRsZUZpbGVDaGFuZ2UoZmlsZTogRmlsZSkge1xuICAgIHRoaXMudXBsb2FkUHJvZ3Jlc3MgPSAwXG4gICAgdGhpcy51cGxvYWRTdWJzY3JpcHRpb24gPSB0aGlzLnBsYXRmb3JtU2VydmljZVxuICAgICAgLmF0dGFjaEZpbGVUb1JlY29yZCh0aGlzLm1ldGFkYXRhVXVpZCwgZmlsZSlcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoZXZlbnQpID0+IHtcbiAgICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ3Byb2dyZXNzJykge1xuICAgICAgICAgICAgdGhpcy51cGxvYWRQcm9ncmVzcyA9IGV2ZW50LnByb2dyZXNzXG4gICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKVxuICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQudHlwZSA9PT0gJ3N1Y2Nlc3MnKSB7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZFByb2dyZXNzID0gdW5kZWZpbmVkXG4gICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKVxuICAgICAgICAgICAgY29uc3QgbmV3UmVzb3VyY2U6IERhdGFzZXREb3dubG9hZERpc3RyaWJ1dGlvbiA9IHtcbiAgICAgICAgICAgICAgdHlwZTogJ2Rvd25sb2FkJyxcbiAgICAgICAgICAgICAgdXJsOiBuZXcgVVJMKGV2ZW50LmF0dGFjaG1lbnQudXJsKSxcbiAgICAgICAgICAgICAgbmFtZTogZXZlbnQuYXR0YWNobWVudC5maWxlTmFtZSxcbiAgICAgICAgICAgICAgc2l6ZUJ5dGVzOiBldmVudC5zaXplQnl0ZXMsIC8vIFdBUk5JTkc6IHRoaXMgaXMgdGhlIG9ubHkgdGltZSB0aGF0IHNpemVCeXRlcyBpcyBzZXRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChbLi4udGhpcy5hbGxSZXNvdXJjZXMsIG5ld1Jlc291cmNlXSlcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyb3I6IEVycm9yKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycm9yKSxcbiAgICAgIH0pXG4gIH1cblxuICBoYW5kbGVVcGxvYWRDYW5jZWwoKSB7XG4gICAgaWYgKHRoaXMudXBsb2FkU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnVwbG9hZFByb2dyZXNzID0gdW5kZWZpbmVkXG4gICAgICB0aGlzLnVwbG9hZFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpXG4gICAgfVxuICB9XG5cbiAgaGFuZGxlRG93bmxvYWRVcmxDaGFuZ2UodXJsOiBzdHJpbmcpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgbmFtZSA9IHVybC5zcGxpdCgnLycpLnBvcCgpXG4gICAgICBjb25zdCBuZXdMaW5rOiBEYXRhc2V0RG93bmxvYWREaXN0cmlidXRpb24gPSB7XG4gICAgICAgIHR5cGU6ICdkb3dubG9hZCcsXG4gICAgICAgIHVybDogbmV3IFVSTCh1cmwpLFxuICAgICAgICBuYW1lLFxuICAgICAgfVxuICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KFsuLi50aGlzLmFsbFJlc291cmNlcywgbmV3TGlua10pXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5oYW5kbGVFcnJvcihlIGFzIEVycm9yKVxuICAgIH1cbiAgfVxuXG4gIGhhbmRsZVNlcnZpY2VVcmxDaGFuZ2UodXJsOiBzdHJpbmcpIHtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoW1xuICAgICAgLi4udGhpcy5hbGxSZXNvdXJjZXMsXG4gICAgICB7XG4gICAgICAgIC4uLnRoaXMubmV3U2VydmljZSxcbiAgICAgICAgdXJsOiBuZXcgVVJMKHVybCksXG4gICAgICB9LFxuICAgIF0pXG4gIH1cblxuICBoYW5kbGVTZXJ2aWNlTW9kaWZ5KFxuICAgIG9sZFNlcnZpY2U6IERhdGFzZXRTZXJ2aWNlRGlzdHJpYnV0aW9uLFxuICAgIG5ld1NlcnZpY2U6IERhdGFzZXRTZXJ2aWNlRGlzdHJpYnV0aW9uXG4gICkge1xuICAgIG9sZFNlcnZpY2UuYWNjZXNzU2VydmljZVByb3RvY29sID0gbmV3U2VydmljZS5hY2Nlc3NTZXJ2aWNlUHJvdG9jb2xcbiAgICBvbGRTZXJ2aWNlLmlkZW50aWZpZXJJblNlcnZpY2UgPSBuZXdTZXJ2aWNlLmlkZW50aWZpZXJJblNlcnZpY2VcbiAgICBvbGRTZXJ2aWNlLnVybCA9IG5ld1NlcnZpY2UudXJsXG4gIH1cblxuICBoYW5kbGVSZXNvdXJjZXNDaGFuZ2UoaXRlbXM6IHVua25vd25bXSkge1xuICAgIGNvbnN0IG5vdExpbmtzID0gaXRlbXMgYXMgT25saW5lTm90TGlua1Jlc291cmNlW11cbiAgICBjb25zdCBuZXdSZXNvdXJjZXMgPSBbXG4gICAgICAuLi50aGlzLmFsbFJlc291cmNlcy5maWx0ZXIoKHIpID0+IHIudHlwZSA9PT0gJ2xpbmsnKSxcbiAgICAgIC4uLm5vdExpbmtzLFxuICAgIF1cbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQobmV3UmVzb3VyY2VzKVxuICB9XG5cbiAgaGFuZGxlUmVzb3VyY2VNb2RpZnkocmVzb3VyY2U6IE9ubGluZU5vdExpbmtSZXNvdXJjZSwgaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMub3BlbkVkaXREaWFsb2cocmVzb3VyY2UsIGluZGV4KVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVFcnJvcihlcnJvcjogRXJyb3IpIHtcbiAgICB0aGlzLnVwbG9hZFByb2dyZXNzID0gdW5kZWZpbmVkXG4gICAgdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS5zaG93Tm90aWZpY2F0aW9uKHtcbiAgICAgIHR5cGU6ICdlcnJvcicsXG4gICAgICB0aXRsZTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICdlZGl0b3IucmVjb3JkLm9ubGluZVJlc291cmNlRXJyb3IudGl0bGUnXG4gICAgICApLFxuICAgICAgdGV4dDogYCR7dGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICdlZGl0b3IucmVjb3JkLm9ubGluZVJlc291cmNlRXJyb3IuYm9keSdcbiAgICAgICl9ICR7ZXJyb3IubWVzc2FnZX1gLFxuICAgICAgY2xvc2VNZXNzYWdlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgJ2VkaXRvci5yZWNvcmQub25saW5lUmVzb3VyY2VFcnJvci5jbG9zZU1lc3NhZ2UnXG4gICAgICApLFxuICAgIH0pXG4gIH1cblxuICBwcml2YXRlIG9wZW5FZGl0RGlhbG9nKHJlc291cmNlOiBPbmxpbmVOb3RMaW5rUmVzb3VyY2UsIGluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCByZXNvdXJjZUNvcHkgPSB7XG4gICAgICAuLi5yZXNvdXJjZSxcbiAgICB9XG4gICAgdGhpcy5kaWFsb2dcbiAgICAgIC5vcGVuKE1vZGFsRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgIHdpZHRoOiAnODAwcHgnLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgdGl0bGU6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgICAgJ2VkaXRvci5yZWNvcmQuZm9ybS5maWVsZC5vbmxpbmVSZXNvdXJjZS5kaWFsb2dUaXRsZSdcbiAgICAgICAgICApLFxuICAgICAgICAgIGJvZHk6IHRoaXMuZGlhbG9nVGVtcGxhdGUsXG4gICAgICAgICAgYm9keUNvbnRleHQ6IHJlc291cmNlQ29weSxcbiAgICAgICAgICBjb25maXJtVGV4dDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICAgICAnZWRpdG9yLnJlY29yZC5mb3JtLmZpZWxkLm9ubGluZVJlc291cmNlLmNvbmZpcm0nXG4gICAgICAgICAgKSxcbiAgICAgICAgICBjYW5jZWxUZXh0OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICAgICdlZGl0b3IucmVjb3JkLmZvcm0uZmllbGQub25saW5lUmVzb3VyY2UuY2FuY2VsJ1xuICAgICAgICAgICksXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgIC5zdWJzY3JpYmUoKGNvbmZpcm1lZDogYm9vbGVhbikgPT4ge1xuICAgICAgICBpZiAoIWNvbmZpcm1lZCkgcmV0dXJuXG4gICAgICAgIGNvbnN0IG5ld05vdExpbmtzID0gWy4uLnRoaXMubm90TGlua1Jlc291cmNlc11cbiAgICAgICAgbmV3Tm90TGlua3Muc3BsaWNlKGluZGV4LCAxLCByZXNvdXJjZUNvcHkpXG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChbXG4gICAgICAgICAgLi4udGhpcy5hbGxSZXNvdXJjZXMuZmlsdGVyKChyKSA9PiByLnR5cGUgPT09ICdsaW5rJyksXG4gICAgICAgICAgLi4ubmV3Tm90TGlua3MsXG4gICAgICAgIF0pXG4gICAgICB9KVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbFwiPlxuICA8Z24tdWktc3dpdGNoLXRvZ2dsZVxuICAgIFtvcHRpb25zXT1cInR5cGVPcHRpb25zXCJcbiAgICAoc2VsZWN0ZWRWYWx1ZSk9XCJvblNlbGVjdGVkVHlwZUNoYW5nZSgkZXZlbnQudmFsdWUpXCJcbiAgICBleHRyYUNsYXNzZXM9XCJncm93IHRleHQtc21cIlxuICAgIGRhdGEtY3k9XCJvbmxpbmUtcmVzb3VyY2VzLXR5cGVcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCQgfCBhc3luY1wiXG4gID48L2duLXVpLXN3aXRjaC10b2dnbGU+XG4gIDxkaXYgY2xhc3M9XCJoLVs4cHhdXCI+PC9kaXY+XG4gIDxnbi11aS1maWxlLWlucHV0XG4gICAgKm5nSWY9XCJzZWxlY3RlZFR5cGUgPT09ICdkb3dubG9hZCdcIlxuICAgIFttYXhTaXplTUJdPVwiTUFYX1VQTE9BRF9TSVpFX01CXCJcbiAgICAoZmlsZUNoYW5nZSk9XCJoYW5kbGVGaWxlQ2hhbmdlKCRldmVudClcIlxuICAgICh1cGxvYWRDYW5jZWwpPVwiaGFuZGxlVXBsb2FkQ2FuY2VsKClcIlxuICAgIFt1cGxvYWRQcm9ncmVzc109XCJ1cGxvYWRQcm9ncmVzc1wiXG4gICAgKHVybENoYW5nZSk9XCJoYW5kbGVEb3dubG9hZFVybENoYW5nZSgkZXZlbnQpXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQkIHwgYXN5bmNcIlxuICA+PC9nbi11aS1maWxlLWlucHV0PlxuICA8ZGl2XG4gICAgKm5nSWY9XCJzZWxlY3RlZFR5cGUgPT09ICdzZXJ2aWNlJ1wiXG4gICAgY2xhc3M9XCJ3LWZ1bGwgYm9yZGVyLTIgYm9yZGVyLWRhc2hlZCByb3VuZGVkLWxnIHAtNiBmbGV4IGZsZXgtY29sIGdhcC1bMTZweF1cIlxuICA+XG4gICAgPGduLXVpLW9ubGluZS1zZXJ2aWNlLXJlc291cmNlLWlucHV0XG4gICAgICBbc2VydmljZV09XCJuZXdTZXJ2aWNlXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCQgfCBhc3luY1wiXG4gICAgPjwvZ24tdWktb25saW5lLXNlcnZpY2UtcmVzb3VyY2UtaW5wdXQ+XG4gICAgPHNwYW4gY2xhc3M9XCJ3LWZ1bGwgYm9yZGVyLWIgYm9yZGVyLWdyYXktMzAwXCI+PC9zcGFuPlxuICAgIDxnbi11aS11cmwtaW5wdXRcbiAgICAgIGNsYXNzPVwidy1mdWxsXCJcbiAgICAgICh1cGxvYWRDbGljayk9XCJoYW5kbGVTZXJ2aWNlVXJsQ2hhbmdlKCRldmVudClcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkJCB8IGFzeW5jXCJcbiAgICA+PC9nbi11aS11cmwtaW5wdXQ+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiaC1bOHB4XVwiPjwvZGl2PlxuICA8Z24tdWktc29ydGFibGUtbGlzdFxuICAgIFtpdGVtc109XCJub3RMaW5rUmVzb3VyY2VzXCJcbiAgICAoaXRlbXNPcmRlckNoYW5nZSk9XCJoYW5kbGVSZXNvdXJjZXNDaGFuZ2UoJGV2ZW50KVwiXG4gICAgW2VsZW1lbnRUZW1wbGF0ZV09XCJ0ZW1wbGF0ZVwiXG4gID5cbiAgPC9nbi11aS1zb3J0YWJsZS1saXN0PlxuICA8bmctdGVtcGxhdGUgI3RlbXBsYXRlIGxldC1vbmxpbmVSZXNvdXJjZSBsZXQtaW5kZXg9XCJpbmRleFwiPlxuICAgIDxnbi11aS1vbmxpbmUtcmVzb3VyY2UtY2FyZFxuICAgICAgW29ubGluZVJlc291cmNlXT1cIm9ubGluZVJlc291cmNlXCJcbiAgICAgIChtb2RpZnlDbGljayk9XCJoYW5kbGVSZXNvdXJjZU1vZGlmeShvbmxpbmVSZXNvdXJjZSwgaW5kZXgpXCJcbiAgICA+PC9nbi11aS1vbmxpbmUtcmVzb3VyY2UtY2FyZD5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8bmctdGVtcGxhdGUgI2RpYWxvZ1RlbXBsYXRlIGxldC1vbmxpbmVSZXNvdXJjZT5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtWzE2cHhdXCI+XG4gICAgICA8ZGl2PlxuICAgICAgICA8aDMgY2xhc3M9XCJ0ZXh0LVsxNnB4XSBmb250LWJvbGQgdGV4dC1tYWluIG1iLVsxMnB4XVwiIHRyYW5zbGF0ZT5cbiAgICAgICAgICBlZGl0b3IucmVjb3JkLmZvcm0uZmllbGQub25saW5lUmVzb3VyY2UuZWRpdC50aXRsZVxuICAgICAgICA8L2gzPlxuICAgICAgICA8Z24tdWktdGV4dC1pbnB1dCBbKHZhbHVlKV09XCJvbmxpbmVSZXNvdXJjZS5uYW1lXCI+PC9nbi11aS10ZXh0LWlucHV0PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2PlxuICAgICAgICA8aDMgY2xhc3M9XCJ0ZXh0LVsxNnB4XSBmb250LWJvbGQgdGV4dC1tYWluIG1iLVsxMnB4XVwiIHRyYW5zbGF0ZT5cbiAgICAgICAgICBlZGl0b3IucmVjb3JkLmZvcm0uZmllbGQub25saW5lUmVzb3VyY2UuZWRpdC5kZXNjcmlwdGlvblxuICAgICAgICA8L2gzPlxuICAgICAgICA8Z24tdWktdGV4dC1hcmVhXG4gICAgICAgICAgWyh2YWx1ZSldPVwib25saW5lUmVzb3VyY2UuZGVzY3JpcHRpb25cIlxuICAgICAgICA+PC9nbi11aS10ZXh0LWFyZWE+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvbmxpbmVSZXNvdXJjZS50eXBlID09PSAnc2VydmljZSdcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ3LWZ1bGwgYm9yZGVyLWIgYm9yZGVyLWdyYXktMzAwXCI+PC9zcGFuPlxuICAgICAgICA8Z24tdWktb25saW5lLXNlcnZpY2UtcmVzb3VyY2UtaW5wdXRcbiAgICAgICAgICBbc2VydmljZV09XCJvbmxpbmVSZXNvdXJjZVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkJCB8IGFzeW5jXCJcbiAgICAgICAgPjwvZ24tdWktb25saW5lLXNlcnZpY2UtcmVzb3VyY2UtaW5wdXQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxzcGFuIGNsYXNzPVwidy1mdWxsIGJvcmRlci1iIGJvcmRlci1ncmF5LTMwMFwiPjwvc3Bhbj5cbiAgICAgIDxnbi11aS11cmwtaW5wdXRcbiAgICAgICAgY2xhc3M9XCJ3LWZ1bGxcIlxuICAgICAgICBbZGlzYWJsZWRdPVwidHJ1ZVwiXG4gICAgICAgIFt2YWx1ZV09XCJvbmxpbmVSZXNvdXJjZS51cmxcIlxuICAgICAgICBbc2hvd1VwbG9hZEJ1dHRvbl09XCJmYWxzZVwiXG4gICAgICA+PC9nbi11aS11cmwtaW5wdXQ+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDxkaXZcbiAgICAqbmdJZj1cImRpc2FibGVkJCB8IGFzeW5jXCJcbiAgICBjbGFzcz1cInAtNCB0ZXh0LXNtIGJvcmRlciBib3JkZXItcHJpbWFyeSBiZy1wcmltYXJ5LWxpZ2h0ZXN0IHJvdW5kZWQtbGdcIlxuICAgIHRyYW5zbGF0ZVxuICAgIGRhdGEtdGVzdD1cImRpc2FibGVkLW1lc3NhZ2VcIlxuICA+XG4gICAgZWRpdG9yLnJlY29yZC5mb3JtLmZpZWxkLmRyYWZ0Lm9ubHkuZGlzYWJsZWRcbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|