geonetwork-ui 2.4.0-alpha.2.82a7dcd3 → 2.4.0-alpha.2.f675dae1

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.
@@ -21,10 +21,12 @@ import { FormFieldSpatialExtentComponent } from './form-field-spatial-extent/for
21
21
  import { FormFieldUpdateFrequencyComponent } from './form-field-update-frequency/form-field-update-frequency.component';
22
22
  import { FormFieldConstraintsShortcutsComponent } from './form-field-constraints-shortcuts/form-field-constraints-shortcuts.component';
23
23
  import { FormFieldConstraintsComponent } from './form-field-constraints/form-field-constraints.component';
24
+ import { TextFieldModule } from '@angular/cdk/text-field';
24
25
  import * as i0 from "@angular/core";
25
26
  import * as i1 from "@angular/common";
26
27
  import * as i2 from "@ngx-translate/core";
27
28
  import * as i3 from "@angular/material/tooltip";
29
+ import * as i4 from "@angular/cdk/text-field";
28
30
  export class FormFieldComponent {
29
31
  constructor() {
30
32
  this.valueChange = new EventEmitter();
@@ -34,7 +36,7 @@ export class FormFieldComponent {
34
36
  this.isOpenData = event;
35
37
  }
36
38
  focusTitleInput() {
37
- this.titleInput.nativeElement.children[0].focus();
39
+ this.titleInput.nativeElement.focus();
38
40
  }
39
41
  get withoutWrapper() {
40
42
  return (this.model === 'title' ||
@@ -72,7 +74,7 @@ export class FormFieldComponent {
72
74
  return this.value;
73
75
  }
74
76
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
75
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormFieldComponent, isStandalone: true, selector: "gn-ui-form-field", inputs: { uniqueIdentifier: "uniqueIdentifier", model: "model", modelSpecifier: "modelSpecifier", componentName: "componentName", config: "config", value: "value" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "titleInput", first: true, predicate: ["titleInput"], descendants: true }], ngImport: i0, template: "<!-- TEMPORARY - disabling the open data switch -->\n<!-- <ng-container *ngIf=\"model === 'licenses'\">\n <gn-ui-form-field-open-data\n [value]=\"valueAsConstraints\"\n (valueChange)=\"valueChange.emit($event)\"\n (openDataChange)=\"toggleIsOpenData($event)\"\n ></gn-ui-form-field-open-data>\n</ng-container> -->\n<div class=\"flex flex-col h-full\">\n <ng-container *ngIf=\"withoutWrapper; else withGenericWrapper\">\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </ng-container>\n <ng-template #withGenericWrapper>\n <gn-ui-form-field-wrapper\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n >\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </gn-ui-form-field-wrapper>\n </ng-template>\n</div>\n\n<ng-template #fieldContent>\n <ng-container [ngSwitch]=\"model\">\n <ng-container *ngSwitchCase=\"'title'\">\n <div class=\"flex flex-row flex-start items-center gap-3 mb-[12px]\">\n <span\n #titleInput\n data-test=\"recordTitleInput\"\n class=\"grow font-title text-3xl font-normal\"\n [gnUiEditableLabel]=\"valueAsString\"\n (editableLabelChanged)=\"valueChange.emit($event)\"\n ></span>\n <div class=\"flex flex-row justify-between\">\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2 cursor-pointer\"\n (click)=\"focusTitleInput()\"\n >edit</span\n >\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2\"\n [matTooltip]=\"config.hintKey! | translate\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'abstract'\">\n <gn-ui-form-field-rich\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n [value]=\"valueAsString\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-rich>\n </ng-container>\n <ng-container *ngSwitchCase=\"'overviews'\">\n <gn-ui-form-field-overviews\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOverviews\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-overviews>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceUpdated'\">\n <gn-ui-form-field-date-updated\n [value]=\"valueAsDate\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-date-updated>\n </ng-container>\n <ng-container *ngSwitchCase=\"'updateFrequency'\">\n <gn-ui-form-field-update-frequency\n [value]=\"valueAsUpdateFrequency\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-update-frequency>\n </ng-container>\n <ng-container *ngSwitchCase=\"'temporalExtents'\">\n <gn-ui-form-field-temporal-extents\n [value]=\"valueAsTemporalExtents\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-temporal-extents>\n </ng-container>\n <ng-container *ngSwitchCase=\"'spatialExtents'\">\n <gn-ui-form-field-spatial-extent></gn-ui-form-field-spatial-extent>\n </ng-container>\n <ng-container *ngSwitchCase=\"'keywords'\">\n <gn-ui-form-field-keywords\n [value]=\"valueAsKeywords\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-keywords>\n </ng-container>\n <ng-container *ngSwitchCase=\"'licenses'\">\n <gn-ui-form-field-license\n [label]=\"config.labelKey! | translate\"\n [recordConstraints]=\"valueAsConstraints\"\n (recordConstraintsChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-license>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'legalConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'securityConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'otherConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container\n ></ng-container>\n <ng-template #formFieldConstraints>\n <gn-ui-form-field-constraints\n [label]=\"config.labelKey\"\n [value]=\"valueAsConstraints\"\n [constraintType]=\"model\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-constraints\n ></ng-template>\n\n <ng-container *ngSwitchCase=\"'contactsForResource'\">\n <gn-ui-form-field-contacts-for-resource\n [value]=\"valueAsIndividuals\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-contacts-for-resource>\n </ng-container>\n <ng-container *ngSwitchCase=\"'contacts'\">\n <gn-ui-form-field-contacts\n [value]=\"valueAsIndividuals\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-contacts>\n </ng-container>\n <ng-container *ngSwitchCase=\"'onlineResources'\">\n <gn-ui-form-field-online-resources\n *ngIf=\"modelSpecifier === 'onlineResourceType:!link'\"\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOnlineResources\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-online-resources>\n </ng-container>\n <ng-container *ngSwitchCase=\"'onlineResources'\">\n <gn-ui-form-field-online-link-resources\n *ngIf=\"modelSpecifier === 'onlineResourceType:link'\"\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOnlineResources\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-online-link-resources>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!model\">\n <ng-container [ngSwitch]=\"componentName\">\n <ng-container *ngSwitchCase=\"'form-field-constraints-shortcuts'\">\n <gn-ui-form-field-constraints-shortcuts></gn-ui-form-field-constraints-shortcuts>\n </ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "directive", type: EditableLabelDirective, selector: "[gnUiEditableLabel]", inputs: ["gnUiEditableLabel"], outputs: ["editableLabelChanged"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: FormFieldWrapperComponent, selector: "gn-ui-form-field-wrapper", inputs: ["label", "hint"] }, { kind: "component", type: FormFieldLicenseComponent, selector: "gn-ui-form-field-license", inputs: ["label", "recordConstraints"], outputs: ["recordConstraintsChange"] }, { kind: "component", type: FormFieldDateUpdatedComponent, selector: "gn-ui-form-field-date-updated", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldUpdateFrequencyComponent, selector: "gn-ui-form-field-update-frequency", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldTemporalExtentsComponent, selector: "gn-ui-form-field-temporal-extents", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldRichComponent, selector: "gn-ui-form-field-rich", inputs: ["label", "hint", "placeholder", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldSpatialExtentComponent, selector: "gn-ui-form-field-spatial-extent" }, { kind: "component", type: FormFieldKeywordsComponent, selector: "gn-ui-form-field-keywords", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldOverviewsComponent, selector: "gn-ui-form-field-overviews", inputs: ["metadataUuid", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldContactsForResourceComponent, selector: "gn-ui-form-field-contacts-for-resource", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldOnlineResourcesComponent, selector: "gn-ui-form-field-online-resources", inputs: ["metadataUuid", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldOnlineLinkResourcesComponent, selector: "gn-ui-form-field-online-link-resources", inputs: ["metadataUuid", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldContactsComponent, selector: "gn-ui-form-field-contacts", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldConstraintsComponent, selector: "gn-ui-form-field-constraints", inputs: ["label", "value", "constraintType"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldConstraintsShortcutsComponent, selector: "gn-ui-form-field-constraints-shortcuts" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
77
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormFieldComponent, isStandalone: true, selector: "gn-ui-form-field", inputs: { uniqueIdentifier: "uniqueIdentifier", model: "model", modelSpecifier: "modelSpecifier", componentName: "componentName", config: "config", value: "value" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "titleInput", first: true, predicate: ["titleInput"], descendants: true }], ngImport: i0, template: "<!-- TEMPORARY - disabling the open data switch -->\n<!-- <ng-container *ngIf=\"model === 'licenses'\">\n <gn-ui-form-field-open-data\n [value]=\"valueAsConstraints\"\n (valueChange)=\"valueChange.emit($event)\"\n (openDataChange)=\"toggleIsOpenData($event)\"\n ></gn-ui-form-field-open-data>\n</ng-container> -->\n<div class=\"flex flex-col h-full\">\n <ng-container *ngIf=\"withoutWrapper; else withGenericWrapper\">\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </ng-container>\n <ng-template #withGenericWrapper>\n <gn-ui-form-field-wrapper\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n >\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </gn-ui-form-field-wrapper>\n </ng-template>\n</div>\n\n<ng-template #fieldContent>\n <ng-container [ngSwitch]=\"model\">\n <ng-container *ngSwitchCase=\"'title'\">\n <div class=\"flex flex-row flex-start items-center gap-3 mb-[12px]\">\n <textarea\n #titleInput\n cdkTextareaAutosize\n #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"1\"\n data-test=\"recordTitleInput\"\n class=\"grow font-title text-3xl font-normal overflow-hidden\"\n (change)=\"valueChange.emit($event.target.value)\"\n >{{ valueAsString }}</textarea\n >\n <div class=\"flex flex-row justify-between self-start mt-0.5\">\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2 cursor-pointer\"\n (click)=\"focusTitleInput()\"\n >edit</span\n >\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2\"\n [matTooltip]=\"config.hintKey! | translate\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'abstract'\">\n <gn-ui-form-field-rich\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n [value]=\"valueAsString\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-rich>\n </ng-container>\n <ng-container *ngSwitchCase=\"'overviews'\">\n <gn-ui-form-field-overviews\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOverviews\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-overviews>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceUpdated'\">\n <gn-ui-form-field-date-updated\n [value]=\"valueAsDate\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-date-updated>\n </ng-container>\n <ng-container *ngSwitchCase=\"'updateFrequency'\">\n <gn-ui-form-field-update-frequency\n [value]=\"valueAsUpdateFrequency\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-update-frequency>\n </ng-container>\n <ng-container *ngSwitchCase=\"'temporalExtents'\">\n <gn-ui-form-field-temporal-extents\n [value]=\"valueAsTemporalExtents\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-temporal-extents>\n </ng-container>\n <ng-container *ngSwitchCase=\"'spatialExtents'\">\n <gn-ui-form-field-spatial-extent></gn-ui-form-field-spatial-extent>\n </ng-container>\n <ng-container *ngSwitchCase=\"'keywords'\">\n <gn-ui-form-field-keywords\n [value]=\"valueAsKeywords\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-keywords>\n </ng-container>\n <ng-container *ngSwitchCase=\"'licenses'\">\n <gn-ui-form-field-license\n [label]=\"config.labelKey! | translate\"\n [recordConstraints]=\"valueAsConstraints\"\n (recordConstraintsChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-license>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'legalConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'securityConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'otherConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container\n ></ng-container>\n <ng-template #formFieldConstraints>\n <gn-ui-form-field-constraints\n [label]=\"config.labelKey\"\n [value]=\"valueAsConstraints\"\n [constraintType]=\"model\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-constraints\n ></ng-template>\n\n <ng-container *ngSwitchCase=\"'contactsForResource'\">\n <gn-ui-form-field-contacts-for-resource\n [value]=\"valueAsIndividuals\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-contacts-for-resource>\n </ng-container>\n <ng-container *ngSwitchCase=\"'contacts'\">\n <gn-ui-form-field-contacts\n [value]=\"valueAsIndividuals\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-contacts>\n </ng-container>\n <ng-container *ngSwitchCase=\"'onlineResources'\">\n <gn-ui-form-field-online-resources\n *ngIf=\"modelSpecifier === 'onlineResourceType:!link'\"\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOnlineResources\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-online-resources>\n </ng-container>\n <ng-container *ngSwitchCase=\"'onlineResources'\">\n <gn-ui-form-field-online-link-resources\n *ngIf=\"modelSpecifier === 'onlineResourceType:link'\"\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOnlineResources\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-online-link-resources>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!model\">\n <ng-container [ngSwitch]=\"componentName\">\n <ng-container *ngSwitchCase=\"'form-field-constraints-shortcuts'\">\n <gn-ui-form-field-constraints-shortcuts></gn-ui-form-field-constraints-shortcuts>\n </ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: FormFieldWrapperComponent, selector: "gn-ui-form-field-wrapper", inputs: ["label", "hint"] }, { kind: "component", type: FormFieldLicenseComponent, selector: "gn-ui-form-field-license", inputs: ["label", "recordConstraints"], outputs: ["recordConstraintsChange"] }, { kind: "component", type: FormFieldDateUpdatedComponent, selector: "gn-ui-form-field-date-updated", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldUpdateFrequencyComponent, selector: "gn-ui-form-field-update-frequency", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldTemporalExtentsComponent, selector: "gn-ui-form-field-temporal-extents", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldRichComponent, selector: "gn-ui-form-field-rich", inputs: ["label", "hint", "placeholder", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldSpatialExtentComponent, selector: "gn-ui-form-field-spatial-extent" }, { kind: "component", type: FormFieldKeywordsComponent, selector: "gn-ui-form-field-keywords", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldOverviewsComponent, selector: "gn-ui-form-field-overviews", inputs: ["metadataUuid", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldContactsForResourceComponent, selector: "gn-ui-form-field-contacts-for-resource", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldOnlineResourcesComponent, selector: "gn-ui-form-field-online-resources", inputs: ["metadataUuid", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldOnlineLinkResourcesComponent, selector: "gn-ui-form-field-online-link-resources", inputs: ["metadataUuid", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldContactsComponent, selector: "gn-ui-form-field-contacts", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldConstraintsComponent, selector: "gn-ui-form-field-constraints", inputs: ["label", "value", "constraintType"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldConstraintsShortcutsComponent, selector: "gn-ui-form-field-constraints-shortcuts" }, { kind: "ngmodule", type: TextFieldModule }, { kind: "directive", type: i4.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
76
78
  }
77
79
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldComponent, decorators: [{
78
80
  type: Component,
@@ -101,7 +103,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
101
103
  FormFieldContactsComponent,
102
104
  FormFieldConstraintsComponent,
103
105
  FormFieldConstraintsShortcutsComponent,
104
- ], template: "<!-- TEMPORARY - disabling the open data switch -->\n<!-- <ng-container *ngIf=\"model === 'licenses'\">\n <gn-ui-form-field-open-data\n [value]=\"valueAsConstraints\"\n (valueChange)=\"valueChange.emit($event)\"\n (openDataChange)=\"toggleIsOpenData($event)\"\n ></gn-ui-form-field-open-data>\n</ng-container> -->\n<div class=\"flex flex-col h-full\">\n <ng-container *ngIf=\"withoutWrapper; else withGenericWrapper\">\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </ng-container>\n <ng-template #withGenericWrapper>\n <gn-ui-form-field-wrapper\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n >\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </gn-ui-form-field-wrapper>\n </ng-template>\n</div>\n\n<ng-template #fieldContent>\n <ng-container [ngSwitch]=\"model\">\n <ng-container *ngSwitchCase=\"'title'\">\n <div class=\"flex flex-row flex-start items-center gap-3 mb-[12px]\">\n <span\n #titleInput\n data-test=\"recordTitleInput\"\n class=\"grow font-title text-3xl font-normal\"\n [gnUiEditableLabel]=\"valueAsString\"\n (editableLabelChanged)=\"valueChange.emit($event)\"\n ></span>\n <div class=\"flex flex-row justify-between\">\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2 cursor-pointer\"\n (click)=\"focusTitleInput()\"\n >edit</span\n >\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2\"\n [matTooltip]=\"config.hintKey! | translate\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'abstract'\">\n <gn-ui-form-field-rich\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n [value]=\"valueAsString\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-rich>\n </ng-container>\n <ng-container *ngSwitchCase=\"'overviews'\">\n <gn-ui-form-field-overviews\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOverviews\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-overviews>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceUpdated'\">\n <gn-ui-form-field-date-updated\n [value]=\"valueAsDate\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-date-updated>\n </ng-container>\n <ng-container *ngSwitchCase=\"'updateFrequency'\">\n <gn-ui-form-field-update-frequency\n [value]=\"valueAsUpdateFrequency\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-update-frequency>\n </ng-container>\n <ng-container *ngSwitchCase=\"'temporalExtents'\">\n <gn-ui-form-field-temporal-extents\n [value]=\"valueAsTemporalExtents\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-temporal-extents>\n </ng-container>\n <ng-container *ngSwitchCase=\"'spatialExtents'\">\n <gn-ui-form-field-spatial-extent></gn-ui-form-field-spatial-extent>\n </ng-container>\n <ng-container *ngSwitchCase=\"'keywords'\">\n <gn-ui-form-field-keywords\n [value]=\"valueAsKeywords\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-keywords>\n </ng-container>\n <ng-container *ngSwitchCase=\"'licenses'\">\n <gn-ui-form-field-license\n [label]=\"config.labelKey! | translate\"\n [recordConstraints]=\"valueAsConstraints\"\n (recordConstraintsChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-license>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'legalConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'securityConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'otherConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container\n ></ng-container>\n <ng-template #formFieldConstraints>\n <gn-ui-form-field-constraints\n [label]=\"config.labelKey\"\n [value]=\"valueAsConstraints\"\n [constraintType]=\"model\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-constraints\n ></ng-template>\n\n <ng-container *ngSwitchCase=\"'contactsForResource'\">\n <gn-ui-form-field-contacts-for-resource\n [value]=\"valueAsIndividuals\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-contacts-for-resource>\n </ng-container>\n <ng-container *ngSwitchCase=\"'contacts'\">\n <gn-ui-form-field-contacts\n [value]=\"valueAsIndividuals\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-contacts>\n </ng-container>\n <ng-container *ngSwitchCase=\"'onlineResources'\">\n <gn-ui-form-field-online-resources\n *ngIf=\"modelSpecifier === 'onlineResourceType:!link'\"\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOnlineResources\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-online-resources>\n </ng-container>\n <ng-container *ngSwitchCase=\"'onlineResources'\">\n <gn-ui-form-field-online-link-resources\n *ngIf=\"modelSpecifier === 'onlineResourceType:link'\"\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOnlineResources\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-online-link-resources>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!model\">\n <ng-container [ngSwitch]=\"componentName\">\n <ng-container *ngSwitchCase=\"'form-field-constraints-shortcuts'\">\n <gn-ui-form-field-constraints-shortcuts></gn-ui-form-field-constraints-shortcuts>\n </ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n" }]
106
+ TextFieldModule,
107
+ ], template: "<!-- TEMPORARY - disabling the open data switch -->\n<!-- <ng-container *ngIf=\"model === 'licenses'\">\n <gn-ui-form-field-open-data\n [value]=\"valueAsConstraints\"\n (valueChange)=\"valueChange.emit($event)\"\n (openDataChange)=\"toggleIsOpenData($event)\"\n ></gn-ui-form-field-open-data>\n</ng-container> -->\n<div class=\"flex flex-col h-full\">\n <ng-container *ngIf=\"withoutWrapper; else withGenericWrapper\">\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </ng-container>\n <ng-template #withGenericWrapper>\n <gn-ui-form-field-wrapper\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n >\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </gn-ui-form-field-wrapper>\n </ng-template>\n</div>\n\n<ng-template #fieldContent>\n <ng-container [ngSwitch]=\"model\">\n <ng-container *ngSwitchCase=\"'title'\">\n <div class=\"flex flex-row flex-start items-center gap-3 mb-[12px]\">\n <textarea\n #titleInput\n cdkTextareaAutosize\n #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"1\"\n data-test=\"recordTitleInput\"\n class=\"grow font-title text-3xl font-normal overflow-hidden\"\n (change)=\"valueChange.emit($event.target.value)\"\n >{{ valueAsString }}</textarea\n >\n <div class=\"flex flex-row justify-between self-start mt-0.5\">\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2 cursor-pointer\"\n (click)=\"focusTitleInput()\"\n >edit</span\n >\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2\"\n [matTooltip]=\"config.hintKey! | translate\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'abstract'\">\n <gn-ui-form-field-rich\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n [value]=\"valueAsString\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-rich>\n </ng-container>\n <ng-container *ngSwitchCase=\"'overviews'\">\n <gn-ui-form-field-overviews\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOverviews\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-overviews>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceUpdated'\">\n <gn-ui-form-field-date-updated\n [value]=\"valueAsDate\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-date-updated>\n </ng-container>\n <ng-container *ngSwitchCase=\"'updateFrequency'\">\n <gn-ui-form-field-update-frequency\n [value]=\"valueAsUpdateFrequency\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-update-frequency>\n </ng-container>\n <ng-container *ngSwitchCase=\"'temporalExtents'\">\n <gn-ui-form-field-temporal-extents\n [value]=\"valueAsTemporalExtents\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-temporal-extents>\n </ng-container>\n <ng-container *ngSwitchCase=\"'spatialExtents'\">\n <gn-ui-form-field-spatial-extent></gn-ui-form-field-spatial-extent>\n </ng-container>\n <ng-container *ngSwitchCase=\"'keywords'\">\n <gn-ui-form-field-keywords\n [value]=\"valueAsKeywords\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-keywords>\n </ng-container>\n <ng-container *ngSwitchCase=\"'licenses'\">\n <gn-ui-form-field-license\n [label]=\"config.labelKey! | translate\"\n [recordConstraints]=\"valueAsConstraints\"\n (recordConstraintsChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-license>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'legalConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'securityConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'otherConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container\n ></ng-container>\n <ng-template #formFieldConstraints>\n <gn-ui-form-field-constraints\n [label]=\"config.labelKey\"\n [value]=\"valueAsConstraints\"\n [constraintType]=\"model\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-constraints\n ></ng-template>\n\n <ng-container *ngSwitchCase=\"'contactsForResource'\">\n <gn-ui-form-field-contacts-for-resource\n [value]=\"valueAsIndividuals\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-contacts-for-resource>\n </ng-container>\n <ng-container *ngSwitchCase=\"'contacts'\">\n <gn-ui-form-field-contacts\n [value]=\"valueAsIndividuals\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-contacts>\n </ng-container>\n <ng-container *ngSwitchCase=\"'onlineResources'\">\n <gn-ui-form-field-online-resources\n *ngIf=\"modelSpecifier === 'onlineResourceType:!link'\"\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOnlineResources\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-online-resources>\n </ng-container>\n <ng-container *ngSwitchCase=\"'onlineResources'\">\n <gn-ui-form-field-online-link-resources\n *ngIf=\"modelSpecifier === 'onlineResourceType:link'\"\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOnlineResources\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-online-link-resources>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!model\">\n <ng-container [ngSwitch]=\"componentName\">\n <ng-container *ngSwitchCase=\"'form-field-constraints-shortcuts'\">\n <gn-ui-form-field-constraints-shortcuts></gn-ui-form-field-constraints-shortcuts>\n </ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n" }]
105
108
  }], propDecorators: { uniqueIdentifier: [{
106
109
  type: Input
107
110
  }], model: [{
@@ -120,4 +123,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
120
123
  type: ViewChild,
121
124
  args: ['titleInput']
122
125
  }] } });
123
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvZWRpdG9yL3NyYy9saWIvY29tcG9uZW50cy9yZWNvcmQtZm9ybS9mb3JtLWZpZWxkL2Zvcm0tZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9mZWF0dXJlL2VkaXRvci9zcmMvbGliL2NvbXBvbmVudHMvcmVjb3JkLWZvcm0vZm9ybS1maWVsZC9mb3JtLWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBVzVELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFBO0FBQ25GLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFBO0FBQ3RGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNyRCxPQUFPLEVBQ0wsNkJBQTZCLEVBQzdCLHlCQUF5QixFQUN6QixpQ0FBaUMsR0FDbEMsTUFBTSxHQUFHLENBQUE7QUFNVixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQTtBQUN2RixPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSwrRUFBK0UsQ0FBQTtBQUNySSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQTtBQUNoRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2Q0FB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MUIsMkJBQTJCLG9JQUMzQixxQ0FBcUMsZ0lBRXJDLGlDQUFpQywySUFDakMscUNBQXFDLGdKQUNyQywwQkFBMEIsbUhBQzFCLDZCQUE2QixpSkFDN0Isc0NBQXNDOzs0RkFHN0Isa0JBQWtCO2tCQWpDOUIsU0FBUzsrQkFDRSxrQkFBa0IsbUJBR1gsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixlQUFlO3dCQUNmLHNCQUFzQjt3QkFDdEIsZ0JBQWdCO3dCQUNoQix5QkFBeUI7d0JBQ3pCLHlCQUF5Qjt3QkFDekIsNkJBQTZCO3dCQUM3QixpQ0FBaUM7d0JBQ2pDLGlDQUFpQzt3QkFDakMsd0JBQXdCO3dCQUN4QixzQkFBc0I7d0JBQ3RCLHdCQUF3Qjt3QkFDeEIsK0JBQStCO3dCQUMvQixzQkFBc0I7d0JBQ3RCLHVCQUF1Qjt3QkFDdkIsMEJBQTBCO3dCQUMxQiwyQkFBMkI7d0JBQzNCLHFDQUFxQzt3QkFDckMsMEJBQTBCO3dCQUMxQixpQ0FBaUM7d0JBQ2pDLHFDQUFxQzt3QkFDckMsMEJBQTBCO3dCQUMxQiw2QkFBNkI7d0JBQzdCLHNDQUFzQztxQkFDdkM7OEJBR1EsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNO2dCQUVrQixVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJ1xuaW1wb3J0IHtcbiAgQ2F0YWxvZ1JlY29yZEtleXMsXG4gIENvbnN0cmFpbnQsXG4gIERhdGFzZXRUZW1wb3JhbEV4dGVudCxcbiAgR3JhcGhpY092ZXJ2aWV3LFxuICBJbmRpdmlkdWFsLFxuICBLZXl3b3JkLFxuICBPbmxpbmVSZXNvdXJjZSxcbiAgVXBkYXRlRnJlcXVlbmN5LFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5pbXBvcnQgeyBFZGl0YWJsZUxhYmVsRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS9pbnB1dHMvc3JjJ1xuaW1wb3J0IHsgRm9ybUZpZWxkV3JhcHBlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvbGF5b3V0L3NyYydcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5pbXBvcnQge1xuICBGb3JtRmllbGREYXRlVXBkYXRlZENvbXBvbmVudCxcbiAgRm9ybUZpZWxkTGljZW5zZUNvbXBvbmVudCxcbiAgRm9ybUZpZWxkVGVtcG9yYWxFeHRlbnRzQ29tcG9uZW50LFxufSBmcm9tICcuJ1xuaW1wb3J0IHtcbiAgRmllbGRNb2RlbFNwZWNpZmllcixcbiAgRm9ybUZpZWxkQ29tcG9uZW50TmFtZSxcbiAgRm9ybUZpZWxkQ29uZmlnLFxufSBmcm9tICcuLi8uLi8uLi9tb2RlbHMnXG5pbXBvcnQgeyBGb3JtRmllbGRBcnJheUNvbXBvbmVudCB9IGZyb20gJy4vZm9ybS1maWVsZC1hcnJheS9mb3JtLWZpZWxkLWFycmF5LmNvbXBvbmVudCdcbmltcG9ydCB7IEZvcm1GaWVsZENvbnRhY3RzRm9yUmVzb3VyY2VDb21wb25lbnQgfSBmcm9tICcuL2Zvcm0tZmllbGQtY29udGFjdHMtZm9yLXJlc291cmNlL2Zvcm0tZmllbGQtY29udGFjdHMtZm9yLXJlc291cmNlLmNvbXBvbmVudCdcbmltcG9ydCB7IEZvcm1GaWVsZENvbnRhY3RzQ29tcG9uZW50IH0gZnJvbSAnLi9mb3JtLWZpZWxkLWNvbnRhY3RzL2Zvcm0tZmllbGQtY29udGFjdHMuY29tcG9uZW50J1xuaW1wb3J0IHsgRm9ybUZpZWxkRmlsZUNvbXBvbmVudCB9IGZyb20gJy4vZm9ybS1maWVsZC1maWxlL2Zvcm0tZmllbGQtZmlsZS5jb21wb25lbnQnXG5pbXBvcnQgeyBGb3JtRmllbGRLZXl3b3Jkc0NvbXBvbmVudCB9IGZyb20gJy4vZm9ybS1maWVsZC1rZXl3b3Jkcy9mb3JtLWZpZWxkLWtleXdvcmRzLmNvbXBvbmVudCdcbmltcG9ydCB7IEZvcm1GaWVsZE9iamVjdENvbXBvbmVudCB9IGZyb20gJy4vZm9ybS1maWVsZC1vYmplY3QvZm9ybS1maWVsZC1vYmplY3QuY29tcG9uZW50J1xuaW1wb3J0IHsgRm9ybUZpZWxkT25saW5lTGlua1Jlc291cmNlc0NvbXBvbmVudCB9IGZyb20gJy4vZm9ybS1maWVsZC1vbmxpbmUtbGluay1yZXNvdXJjZXMvZm9ybS1maWVsZC1vbmxpbmUtbGluay1yZXNvdXJjZXMuY29tcG9uZW50J1xuaW1wb3J0IHsgRm9ybUZpZWxkT25saW5lUmVzb3VyY2VzQ29tcG9uZW50IH0gZnJvbSAnLi9mb3JtLWZpZWxkLW9ubGluZS1yZXNvdXJjZXMvZm9ybS1maWVsZC1vbmxpbmUtcmVzb3VyY2VzLmNvbXBvbmVudCdcbmltcG9ydCB7IEZvcm1GaWVsZE9wZW5EYXRhQ29tcG9uZW50IH0gZnJvbSAnLi9mb3JtLWZpZWxkLW9wZW4tZGF0YS9mb3JtLWZpZWxkLW9wZW4tZGF0YS5jb21wb25lbnQnXG5pbXBvcnQgeyBGb3JtRmllbGRPdmVydmlld3NDb21wb25lbnQgfSBmcm9tICcuL2Zvcm0tZmllbGQtb3ZlcnZpZXdzL2Zvcm0tZmllbGQtb3ZlcnZpZXdzLmNvbXBvbmVudCdcbmltcG9ydCB7IEZvcm1GaWVsZFJpY2hDb21wb25lbnQgfSBmcm9tICcuL2Zvcm0tZmllbGQtcmljaC9mb3JtLWZpZWxkLXJpY2guY29tcG9uZW50J1xuaW1wb3J0IHsgRm9ybUZpZWxkU2ltcGxlQ29tcG9uZW50IH0gZnJvbSAnLi9mb3JtLWZpZWxkLXNpbXBsZS9mb3JtLWZpZWxkLXNpbXBsZS5jb21wb25lbnQnXG5pbXBvcnQgeyBGb3JtRmllbGRTcGF0aWFsRXh0ZW50Q29tcG9uZW50IH0gZnJvbSAnLi9mb3JtLWZpZWxkLXNwYXRpYWwtZXh0ZW50L2Zvcm0tZmllbGQtc3BhdGlhbC1leHRlbnQuY29tcG9uZW50J1xuaW1wb3J0IHsgRm9ybUZpZWxkVXBkYXRlRnJlcXVlbmN5Q29tcG9uZW50IH0gZnJvbSAnLi9mb3JtLWZpZWxkLXVwZGF0ZS1mcmVxdWVuY3kvZm9ybS1maWVsZC11cGRhdGUtZnJlcXVlbmN5LmNvbXBvbmVudCdcbmltcG9ydCB7IEZvcm1GaWVsZENvbnN0cmFpbnRzU2hvcnRjdXRzQ29tcG9uZW50IH0gZnJvbSAnLi9mb3JtLWZpZWxkLWNvbnN0cmFpbnRzLXNob3J0Y3V0cy9mb3JtLWZpZWxkLWNvbnN0cmFpbnRzLXNob3J0Y3V0cy5jb21wb25lbnQnXG5pbXBvcnQgeyBGb3JtRmllbGRDb25zdHJhaW50c0NvbXBvbmVudCB9IGZyb20gJy4vZm9ybS1maWVsZC1jb25zdHJhaW50cy9mb3JtLWZpZWxkLWNvbnN0cmFpbnRzLmNvbXBvbmVudCdcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ24tdWktZm9ybS1maWVsZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWZpZWxkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZm9ybS1maWVsZC5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBFZGl0YWJsZUxhYmVsRGlyZWN0aXZlLFxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXG4gICAgRm9ybUZpZWxkV3JhcHBlckNvbXBvbmVudCxcbiAgICBGb3JtRmllbGRMaWNlbnNlQ29tcG9uZW50LFxuICAgIEZvcm1GaWVsZERhdGVVcGRhdGVkQ29tcG9uZW50LFxuICAgIEZvcm1GaWVsZFVwZGF0ZUZyZXF1ZW5jeUNvbXBvbmVudCxcbiAgICBGb3JtRmllbGRUZW1wb3JhbEV4dGVudHNDb21wb25lbnQsXG4gICAgRm9ybUZpZWxkU2ltcGxlQ29tcG9uZW50LFxuICAgIEZvcm1GaWVsZFJpY2hDb21wb25lbnQsXG4gICAgRm9ybUZpZWxkT2JqZWN0Q29tcG9uZW50LFxuICAgIEZvcm1GaWVsZFNwYXRpYWxFeHRlbnRDb21wb25lbnQsXG4gICAgRm9ybUZpZWxkRmlsZUNvbXBvbmVudCxcbiAgICBGb3JtRmllbGRBcnJheUNvbXBvbmVudCxcbiAgICBGb3JtRmllbGRLZXl3b3Jkc0NvbXBvbmVudCxcbiAgICBGb3JtRmllbGRPdmVydmlld3NDb21wb25lbnQsXG4gICAgRm9ybUZpZWxkQ29udGFjdHNGb3JSZXNvdXJjZUNvbXBvbmVudCxcbiAgICBGb3JtRmllbGRPcGVuRGF0YUNvbXBvbmVudCxcbiAgICBGb3JtRmllbGRPbmxpbmVSZXNvdXJjZXNDb21wb25lbnQsXG4gICAgRm9ybUZpZWxkT25saW5lTGlua1Jlc291cmNlc0NvbXBvbmVudCxcbiAgICBGb3JtRmllbGRDb250YWN0c0NvbXBvbmVudCxcbiAgICBGb3JtRmllbGRDb25zdHJhaW50c0NvbXBvbmVudCxcbiAgICBGb3JtRmllbGRDb25zdHJhaW50c1Nob3J0Y3V0c0NvbXBvbmVudCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybUZpZWxkQ29tcG9uZW50IHtcbiAgQElucHV0KCkgdW5pcXVlSWRlbnRpZmllcjogc3RyaW5nXG4gIEBJbnB1dCgpIG1vZGVsOiBDYXRhbG9nUmVjb3JkS2V5c1xuICBASW5wdXQoKSBtb2RlbFNwZWNpZmllcjogRmllbGRNb2RlbFNwZWNpZmllclxuICBASW5wdXQoKSBjb21wb25lbnROYW1lOiBGb3JtRmllbGRDb21wb25lbnROYW1lXG5cbiAgQElucHV0KCkgY29uZmlnOiBGb3JtRmllbGRDb25maWdcbiAgQElucHV0KCkgdmFsdWU6IHVua25vd25cblxuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjx1bmtub3duPiA9IG5ldyBFdmVudEVtaXR0ZXIoKVxuXG4gIEBWaWV3Q2hpbGQoJ3RpdGxlSW5wdXQnKSB0aXRsZUlucHV0OiBFbGVtZW50UmVmXG4gIGlzT3BlbkRhdGEgPSBmYWxzZVxuXG4gIHRvZ2dsZUlzT3BlbkRhdGEoZXZlbnQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmlzT3BlbkRhdGEgPSBldmVudFxuICB9XG5cbiAgZm9jdXNUaXRsZUlucHV0KCkge1xuICAgIHRoaXMudGl0bGVJbnB1dC5uYXRpdmVFbGVtZW50LmNoaWxkcmVuWzBdLmZvY3VzKClcbiAgfVxuXG4gIGdldCB3aXRob3V0V3JhcHBlcigpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5tb2RlbCA9PT0gJ3RpdGxlJyB8fFxuICAgICAgdGhpcy5tb2RlbCA9PT0gJ2Fic3RyYWN0JyB8fFxuICAgICAgdGhpcy5tb2RlbCA9PT0gJ2xlZ2FsQ29uc3RyYWludHMnIHx8XG4gICAgICB0aGlzLm1vZGVsID09PSAnc2VjdXJpdHlDb25zdHJhaW50cycgfHxcbiAgICAgIHRoaXMubW9kZWwgPT09ICdvdGhlckNvbnN0cmFpbnRzJyB8fFxuICAgICAgdGhpcy5jb21wb25lbnROYW1lID09PSAnZm9ybS1maWVsZC1jb25zdHJhaW50cy1zaG9ydGN1dHMnXG4gICAgKVxuICB9XG5cbiAgZ2V0IHZhbHVlQXNTdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUgYXMgc3RyaW5nXG4gIH1cbiAgZ2V0IHZhbHVlQXNEYXRlKCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlIGFzIERhdGVcbiAgfVxuXG4gIGdldCB2YWx1ZUFzT3ZlcnZpZXdzKCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlIGFzIEFycmF5PEdyYXBoaWNPdmVydmlldz5cbiAgfVxuICBnZXQgdmFsdWVBc1VwZGF0ZUZyZXF1ZW5jeSgpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZSBhcyBVcGRhdGVGcmVxdWVuY3lcbiAgfVxuICBnZXQgdmFsdWVBc1RlbXBvcmFsRXh0ZW50cygpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZSBhcyBBcnJheTxEYXRhc2V0VGVtcG9yYWxFeHRlbnQ+XG4gIH1cbiAgZ2V0IHZhbHVlQXNLZXl3b3JkcygpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZSBhcyBBcnJheTxLZXl3b3JkPlxuICB9XG4gIGdldCB2YWx1ZUFzQ29uc3RyYWludHMoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUgYXMgQXJyYXk8Q29uc3RyYWludD5cbiAgfVxuICBnZXQgdmFsdWVBc0luZGl2aWR1YWxzKCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlIGFzIEFycmF5PEluZGl2aWR1YWw+XG4gIH1cbiAgZ2V0IHZhbHVlQXNPbmxpbmVSZXNvdXJjZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUgYXMgQXJyYXk8T25saW5lUmVzb3VyY2U+XG4gIH1cbn1cbiIsIjwhLS0gVEVNUE9SQVJZIC0gZGlzYWJsaW5nIHRoZSBvcGVuIGRhdGEgc3dpdGNoIC0tPlxuPCEtLSA8bmctY29udGFpbmVyICpuZ0lmPVwibW9kZWwgPT09ICdsaWNlbnNlcydcIj5cbiAgPGduLXVpLWZvcm0tZmllbGQtb3Blbi1kYXRhXG4gICAgW3ZhbHVlXT1cInZhbHVlQXNDb25zdHJhaW50c1wiXG4gICAgKHZhbHVlQ2hhbmdlKT1cInZhbHVlQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXG4gICAgKG9wZW5EYXRhQ2hhbmdlKT1cInRvZ2dsZUlzT3BlbkRhdGEoJGV2ZW50KVwiXG4gID48L2duLXVpLWZvcm0tZmllbGQtb3Blbi1kYXRhPlxuPC9uZy1jb250YWluZXI+IC0tPlxuPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgaC1mdWxsXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJ3aXRob3V0V3JhcHBlcjsgZWxzZSB3aXRoR2VuZXJpY1dyYXBwZXJcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmllbGRDb250ZW50XCI+PC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctdGVtcGxhdGUgI3dpdGhHZW5lcmljV3JhcHBlcj5cbiAgICA8Z24tdWktZm9ybS1maWVsZC13cmFwcGVyXG4gICAgICBbbGFiZWxdPVwiY29uZmlnLmxhYmVsS2V5ISB8IHRyYW5zbGF0ZVwiXG4gICAgICBbaGludF09XCJjb25maWcuaGludEtleSEgfCB0cmFuc2xhdGVcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWVsZENvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2duLXVpLWZvcm0tZmllbGQtd3JhcHBlcj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2ZpZWxkQ29udGVudD5cbiAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwibW9kZWxcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIndGl0bGUnXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBmbGV4LXN0YXJ0IGl0ZW1zLWNlbnRlciBnYXAtMyBtYi1bMTJweF1cIj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAjdGl0bGVJbnB1dFxuICAgICAgICAgIGRhdGEtdGVzdD1cInJlY29yZFRpdGxlSW5wdXRcIlxuICAgICAgICAgIGNsYXNzPVwiZ3JvdyBmb250LXRpdGxlIHRleHQtM3hsIGZvbnQtbm9ybWFsXCJcbiAgICAgICAgICBbZ25VaUVkaXRhYmxlTGFiZWxdPVwidmFsdWVBc1N0cmluZ1wiXG4gICAgICAgICAgKGVkaXRhYmxlTGFiZWxDaGFuZ2VkKT1cInZhbHVlQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgID48L3NwYW4+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgZ24tdWktaWNvbi1zbWFsbCBtLTIgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImZvY3VzVGl0bGVJbnB1dCgpXCJcbiAgICAgICAgICAgID5lZGl0PC9zcGFuXG4gICAgICAgICAgPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgZ24tdWktaWNvbi1zbWFsbCBtLTJcIlxuICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiY29uZmlnLmhpbnRLZXkhIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBoZWxwXG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidhYnN0cmFjdCdcIj5cbiAgICAgIDxnbi11aS1mb3JtLWZpZWxkLXJpY2hcbiAgICAgICAgW2xhYmVsXT1cImNvbmZpZy5sYWJlbEtleSEgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbaGludF09XCJjb25maWcuaGludEtleSEgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbdmFsdWVdPVwidmFsdWVBc1N0cmluZ1wiXG4gICAgICAgICh2YWx1ZUNoYW5nZSk9XCJ2YWx1ZUNoYW5nZS5lbWl0KCRldmVudClcIlxuICAgICAgPjwvZ24tdWktZm9ybS1maWVsZC1yaWNoPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidvdmVydmlld3MnXCI+XG4gICAgICA8Z24tdWktZm9ybS1maWVsZC1vdmVydmlld3NcbiAgICAgICAgW21ldGFkYXRhVXVpZF09XCJ1bmlxdWVJZGVudGlmaWVyXCJcbiAgICAgICAgW3ZhbHVlXT1cInZhbHVlQXNPdmVydmlld3NcIlxuICAgICAgICAodmFsdWVDaGFuZ2UpPVwidmFsdWVDaGFuZ2UuZW1pdCgkZXZlbnQpXCJcbiAgICAgID48L2duLXVpLWZvcm0tZmllbGQtb3ZlcnZpZXdzPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidyZXNvdXJjZVVwZGF0ZWQnXCI+XG4gICAgICA8Z24tdWktZm9ybS1maWVsZC1kYXRlLXVwZGF0ZWRcbiAgICAgICAgW3ZhbHVlXT1cInZhbHVlQXNEYXRlXCJcbiAgICAgICAgKHZhbHVlQ2hhbmdlKT1cInZhbHVlQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXG4gICAgICA+PC9nbi11aS1mb3JtLWZpZWxkLWRhdGUtdXBkYXRlZD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIndXBkYXRlRnJlcXVlbmN5J1wiPlxuICAgICAgPGduLXVpLWZvcm0tZmllbGQtdXBkYXRlLWZyZXF1ZW5jeVxuICAgICAgICBbdmFsdWVdPVwidmFsdWVBc1VwZGF0ZUZyZXF1ZW5jeVwiXG4gICAgICAgICh2YWx1ZUNoYW5nZSk9XCJ2YWx1ZUNoYW5nZS5lbWl0KCRldmVudClcIlxuICAgICAgPjwvZ24tdWktZm9ybS1maWVsZC11cGRhdGUtZnJlcXVlbmN5PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid0ZW1wb3JhbEV4dGVudHMnXCI+XG4gICAgICA8Z24tdWktZm9ybS1maWVsZC10ZW1wb3JhbC1leHRlbnRzXG4gICAgICAgIFt2YWx1ZV09XCJ2YWx1ZUFzVGVtcG9yYWxFeHRlbnRzXCJcbiAgICAgICAgKHZhbHVlQ2hhbmdlKT1cInZhbHVlQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXG4gICAgICA+PC9nbi11aS1mb3JtLWZpZWxkLXRlbXBvcmFsLWV4dGVudHM+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3NwYXRpYWxFeHRlbnRzJ1wiPlxuICAgICAgPGduLXVpLWZvcm0tZmllbGQtc3BhdGlhbC1leHRlbnQ+PC9nbi11aS1mb3JtLWZpZWxkLXNwYXRpYWwtZXh0ZW50PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidrZXl3b3JkcydcIj5cbiAgICAgIDxnbi11aS1mb3JtLWZpZWxkLWtleXdvcmRzXG4gICAgICAgIFt2YWx1ZV09XCJ2YWx1ZUFzS2V5d29yZHNcIlxuICAgICAgICAodmFsdWVDaGFuZ2UpPVwidmFsdWVDaGFuZ2UuZW1pdCgkZXZlbnQpXCJcbiAgICAgID48L2duLXVpLWZvcm0tZmllbGQta2V5d29yZHM+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2xpY2Vuc2VzJ1wiPlxuICAgICAgPGduLXVpLWZvcm0tZmllbGQtbGljZW5zZVxuICAgICAgICBbbGFiZWxdPVwiY29uZmlnLmxhYmVsS2V5ISB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFtyZWNvcmRDb25zdHJhaW50c109XCJ2YWx1ZUFzQ29uc3RyYWludHNcIlxuICAgICAgICAocmVjb3JkQ29uc3RyYWludHNDaGFuZ2UpPVwidmFsdWVDaGFuZ2UuZW1pdCgkZXZlbnQpXCJcbiAgICAgID48L2duLXVpLWZvcm0tZmllbGQtbGljZW5zZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidsZWdhbENvbnN0cmFpbnRzJ1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZvcm1GaWVsZENvbnN0cmFpbnRzXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3NlY3VyaXR5Q29uc3RyYWludHMnXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9ybUZpZWxkQ29uc3RyYWludHNcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInb3RoZXJDb25zdHJhaW50cydcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb3JtRmllbGRDb25zdHJhaW50c1wiPjwvbmctY29udGFpbmVyXG4gICAgPjwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjZm9ybUZpZWxkQ29uc3RyYWludHM+XG4gICAgICA8Z24tdWktZm9ybS1maWVsZC1jb25zdHJhaW50c1xuICAgICAgICBbbGFiZWxdPVwiY29uZmlnLmxhYmVsS2V5XCJcbiAgICAgICAgW3ZhbHVlXT1cInZhbHVlQXNDb25zdHJhaW50c1wiXG4gICAgICAgIFtjb25zdHJhaW50VHlwZV09XCJtb2RlbFwiXG4gICAgICAgICh2YWx1ZUNoYW5nZSk9XCJ2YWx1ZUNoYW5nZS5lbWl0KCRldmVudClcIlxuICAgICAgPjwvZ24tdWktZm9ybS1maWVsZC1jb25zdHJhaW50c1xuICAgID48L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2NvbnRhY3RzRm9yUmVzb3VyY2UnXCI+XG4gICAgICA8Z24tdWktZm9ybS1maWVsZC1jb250YWN0cy1mb3ItcmVzb3VyY2VcbiAgICAgICAgW3ZhbHVlXT1cInZhbHVlQXNJbmRpdmlkdWFsc1wiXG4gICAgICAgICh2YWx1ZUNoYW5nZSk9XCJ2YWx1ZUNoYW5nZS5lbWl0KCRldmVudClcIlxuICAgICAgPjwvZ24tdWktZm9ybS1maWVsZC1jb250YWN0cy1mb3ItcmVzb3VyY2U+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2NvbnRhY3RzJ1wiPlxuICAgICAgPGduLXVpLWZvcm0tZmllbGQtY29udGFjdHNcbiAgICAgICAgW3ZhbHVlXT1cInZhbHVlQXNJbmRpdmlkdWFsc1wiXG4gICAgICAgICh2YWx1ZUNoYW5nZSk9XCJ2YWx1ZUNoYW5nZS5lbWl0KCRldmVudClcIlxuICAgICAgPjwvZ24tdWktZm9ybS1maWVsZC1jb250YWN0cz5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInb25saW5lUmVzb3VyY2VzJ1wiPlxuICAgICAgPGduLXVpLWZvcm0tZmllbGQtb25saW5lLXJlc291cmNlc1xuICAgICAgICAqbmdJZj1cIm1vZGVsU3BlY2lmaWVyID09PSAnb25saW5lUmVzb3VyY2VUeXBlOiFsaW5rJ1wiXG4gICAgICAgIFttZXRhZGF0YVV1aWRdPVwidW5pcXVlSWRlbnRpZmllclwiXG4gICAgICAgIFt2YWx1ZV09XCJ2YWx1ZUFzT25saW5lUmVzb3VyY2VzXCJcbiAgICAgICAgKHZhbHVlQ2hhbmdlKT1cInZhbHVlQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXG4gICAgICA+PC9nbi11aS1mb3JtLWZpZWxkLW9ubGluZS1yZXNvdXJjZXM+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ29ubGluZVJlc291cmNlcydcIj5cbiAgICAgIDxnbi11aS1mb3JtLWZpZWxkLW9ubGluZS1saW5rLXJlc291cmNlc1xuICAgICAgICAqbmdJZj1cIm1vZGVsU3BlY2lmaWVyID09PSAnb25saW5lUmVzb3VyY2VUeXBlOmxpbmsnXCJcbiAgICAgICAgW21ldGFkYXRhVXVpZF09XCJ1bmlxdWVJZGVudGlmaWVyXCJcbiAgICAgICAgW3ZhbHVlXT1cInZhbHVlQXNPbmxpbmVSZXNvdXJjZXNcIlxuICAgICAgICAodmFsdWVDaGFuZ2UpPVwidmFsdWVDaGFuZ2UuZW1pdCgkZXZlbnQpXCJcbiAgICAgID48L2duLXVpLWZvcm0tZmllbGQtb25saW5lLWxpbmstcmVzb3VyY2VzPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW1vZGVsXCI+XG4gICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiY29tcG9uZW50TmFtZVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2Zvcm0tZmllbGQtY29uc3RyYWludHMtc2hvcnRjdXRzJ1wiPlxuICAgICAgICA8Z24tdWktZm9ybS1maWVsZC1jb25zdHJhaW50cy1zaG9ydGN1dHM+PC9nbi11aS1mb3JtLWZpZWxkLWNvbnN0cmFpbnRzLXNob3J0Y3V0cz5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvZWRpdG9yL3NyYy9saWIvY29tcG9uZW50cy9yZWNvcmQtZm9ybS9mb3JtLWZpZWxkL2Zvcm0tZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9mZWF0dXJlL2VkaXRvci9zcmMvbGliL2NvbXBvbmVudHMvcmVjb3JkLWZvcm0vZm9ybS1maWVsZC9mb3JtLWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUVaLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxHQUdWLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBVzVELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFBO0FBQ25GLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFBO0FBQ3RGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNyRCxPQUFPLEVBQ0wsNkJBQTZCLEVBQzdCLHlCQUF5QixFQUN6QixpQ0FBaUMsR0FDbEMsTUFBTSxHQUFHLENBQUE7QUFNVixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQTtBQUN2RixPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSwrRUFBK0UsQ0FBQTtBQUNySSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQTtBQUNoRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2Q0FB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LG1IQUMxQiwyQkFBMkIsb0lBQzNCLHFDQUFxQyxnSUFFckMsaUNBQWlDLDJJQUNqQyxxQ0FBcUMsZ0pBQ3JDLDBCQUEwQixtSEFDMUIsNkJBQTZCLGlKQUM3QixzQ0FBc0Msa0ZBQ3RDLGVBQWU7OzRGQUdOLGtCQUFrQjtrQkFsQzlCLFNBQVM7K0JBQ0Usa0JBQWtCLG1CQUdYLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osZUFBZTt3QkFDZixzQkFBc0I7d0JBQ3RCLGdCQUFnQjt3QkFDaEIseUJBQXlCO3dCQUN6Qix5QkFBeUI7d0JBQ3pCLDZCQUE2Qjt3QkFDN0IsaUNBQWlDO3dCQUNqQyxpQ0FBaUM7d0JBQ2pDLHdCQUF3Qjt3QkFDeEIsc0JBQXNCO3dCQUN0Qix3QkFBd0I7d0JBQ3hCLCtCQUErQjt3QkFDL0Isc0JBQXNCO3dCQUN0Qix1QkFBdUI7d0JBQ3ZCLDBCQUEwQjt3QkFDMUIsMkJBQTJCO3dCQUMzQixxQ0FBcUM7d0JBQ3JDLDBCQUEwQjt3QkFDMUIsaUNBQWlDO3dCQUNqQyxxQ0FBcUM7d0JBQ3JDLDBCQUEwQjt3QkFDMUIsNkJBQTZCO3dCQUM3QixzQ0FBc0M7d0JBQ3RDLGVBQWU7cUJBQ2hCOzhCQUdRLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTTtnQkFFa0IsVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxuICBhZnRlck5leHRSZW5kZXIsXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJ1xuaW1wb3J0IHtcbiAgQ2F0YWxvZ1JlY29yZEtleXMsXG4gIENvbnN0cmFpbnQsXG4gIERhdGFzZXRUZW1wb3JhbEV4dGVudCxcbiAgR3JhcGhpY092ZXJ2aWV3LFxuICBJbmRpdmlkdWFsLFxuICBLZXl3b3JkLFxuICBPbmxpbmVSZXNvdXJjZSxcbiAgVXBkYXRlRnJlcXVlbmN5LFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5pbXBvcnQgeyBFZGl0YWJsZUxhYmVsRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS9pbnB1dHMvc3JjJ1xuaW1wb3J0IHsgRm9ybUZpZWxkV3JhcHBlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvbGF5b3V0L3NyYydcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5pbXBvcnQge1xuICBGb3JtRmllbGREYXRlVXBkYXRlZENvbXBvbmVudCxcbiAgRm9ybUZpZWxkTGljZW5zZUNvbXBvbmVudCxcbiAgRm9ybUZpZWxkVGVtcG9yYWxFeHRlbnRzQ29tcG9uZW50LFxufSBmcm9tICcuJ1xuaW1wb3J0IHtcbiAgRmllbGRNb2RlbFNwZWNpZmllcixcbiAgRm9ybUZpZWxkQ29tcG9uZW50TmFtZSxcbiAgRm9ybUZpZWxkQ29uZmlnLFxufSBmcm9tICcuLi8uLi8uLi9tb2RlbHMnXG5pbXBvcnQgeyBGb3JtRmllbGRBcnJheUNvbXBvbmVudCB9IGZyb20gJy4vZm9ybS1maWVsZC1hcnJheS9mb3JtLWZpZWxkLWFycmF5LmNvbXBvbmVudCdcbmltcG9ydCB7IEZvcm1GaWVsZENvbnRhY3RzRm9yUmVzb3VyY2VDb21wb25lbnQgfSBmcm9tICcuL2Zvcm0tZmllbGQtY29udGFjdHMtZm9yLXJlc291cmNlL2Zvcm0tZmllbGQtY29udGFjdHMtZm9yLXJlc291cmNlLmNvbXBvbmVudCdcbmltcG9ydCB7IEZvcm1GaWVsZENvbnRhY3RzQ29tcG9uZW50IH0gZnJvbSAnLi9mb3JtLWZpZWxkLWNvbnRhY3RzL2Zvcm0tZmllbGQtY29udGFjdHMuY29tcG9uZW50J1xuaW1wb3J0IHsgRm9ybUZpZWxkRmlsZUNvbXBvbmVudCB9IGZyb20gJy4vZm9ybS1maWVsZC1maWxlL2Zvcm0tZmllbGQtZmlsZS5jb21wb25lbnQnXG5pbXBvcnQgeyBGb3JtRmllbGRLZXl3b3Jkc0NvbXBvbmVudCB9IGZyb20gJy4vZm9ybS1maWVsZC1rZXl3b3Jkcy9mb3JtLWZpZWxkLWtleXdvcmRzLmNvbXBvbmVudCdcbmltcG9ydCB7IEZvcm1GaWVsZE9iamVjdENvbXBvbmVudCB9IGZyb20gJy4vZm9ybS1maWVsZC1vYmplY3QvZm9ybS1maWVsZC1vYmplY3QuY29tcG9uZW50J1xuaW1wb3J0IHsgRm9ybUZpZWxkT25saW5lTGlua1Jlc291cmNlc0NvbXBvbmVudCB9IGZyb20gJy4vZm9ybS1maWVsZC1vbmxpbmUtbGluay1yZXNvdXJjZXMvZm9ybS1maWVsZC1vbmxpbmUtbGluay1yZXNvdXJjZXMuY29tcG9uZW50J1xuaW1wb3J0IHsgRm9ybUZpZWxkT25saW5lUmVzb3VyY2VzQ29tcG9uZW50IH0gZnJvbSAnLi9mb3JtLWZpZWxkLW9ubGluZS1yZXNvdXJjZXMvZm9ybS1maWVsZC1vbmxpbmUtcmVzb3VyY2VzLmNvbXBvbmVudCdcbmltcG9ydCB7IEZvcm1GaWVsZE9wZW5EYXRhQ29tcG9uZW50IH0gZnJvbSAnLi9mb3JtLWZpZWxkLW9wZW4tZGF0YS9mb3JtLWZpZWxkLW9wZW4tZGF0YS5jb21wb25lbnQnXG5pbXBvcnQgeyBGb3JtRmllbGRPdmVydmlld3NDb21wb25lbnQgfSBmcm9tICcuL2Zvcm0tZmllbGQtb3ZlcnZpZXdzL2Zvcm0tZmllbGQtb3ZlcnZpZXdzLmNvbXBvbmVudCdcbmltcG9ydCB7IEZvcm1GaWVsZFJpY2hDb21wb25lbnQgfSBmcm9tICcuL2Zvcm0tZmllbGQtcmljaC9mb3JtLWZpZWxkLXJpY2guY29tcG9uZW50J1xuaW1wb3J0IHsgRm9ybUZpZWxkU2ltcGxlQ29tcG9uZW50IH0gZnJvbSAnLi9mb3JtLWZpZWxkLXNpbXBsZS9mb3JtLWZpZWxkLXNpbXBsZS5jb21wb25lbnQnXG5pbXBvcnQgeyBGb3JtRmllbGRTcGF0aWFsRXh0ZW50Q29tcG9uZW50IH0gZnJvbSAnLi9mb3JtLWZpZWxkLXNwYXRpYWwtZXh0ZW50L2Zvcm0tZmllbGQtc3BhdGlhbC1leHRlbnQuY29tcG9uZW50J1xuaW1wb3J0IHsgRm9ybUZpZWxkVXBkYXRlRnJlcXVlbmN5Q29tcG9uZW50IH0gZnJvbSAnLi9mb3JtLWZpZWxkLXVwZGF0ZS1mcmVxdWVuY3kvZm9ybS1maWVsZC11cGRhdGUtZnJlcXVlbmN5LmNvbXBvbmVudCdcbmltcG9ydCB7IEZvcm1GaWVsZENvbnN0cmFpbnRzU2hvcnRjdXRzQ29tcG9uZW50IH0gZnJvbSAnLi9mb3JtLWZpZWxkLWNvbnN0cmFpbnRzLXNob3J0Y3V0cy9mb3JtLWZpZWxkLWNvbnN0cmFpbnRzLXNob3J0Y3V0cy5jb21wb25lbnQnXG5pbXBvcnQgeyBGb3JtRmllbGRDb25zdHJhaW50c0NvbXBvbmVudCB9IGZyb20gJy4vZm9ybS1maWVsZC1jb25zdHJhaW50cy9mb3JtLWZpZWxkLWNvbnN0cmFpbnRzLmNvbXBvbmVudCdcbmltcG9ydCB7IFRleHRGaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90ZXh0LWZpZWxkJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnbi11aS1mb3JtLWZpZWxkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tZmllbGQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mb3JtLWZpZWxkLmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIEVkaXRhYmxlTGFiZWxEaXJlY3RpdmUsXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcbiAgICBGb3JtRmllbGRXcmFwcGVyQ29tcG9uZW50LFxuICAgIEZvcm1GaWVsZExpY2Vuc2VDb21wb25lbnQsXG4gICAgRm9ybUZpZWxkRGF0ZVVwZGF0ZWRDb21wb25lbnQsXG4gICAgRm9ybUZpZWxkVXBkYXRlRnJlcXVlbmN5Q29tcG9uZW50LFxuICAgIEZvcm1GaWVsZFRlbXBvcmFsRXh0ZW50c0NvbXBvbmVudCxcbiAgICBGb3JtRmllbGRTaW1wbGVDb21wb25lbnQsXG4gICAgRm9ybUZpZWxkUmljaENvbXBvbmVudCxcbiAgICBGb3JtRmllbGRPYmplY3RDb21wb25lbnQsXG4gICAgRm9ybUZpZWxkU3BhdGlhbEV4dGVudENvbXBvbmVudCxcbiAgICBGb3JtRmllbGRGaWxlQ29tcG9uZW50LFxuICAgIEZvcm1GaWVsZEFycmF5Q29tcG9uZW50LFxuICAgIEZvcm1GaWVsZEtleXdvcmRzQ29tcG9uZW50LFxuICAgIEZvcm1GaWVsZE92ZXJ2aWV3c0NvbXBvbmVudCxcbiAgICBGb3JtRmllbGRDb250YWN0c0ZvclJlc291cmNlQ29tcG9uZW50LFxuICAgIEZvcm1GaWVsZE9wZW5EYXRhQ29tcG9uZW50LFxuICAgIEZvcm1GaWVsZE9ubGluZVJlc291cmNlc0NvbXBvbmVudCxcbiAgICBGb3JtRmllbGRPbmxpbmVMaW5rUmVzb3VyY2VzQ29tcG9uZW50LFxuICAgIEZvcm1GaWVsZENvbnRhY3RzQ29tcG9uZW50LFxuICAgIEZvcm1GaWVsZENvbnN0cmFpbnRzQ29tcG9uZW50LFxuICAgIEZvcm1GaWVsZENvbnN0cmFpbnRzU2hvcnRjdXRzQ29tcG9uZW50LFxuICAgIFRleHRGaWVsZE1vZHVsZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybUZpZWxkQ29tcG9uZW50IHtcbiAgQElucHV0KCkgdW5pcXVlSWRlbnRpZmllcjogc3RyaW5nXG4gIEBJbnB1dCgpIG1vZGVsOiBDYXRhbG9nUmVjb3JkS2V5c1xuICBASW5wdXQoKSBtb2RlbFNwZWNpZmllcjogRmllbGRNb2RlbFNwZWNpZmllclxuICBASW5wdXQoKSBjb21wb25lbnROYW1lOiBGb3JtRmllbGRDb21wb25lbnROYW1lXG5cbiAgQElucHV0KCkgY29uZmlnOiBGb3JtRmllbGRDb25maWdcbiAgQElucHV0KCkgdmFsdWU6IHVua25vd25cblxuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjx1bmtub3duPiA9IG5ldyBFdmVudEVtaXR0ZXIoKVxuXG4gIEBWaWV3Q2hpbGQoJ3RpdGxlSW5wdXQnKSB0aXRsZUlucHV0OiBFbGVtZW50UmVmXG4gIGlzT3BlbkRhdGEgPSBmYWxzZVxuXG4gIHRvZ2dsZUlzT3BlbkRhdGEoZXZlbnQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmlzT3BlbkRhdGEgPSBldmVudFxuICB9XG5cbiAgZm9jdXNUaXRsZUlucHV0KCkge1xuICAgIHRoaXMudGl0bGVJbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKClcbiAgfVxuXG4gIGdldCB3aXRob3V0V3JhcHBlcigpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5tb2RlbCA9PT0gJ3RpdGxlJyB8fFxuICAgICAgdGhpcy5tb2RlbCA9PT0gJ2Fic3RyYWN0JyB8fFxuICAgICAgdGhpcy5tb2RlbCA9PT0gJ2xlZ2FsQ29uc3RyYWludHMnIHx8XG4gICAgICB0aGlzLm1vZGVsID09PSAnc2VjdXJpdHlDb25zdHJhaW50cycgfHxcbiAgICAgIHRoaXMubW9kZWwgPT09ICdvdGhlckNvbnN0cmFpbnRzJyB8fFxuICAgICAgdGhpcy5jb21wb25lbnROYW1lID09PSAnZm9ybS1maWVsZC1jb25zdHJhaW50cy1zaG9ydGN1dHMnXG4gICAgKVxuICB9XG5cbiAgZ2V0IHZhbHVlQXNTdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUgYXMgc3RyaW5nXG4gIH1cbiAgZ2V0IHZhbHVlQXNEYXRlKCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlIGFzIERhdGVcbiAgfVxuXG4gIGdldCB2YWx1ZUFzT3ZlcnZpZXdzKCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlIGFzIEFycmF5PEdyYXBoaWNPdmVydmlldz5cbiAgfVxuICBnZXQgdmFsdWVBc1VwZGF0ZUZyZXF1ZW5jeSgpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZSBhcyBVcGRhdGVGcmVxdWVuY3lcbiAgfVxuICBnZXQgdmFsdWVBc1RlbXBvcmFsRXh0ZW50cygpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZSBhcyBBcnJheTxEYXRhc2V0VGVtcG9yYWxFeHRlbnQ+XG4gIH1cbiAgZ2V0IHZhbHVlQXNLZXl3b3JkcygpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZSBhcyBBcnJheTxLZXl3b3JkPlxuICB9XG4gIGdldCB2YWx1ZUFzQ29uc3RyYWludHMoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUgYXMgQXJyYXk8Q29uc3RyYWludD5cbiAgfVxuICBnZXQgdmFsdWVBc0luZGl2aWR1YWxzKCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlIGFzIEFycmF5PEluZGl2aWR1YWw+XG4gIH1cbiAgZ2V0IHZhbHVlQXNPbmxpbmVSZXNvdXJjZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUgYXMgQXJyYXk8T25saW5lUmVzb3VyY2U+XG4gIH1cbn1cbiIsIjwhLS0gVEVNUE9SQVJZIC0gZGlzYWJsaW5nIHRoZSBvcGVuIGRhdGEgc3dpdGNoIC0tPlxuPCEtLSA8bmctY29udGFpbmVyICpuZ0lmPVwibW9kZWwgPT09ICdsaWNlbnNlcydcIj5cbiAgPGduLXVpLWZvcm0tZmllbGQtb3Blbi1kYXRhXG4gICAgW3ZhbHVlXT1cInZhbHVlQXNDb25zdHJhaW50c1wiXG4gICAgKHZhbHVlQ2hhbmdlKT1cInZhbHVlQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXG4gICAgKG9wZW5EYXRhQ2hhbmdlKT1cInRvZ2dsZUlzT3BlbkRhdGEoJGV2ZW50KVwiXG4gID48L2duLXVpLWZvcm0tZmllbGQtb3Blbi1kYXRhPlxuPC9uZy1jb250YWluZXI+IC0tPlxuPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgaC1mdWxsXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJ3aXRob3V0V3JhcHBlcjsgZWxzZSB3aXRoR2VuZXJpY1dyYXBwZXJcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmllbGRDb250ZW50XCI+PC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctdGVtcGxhdGUgI3dpdGhHZW5lcmljV3JhcHBlcj5cbiAgICA8Z24tdWktZm9ybS1maWVsZC13cmFwcGVyXG4gICAgICBbbGFiZWxdPVwiY29uZmlnLmxhYmVsS2V5ISB8IHRyYW5zbGF0ZVwiXG4gICAgICBbaGludF09XCJjb25maWcuaGludEtleSEgfCB0cmFuc2xhdGVcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWVsZENvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2duLXVpLWZvcm0tZmllbGQtd3JhcHBlcj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2ZpZWxkQ29udGVudD5cbiAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwibW9kZWxcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIndGl0bGUnXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBmbGV4LXN0YXJ0IGl0ZW1zLWNlbnRlciBnYXAtMyBtYi1bMTJweF1cIj5cbiAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgI3RpdGxlSW5wdXRcbiAgICAgICAgICBjZGtUZXh0YXJlYUF1dG9zaXplXG4gICAgICAgICAgI2F1dG9zaXplPVwiY2RrVGV4dGFyZWFBdXRvc2l6ZVwiXG4gICAgICAgICAgY2RrQXV0b3NpemVNaW5Sb3dzPVwiMVwiXG4gICAgICAgICAgZGF0YS10ZXN0PVwicmVjb3JkVGl0bGVJbnB1dFwiXG4gICAgICAgICAgY2xhc3M9XCJncm93IGZvbnQtdGl0bGUgdGV4dC0zeGwgZm9udC1ub3JtYWwgb3ZlcmZsb3ctaGlkZGVuXCJcbiAgICAgICAgICAoY2hhbmdlKT1cInZhbHVlQ2hhbmdlLmVtaXQoJGV2ZW50LnRhcmdldC52YWx1ZSlcIlxuICAgICAgICAgID57eyB2YWx1ZUFzU3RyaW5nIH19PC90ZXh0YXJlYVxuICAgICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGp1c3RpZnktYmV0d2VlbiBzZWxmLXN0YXJ0IG10LTAuNVwiPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgZ24tdWktaWNvbi1zbWFsbCBtLTIgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImZvY3VzVGl0bGVJbnB1dCgpXCJcbiAgICAgICAgICAgID5lZGl0PC9zcGFuXG4gICAgICAgICAgPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgZ24tdWktaWNvbi1zbWFsbCBtLTJcIlxuICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiY29uZmlnLmhpbnRLZXkhIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBoZWxwXG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidhYnN0cmFjdCdcIj5cbiAgICAgIDxnbi11aS1mb3JtLWZpZWxkLXJpY2hcbiAgICAgICAgW2xhYmVsXT1cImNvbmZpZy5sYWJlbEtleSEgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbaGludF09XCJjb25maWcuaGludEtleSEgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbdmFsdWVdPVwidmFsdWVBc1N0cmluZ1wiXG4gICAgICAgICh2YWx1ZUNoYW5nZSk9XCJ2YWx1ZUNoYW5nZS5lbWl0KCRldmVudClcIlxuICAgICAgPjwvZ24tdWktZm9ybS1maWVsZC1yaWNoPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidvdmVydmlld3MnXCI+XG4gICAgICA8Z24tdWktZm9ybS1maWVsZC1vdmVydmlld3NcbiAgICAgICAgW21ldGFkYXRhVXVpZF09XCJ1bmlxdWVJZGVudGlmaWVyXCJcbiAgICAgICAgW3ZhbHVlXT1cInZhbHVlQXNPdmVydmlld3NcIlxuICAgICAgICAodmFsdWVDaGFuZ2UpPVwidmFsdWVDaGFuZ2UuZW1pdCgkZXZlbnQpXCJcbiAgICAgID48L2duLXVpLWZvcm0tZmllbGQtb3ZlcnZpZXdzPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidyZXNvdXJjZVVwZGF0ZWQnXCI+XG4gICAgICA8Z24tdWktZm9ybS1maWVsZC1kYXRlLXVwZGF0ZWRcbiAgICAgICAgW3ZhbHVlXT1cInZhbHVlQXNEYXRlXCJcbiAgICAgICAgKHZhbHVlQ2hhbmdlKT1cInZhbHVlQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXG4gICAgICA+PC9nbi11aS1mb3JtLWZpZWxkLWRhdGUtdXBkYXRlZD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIndXBkYXRlRnJlcXVlbmN5J1wiPlxuICAgICAgPGduLXVpLWZvcm0tZmllbGQtdXBkYXRlLWZyZXF1ZW5jeVxuICAgICAgICBbdmFsdWVdPVwidmFsdWVBc1VwZGF0ZUZyZXF1ZW5jeVwiXG4gICAgICAgICh2YWx1ZUNoYW5nZSk9XCJ2YWx1ZUNoYW5nZS5lbWl0KCRldmVudClcIlxuICAgICAgPjwvZ24tdWktZm9ybS1maWVsZC11cGRhdGUtZnJlcXVlbmN5PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid0ZW1wb3JhbEV4dGVudHMnXCI+XG4gICAgICA8Z24tdWktZm9ybS1maWVsZC10ZW1wb3JhbC1leHRlbnRzXG4gICAgICAgIFt2YWx1ZV09XCJ2YWx1ZUFzVGVtcG9yYWxFeHRlbnRzXCJcbiAgICAgICAgKHZhbHVlQ2hhbmdlKT1cInZhbHVlQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXG4gICAgICA+PC9nbi11aS1mb3JtLWZpZWxkLXRlbXBvcmFsLWV4dGVudHM+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3NwYXRpYWxFeHRlbnRzJ1wiPlxuICAgICAgPGduLXVpLWZvcm0tZmllbGQtc3BhdGlhbC1leHRlbnQ+PC9nbi11aS1mb3JtLWZpZWxkLXNwYXRpYWwtZXh0ZW50PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidrZXl3b3JkcydcIj5cbiAgICAgIDxnbi11aS1mb3JtLWZpZWxkLWtleXdvcmRzXG4gICAgICAgIFt2YWx1ZV09XCJ2YWx1ZUFzS2V5d29yZHNcIlxuICAgICAgICAodmFsdWVDaGFuZ2UpPVwidmFsdWVDaGFuZ2UuZW1pdCgkZXZlbnQpXCJcbiAgICAgID48L2duLXVpLWZvcm0tZmllbGQta2V5d29yZHM+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2xpY2Vuc2VzJ1wiPlxuICAgICAgPGduLXVpLWZvcm0tZmllbGQtbGljZW5zZVxuICAgICAgICBbbGFiZWxdPVwiY29uZmlnLmxhYmVsS2V5ISB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFtyZWNvcmRDb25zdHJhaW50c109XCJ2YWx1ZUFzQ29uc3RyYWludHNcIlxuICAgICAgICAocmVjb3JkQ29uc3RyYWludHNDaGFuZ2UpPVwidmFsdWVDaGFuZ2UuZW1pdCgkZXZlbnQpXCJcbiAgICAgID48L2duLXVpLWZvcm0tZmllbGQtbGljZW5zZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidsZWdhbENvbnN0cmFpbnRzJ1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZvcm1GaWVsZENvbnN0cmFpbnRzXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3NlY3VyaXR5Q29uc3RyYWludHMnXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9ybUZpZWxkQ29uc3RyYWludHNcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInb3RoZXJDb25zdHJhaW50cydcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb3JtRmllbGRDb25zdHJhaW50c1wiPjwvbmctY29udGFpbmVyXG4gICAgPjwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjZm9ybUZpZWxkQ29uc3RyYWludHM+XG4gICAgICA8Z24tdWktZm9ybS1maWVsZC1jb25zdHJhaW50c1xuICAgICAgICBbbGFiZWxdPVwiY29uZmlnLmxhYmVsS2V5XCJcbiAgICAgICAgW3ZhbHVlXT1cInZhbHVlQXNDb25zdHJhaW50c1wiXG4gICAgICAgIFtjb25zdHJhaW50VHlwZV09XCJtb2RlbFwiXG4gICAgICAgICh2YWx1ZUNoYW5nZSk9XCJ2YWx1ZUNoYW5nZS5lbWl0KCRldmVudClcIlxuICAgICAgPjwvZ24tdWktZm9ybS1maWVsZC1jb25zdHJhaW50c1xuICAgID48L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2NvbnRhY3RzRm9yUmVzb3VyY2UnXCI+XG4gICAgICA8Z24tdWktZm9ybS1maWVsZC1jb250YWN0cy1mb3ItcmVzb3VyY2VcbiAgICAgICAgW3ZhbHVlXT1cInZhbHVlQXNJbmRpdmlkdWFsc1wiXG4gICAgICAgICh2YWx1ZUNoYW5nZSk9XCJ2YWx1ZUNoYW5nZS5lbWl0KCRldmVudClcIlxuICAgICAgPjwvZ24tdWktZm9ybS1maWVsZC1jb250YWN0cy1mb3ItcmVzb3VyY2U+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2NvbnRhY3RzJ1wiPlxuICAgICAgPGduLXVpLWZvcm0tZmllbGQtY29udGFjdHNcbiAgICAgICAgW3ZhbHVlXT1cInZhbHVlQXNJbmRpdmlkdWFsc1wiXG4gICAgICAgICh2YWx1ZUNoYW5nZSk9XCJ2YWx1ZUNoYW5nZS5lbWl0KCRldmVudClcIlxuICAgICAgPjwvZ24tdWktZm9ybS1maWVsZC1jb250YWN0cz5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInb25saW5lUmVzb3VyY2VzJ1wiPlxuICAgICAgPGduLXVpLWZvcm0tZmllbGQtb25saW5lLXJlc291cmNlc1xuICAgICAgICAqbmdJZj1cIm1vZGVsU3BlY2lmaWVyID09PSAnb25saW5lUmVzb3VyY2VUeXBlOiFsaW5rJ1wiXG4gICAgICAgIFttZXRhZGF0YVV1aWRdPVwidW5pcXVlSWRlbnRpZmllclwiXG4gICAgICAgIFt2YWx1ZV09XCJ2YWx1ZUFzT25saW5lUmVzb3VyY2VzXCJcbiAgICAgICAgKHZhbHVlQ2hhbmdlKT1cInZhbHVlQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXG4gICAgICA+PC9nbi11aS1mb3JtLWZpZWxkLW9ubGluZS1yZXNvdXJjZXM+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ29ubGluZVJlc291cmNlcydcIj5cbiAgICAgIDxnbi11aS1mb3JtLWZpZWxkLW9ubGluZS1saW5rLXJlc291cmNlc1xuICAgICAgICAqbmdJZj1cIm1vZGVsU3BlY2lmaWVyID09PSAnb25saW5lUmVzb3VyY2VUeXBlOmxpbmsnXCJcbiAgICAgICAgW21ldGFkYXRhVXVpZF09XCJ1bmlxdWVJZGVudGlmaWVyXCJcbiAgICAgICAgW3ZhbHVlXT1cInZhbHVlQXNPbmxpbmVSZXNvdXJjZXNcIlxuICAgICAgICAodmFsdWVDaGFuZ2UpPVwidmFsdWVDaGFuZ2UuZW1pdCgkZXZlbnQpXCJcbiAgICAgID48L2duLXVpLWZvcm0tZmllbGQtb25saW5lLWxpbmstcmVzb3VyY2VzPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW1vZGVsXCI+XG4gICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiY29tcG9uZW50TmFtZVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2Zvcm0tZmllbGQtY29uc3RyYWludHMtc2hvcnRjdXRzJ1wiPlxuICAgICAgICA8Z24tdWktZm9ybS1maWVsZC1jb25zdHJhaW50cy1zaG9ydGN1dHM+PC9nbi11aS1mb3JtLWZpZWxkLWNvbnN0cmFpbnRzLXNob3J0Y3V0cz5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -102,6 +102,8 @@ import { Polygon } from 'ol/geom';
102
102
  import * as i3$2 from '@angular/material/radio';
103
103
  import { MatRadioModule } from '@angular/material/radio';
104
104
  import { MatIconModule } from '@angular/material/icon';
105
+ import * as i4$2 from '@angular/cdk/text-field';
106
+ import { TextFieldModule } from '@angular/cdk/text-field';
105
107
  import * as i3$3 from '@ngrx/router-store';
106
108
  import { getRouterSelectors, routerReducer, StoreRouterConnectingModule, FullRouterStateSerializer } from '@ngrx/router-store';
107
109
  import { navigation } from '@ngrx/router-store/data-persistence';
@@ -39691,7 +39693,7 @@ class FormFieldComponent {
39691
39693
  this.isOpenData = event;
39692
39694
  }
39693
39695
  focusTitleInput() {
39694
- this.titleInput.nativeElement.children[0].focus();
39696
+ this.titleInput.nativeElement.focus();
39695
39697
  }
39696
39698
  get withoutWrapper() {
39697
39699
  return (this.model === 'title' ||
@@ -39729,7 +39731,7 @@ class FormFieldComponent {
39729
39731
  return this.value;
39730
39732
  }
39731
39733
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
39732
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormFieldComponent, isStandalone: true, selector: "gn-ui-form-field", inputs: { uniqueIdentifier: "uniqueIdentifier", model: "model", modelSpecifier: "modelSpecifier", componentName: "componentName", config: "config", value: "value" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "titleInput", first: true, predicate: ["titleInput"], descendants: true }], ngImport: i0, template: "<!-- TEMPORARY - disabling the open data switch -->\n<!-- <ng-container *ngIf=\"model === 'licenses'\">\n <gn-ui-form-field-open-data\n [value]=\"valueAsConstraints\"\n (valueChange)=\"valueChange.emit($event)\"\n (openDataChange)=\"toggleIsOpenData($event)\"\n ></gn-ui-form-field-open-data>\n</ng-container> -->\n<div class=\"flex flex-col h-full\">\n <ng-container *ngIf=\"withoutWrapper; else withGenericWrapper\">\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </ng-container>\n <ng-template #withGenericWrapper>\n <gn-ui-form-field-wrapper\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n >\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </gn-ui-form-field-wrapper>\n </ng-template>\n</div>\n\n<ng-template #fieldContent>\n <ng-container [ngSwitch]=\"model\">\n <ng-container *ngSwitchCase=\"'title'\">\n <div class=\"flex flex-row flex-start items-center gap-3 mb-[12px]\">\n <span\n #titleInput\n data-test=\"recordTitleInput\"\n class=\"grow font-title text-3xl font-normal\"\n [gnUiEditableLabel]=\"valueAsString\"\n (editableLabelChanged)=\"valueChange.emit($event)\"\n ></span>\n <div class=\"flex flex-row justify-between\">\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2 cursor-pointer\"\n (click)=\"focusTitleInput()\"\n >edit</span\n >\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2\"\n [matTooltip]=\"config.hintKey! | translate\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'abstract'\">\n <gn-ui-form-field-rich\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n [value]=\"valueAsString\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-rich>\n </ng-container>\n <ng-container *ngSwitchCase=\"'overviews'\">\n <gn-ui-form-field-overviews\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOverviews\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-overviews>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceUpdated'\">\n <gn-ui-form-field-date-updated\n [value]=\"valueAsDate\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-date-updated>\n </ng-container>\n <ng-container *ngSwitchCase=\"'updateFrequency'\">\n <gn-ui-form-field-update-frequency\n [value]=\"valueAsUpdateFrequency\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-update-frequency>\n </ng-container>\n <ng-container *ngSwitchCase=\"'temporalExtents'\">\n <gn-ui-form-field-temporal-extents\n [value]=\"valueAsTemporalExtents\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-temporal-extents>\n </ng-container>\n <ng-container *ngSwitchCase=\"'spatialExtents'\">\n <gn-ui-form-field-spatial-extent></gn-ui-form-field-spatial-extent>\n </ng-container>\n <ng-container *ngSwitchCase=\"'keywords'\">\n <gn-ui-form-field-keywords\n [value]=\"valueAsKeywords\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-keywords>\n </ng-container>\n <ng-container *ngSwitchCase=\"'licenses'\">\n <gn-ui-form-field-license\n [label]=\"config.labelKey! | translate\"\n [recordConstraints]=\"valueAsConstraints\"\n (recordConstraintsChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-license>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'legalConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'securityConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'otherConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container\n ></ng-container>\n <ng-template #formFieldConstraints>\n <gn-ui-form-field-constraints\n [label]=\"config.labelKey\"\n [value]=\"valueAsConstraints\"\n [constraintType]=\"model\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-constraints\n ></ng-template>\n\n <ng-container *ngSwitchCase=\"'contactsForResource'\">\n <gn-ui-form-field-contacts-for-resource\n [value]=\"valueAsIndividuals\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-contacts-for-resource>\n </ng-container>\n <ng-container *ngSwitchCase=\"'contacts'\">\n <gn-ui-form-field-contacts\n [value]=\"valueAsIndividuals\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-contacts>\n </ng-container>\n <ng-container *ngSwitchCase=\"'onlineResources'\">\n <gn-ui-form-field-online-resources\n *ngIf=\"modelSpecifier === 'onlineResourceType:!link'\"\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOnlineResources\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-online-resources>\n </ng-container>\n <ng-container *ngSwitchCase=\"'onlineResources'\">\n <gn-ui-form-field-online-link-resources\n *ngIf=\"modelSpecifier === 'onlineResourceType:link'\"\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOnlineResources\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-online-link-resources>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!model\">\n <ng-container [ngSwitch]=\"componentName\">\n <ng-container *ngSwitchCase=\"'form-field-constraints-shortcuts'\">\n <gn-ui-form-field-constraints-shortcuts></gn-ui-form-field-constraints-shortcuts>\n </ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: EditableLabelDirective, selector: "[gnUiEditableLabel]", inputs: ["gnUiEditableLabel"], outputs: ["editableLabelChanged"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: FormFieldWrapperComponent, selector: "gn-ui-form-field-wrapper", inputs: ["label", "hint"] }, { kind: "component", type: FormFieldLicenseComponent, selector: "gn-ui-form-field-license", inputs: ["label", "recordConstraints"], outputs: ["recordConstraintsChange"] }, { kind: "component", type: FormFieldDateUpdatedComponent, selector: "gn-ui-form-field-date-updated", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldUpdateFrequencyComponent, selector: "gn-ui-form-field-update-frequency", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldTemporalExtentsComponent, selector: "gn-ui-form-field-temporal-extents", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldRichComponent, selector: "gn-ui-form-field-rich", inputs: ["label", "hint", "placeholder", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldSpatialExtentComponent, selector: "gn-ui-form-field-spatial-extent" }, { kind: "component", type: FormFieldKeywordsComponent, selector: "gn-ui-form-field-keywords", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldOverviewsComponent, selector: "gn-ui-form-field-overviews", inputs: ["metadataUuid", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldContactsForResourceComponent, selector: "gn-ui-form-field-contacts-for-resource", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldOnlineResourcesComponent, selector: "gn-ui-form-field-online-resources", inputs: ["metadataUuid", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldOnlineLinkResourcesComponent, selector: "gn-ui-form-field-online-link-resources", inputs: ["metadataUuid", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldContactsComponent, selector: "gn-ui-form-field-contacts", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldConstraintsComponent, selector: "gn-ui-form-field-constraints", inputs: ["label", "value", "constraintType"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldConstraintsShortcutsComponent, selector: "gn-ui-form-field-constraints-shortcuts" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
39734
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormFieldComponent, isStandalone: true, selector: "gn-ui-form-field", inputs: { uniqueIdentifier: "uniqueIdentifier", model: "model", modelSpecifier: "modelSpecifier", componentName: "componentName", config: "config", value: "value" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "titleInput", first: true, predicate: ["titleInput"], descendants: true }], ngImport: i0, template: "<!-- TEMPORARY - disabling the open data switch -->\n<!-- <ng-container *ngIf=\"model === 'licenses'\">\n <gn-ui-form-field-open-data\n [value]=\"valueAsConstraints\"\n (valueChange)=\"valueChange.emit($event)\"\n (openDataChange)=\"toggleIsOpenData($event)\"\n ></gn-ui-form-field-open-data>\n</ng-container> -->\n<div class=\"flex flex-col h-full\">\n <ng-container *ngIf=\"withoutWrapper; else withGenericWrapper\">\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </ng-container>\n <ng-template #withGenericWrapper>\n <gn-ui-form-field-wrapper\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n >\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </gn-ui-form-field-wrapper>\n </ng-template>\n</div>\n\n<ng-template #fieldContent>\n <ng-container [ngSwitch]=\"model\">\n <ng-container *ngSwitchCase=\"'title'\">\n <div class=\"flex flex-row flex-start items-center gap-3 mb-[12px]\">\n <textarea\n #titleInput\n cdkTextareaAutosize\n #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"1\"\n data-test=\"recordTitleInput\"\n class=\"grow font-title text-3xl font-normal overflow-hidden\"\n (change)=\"valueChange.emit($event.target.value)\"\n >{{ valueAsString }}</textarea\n >\n <div class=\"flex flex-row justify-between self-start mt-0.5\">\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2 cursor-pointer\"\n (click)=\"focusTitleInput()\"\n >edit</span\n >\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2\"\n [matTooltip]=\"config.hintKey! | translate\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'abstract'\">\n <gn-ui-form-field-rich\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n [value]=\"valueAsString\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-rich>\n </ng-container>\n <ng-container *ngSwitchCase=\"'overviews'\">\n <gn-ui-form-field-overviews\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOverviews\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-overviews>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceUpdated'\">\n <gn-ui-form-field-date-updated\n [value]=\"valueAsDate\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-date-updated>\n </ng-container>\n <ng-container *ngSwitchCase=\"'updateFrequency'\">\n <gn-ui-form-field-update-frequency\n [value]=\"valueAsUpdateFrequency\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-update-frequency>\n </ng-container>\n <ng-container *ngSwitchCase=\"'temporalExtents'\">\n <gn-ui-form-field-temporal-extents\n [value]=\"valueAsTemporalExtents\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-temporal-extents>\n </ng-container>\n <ng-container *ngSwitchCase=\"'spatialExtents'\">\n <gn-ui-form-field-spatial-extent></gn-ui-form-field-spatial-extent>\n </ng-container>\n <ng-container *ngSwitchCase=\"'keywords'\">\n <gn-ui-form-field-keywords\n [value]=\"valueAsKeywords\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-keywords>\n </ng-container>\n <ng-container *ngSwitchCase=\"'licenses'\">\n <gn-ui-form-field-license\n [label]=\"config.labelKey! | translate\"\n [recordConstraints]=\"valueAsConstraints\"\n (recordConstraintsChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-license>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'legalConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'securityConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'otherConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container\n ></ng-container>\n <ng-template #formFieldConstraints>\n <gn-ui-form-field-constraints\n [label]=\"config.labelKey\"\n [value]=\"valueAsConstraints\"\n [constraintType]=\"model\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-constraints\n ></ng-template>\n\n <ng-container *ngSwitchCase=\"'contactsForResource'\">\n <gn-ui-form-field-contacts-for-resource\n [value]=\"valueAsIndividuals\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-contacts-for-resource>\n </ng-container>\n <ng-container *ngSwitchCase=\"'contacts'\">\n <gn-ui-form-field-contacts\n [value]=\"valueAsIndividuals\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-contacts>\n </ng-container>\n <ng-container *ngSwitchCase=\"'onlineResources'\">\n <gn-ui-form-field-online-resources\n *ngIf=\"modelSpecifier === 'onlineResourceType:!link'\"\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOnlineResources\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-online-resources>\n </ng-container>\n <ng-container *ngSwitchCase=\"'onlineResources'\">\n <gn-ui-form-field-online-link-resources\n *ngIf=\"modelSpecifier === 'onlineResourceType:link'\"\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOnlineResources\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-online-link-resources>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!model\">\n <ng-container [ngSwitch]=\"componentName\">\n <ng-container *ngSwitchCase=\"'form-field-constraints-shortcuts'\">\n <gn-ui-form-field-constraints-shortcuts></gn-ui-form-field-constraints-shortcuts>\n </ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: FormFieldWrapperComponent, selector: "gn-ui-form-field-wrapper", inputs: ["label", "hint"] }, { kind: "component", type: FormFieldLicenseComponent, selector: "gn-ui-form-field-license", inputs: ["label", "recordConstraints"], outputs: ["recordConstraintsChange"] }, { kind: "component", type: FormFieldDateUpdatedComponent, selector: "gn-ui-form-field-date-updated", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldUpdateFrequencyComponent, selector: "gn-ui-form-field-update-frequency", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldTemporalExtentsComponent, selector: "gn-ui-form-field-temporal-extents", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldRichComponent, selector: "gn-ui-form-field-rich", inputs: ["label", "hint", "placeholder", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldSpatialExtentComponent, selector: "gn-ui-form-field-spatial-extent" }, { kind: "component", type: FormFieldKeywordsComponent, selector: "gn-ui-form-field-keywords", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldOverviewsComponent, selector: "gn-ui-form-field-overviews", inputs: ["metadataUuid", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldContactsForResourceComponent, selector: "gn-ui-form-field-contacts-for-resource", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldOnlineResourcesComponent, selector: "gn-ui-form-field-online-resources", inputs: ["metadataUuid", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldOnlineLinkResourcesComponent, selector: "gn-ui-form-field-online-link-resources", inputs: ["metadataUuid", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldContactsComponent, selector: "gn-ui-form-field-contacts", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldConstraintsComponent, selector: "gn-ui-form-field-constraints", inputs: ["label", "value", "constraintType"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldConstraintsShortcutsComponent, selector: "gn-ui-form-field-constraints-shortcuts" }, { kind: "ngmodule", type: TextFieldModule }, { kind: "directive", type: i4$2.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
39733
39735
  }
39734
39736
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldComponent, decorators: [{
39735
39737
  type: Component,
@@ -39758,7 +39760,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
39758
39760
  FormFieldContactsComponent,
39759
39761
  FormFieldConstraintsComponent,
39760
39762
  FormFieldConstraintsShortcutsComponent,
39761
- ], template: "<!-- TEMPORARY - disabling the open data switch -->\n<!-- <ng-container *ngIf=\"model === 'licenses'\">\n <gn-ui-form-field-open-data\n [value]=\"valueAsConstraints\"\n (valueChange)=\"valueChange.emit($event)\"\n (openDataChange)=\"toggleIsOpenData($event)\"\n ></gn-ui-form-field-open-data>\n</ng-container> -->\n<div class=\"flex flex-col h-full\">\n <ng-container *ngIf=\"withoutWrapper; else withGenericWrapper\">\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </ng-container>\n <ng-template #withGenericWrapper>\n <gn-ui-form-field-wrapper\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n >\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </gn-ui-form-field-wrapper>\n </ng-template>\n</div>\n\n<ng-template #fieldContent>\n <ng-container [ngSwitch]=\"model\">\n <ng-container *ngSwitchCase=\"'title'\">\n <div class=\"flex flex-row flex-start items-center gap-3 mb-[12px]\">\n <span\n #titleInput\n data-test=\"recordTitleInput\"\n class=\"grow font-title text-3xl font-normal\"\n [gnUiEditableLabel]=\"valueAsString\"\n (editableLabelChanged)=\"valueChange.emit($event)\"\n ></span>\n <div class=\"flex flex-row justify-between\">\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2 cursor-pointer\"\n (click)=\"focusTitleInput()\"\n >edit</span\n >\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2\"\n [matTooltip]=\"config.hintKey! | translate\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'abstract'\">\n <gn-ui-form-field-rich\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n [value]=\"valueAsString\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-rich>\n </ng-container>\n <ng-container *ngSwitchCase=\"'overviews'\">\n <gn-ui-form-field-overviews\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOverviews\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-overviews>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceUpdated'\">\n <gn-ui-form-field-date-updated\n [value]=\"valueAsDate\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-date-updated>\n </ng-container>\n <ng-container *ngSwitchCase=\"'updateFrequency'\">\n <gn-ui-form-field-update-frequency\n [value]=\"valueAsUpdateFrequency\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-update-frequency>\n </ng-container>\n <ng-container *ngSwitchCase=\"'temporalExtents'\">\n <gn-ui-form-field-temporal-extents\n [value]=\"valueAsTemporalExtents\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-temporal-extents>\n </ng-container>\n <ng-container *ngSwitchCase=\"'spatialExtents'\">\n <gn-ui-form-field-spatial-extent></gn-ui-form-field-spatial-extent>\n </ng-container>\n <ng-container *ngSwitchCase=\"'keywords'\">\n <gn-ui-form-field-keywords\n [value]=\"valueAsKeywords\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-keywords>\n </ng-container>\n <ng-container *ngSwitchCase=\"'licenses'\">\n <gn-ui-form-field-license\n [label]=\"config.labelKey! | translate\"\n [recordConstraints]=\"valueAsConstraints\"\n (recordConstraintsChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-license>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'legalConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'securityConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'otherConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container\n ></ng-container>\n <ng-template #formFieldConstraints>\n <gn-ui-form-field-constraints\n [label]=\"config.labelKey\"\n [value]=\"valueAsConstraints\"\n [constraintType]=\"model\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-constraints\n ></ng-template>\n\n <ng-container *ngSwitchCase=\"'contactsForResource'\">\n <gn-ui-form-field-contacts-for-resource\n [value]=\"valueAsIndividuals\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-contacts-for-resource>\n </ng-container>\n <ng-container *ngSwitchCase=\"'contacts'\">\n <gn-ui-form-field-contacts\n [value]=\"valueAsIndividuals\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-contacts>\n </ng-container>\n <ng-container *ngSwitchCase=\"'onlineResources'\">\n <gn-ui-form-field-online-resources\n *ngIf=\"modelSpecifier === 'onlineResourceType:!link'\"\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOnlineResources\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-online-resources>\n </ng-container>\n <ng-container *ngSwitchCase=\"'onlineResources'\">\n <gn-ui-form-field-online-link-resources\n *ngIf=\"modelSpecifier === 'onlineResourceType:link'\"\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOnlineResources\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-online-link-resources>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!model\">\n <ng-container [ngSwitch]=\"componentName\">\n <ng-container *ngSwitchCase=\"'form-field-constraints-shortcuts'\">\n <gn-ui-form-field-constraints-shortcuts></gn-ui-form-field-constraints-shortcuts>\n </ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n" }]
39763
+ TextFieldModule,
39764
+ ], template: "<!-- TEMPORARY - disabling the open data switch -->\n<!-- <ng-container *ngIf=\"model === 'licenses'\">\n <gn-ui-form-field-open-data\n [value]=\"valueAsConstraints\"\n (valueChange)=\"valueChange.emit($event)\"\n (openDataChange)=\"toggleIsOpenData($event)\"\n ></gn-ui-form-field-open-data>\n</ng-container> -->\n<div class=\"flex flex-col h-full\">\n <ng-container *ngIf=\"withoutWrapper; else withGenericWrapper\">\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </ng-container>\n <ng-template #withGenericWrapper>\n <gn-ui-form-field-wrapper\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n >\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </gn-ui-form-field-wrapper>\n </ng-template>\n</div>\n\n<ng-template #fieldContent>\n <ng-container [ngSwitch]=\"model\">\n <ng-container *ngSwitchCase=\"'title'\">\n <div class=\"flex flex-row flex-start items-center gap-3 mb-[12px]\">\n <textarea\n #titleInput\n cdkTextareaAutosize\n #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"1\"\n data-test=\"recordTitleInput\"\n class=\"grow font-title text-3xl font-normal overflow-hidden\"\n (change)=\"valueChange.emit($event.target.value)\"\n >{{ valueAsString }}</textarea\n >\n <div class=\"flex flex-row justify-between self-start mt-0.5\">\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2 cursor-pointer\"\n (click)=\"focusTitleInput()\"\n >edit</span\n >\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2\"\n [matTooltip]=\"config.hintKey! | translate\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'abstract'\">\n <gn-ui-form-field-rich\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n [value]=\"valueAsString\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-rich>\n </ng-container>\n <ng-container *ngSwitchCase=\"'overviews'\">\n <gn-ui-form-field-overviews\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOverviews\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-overviews>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceUpdated'\">\n <gn-ui-form-field-date-updated\n [value]=\"valueAsDate\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-date-updated>\n </ng-container>\n <ng-container *ngSwitchCase=\"'updateFrequency'\">\n <gn-ui-form-field-update-frequency\n [value]=\"valueAsUpdateFrequency\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-update-frequency>\n </ng-container>\n <ng-container *ngSwitchCase=\"'temporalExtents'\">\n <gn-ui-form-field-temporal-extents\n [value]=\"valueAsTemporalExtents\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-temporal-extents>\n </ng-container>\n <ng-container *ngSwitchCase=\"'spatialExtents'\">\n <gn-ui-form-field-spatial-extent></gn-ui-form-field-spatial-extent>\n </ng-container>\n <ng-container *ngSwitchCase=\"'keywords'\">\n <gn-ui-form-field-keywords\n [value]=\"valueAsKeywords\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-keywords>\n </ng-container>\n <ng-container *ngSwitchCase=\"'licenses'\">\n <gn-ui-form-field-license\n [label]=\"config.labelKey! | translate\"\n [recordConstraints]=\"valueAsConstraints\"\n (recordConstraintsChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-license>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'legalConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'securityConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'otherConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container\n ></ng-container>\n <ng-template #formFieldConstraints>\n <gn-ui-form-field-constraints\n [label]=\"config.labelKey\"\n [value]=\"valueAsConstraints\"\n [constraintType]=\"model\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-constraints\n ></ng-template>\n\n <ng-container *ngSwitchCase=\"'contactsForResource'\">\n <gn-ui-form-field-contacts-for-resource\n [value]=\"valueAsIndividuals\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-contacts-for-resource>\n </ng-container>\n <ng-container *ngSwitchCase=\"'contacts'\">\n <gn-ui-form-field-contacts\n [value]=\"valueAsIndividuals\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-contacts>\n </ng-container>\n <ng-container *ngSwitchCase=\"'onlineResources'\">\n <gn-ui-form-field-online-resources\n *ngIf=\"modelSpecifier === 'onlineResourceType:!link'\"\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOnlineResources\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-online-resources>\n </ng-container>\n <ng-container *ngSwitchCase=\"'onlineResources'\">\n <gn-ui-form-field-online-link-resources\n *ngIf=\"modelSpecifier === 'onlineResourceType:link'\"\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOnlineResources\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-online-link-resources>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!model\">\n <ng-container [ngSwitch]=\"componentName\">\n <ng-container *ngSwitchCase=\"'form-field-constraints-shortcuts'\">\n <gn-ui-form-field-constraints-shortcuts></gn-ui-form-field-constraints-shortcuts>\n </ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n" }]
39762
39765
  }], propDecorators: { uniqueIdentifier: [{
39763
39766
  type: Input
39764
39767
  }], model: [{