@myrmidon/cadmus-part-codicology-sheet-labels 2.0.7 → 2.0.9

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.
@@ -39,8 +39,8 @@ import { CodLocationConverterComponent } from './cod-location-converter/cod-loca
39
39
  import * as i0 from "@angular/core";
40
40
  export class CadmusPartCodicologySheetLabelsModule {
41
41
  }
42
- CadmusPartCodicologySheetLabelsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: CadmusPartCodicologySheetLabelsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
43
- CadmusPartCodicologySheetLabelsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.1", ngImport: i0, type: CadmusPartCodicologySheetLabelsModule, declarations: [CodCColDefinitionComponent,
42
+ CadmusPartCodicologySheetLabelsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: CadmusPartCodicologySheetLabelsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
43
+ CadmusPartCodicologySheetLabelsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.2", ngImport: i0, type: CadmusPartCodicologySheetLabelsModule, declarations: [CodCColDefinitionComponent,
44
44
  CodEndleafComponent,
45
45
  CodLabelCellComponent,
46
46
  CodLocationConverterComponent,
@@ -87,7 +87,7 @@ CadmusPartCodicologySheetLabelsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVers
87
87
  CodSColDefinitionComponent,
88
88
  CodSheetLabelsPartComponent,
89
89
  CodSheetLabelsPartFeatureComponent] });
90
- CadmusPartCodicologySheetLabelsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: CadmusPartCodicologySheetLabelsModule, imports: [CommonModule,
90
+ CadmusPartCodicologySheetLabelsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: CadmusPartCodicologySheetLabelsModule, imports: [CommonModule,
91
91
  FormsModule,
92
92
  ReactiveFormsModule,
93
93
  ClipboardModule,
@@ -116,7 +116,7 @@ CadmusPartCodicologySheetLabelsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVers
116
116
  CadmusUiFlagsPickerModule,
117
117
  CadmusCodicologyUiModule,
118
118
  CadmusRefsLookupModule] });
119
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: CadmusPartCodicologySheetLabelsModule, decorators: [{
119
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: CadmusPartCodicologySheetLabelsModule, decorators: [{
120
120
  type: NgModule,
121
121
  args: [{
122
122
  declarations: [
@@ -78,9 +78,9 @@ export class CodCColDefinitionComponent {
78
78
  this.definitionChange.emit(this.getModel());
79
79
  }
80
80
  }
81
- CodCColDefinitionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: CodCColDefinitionComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
82
- CodCColDefinitionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.1", type: CodCColDefinitionComponent, selector: "cadmus-cod-c-col-definition", inputs: { definition: "definition", posEntries: "posEntries" }, outputs: { definitionChange: "definitionChange", editorClose: "editorClose" }, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <div class=\"form-row\">\r\n <!-- rank -->\r\n <mat-form-field style=\"width: 6em\">\r\n <mat-label>rank</mat-label>\r\n <input matInput [formControl]=\"rank\" type=\"number\" min=\"0\" />\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"form-row\">\r\n <!-- position (bound) -->\r\n <mat-form-field *ngIf=\"posEntries?.length\" class=\"form-col\">\r\n <mat-label>position</mat-label>\r\n <mat-select [formControl]=\"position\">\r\n <mat-option *ngFor=\"let e of posEntries\" [value]=\"e.id\">{{\r\n e.value\r\n }}</mat-option>\r\n </mat-select>\r\n <mat-error\r\n *ngIf=\"\r\n $any(position).errors?.required &&\r\n (position.dirty || position.touched)\r\n \"\r\n >position required</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- position (free) -->\r\n <mat-form-field *ngIf=\"!posEntries?.length\" class=\"form-col\">\r\n <mat-label>position</mat-label>\r\n <input matInput [formControl]=\"position\" />\r\n <mat-error\r\n *ngIf=\"\r\n $any(position).errors?.required &&\r\n (position.dirty || position.touched)\r\n \"\r\n >position required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"\r\n $any(position).errors?.maxLength &&\r\n (position.dirty || position.touched)\r\n \"\r\n >position too long</mat-error\r\n >\r\n </mat-form-field>\r\n\r\n <!-- isVertical -->\r\n <mat-checkbox [formControl]=\"isVertical\">vertical</mat-checkbox>\r\n </div>\r\n\r\n <div>\r\n <!-- decoration -->\r\n <mat-form-field class=\"long-text\">\r\n <mat-label>decoration</mat-label>\r\n <input matInput [formControl]=\"decoration\" />\r\n <mat-error\r\n *ngIf=\"\r\n $any(decoration).errors?.maxLength &&\r\n (decoration.dirty || decoration.touched)\r\n \"\r\n >decoration too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n\r\n <div>\r\n <!-- note -->\r\n <mat-form-field class=\"long-text\">\r\n <mat-label>note</mat-label>\r\n <input matInput [formControl]=\"note\" />\r\n <mat-error\r\n *ngIf=\"$any(note).errors?.maxLength && (note.dirty || note.touched)\"\r\n >note too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n\r\n <!-- buttons -->\r\n <div>\r\n <button\r\n type=\"button\"\r\n color=\"warn\"\r\n mat-icon-button\r\n matTooltip=\"Discard changes\"\r\n (click)=\"cancel()\"\r\n >\r\n <mat-icon>clear</mat-icon>\r\n </button>\r\n <button\r\n type=\"submit\"\r\n color=\"primary\"\r\n mat-icon-button\r\n matTooltip=\"Accept changes\"\r\n [disabled]=\"form.invalid || form.pristine\"\r\n >\r\n <mat-icon>check_circle</mat-icon>\r\n </button>\r\n </div>\r\n</form>\r\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}.long-text{width:100%;max-width:800px}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatLabel, selector: "mat-label" }, { kind: "directive", type: i7.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i8.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i9.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i10.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
83
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: CodCColDefinitionComponent, decorators: [{
81
+ CodCColDefinitionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: CodCColDefinitionComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
82
+ CodCColDefinitionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.2", type: CodCColDefinitionComponent, selector: "cadmus-cod-c-col-definition", inputs: { definition: "definition", posEntries: "posEntries" }, outputs: { definitionChange: "definitionChange", editorClose: "editorClose" }, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <div class=\"form-row\">\r\n <!-- rank -->\r\n <mat-form-field style=\"width: 6em\">\r\n <mat-label>rank</mat-label>\r\n <input matInput [formControl]=\"rank\" type=\"number\" min=\"0\" />\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"form-row\">\r\n <!-- position (bound) -->\r\n <mat-form-field *ngIf=\"posEntries?.length\" class=\"form-col\">\r\n <mat-label>position</mat-label>\r\n <mat-select [formControl]=\"position\">\r\n <mat-option *ngFor=\"let e of posEntries\" [value]=\"e.id\">{{\r\n e.value\r\n }}</mat-option>\r\n </mat-select>\r\n <mat-error\r\n *ngIf=\"\r\n $any(position).errors?.required &&\r\n (position.dirty || position.touched)\r\n \"\r\n >position required</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- position (free) -->\r\n <mat-form-field *ngIf=\"!posEntries?.length\" class=\"form-col\">\r\n <mat-label>position</mat-label>\r\n <input matInput [formControl]=\"position\" />\r\n <mat-error\r\n *ngIf=\"\r\n $any(position).errors?.required &&\r\n (position.dirty || position.touched)\r\n \"\r\n >position required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"\r\n $any(position).errors?.maxLength &&\r\n (position.dirty || position.touched)\r\n \"\r\n >position too long</mat-error\r\n >\r\n </mat-form-field>\r\n\r\n <!-- isVertical -->\r\n <mat-checkbox [formControl]=\"isVertical\">vertical</mat-checkbox>\r\n </div>\r\n\r\n <div>\r\n <!-- decoration -->\r\n <mat-form-field class=\"long-text\">\r\n <mat-label>decoration</mat-label>\r\n <input matInput [formControl]=\"decoration\" />\r\n <mat-error\r\n *ngIf=\"\r\n $any(decoration).errors?.maxLength &&\r\n (decoration.dirty || decoration.touched)\r\n \"\r\n >decoration too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n\r\n <div>\r\n <!-- note -->\r\n <mat-form-field class=\"long-text\">\r\n <mat-label>note</mat-label>\r\n <input matInput [formControl]=\"note\" />\r\n <mat-error\r\n *ngIf=\"$any(note).errors?.maxLength && (note.dirty || note.touched)\"\r\n >note too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n\r\n <!-- buttons -->\r\n <div>\r\n <button\r\n type=\"button\"\r\n color=\"warn\"\r\n mat-icon-button\r\n matTooltip=\"Discard changes\"\r\n (click)=\"cancel()\"\r\n >\r\n <mat-icon>clear</mat-icon>\r\n </button>\r\n <button\r\n type=\"submit\"\r\n color=\"primary\"\r\n mat-icon-button\r\n matTooltip=\"Accept changes\"\r\n [disabled]=\"form.invalid || form.pristine\"\r\n >\r\n <mat-icon>check_circle</mat-icon>\r\n </button>\r\n </div>\r\n</form>\r\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}.long-text{width:100%;max-width:800px}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatLabel, selector: "mat-label" }, { kind: "directive", type: i7.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i8.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i9.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i10.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
83
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: CodCColDefinitionComponent, decorators: [{
84
84
  type: Component,
85
85
  args: [{ selector: 'cadmus-cod-c-col-definition', template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <div class=\"form-row\">\r\n <!-- rank -->\r\n <mat-form-field style=\"width: 6em\">\r\n <mat-label>rank</mat-label>\r\n <input matInput [formControl]=\"rank\" type=\"number\" min=\"0\" />\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"form-row\">\r\n <!-- position (bound) -->\r\n <mat-form-field *ngIf=\"posEntries?.length\" class=\"form-col\">\r\n <mat-label>position</mat-label>\r\n <mat-select [formControl]=\"position\">\r\n <mat-option *ngFor=\"let e of posEntries\" [value]=\"e.id\">{{\r\n e.value\r\n }}</mat-option>\r\n </mat-select>\r\n <mat-error\r\n *ngIf=\"\r\n $any(position).errors?.required &&\r\n (position.dirty || position.touched)\r\n \"\r\n >position required</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- position (free) -->\r\n <mat-form-field *ngIf=\"!posEntries?.length\" class=\"form-col\">\r\n <mat-label>position</mat-label>\r\n <input matInput [formControl]=\"position\" />\r\n <mat-error\r\n *ngIf=\"\r\n $any(position).errors?.required &&\r\n (position.dirty || position.touched)\r\n \"\r\n >position required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"\r\n $any(position).errors?.maxLength &&\r\n (position.dirty || position.touched)\r\n \"\r\n >position too long</mat-error\r\n >\r\n </mat-form-field>\r\n\r\n <!-- isVertical -->\r\n <mat-checkbox [formControl]=\"isVertical\">vertical</mat-checkbox>\r\n </div>\r\n\r\n <div>\r\n <!-- decoration -->\r\n <mat-form-field class=\"long-text\">\r\n <mat-label>decoration</mat-label>\r\n <input matInput [formControl]=\"decoration\" />\r\n <mat-error\r\n *ngIf=\"\r\n $any(decoration).errors?.maxLength &&\r\n (decoration.dirty || decoration.touched)\r\n \"\r\n >decoration too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n\r\n <div>\r\n <!-- note -->\r\n <mat-form-field class=\"long-text\">\r\n <mat-label>note</mat-label>\r\n <input matInput [formControl]=\"note\" />\r\n <mat-error\r\n *ngIf=\"$any(note).errors?.maxLength && (note.dirty || note.touched)\"\r\n >note too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n\r\n <!-- buttons -->\r\n <div>\r\n <button\r\n type=\"button\"\r\n color=\"warn\"\r\n mat-icon-button\r\n matTooltip=\"Discard changes\"\r\n (click)=\"cancel()\"\r\n >\r\n <mat-icon>clear</mat-icon>\r\n </button>\r\n <button\r\n type=\"submit\"\r\n color=\"primary\"\r\n mat-icon-button\r\n matTooltip=\"Accept changes\"\r\n [disabled]=\"form.invalid || form.pristine\"\r\n >\r\n <mat-icon>check_circle</mat-icon>\r\n </button>\r\n </div>\r\n</form>\r\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}.long-text{width:100%;max-width:800px}\n"] }]
86
86
  }], ctorParameters: function () { return [{ type: i1.FormBuilder }]; }, propDecorators: { definition: [{
@@ -75,9 +75,9 @@ export class CodEndleafComponent {
75
75
  this.endleafChange.emit(this.getModel());
76
76
  }
77
77
  }
78
- CodEndleafComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: CodEndleafComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
79
- CodEndleafComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.1", type: CodEndleafComponent, selector: "cadmus-cod-endleaf", inputs: { endleaf: "endleaf", matEntries: "matEntries", ctTagEntries: "ctTagEntries", assTagEntries: "assTagEntries", refTypeEntries: "refTypeEntries", refTagEntries: "refTagEntries", locations: "locations" }, outputs: { endleafChange: "endleafChange", editorClose: "editorClose" }, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <div class=\"form-row\">\r\n <!-- location -->\r\n <mat-form-field>\r\n <mat-label>location</mat-label>\r\n <mat-select [formControl]=\"location\">\r\n <mat-option *ngFor=\"let l of locations\" [value]=\"l\">{{ l }}</mat-option>\r\n </mat-select>\r\n <mat-error\r\n *ngIf=\"\r\n $any(location).errors?.required &&\r\n (location.dirty || location.touched)\r\n \"\r\n >location required</mat-error\r\n >\r\n </mat-form-field>\r\n\r\n <!-- material (bound) -->\r\n <mat-form-field *ngIf=\"matEntries?.length\" class=\"form-col\">\r\n <mat-label>material</mat-label>\r\n <mat-select [formControl]=\"material\">\r\n <mat-option *ngFor=\"let e of matEntries\" [value]=\"e.id\">{{\r\n e.value\r\n }}</mat-option>\r\n </mat-select>\r\n <mat-error\r\n *ngIf=\"\r\n $any(material).errors?.required &&\r\n (material.dirty || material.touched)\r\n \"\r\n >material required</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- material (free) -->\r\n <mat-form-field *ngIf=\"!matEntries?.length\" class=\"form-col\">\r\n <mat-label>material</mat-label>\r\n <input matInput [formControl]=\"material\" />\r\n <mat-error\r\n *ngIf=\"\r\n $any(material).errors?.required &&\r\n (material.dirty || material.touched)\r\n \"\r\n >material required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"\r\n $any(material).errors?.maxLength &&\r\n (material.dirty || material.touched)\r\n \"\r\n >material too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n\r\n <!-- chronotope -->\r\n <cadmus-refs-asserted-chronotope\r\n [tagEntries]=\"ctTagEntries\"\r\n [assTagEntries]=\"assTagEntries\"\r\n [refTagEntries]=\"refTagEntries\"\r\n [refTypeEntries]=\"refTypeEntries\"\r\n [chronotope]=\"initialChronotope\"\r\n (chronotopeChange)=\"onChronotopeChange($event)\"\r\n >\r\n </cadmus-refs-asserted-chronotope>\r\n\r\n <!-- buttons -->\r\n <div>\r\n <button\r\n type=\"button\"\r\n color=\"warn\"\r\n mat-icon-button\r\n matTooltip=\"Discard changes\"\r\n (click)=\"cancel()\"\r\n >\r\n <mat-icon>clear</mat-icon>\r\n </button>\r\n <button\r\n type=\"submit\"\r\n color=\"primary\"\r\n mat-icon-button\r\n matTooltip=\"Accept changes\"\r\n [disabled]=\"form.invalid || form.pristine\"\r\n >\r\n <mat-icon>check_circle</mat-icon>\r\n </button>\r\n </div>\r\n</form>\r\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}.long-text{width:100%;max-width:800px}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i7.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i8.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i10.AssertedChronotopeComponent, selector: "cadmus-refs-asserted-chronotope", inputs: ["chronotope", "tagEntries", "assTagEntries", "refTypeEntries", "refTagEntries"], outputs: ["chronotopeChange"] }] });
80
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: CodEndleafComponent, decorators: [{
78
+ CodEndleafComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: CodEndleafComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
79
+ CodEndleafComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.2", type: CodEndleafComponent, selector: "cadmus-cod-endleaf", inputs: { endleaf: "endleaf", matEntries: "matEntries", ctTagEntries: "ctTagEntries", assTagEntries: "assTagEntries", refTypeEntries: "refTypeEntries", refTagEntries: "refTagEntries", locations: "locations" }, outputs: { endleafChange: "endleafChange", editorClose: "editorClose" }, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <div class=\"form-row\">\r\n <!-- location -->\r\n <mat-form-field>\r\n <mat-label>location</mat-label>\r\n <mat-select [formControl]=\"location\">\r\n <mat-option *ngFor=\"let l of locations\" [value]=\"l\">{{ l }}</mat-option>\r\n </mat-select>\r\n <mat-error\r\n *ngIf=\"\r\n $any(location).errors?.required &&\r\n (location.dirty || location.touched)\r\n \"\r\n >location required</mat-error\r\n >\r\n </mat-form-field>\r\n\r\n <!-- material (bound) -->\r\n <mat-form-field *ngIf=\"matEntries?.length\" class=\"form-col\">\r\n <mat-label>material</mat-label>\r\n <mat-select [formControl]=\"material\">\r\n <mat-option *ngFor=\"let e of matEntries\" [value]=\"e.id\">{{\r\n e.value\r\n }}</mat-option>\r\n </mat-select>\r\n <mat-error\r\n *ngIf=\"\r\n $any(material).errors?.required &&\r\n (material.dirty || material.touched)\r\n \"\r\n >material required</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- material (free) -->\r\n <mat-form-field *ngIf=\"!matEntries?.length\" class=\"form-col\">\r\n <mat-label>material</mat-label>\r\n <input matInput [formControl]=\"material\" />\r\n <mat-error\r\n *ngIf=\"\r\n $any(material).errors?.required &&\r\n (material.dirty || material.touched)\r\n \"\r\n >material required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"\r\n $any(material).errors?.maxLength &&\r\n (material.dirty || material.touched)\r\n \"\r\n >material too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n\r\n <!-- chronotope -->\r\n <cadmus-refs-asserted-chronotope\r\n [tagEntries]=\"ctTagEntries\"\r\n [assTagEntries]=\"assTagEntries\"\r\n [refTagEntries]=\"refTagEntries\"\r\n [refTypeEntries]=\"refTypeEntries\"\r\n [chronotope]=\"initialChronotope\"\r\n (chronotopeChange)=\"onChronotopeChange($event)\"\r\n >\r\n </cadmus-refs-asserted-chronotope>\r\n\r\n <!-- buttons -->\r\n <div>\r\n <button\r\n type=\"button\"\r\n color=\"warn\"\r\n mat-icon-button\r\n matTooltip=\"Discard changes\"\r\n (click)=\"cancel()\"\r\n >\r\n <mat-icon>clear</mat-icon>\r\n </button>\r\n <button\r\n type=\"submit\"\r\n color=\"primary\"\r\n mat-icon-button\r\n matTooltip=\"Accept changes\"\r\n [disabled]=\"form.invalid || form.pristine\"\r\n >\r\n <mat-icon>check_circle</mat-icon>\r\n </button>\r\n </div>\r\n</form>\r\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}.long-text{width:100%;max-width:800px}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i7.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i8.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i10.AssertedChronotopeComponent, selector: "cadmus-refs-asserted-chronotope", inputs: ["chronotope", "tagEntries", "assTagEntries", "refTypeEntries", "refTagEntries"], outputs: ["chronotopeChange"] }] });
80
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: CodEndleafComponent, decorators: [{
81
81
  type: Component,
82
82
  args: [{ selector: 'cadmus-cod-endleaf', template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <div class=\"form-row\">\r\n <!-- location -->\r\n <mat-form-field>\r\n <mat-label>location</mat-label>\r\n <mat-select [formControl]=\"location\">\r\n <mat-option *ngFor=\"let l of locations\" [value]=\"l\">{{ l }}</mat-option>\r\n </mat-select>\r\n <mat-error\r\n *ngIf=\"\r\n $any(location).errors?.required &&\r\n (location.dirty || location.touched)\r\n \"\r\n >location required</mat-error\r\n >\r\n </mat-form-field>\r\n\r\n <!-- material (bound) -->\r\n <mat-form-field *ngIf=\"matEntries?.length\" class=\"form-col\">\r\n <mat-label>material</mat-label>\r\n <mat-select [formControl]=\"material\">\r\n <mat-option *ngFor=\"let e of matEntries\" [value]=\"e.id\">{{\r\n e.value\r\n }}</mat-option>\r\n </mat-select>\r\n <mat-error\r\n *ngIf=\"\r\n $any(material).errors?.required &&\r\n (material.dirty || material.touched)\r\n \"\r\n >material required</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- material (free) -->\r\n <mat-form-field *ngIf=\"!matEntries?.length\" class=\"form-col\">\r\n <mat-label>material</mat-label>\r\n <input matInput [formControl]=\"material\" />\r\n <mat-error\r\n *ngIf=\"\r\n $any(material).errors?.required &&\r\n (material.dirty || material.touched)\r\n \"\r\n >material required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"\r\n $any(material).errors?.maxLength &&\r\n (material.dirty || material.touched)\r\n \"\r\n >material too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n\r\n <!-- chronotope -->\r\n <cadmus-refs-asserted-chronotope\r\n [tagEntries]=\"ctTagEntries\"\r\n [assTagEntries]=\"assTagEntries\"\r\n [refTagEntries]=\"refTagEntries\"\r\n [refTypeEntries]=\"refTypeEntries\"\r\n [chronotope]=\"initialChronotope\"\r\n (chronotopeChange)=\"onChronotopeChange($event)\"\r\n >\r\n </cadmus-refs-asserted-chronotope>\r\n\r\n <!-- buttons -->\r\n <div>\r\n <button\r\n type=\"button\"\r\n color=\"warn\"\r\n mat-icon-button\r\n matTooltip=\"Discard changes\"\r\n (click)=\"cancel()\"\r\n >\r\n <mat-icon>clear</mat-icon>\r\n </button>\r\n <button\r\n type=\"submit\"\r\n color=\"primary\"\r\n mat-icon-button\r\n matTooltip=\"Accept changes\"\r\n [disabled]=\"form.invalid || form.pristine\"\r\n >\r\n <mat-icon>check_circle</mat-icon>\r\n </button>\r\n </div>\r\n</form>\r\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}.long-text{width:100%;max-width:800px}\n"] }]
83
83
  }], ctorParameters: function () { return [{ type: i1.FormBuilder }]; }, propDecorators: { endleaf: [{
@@ -81,9 +81,9 @@ export class CodLabelCellComponent {
81
81
  this.editMode = 'none';
82
82
  }
83
83
  }
84
- CodLabelCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: CodLabelCellComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
85
- CodLabelCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.1", type: CodLabelCellComponent, selector: "cadmus-cod-label-cell", inputs: { cell: "cell", color: "color" }, outputs: { cellChange: "cellChange" }, viewQueries: [{ propertyName: "valueElement", first: true, predicate: ["valueInput"], descendants: true }, { propertyName: "noteElement", first: true, predicate: ["noteInput"], descendants: true }], ngImport: i0, template: "<div\r\n *ngIf=\"cell\"\r\n class=\"cell\"\r\n [style.background-color]=\"color || 'transparent'\"\r\n>\r\n <!-- display -->\r\n <div *ngIf=\"editMode === 'none'\" class=\"form-row-center\">\r\n <span>{{ cell.value }}</span>\r\n <span *ngIf=\"cell.note\" [matTooltip]=\"cell.note\">\r\n <mat-icon>description</mat-icon>\r\n </span>\r\n <button\r\n class=\"muted\"\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Edit value\"\r\n color=\"primary\"\r\n (click)=\"editValue()\"\r\n >\r\n <mat-icon>edit</mat-icon>\r\n </button>\r\n <button\r\n class=\"muted\"\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Edit note\"\r\n (click)=\"editNote()\"\r\n >\r\n <mat-icon>edit_note</mat-icon>\r\n </button>\r\n </div>\r\n <!-- edit -->\r\n <form\r\n [formGroup]=\"form\"\r\n (submit)=\"saveEdit()\"\r\n *ngIf=\"editMode !== 'none'\"\r\n class=\"form-row\"\r\n >\r\n <!-- value -->\r\n <mat-form-field *ngIf=\"editMode === 'value'\">\r\n <mat-label>value</mat-label>\r\n <input\r\n #valueInput\r\n matInput\r\n type=\"text\"\r\n spellcheck=\"false\"\r\n [formControl]=\"value\"\r\n (keydown.esc)=\"cancelEdit()\"\r\n />\r\n <mat-error\r\n *ngIf=\"value.hasError('maxLength') && (value.dirty || value.touched)\"\r\n >value too long</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- note -->\r\n <mat-form-field *ngIf=\"editMode === 'note'\">\r\n <mat-label>note</mat-label>\r\n <input\r\n #noteInput\r\n matInput\r\n type=\"text\"\r\n [formControl]=\"note\"\r\n (keydown.esc)=\"cancelEdit()\"\r\n />\r\n <mat-error\r\n *ngIf=\"note.hasError('maxLength') && (note.dirty || note.touched)\"\r\n >note too long</mat-error\r\n >\r\n </mat-form-field>\r\n\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Discard edit\"\r\n color=\"warn\"\r\n (click)=\"cancelEdit()\"\r\n >\r\n <mat-icon>clear</mat-icon>\r\n </button>\r\n <button\r\n type=\"submit\"\r\n [disabled]=\"form.invalid\"\r\n mat-icon-button\r\n matTooltip=\"Save edit\"\r\n color=\"primary\"\r\n >\r\n <mat-icon>check_circle</mat-icon>\r\n </button>\r\n </form>\r\n</div>\r\n", styles: ["div.cell{margin:2px;padding-left:4px;padding-right:4px;border:1px solid transparent;border-radius:4px}div.cell:hover{margin:2px;padding-left:4px;padding-right:4px;border:1px solid gray;border-radius:4px}.form-row{display:flex;gap:4px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}.form-row-center{display:flex;gap:4px;align-items:center;justify-content:center;flex-wrap:wrap}.form-row-center *{flex:0 0 auto}.muted{opacity:20%}.muted:hover{opacity:100%}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i7.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
86
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: CodLabelCellComponent, decorators: [{
84
+ CodLabelCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: CodLabelCellComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
85
+ CodLabelCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.2", type: CodLabelCellComponent, selector: "cadmus-cod-label-cell", inputs: { cell: "cell", color: "color" }, outputs: { cellChange: "cellChange" }, viewQueries: [{ propertyName: "valueElement", first: true, predicate: ["valueInput"], descendants: true }, { propertyName: "noteElement", first: true, predicate: ["noteInput"], descendants: true }], ngImport: i0, template: "<div\r\n *ngIf=\"cell\"\r\n class=\"cell\"\r\n [style.background-color]=\"color || 'transparent'\"\r\n>\r\n <!-- display -->\r\n <div *ngIf=\"editMode === 'none'\" class=\"form-row-center\">\r\n <span>{{ cell.value }}</span>\r\n <span *ngIf=\"cell.note\" [matTooltip]=\"cell.note\">\r\n <mat-icon>description</mat-icon>\r\n </span>\r\n <button\r\n class=\"muted\"\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Edit value\"\r\n color=\"primary\"\r\n (click)=\"editValue()\"\r\n >\r\n <mat-icon>edit</mat-icon>\r\n </button>\r\n <button\r\n class=\"muted\"\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Edit note\"\r\n (click)=\"editNote()\"\r\n >\r\n <mat-icon>edit_note</mat-icon>\r\n </button>\r\n </div>\r\n <!-- edit -->\r\n <form\r\n [formGroup]=\"form\"\r\n (submit)=\"saveEdit()\"\r\n *ngIf=\"editMode !== 'none'\"\r\n class=\"form-row\"\r\n >\r\n <!-- value -->\r\n <mat-form-field *ngIf=\"editMode === 'value'\">\r\n <mat-label>value</mat-label>\r\n <input\r\n #valueInput\r\n matInput\r\n type=\"text\"\r\n spellcheck=\"false\"\r\n [formControl]=\"value\"\r\n (keydown.esc)=\"cancelEdit()\"\r\n />\r\n <mat-error\r\n *ngIf=\"value.hasError('maxLength') && (value.dirty || value.touched)\"\r\n >value too long</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- note -->\r\n <mat-form-field *ngIf=\"editMode === 'note'\">\r\n <mat-label>note</mat-label>\r\n <input\r\n #noteInput\r\n matInput\r\n type=\"text\"\r\n [formControl]=\"note\"\r\n (keydown.esc)=\"cancelEdit()\"\r\n />\r\n <mat-error\r\n *ngIf=\"note.hasError('maxLength') && (note.dirty || note.touched)\"\r\n >note too long</mat-error\r\n >\r\n </mat-form-field>\r\n\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Discard edit\"\r\n color=\"warn\"\r\n (click)=\"cancelEdit()\"\r\n >\r\n <mat-icon>clear</mat-icon>\r\n </button>\r\n <button\r\n type=\"submit\"\r\n [disabled]=\"form.invalid\"\r\n mat-icon-button\r\n matTooltip=\"Save edit\"\r\n color=\"primary\"\r\n >\r\n <mat-icon>check_circle</mat-icon>\r\n </button>\r\n </form>\r\n</div>\r\n", styles: ["div.cell{margin:2px;padding-left:4px;padding-right:4px;border:1px solid transparent;border-radius:4px}div.cell:hover{margin:2px;padding-left:4px;padding-right:4px;border:1px solid gray;border-radius:4px}.form-row{display:flex;gap:4px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}.form-row-center{display:flex;gap:4px;align-items:center;justify-content:center;flex-wrap:wrap}.form-row-center *{flex:0 0 auto}.muted{opacity:20%}.muted:hover{opacity:100%}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i7.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
86
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: CodLabelCellComponent, decorators: [{
87
87
  type: Component,
88
88
  args: [{ selector: 'cadmus-cod-label-cell', template: "<div\r\n *ngIf=\"cell\"\r\n class=\"cell\"\r\n [style.background-color]=\"color || 'transparent'\"\r\n>\r\n <!-- display -->\r\n <div *ngIf=\"editMode === 'none'\" class=\"form-row-center\">\r\n <span>{{ cell.value }}</span>\r\n <span *ngIf=\"cell.note\" [matTooltip]=\"cell.note\">\r\n <mat-icon>description</mat-icon>\r\n </span>\r\n <button\r\n class=\"muted\"\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Edit value\"\r\n color=\"primary\"\r\n (click)=\"editValue()\"\r\n >\r\n <mat-icon>edit</mat-icon>\r\n </button>\r\n <button\r\n class=\"muted\"\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Edit note\"\r\n (click)=\"editNote()\"\r\n >\r\n <mat-icon>edit_note</mat-icon>\r\n </button>\r\n </div>\r\n <!-- edit -->\r\n <form\r\n [formGroup]=\"form\"\r\n (submit)=\"saveEdit()\"\r\n *ngIf=\"editMode !== 'none'\"\r\n class=\"form-row\"\r\n >\r\n <!-- value -->\r\n <mat-form-field *ngIf=\"editMode === 'value'\">\r\n <mat-label>value</mat-label>\r\n <input\r\n #valueInput\r\n matInput\r\n type=\"text\"\r\n spellcheck=\"false\"\r\n [formControl]=\"value\"\r\n (keydown.esc)=\"cancelEdit()\"\r\n />\r\n <mat-error\r\n *ngIf=\"value.hasError('maxLength') && (value.dirty || value.touched)\"\r\n >value too long</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- note -->\r\n <mat-form-field *ngIf=\"editMode === 'note'\">\r\n <mat-label>note</mat-label>\r\n <input\r\n #noteInput\r\n matInput\r\n type=\"text\"\r\n [formControl]=\"note\"\r\n (keydown.esc)=\"cancelEdit()\"\r\n />\r\n <mat-error\r\n *ngIf=\"note.hasError('maxLength') && (note.dirty || note.touched)\"\r\n >note too long</mat-error\r\n >\r\n </mat-form-field>\r\n\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Discard edit\"\r\n color=\"warn\"\r\n (click)=\"cancelEdit()\"\r\n >\r\n <mat-icon>clear</mat-icon>\r\n </button>\r\n <button\r\n type=\"submit\"\r\n [disabled]=\"form.invalid\"\r\n mat-icon-button\r\n matTooltip=\"Save edit\"\r\n color=\"primary\"\r\n >\r\n <mat-icon>check_circle</mat-icon>\r\n </button>\r\n </form>\r\n</div>\r\n", styles: ["div.cell{margin:2px;padding-left:4px;padding-right:4px;border:1px solid transparent;border-radius:4px}div.cell:hover{margin:2px;padding-left:4px;padding-right:4px;border:1px solid gray;border-radius:4px}.form-row{display:flex;gap:4px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}.form-row-center{display:flex;gap:4px;align-items:center;justify-content:center;flex-wrap:wrap}.form-row-center *{flex:0 0 auto}.muted{opacity:20%}.muted:hover{opacity:100%}\n"] }]
89
89
  }], ctorParameters: function () { return [{ type: i1.FormBuilder }]; }, propDecorators: { cell: [{
@@ -139,14 +139,14 @@ export class CodLocationConverterComponent {
139
139
  });
140
140
  }
141
141
  }
142
- CodLocationConverterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: CodLocationConverterComponent, deps: [{ token: i1.ItemRefLookupService }, { token: i2.ItemService }, { token: i3.AuthJwtService }, { token: i4.Clipboard }, { token: i5.MatSnackBar }, { token: i6.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
143
- CodLocationConverterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.1", type: CodLocationConverterComponent, selector: "cadmus-cod-location-converter", inputs: { item: "item", facetId: "facetId" }, ngImport: i0, template: "<form [formGroup]=\"form\" *ngIf=\"user$ | async\">\r\n <mat-progress-bar mode=\"indeterminate\" *ngIf=\"loading\"></mat-progress-bar>\r\n <!-- item -->\r\n <cadmus-ref-lookup\r\n [service]=\"lookupService\"\r\n [item]=\"item\"\r\n [baseFilter]=\"baseFilter\"\r\n label=\"item\"\r\n (itemChange)=\"onItemChange($event)\"\r\n ></cadmus-ref-lookup>\r\n <!-- autoCopy -->\r\n <div>\r\n <mat-slide-toggle [formControl]=\"autoCopy\" matTooltip=\"Toggle auto-copy\"\r\n >copy</mat-slide-toggle\r\n >\r\n </div>\r\n\r\n <!-- systems -->\r\n <div *ngIf=\"systems$ | async as systems\" style=\"margin-top: 4px\">\r\n <div>\r\n <mat-form-field *ngIf=\"systems.length\">\r\n <mat-label>system</mat-label>\r\n <mat-select [formControl]=\"system\">\r\n <mat-option *ngFor=\"let s of systems\" [value]=\"s\">\r\n {{ s }}\r\n </mat-option>\r\n </mat-select>\r\n <mat-error\r\n *ngIf=\"\r\n $any(system).errors?.required && (system.dirty || system.touched)\r\n \"\r\n >system required</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"form-row\" *ngIf=\"system.value\">\r\n <!-- label -->\r\n <mat-form-field style=\"width: 4em\">\r\n <mat-label>label</mat-label>\r\n <input matInput [formControl]=\"label\" />\r\n </mat-form-field>\r\n\r\n <mat-icon>sync_alt</mat-icon>\r\n\r\n <!-- location -->\r\n <mat-form-field style=\"width: 4em\">\r\n <mat-label>location</mat-label>\r\n <input matInput [formControl]=\"location\" />\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n</form>\r\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}\n"], dependencies: [{ kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i6.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i10.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i10.MatLabel, selector: "mat-label" }, { kind: "directive", type: i10.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i11.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i12.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i13.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i14.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "directive", type: i15.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i16.RefLookupComponent, selector: "cadmus-ref-lookup", inputs: ["label", "limit", "baseFilter", "service", "item", "required", "hasMore", "linkTemplate", "optDialog", "options"], outputs: ["itemChange", "moreRequest"] }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }] });
144
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: CodLocationConverterComponent, decorators: [{
142
+ CodLocationConverterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: CodLocationConverterComponent, deps: [{ token: i1.ItemRefLookupService }, { token: i2.ItemService }, { token: i3.AuthJwtService }, { token: i4.Clipboard }, { token: i5.MatSnackBar }, { token: i6.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
143
+ CodLocationConverterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.2", type: CodLocationConverterComponent, selector: "cadmus-cod-location-converter", inputs: { item: "item", facetId: "facetId" }, ngImport: i0, template: "<form [formGroup]=\"form\" *ngIf=\"user$ | async\">\r\n <mat-progress-bar mode=\"indeterminate\" *ngIf=\"loading\"></mat-progress-bar>\r\n <!-- item -->\r\n <cadmus-ref-lookup\r\n [service]=\"lookupService\"\r\n [item]=\"item\"\r\n [baseFilter]=\"baseFilter\"\r\n label=\"item\"\r\n (itemChange)=\"onItemChange($event)\"\r\n ></cadmus-ref-lookup>\r\n <!-- autoCopy -->\r\n <div>\r\n <mat-slide-toggle [formControl]=\"autoCopy\" matTooltip=\"Toggle auto-copy\"\r\n >copy</mat-slide-toggle\r\n >\r\n </div>\r\n\r\n <!-- systems -->\r\n <div *ngIf=\"systems$ | async as systems\" style=\"margin-top: 4px\">\r\n <div>\r\n <mat-form-field *ngIf=\"systems.length\">\r\n <mat-label>system</mat-label>\r\n <mat-select [formControl]=\"system\">\r\n <mat-option *ngFor=\"let s of systems\" [value]=\"s\">\r\n {{ s }}\r\n </mat-option>\r\n </mat-select>\r\n <mat-error\r\n *ngIf=\"\r\n $any(system).errors?.required && (system.dirty || system.touched)\r\n \"\r\n >system required</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"form-row\" *ngIf=\"system.value\">\r\n <!-- label -->\r\n <mat-form-field style=\"width: 5em\">\r\n <mat-label>label</mat-label>\r\n <input matInput [formControl]=\"label\" />\r\n </mat-form-field>\r\n\r\n <mat-icon>sync_alt</mat-icon>\r\n\r\n <!-- location -->\r\n <mat-form-field style=\"width: 5em\">\r\n <mat-label>location</mat-label>\r\n <input matInput [formControl]=\"location\" />\r\n </mat-form-field>\r\n </div>\r\n <span *ngIf=\"!system.value\" color=\"silver\">(no systems)</span>\r\n </div>\r\n</form>\r\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}\n"], dependencies: [{ kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i6.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i10.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i10.MatLabel, selector: "mat-label" }, { kind: "directive", type: i10.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i11.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i12.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i13.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i14.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "directive", type: i15.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i16.RefLookupComponent, selector: "cadmus-ref-lookup", inputs: ["label", "limit", "baseFilter", "service", "item", "required", "hasMore", "linkTemplate", "optDialog", "options"], outputs: ["itemChange", "moreRequest"] }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }] });
144
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: CodLocationConverterComponent, decorators: [{
145
145
  type: Component,
146
- args: [{ selector: 'cadmus-cod-location-converter', template: "<form [formGroup]=\"form\" *ngIf=\"user$ | async\">\r\n <mat-progress-bar mode=\"indeterminate\" *ngIf=\"loading\"></mat-progress-bar>\r\n <!-- item -->\r\n <cadmus-ref-lookup\r\n [service]=\"lookupService\"\r\n [item]=\"item\"\r\n [baseFilter]=\"baseFilter\"\r\n label=\"item\"\r\n (itemChange)=\"onItemChange($event)\"\r\n ></cadmus-ref-lookup>\r\n <!-- autoCopy -->\r\n <div>\r\n <mat-slide-toggle [formControl]=\"autoCopy\" matTooltip=\"Toggle auto-copy\"\r\n >copy</mat-slide-toggle\r\n >\r\n </div>\r\n\r\n <!-- systems -->\r\n <div *ngIf=\"systems$ | async as systems\" style=\"margin-top: 4px\">\r\n <div>\r\n <mat-form-field *ngIf=\"systems.length\">\r\n <mat-label>system</mat-label>\r\n <mat-select [formControl]=\"system\">\r\n <mat-option *ngFor=\"let s of systems\" [value]=\"s\">\r\n {{ s }}\r\n </mat-option>\r\n </mat-select>\r\n <mat-error\r\n *ngIf=\"\r\n $any(system).errors?.required && (system.dirty || system.touched)\r\n \"\r\n >system required</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"form-row\" *ngIf=\"system.value\">\r\n <!-- label -->\r\n <mat-form-field style=\"width: 4em\">\r\n <mat-label>label</mat-label>\r\n <input matInput [formControl]=\"label\" />\r\n </mat-form-field>\r\n\r\n <mat-icon>sync_alt</mat-icon>\r\n\r\n <!-- location -->\r\n <mat-form-field style=\"width: 4em\">\r\n <mat-label>location</mat-label>\r\n <input matInput [formControl]=\"location\" />\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n</form>\r\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}\n"] }]
146
+ args: [{ selector: 'cadmus-cod-location-converter', template: "<form [formGroup]=\"form\" *ngIf=\"user$ | async\">\r\n <mat-progress-bar mode=\"indeterminate\" *ngIf=\"loading\"></mat-progress-bar>\r\n <!-- item -->\r\n <cadmus-ref-lookup\r\n [service]=\"lookupService\"\r\n [item]=\"item\"\r\n [baseFilter]=\"baseFilter\"\r\n label=\"item\"\r\n (itemChange)=\"onItemChange($event)\"\r\n ></cadmus-ref-lookup>\r\n <!-- autoCopy -->\r\n <div>\r\n <mat-slide-toggle [formControl]=\"autoCopy\" matTooltip=\"Toggle auto-copy\"\r\n >copy</mat-slide-toggle\r\n >\r\n </div>\r\n\r\n <!-- systems -->\r\n <div *ngIf=\"systems$ | async as systems\" style=\"margin-top: 4px\">\r\n <div>\r\n <mat-form-field *ngIf=\"systems.length\">\r\n <mat-label>system</mat-label>\r\n <mat-select [formControl]=\"system\">\r\n <mat-option *ngFor=\"let s of systems\" [value]=\"s\">\r\n {{ s }}\r\n </mat-option>\r\n </mat-select>\r\n <mat-error\r\n *ngIf=\"\r\n $any(system).errors?.required && (system.dirty || system.touched)\r\n \"\r\n >system required</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"form-row\" *ngIf=\"system.value\">\r\n <!-- label -->\r\n <mat-form-field style=\"width: 5em\">\r\n <mat-label>label</mat-label>\r\n <input matInput [formControl]=\"label\" />\r\n </mat-form-field>\r\n\r\n <mat-icon>sync_alt</mat-icon>\r\n\r\n <!-- location -->\r\n <mat-form-field style=\"width: 5em\">\r\n <mat-label>location</mat-label>\r\n <input matInput [formControl]=\"location\" />\r\n </mat-form-field>\r\n </div>\r\n <span *ngIf=\"!system.value\" color=\"silver\">(no systems)</span>\r\n </div>\r\n</form>\r\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}\n"] }]
147
147
  }], ctorParameters: function () { return [{ type: i1.ItemRefLookupService }, { type: i2.ItemService }, { type: i3.AuthJwtService }, { type: i4.Clipboard }, { type: i5.MatSnackBar }, { type: i6.FormBuilder }]; }, propDecorators: { item: [{
148
148
  type: Input
149
149
  }], facetId: [{
150
150
  type: Input
151
151
  }] } });
152
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kLWxvY2F0aW9uLWNvbnZlcnRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJtaWRvbi9jYWRtdXMtcGFydC1jb2RpY29sb2d5LXNoZWV0LWxhYmVscy9zcmMvbGliL2NvZC1sb2NhdGlvbi1jb252ZXJ0ZXIvY29kLWxvY2F0aW9uLWNvbnZlcnRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJtaWRvbi9jYWRtdXMtcGFydC1jb2RpY29sb2d5LXNoZWV0LWxhYmVscy9zcmMvbGliL2NvZC1sb2NhdGlvbi1jb252ZXJ0ZXIvY29kLWxvY2F0aW9uLWNvbnZlcnRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBSUwsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBYyxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFNNUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUVMLDRCQUE0QixHQUM3QixNQUFNLDBCQUEwQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJbEM7O0dBRUc7QUFNSCxNQUFNLE9BQU8sNkJBQTZCO0lBeUN4QyxZQUNTLGFBQW1DLEVBQ2xDLFlBQXlCLEVBQ2pDLFdBQTJCLEVBQ25CLFVBQXFCLEVBQ3JCLFNBQXNCLEVBQzlCLFdBQXdCO1FBTGpCLGtCQUFhLEdBQWIsYUFBYSxDQUFzQjtRQUNsQyxpQkFBWSxHQUFaLFlBQVksQ0FBYTtRQUV6QixlQUFVLEdBQVYsVUFBVSxDQUFXO1FBQ3JCLGNBQVMsR0FBVCxTQUFTLENBQWE7UUFHOUIsSUFBSSxDQUFDLFVBQVUsR0FB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QjtrQkFMekMsU0FBUzsrQkFDRSwrQkFBK0I7OE9BMEI5QixJQUFJO3NCQURkLEtBQUs7Z0JBWUssT0FBTztzQkFEakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEZvcm1CdWlsZGVyLFxyXG4gIEZvcm1Db250cm9sLFxyXG4gIEZvcm1Hcm91cCxcclxuICBWYWxpZGF0b3JzLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ2xpcGJvYXJkIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NsaXBib2FyZCc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIE9ic2VydmFibGUsIHRha2UgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IEl0ZW1TZXJ2aWNlIH0gZnJvbSAnQG15cm1pZG9uL2NhZG11cy1hcGknO1xyXG5pbXBvcnQgeyBJdGVtUmVmTG9va3VwU2VydmljZSB9IGZyb20gJ0BteXJtaWRvbi9jYWRtdXMtY29kaWNvbG9neS11aSc7XHJcbmltcG9ydCB7IEl0ZW0gfSBmcm9tICdAbXlybWlkb24vY2FkbXVzLWNvcmUnO1xyXG5cclxuaW1wb3J0IHsgQ29kTG9jYXRpb25Db252ZXJ0ZXIgfSBmcm9tICcuLi9jb2QtbG9jYXRpb24tY29udmVydGVyJztcclxuaW1wb3J0IHtcclxuICBDb2RTaGVldExhYmVsc1BhcnQsXHJcbiAgQ09EX1NIRUVUX0xBQkVMU19QQVJUX1RZUEVJRCxcclxufSBmcm9tICcuLi9jb2Qtc2hlZXQtbGFiZWxzLXBhcnQnO1xyXG5pbXBvcnQgeyBBdXRoSnd0U2VydmljZSwgVXNlciB9IGZyb20gJ0BteXJtaWRvbi9hdXRoLWp3dC1sb2dpbic7XHJcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcclxuXHJcbi8qKlxyXG4gKiBDb2RpY29sb2dpY2FsIGxvY2F0aW9uIGNvbnZlcnRlciBjb21wb25lbnQuXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NhZG11cy1jb2QtbG9jYXRpb24tY29udmVydGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29kLWxvY2F0aW9uLWNvbnZlcnRlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY29kLWxvY2F0aW9uLWNvbnZlcnRlci5jb21wb25lbnQuY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb2RMb2NhdGlvbkNvbnZlcnRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfY29udmVydGVyOiBDb2RMb2NhdGlvbkNvbnZlcnRlcjtcclxuICBwcml2YXRlIF9pdGVtOiBJdGVtIHwgdW5kZWZpbmVkIHwgbnVsbDtcclxuICBwcml2YXRlIF9mYWNldElkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgcHJpdmF0ZSBfbG9jRnJvemVuPzogYm9vbGVhbjtcclxuICBwcml2YXRlIF9sYWJGcm96ZW4/OiBib29sZWFuO1xyXG5cclxuICBwdWJsaWMgbG9hZGluZz86IGJvb2xlYW47XHJcbiAgcHVibGljIGJhc2VGaWx0ZXI/OiBhbnk7XHJcblxyXG4gIHB1YmxpYyBzeXN0ZW06IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xyXG4gIHB1YmxpYyBhdXRvQ29weTogRm9ybUNvbnRyb2w8Ym9vbGVhbj47XHJcbiAgcHVibGljIGxvY2F0aW9uOiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPjtcclxuICBwdWJsaWMgbGFiZWw6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xyXG4gIHB1YmxpYyBmb3JtOiBGb3JtR3JvdXA7XHJcbiAgcHVibGljIHN5c3RlbXMkOiBPYnNlcnZhYmxlPHN0cmluZ1tdPjtcclxuICBwdWJsaWMgdXNlciQ6IE9ic2VydmFibGU8VXNlciB8IG51bGw+O1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgY3VycmVudCBpdGVtLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGdldCBpdGVtKCk6IEl0ZW0gfCB1bmRlZmluZWQgfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLl9pdGVtO1xyXG4gIH1cclxuICBwdWJsaWMgc2V0IGl0ZW0odmFsdWU6IEl0ZW0gfCB1bmRlZmluZWQgfCBudWxsKSB7XHJcbiAgICB0aGlzLl9pdGVtID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUaGUgZmFjZXQgSUQgZm9yIGZpbHRlcmluZyBpdGVtcyBkdXJpbmcgbG9va3VwLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGdldCBmYWNldElkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5fZmFjZXRJZDtcclxuICB9XHJcbiAgcHVibGljIHNldCBmYWNldElkKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuX2ZhY2V0SWQgPSB2YWx1ZTtcclxuICAgIHRoaXMuYmFzZUZpbHRlciA9IHZhbHVlID8geyBmYWNldElkOiB2YWx1ZSB9IDogdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgbG9va3VwU2VydmljZTogSXRlbVJlZkxvb2t1cFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9pdGVtU2VydmljZTogSXRlbVNlcnZpY2UsXHJcbiAgICBhdXRoU2VydmljZTogQXV0aEp3dFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9jbGlwYm9hcmQ6IENsaXBib2FyZCxcclxuICAgIHByaXZhdGUgX3NuYWNrYmFyOiBNYXRTbmFja0JhcixcclxuICAgIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlclxyXG4gICkge1xyXG4gICAgdGhpcy5fY29udmVydGVyID0gbmV3IENvZExvY2F0aW9uQ29udmVydGVyKCk7XHJcbiAgICB0aGlzLnN5c3RlbXMkID0gdGhpcy5fY29udmVydGVyLnN5c3RlbXMkO1xyXG4gICAgdGhpcy51c2VyJCA9IGF1dGhTZXJ2aWNlLmN1cnJlbnRVc2VyJDtcclxuICAgIC8vIGZvcm1cclxuICAgIHRoaXMuc3lzdGVtID0gZm9ybUJ1aWxkZXIuY29udHJvbChudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgIHRoaXMuYXV0b0NvcHkgPSBmb3JtQnVpbGRlci5jb250cm9sKGZhbHNlLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pO1xyXG4gICAgdGhpcy5sb2NhdGlvbiA9IGZvcm1CdWlsZGVyLmNvbnRyb2wobnVsbCk7XHJcbiAgICB0aGlzLmxhYmVsID0gZm9ybUJ1aWxkZXIuY29udHJvbChudWxsKTtcclxuICAgIHRoaXMuZm9ybSA9IGZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgc3lzdGVtOiB0aGlzLnN5c3RlbSxcclxuICAgICAgYXV0b0NvcHk6IHRoaXMuYXV0b0NvcHksXHJcbiAgICAgIGxvY2F0aW9uOiB0aGlzLmxvY2F0aW9uLFxyXG4gICAgICBsYWJlbDogdGhpcy5sYWJlbCxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAvLyBhdXRvIGNvbnZlcnQgZnJvbSBsYWJlbFxyXG4gICAgdGhpcy5sYWJlbC52YWx1ZUNoYW5nZXNcclxuICAgICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgZGVib3VuY2VUaW1lKDMwMCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3lzdGVtLnZhbHVlICYmICF0aGlzLl9sYWJGcm96ZW4pIHtcclxuICAgICAgICAgIHRoaXMuX2xvY0Zyb3plbiA9IHRydWU7XHJcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLl9jb252ZXJ0ZXIuZ2V0TG9jYXRpb24odGhpcy5zeXN0ZW0udmFsdWUsIHZhbHVlISk7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuYXV0b0NvcHkudmFsdWUgJiYgcmVzdWx0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NsaXBib2FyZC5jb3B5KHJlc3VsdCk7XHJcbiAgICAgICAgICAgIHRoaXMuX3NuYWNrYmFyLm9wZW4oJ0NvcGllZCAnICsgcmVzdWx0LCAnT0snLCB7XHJcbiAgICAgICAgICAgICAgZHVyYXRpb246IDEwMDAsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5sb2NhdGlvbi5zZXRWYWx1ZShyZXN1bHQsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICAgIHRoaXMuX2xvY0Zyb3plbiA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgLy8gYXV0byBjb252ZXJ0IGZyb20gbG9jYXRpb25cclxuICAgIHRoaXMubG9jYXRpb24udmFsdWVDaGFuZ2VzXHJcbiAgICAgIC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIGRlYm91bmNlVGltZSgzMDApKVxyXG4gICAgICAuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLnN5c3RlbS52YWx1ZSAmJiAhdGhpcy5fbG9jRnJvemVuKSB7XHJcbiAgICAgICAgICB0aGlzLl9sYWJGcm96ZW4gPSB0cnVlO1xyXG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fY29udmVydGVyLmdldExhYmVsKHRoaXMuc3lzdGVtLnZhbHVlLCB2YWx1ZSEpO1xyXG4gICAgICAgICAgY29uc29sZS5sb2cocmVzdWx0KTtcclxuICAgICAgICAgIGlmICh0aGlzLmF1dG9Db3B5LnZhbHVlICYmIHJlc3VsdCkge1xyXG4gICAgICAgICAgICB0aGlzLl9jbGlwYm9hcmQuY29weShyZXN1bHQpO1xyXG4gICAgICAgICAgICB0aGlzLl9zbmFja2Jhci5vcGVuKCdDb3BpZWQgJyArIHJlc3VsdCwgJ09LJywge1xyXG4gICAgICAgICAgICAgIGR1cmF0aW9uOiAxMDAwLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMubGFiZWwuc2V0VmFsdWUocmVzdWx0LCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICB0aGlzLl9sYWJGcm96ZW4gPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uSXRlbUNoYW5nZShpdGVtOiBJdGVtKTogdm9pZCB7XHJcbiAgICB0aGlzLml0ZW0gPSBpdGVtO1xyXG4gICAgdGhpcy51cGRhdGVGb3JtKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlc2V0Rm9ybSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2NvbnZlcnRlci5zZXRSb3dzKFtdKTtcclxuICAgIHRoaXMuZm9ybS5yZXNldCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVGb3JtKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLl9pdGVtKSB7XHJcbiAgICAgIHRoaXMucmVzZXRGb3JtKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLl9pdGVtU2VydmljZVxyXG4gICAgICAuZ2V0UGFydEZyb21UeXBlQW5kUm9sZSh0aGlzLl9pdGVtLmlkLCBDT0RfU0hFRVRfTEFCRUxTX1BBUlRfVFlQRUlEKVxyXG4gICAgICAucGlwZSh0YWtlKDEpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocGFydCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5mb3JtLnJlc2V0KCk7XHJcbiAgICAgICAgICBjb25zdCBwID0gcGFydCBhcyBDb2RTaGVldExhYmVsc1BhcnQ7XHJcbiAgICAgICAgICBpZiAoIXApIHtcclxuICAgICAgICAgICAgdGhpcy5yZXNldEZvcm0oKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5fY29udmVydGVyLnNldFJvd3MocC5yb3dzKTtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBsb2FkaW5nIGxhYmVscyBwYXJ0IGZvciBpdGVtICcgKyB0aGlzLl9pdGVtIS5pZCk7XHJcbiAgICAgICAgICBpZiAoZXJyb3IpIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihKU09OLnN0cmluZ2lmeShlcnJvcikpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiAqbmdJZj1cInVzZXIkIHwgYXN5bmNcIj5cclxuICA8bWF0LXByb2dyZXNzLWJhciBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiICpuZ0lmPVwibG9hZGluZ1wiPjwvbWF0LXByb2dyZXNzLWJhcj5cclxuICA8IS0tIGl0ZW0gLS0+XHJcbiAgPGNhZG11cy1yZWYtbG9va3VwXHJcbiAgICBbc2VydmljZV09XCJsb29rdXBTZXJ2aWNlXCJcclxuICAgIFtpdGVtXT1cIml0ZW1cIlxyXG4gICAgW2Jhc2VGaWx0ZXJdPVwiYmFzZUZpbHRlclwiXHJcbiAgICBsYWJlbD1cIml0ZW1cIlxyXG4gICAgKGl0ZW1DaGFuZ2UpPVwib25JdGVtQ2hhbmdlKCRldmVudClcIlxyXG4gID48L2NhZG11cy1yZWYtbG9va3VwPlxyXG4gIDwhLS0gYXV0b0NvcHkgLS0+XHJcbiAgPGRpdj5cclxuICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFtmb3JtQ29udHJvbF09XCJhdXRvQ29weVwiIG1hdFRvb2x0aXA9XCJUb2dnbGUgYXV0by1jb3B5XCJcclxuICAgICAgPmNvcHk8L21hdC1zbGlkZS10b2dnbGVcclxuICAgID5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBzeXN0ZW1zIC0tPlxyXG4gIDxkaXYgKm5nSWY9XCJzeXN0ZW1zJCB8IGFzeW5jIGFzIHN5c3RlbXNcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDRweFwiPlxyXG4gICAgPGRpdj5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwic3lzdGVtcy5sZW5ndGhcIj5cclxuICAgICAgICA8bWF0LWxhYmVsPnN5c3RlbTwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxtYXQtc2VsZWN0IFtmb3JtQ29udHJvbF09XCJzeXN0ZW1cIj5cclxuICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBzIG9mIHN5c3RlbXNcIiBbdmFsdWVdPVwic1wiPlxyXG4gICAgICAgICAgICB7eyBzIH19XHJcbiAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICRhbnkoc3lzdGVtKS5lcnJvcnM/LnJlcXVpcmVkICYmIChzeXN0ZW0uZGlydHkgfHwgc3lzdGVtLnRvdWNoZWQpXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgPnN5c3RlbSByZXF1aXJlZDwvbWF0LWVycm9yXHJcbiAgICAgICAgPlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImZvcm0tcm93XCIgKm5nSWY9XCJzeXN0ZW0udmFsdWVcIj5cclxuICAgICAgPCEtLSBsYWJlbCAtLT5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkIHN0eWxlPVwid2lkdGg6IDRlbVwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+bGFiZWw8L21hdC1sYWJlbD5cclxuICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW2Zvcm1Db250cm9sXT1cImxhYmVsXCIgLz5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgICAgIDxtYXQtaWNvbj5zeW5jX2FsdDwvbWF0LWljb24+XHJcblxyXG4gICAgICA8IS0tIGxvY2F0aW9uIC0tPlxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQgc3R5bGU9XCJ3aWR0aDogNGVtXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbD5sb2NhdGlvbjwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwibG9jYXRpb25cIiAvPlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZm9ybT5cclxuIl19
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kLWxvY2F0aW9uLWNvbnZlcnRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJtaWRvbi9jYWRtdXMtcGFydC1jb2RpY29sb2d5LXNoZWV0LWxhYmVscy9zcmMvbGliL2NvZC1sb2NhdGlvbi1jb252ZXJ0ZXIvY29kLWxvY2F0aW9uLWNvbnZlcnRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJtaWRvbi9jYWRtdXMtcGFydC1jb2RpY29sb2d5LXNoZWV0LWxhYmVscy9zcmMvbGliL2NvZC1sb2NhdGlvbi1jb252ZXJ0ZXIvY29kLWxvY2F0aW9uLWNvbnZlcnRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBSUwsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBYyxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFNNUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUVMLDRCQUE0QixHQUM3QixNQUFNLDBCQUEwQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJbEM7O0dBRUc7QUFNSCxNQUFNLE9BQU8sNkJBQTZCO0lBeUN4QyxZQUNTLGFBQW1DLEVBQ2xDLFlBQXlCLEVBQ2pDLFdBQTJCLEVBQ25CLFVBQXFCLEVBQ3JCLFNBQXNCLEVBQzlCLFdBQXdCO1FBTGpCLGtCQUFhLEdBQWIsYUFBYSxDQUFzQjtRQUNsQyxpQkFBWSxHQUFaLFlBQVksQ0FBYTtRQUV6QixlQUFVLEdBQVYsVUFBVSxDQUFXO1FBQ3JCLGNBQVMsR0FBVCxTQUFTLENBQWE7UUFHOUIsSUFBSSxDQUFDLFVBQVUsR0FB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QjtrQkFMekMsU0FBUzsrQkFDRSwrQkFBK0I7OE9BMEI5QixJQUFJO3NCQURkLEtBQUs7Z0JBWUssT0FBTztzQkFEakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEZvcm1CdWlsZGVyLFxyXG4gIEZvcm1Db250cm9sLFxyXG4gIEZvcm1Hcm91cCxcclxuICBWYWxpZGF0b3JzLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ2xpcGJvYXJkIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NsaXBib2FyZCc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIE9ic2VydmFibGUsIHRha2UgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IEl0ZW1TZXJ2aWNlIH0gZnJvbSAnQG15cm1pZG9uL2NhZG11cy1hcGknO1xyXG5pbXBvcnQgeyBJdGVtUmVmTG9va3VwU2VydmljZSB9IGZyb20gJ0BteXJtaWRvbi9jYWRtdXMtY29kaWNvbG9neS11aSc7XHJcbmltcG9ydCB7IEl0ZW0gfSBmcm9tICdAbXlybWlkb24vY2FkbXVzLWNvcmUnO1xyXG5cclxuaW1wb3J0IHsgQ29kTG9jYXRpb25Db252ZXJ0ZXIgfSBmcm9tICcuLi9jb2QtbG9jYXRpb24tY29udmVydGVyJztcclxuaW1wb3J0IHtcclxuICBDb2RTaGVldExhYmVsc1BhcnQsXHJcbiAgQ09EX1NIRUVUX0xBQkVMU19QQVJUX1RZUEVJRCxcclxufSBmcm9tICcuLi9jb2Qtc2hlZXQtbGFiZWxzLXBhcnQnO1xyXG5pbXBvcnQgeyBBdXRoSnd0U2VydmljZSwgVXNlciB9IGZyb20gJ0BteXJtaWRvbi9hdXRoLWp3dC1sb2dpbic7XHJcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcclxuXHJcbi8qKlxyXG4gKiBDb2RpY29sb2dpY2FsIGxvY2F0aW9uIGNvbnZlcnRlciBjb21wb25lbnQuXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NhZG11cy1jb2QtbG9jYXRpb24tY29udmVydGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29kLWxvY2F0aW9uLWNvbnZlcnRlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY29kLWxvY2F0aW9uLWNvbnZlcnRlci5jb21wb25lbnQuY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb2RMb2NhdGlvbkNvbnZlcnRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfY29udmVydGVyOiBDb2RMb2NhdGlvbkNvbnZlcnRlcjtcclxuICBwcml2YXRlIF9pdGVtOiBJdGVtIHwgdW5kZWZpbmVkIHwgbnVsbDtcclxuICBwcml2YXRlIF9mYWNldElkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgcHJpdmF0ZSBfbG9jRnJvemVuPzogYm9vbGVhbjtcclxuICBwcml2YXRlIF9sYWJGcm96ZW4/OiBib29sZWFuO1xyXG5cclxuICBwdWJsaWMgbG9hZGluZz86IGJvb2xlYW47XHJcbiAgcHVibGljIGJhc2VGaWx0ZXI/OiBhbnk7XHJcblxyXG4gIHB1YmxpYyBzeXN0ZW06IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xyXG4gIHB1YmxpYyBhdXRvQ29weTogRm9ybUNvbnRyb2w8Ym9vbGVhbj47XHJcbiAgcHVibGljIGxvY2F0aW9uOiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPjtcclxuICBwdWJsaWMgbGFiZWw6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xyXG4gIHB1YmxpYyBmb3JtOiBGb3JtR3JvdXA7XHJcbiAgcHVibGljIHN5c3RlbXMkOiBPYnNlcnZhYmxlPHN0cmluZ1tdPjtcclxuICBwdWJsaWMgdXNlciQ6IE9ic2VydmFibGU8VXNlciB8IG51bGw+O1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgY3VycmVudCBpdGVtLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGdldCBpdGVtKCk6IEl0ZW0gfCB1bmRlZmluZWQgfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLl9pdGVtO1xyXG4gIH1cclxuICBwdWJsaWMgc2V0IGl0ZW0odmFsdWU6IEl0ZW0gfCB1bmRlZmluZWQgfCBudWxsKSB7XHJcbiAgICB0aGlzLl9pdGVtID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUaGUgZmFjZXQgSUQgZm9yIGZpbHRlcmluZyBpdGVtcyBkdXJpbmcgbG9va3VwLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGdldCBmYWNldElkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5fZmFjZXRJZDtcclxuICB9XHJcbiAgcHVibGljIHNldCBmYWNldElkKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuX2ZhY2V0SWQgPSB2YWx1ZTtcclxuICAgIHRoaXMuYmFzZUZpbHRlciA9IHZhbHVlID8geyBmYWNldElkOiB2YWx1ZSB9IDogdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgbG9va3VwU2VydmljZTogSXRlbVJlZkxvb2t1cFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9pdGVtU2VydmljZTogSXRlbVNlcnZpY2UsXHJcbiAgICBhdXRoU2VydmljZTogQXV0aEp3dFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9jbGlwYm9hcmQ6IENsaXBib2FyZCxcclxuICAgIHByaXZhdGUgX3NuYWNrYmFyOiBNYXRTbmFja0JhcixcclxuICAgIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlclxyXG4gICkge1xyXG4gICAgdGhpcy5fY29udmVydGVyID0gbmV3IENvZExvY2F0aW9uQ29udmVydGVyKCk7XHJcbiAgICB0aGlzLnN5c3RlbXMkID0gdGhpcy5fY29udmVydGVyLnN5c3RlbXMkO1xyXG4gICAgdGhpcy51c2VyJCA9IGF1dGhTZXJ2aWNlLmN1cnJlbnRVc2VyJDtcclxuICAgIC8vIGZvcm1cclxuICAgIHRoaXMuc3lzdGVtID0gZm9ybUJ1aWxkZXIuY29udHJvbChudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgIHRoaXMuYXV0b0NvcHkgPSBmb3JtQnVpbGRlci5jb250cm9sKGZhbHNlLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pO1xyXG4gICAgdGhpcy5sb2NhdGlvbiA9IGZvcm1CdWlsZGVyLmNvbnRyb2wobnVsbCk7XHJcbiAgICB0aGlzLmxhYmVsID0gZm9ybUJ1aWxkZXIuY29udHJvbChudWxsKTtcclxuICAgIHRoaXMuZm9ybSA9IGZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgc3lzdGVtOiB0aGlzLnN5c3RlbSxcclxuICAgICAgYXV0b0NvcHk6IHRoaXMuYXV0b0NvcHksXHJcbiAgICAgIGxvY2F0aW9uOiB0aGlzLmxvY2F0aW9uLFxyXG4gICAgICBsYWJlbDogdGhpcy5sYWJlbCxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAvLyBhdXRvIGNvbnZlcnQgZnJvbSBsYWJlbFxyXG4gICAgdGhpcy5sYWJlbC52YWx1ZUNoYW5nZXNcclxuICAgICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgZGVib3VuY2VUaW1lKDMwMCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3lzdGVtLnZhbHVlICYmICF0aGlzLl9sYWJGcm96ZW4pIHtcclxuICAgICAgICAgIHRoaXMuX2xvY0Zyb3plbiA9IHRydWU7XHJcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLl9jb252ZXJ0ZXIuZ2V0TG9jYXRpb24odGhpcy5zeXN0ZW0udmFsdWUsIHZhbHVlISk7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuYXV0b0NvcHkudmFsdWUgJiYgcmVzdWx0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NsaXBib2FyZC5jb3B5KHJlc3VsdCk7XHJcbiAgICAgICAgICAgIHRoaXMuX3NuYWNrYmFyLm9wZW4oJ0NvcGllZCAnICsgcmVzdWx0LCAnT0snLCB7XHJcbiAgICAgICAgICAgICAgZHVyYXRpb246IDEwMDAsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5sb2NhdGlvbi5zZXRWYWx1ZShyZXN1bHQsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICAgIHRoaXMuX2xvY0Zyb3plbiA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgLy8gYXV0byBjb252ZXJ0IGZyb20gbG9jYXRpb25cclxuICAgIHRoaXMubG9jYXRpb24udmFsdWVDaGFuZ2VzXHJcbiAgICAgIC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIGRlYm91bmNlVGltZSgzMDApKVxyXG4gICAgICAuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLnN5c3RlbS52YWx1ZSAmJiAhdGhpcy5fbG9jRnJvemVuKSB7XHJcbiAgICAgICAgICB0aGlzLl9sYWJGcm96ZW4gPSB0cnVlO1xyXG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fY29udmVydGVyLmdldExhYmVsKHRoaXMuc3lzdGVtLnZhbHVlLCB2YWx1ZSEpO1xyXG4gICAgICAgICAgY29uc29sZS5sb2cocmVzdWx0KTtcclxuICAgICAgICAgIGlmICh0aGlzLmF1dG9Db3B5LnZhbHVlICYmIHJlc3VsdCkge1xyXG4gICAgICAgICAgICB0aGlzLl9jbGlwYm9hcmQuY29weShyZXN1bHQpO1xyXG4gICAgICAgICAgICB0aGlzLl9zbmFja2Jhci5vcGVuKCdDb3BpZWQgJyArIHJlc3VsdCwgJ09LJywge1xyXG4gICAgICAgICAgICAgIGR1cmF0aW9uOiAxMDAwLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMubGFiZWwuc2V0VmFsdWUocmVzdWx0LCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICB0aGlzLl9sYWJGcm96ZW4gPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uSXRlbUNoYW5nZShpdGVtOiBJdGVtKTogdm9pZCB7XHJcbiAgICB0aGlzLml0ZW0gPSBpdGVtO1xyXG4gICAgdGhpcy51cGRhdGVGb3JtKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlc2V0Rm9ybSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2NvbnZlcnRlci5zZXRSb3dzKFtdKTtcclxuICAgIHRoaXMuZm9ybS5yZXNldCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVGb3JtKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLl9pdGVtKSB7XHJcbiAgICAgIHRoaXMucmVzZXRGb3JtKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLl9pdGVtU2VydmljZVxyXG4gICAgICAuZ2V0UGFydEZyb21UeXBlQW5kUm9sZSh0aGlzLl9pdGVtLmlkLCBDT0RfU0hFRVRfTEFCRUxTX1BBUlRfVFlQRUlEKVxyXG4gICAgICAucGlwZSh0YWtlKDEpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocGFydCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5mb3JtLnJlc2V0KCk7XHJcbiAgICAgICAgICBjb25zdCBwID0gcGFydCBhcyBDb2RTaGVldExhYmVsc1BhcnQ7XHJcbiAgICAgICAgICBpZiAoIXApIHtcclxuICAgICAgICAgICAgdGhpcy5yZXNldEZvcm0oKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5fY29udmVydGVyLnNldFJvd3MocC5yb3dzKTtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBsb2FkaW5nIGxhYmVscyBwYXJ0IGZvciBpdGVtICcgKyB0aGlzLl9pdGVtIS5pZCk7XHJcbiAgICAgICAgICBpZiAoZXJyb3IpIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihKU09OLnN0cmluZ2lmeShlcnJvcikpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiAqbmdJZj1cInVzZXIkIHwgYXN5bmNcIj5cclxuICA8bWF0LXByb2dyZXNzLWJhciBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiICpuZ0lmPVwibG9hZGluZ1wiPjwvbWF0LXByb2dyZXNzLWJhcj5cclxuICA8IS0tIGl0ZW0gLS0+XHJcbiAgPGNhZG11cy1yZWYtbG9va3VwXHJcbiAgICBbc2VydmljZV09XCJsb29rdXBTZXJ2aWNlXCJcclxuICAgIFtpdGVtXT1cIml0ZW1cIlxyXG4gICAgW2Jhc2VGaWx0ZXJdPVwiYmFzZUZpbHRlclwiXHJcbiAgICBsYWJlbD1cIml0ZW1cIlxyXG4gICAgKGl0ZW1DaGFuZ2UpPVwib25JdGVtQ2hhbmdlKCRldmVudClcIlxyXG4gID48L2NhZG11cy1yZWYtbG9va3VwPlxyXG4gIDwhLS0gYXV0b0NvcHkgLS0+XHJcbiAgPGRpdj5cclxuICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFtmb3JtQ29udHJvbF09XCJhdXRvQ29weVwiIG1hdFRvb2x0aXA9XCJUb2dnbGUgYXV0by1jb3B5XCJcclxuICAgICAgPmNvcHk8L21hdC1zbGlkZS10b2dnbGVcclxuICAgID5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBzeXN0ZW1zIC0tPlxyXG4gIDxkaXYgKm5nSWY9XCJzeXN0ZW1zJCB8IGFzeW5jIGFzIHN5c3RlbXNcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDRweFwiPlxyXG4gICAgPGRpdj5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwic3lzdGVtcy5sZW5ndGhcIj5cclxuICAgICAgICA8bWF0LWxhYmVsPnN5c3RlbTwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxtYXQtc2VsZWN0IFtmb3JtQ29udHJvbF09XCJzeXN0ZW1cIj5cclxuICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBzIG9mIHN5c3RlbXNcIiBbdmFsdWVdPVwic1wiPlxyXG4gICAgICAgICAgICB7eyBzIH19XHJcbiAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICRhbnkoc3lzdGVtKS5lcnJvcnM/LnJlcXVpcmVkICYmIChzeXN0ZW0uZGlydHkgfHwgc3lzdGVtLnRvdWNoZWQpXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgPnN5c3RlbSByZXF1aXJlZDwvbWF0LWVycm9yXHJcbiAgICAgICAgPlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImZvcm0tcm93XCIgKm5nSWY9XCJzeXN0ZW0udmFsdWVcIj5cclxuICAgICAgPCEtLSBsYWJlbCAtLT5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkIHN0eWxlPVwid2lkdGg6IDVlbVwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+bGFiZWw8L21hdC1sYWJlbD5cclxuICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW2Zvcm1Db250cm9sXT1cImxhYmVsXCIgLz5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgICAgIDxtYXQtaWNvbj5zeW5jX2FsdDwvbWF0LWljb24+XHJcblxyXG4gICAgICA8IS0tIGxvY2F0aW9uIC0tPlxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQgc3R5bGU9XCJ3aWR0aDogNWVtXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbD5sb2NhdGlvbjwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwibG9jYXRpb25cIiAvPlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8c3BhbiAqbmdJZj1cIiFzeXN0ZW0udmFsdWVcIiBjb2xvcj1cInNpbHZlclwiPihubyBzeXN0ZW1zKTwvc3Bhbj5cclxuICA8L2Rpdj5cclxuPC9mb3JtPlxyXG4iXX0=
@@ -129,9 +129,9 @@ export class CodNColDefinitionComponent {
129
129
  this.definitionChange.emit(this.getModel());
130
130
  }
131
131
  }
132
- CodNColDefinitionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: CodNColDefinitionComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
133
- CodNColDefinitionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.1", type: CodNColDefinitionComponent, selector: "cadmus-cod-n-col-definition", inputs: { definition: "definition", sysEntries: "sysEntries", techEntries: "techEntries", posEntries: "posEntries", clrEntries: "clrEntries" }, outputs: { definitionChange: "definitionChange", editorClose: "editorClose" }, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <div class=\"form-row\">\r\n <!-- rank -->\r\n <mat-form-field style=\"width: 6em\">\r\n <mat-label>rank</mat-label>\r\n <input matInput [formControl]=\"rank\" type=\"number\" min=\"0\" />\r\n </mat-form-field>\r\n\r\n <!-- isPagination -->\r\n <mat-checkbox [formControl]=\"isPagination\">pagination</mat-checkbox>\r\n </div>\r\n\r\n <div class=\"form-row\">\r\n <!-- system (bound) -->\r\n <mat-form-field *ngIf=\"sysEntries?.length\" class=\"form-col\">\r\n <mat-label>system</mat-label>\r\n <mat-select [formControl]=\"system\">\r\n <mat-option *ngFor=\"let e of sysEntries\" [value]=\"e.id\">{{\r\n e.value\r\n }}</mat-option>\r\n </mat-select>\r\n <mat-error\r\n *ngIf=\"\r\n $any(system).errors?.required && (system.dirty || system.touched)\r\n \"\r\n >system required</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- system (free) -->\r\n <mat-form-field *ngIf=\"!sysEntries?.length\" class=\"form-col\">\r\n <mat-label>system</mat-label>\r\n <input matInput [formControl]=\"system\" />\r\n <mat-error\r\n *ngIf=\"\r\n $any(system).errors?.required && (system.dirty || system.touched)\r\n \"\r\n >system required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"\r\n $any(system).errors?.maxLength && (system.dirty || system.touched)\r\n \"\r\n >system too long</mat-error\r\n >\r\n </mat-form-field>\r\n\r\n <!-- technique (bound) -->\r\n <mat-form-field *ngIf=\"techEntries?.length\" class=\"form-col\">\r\n <mat-label>technique</mat-label>\r\n <mat-select [formControl]=\"technique\">\r\n <mat-option *ngFor=\"let e of techEntries\" [value]=\"e.id\">{{\r\n e.value\r\n }}</mat-option>\r\n </mat-select>\r\n <mat-error\r\n *ngIf=\"\r\n $any(technique).errors?.required &&\r\n (technique.dirty || technique.touched)\r\n \"\r\n >technique required</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- technique (free) -->\r\n <mat-form-field *ngIf=\"!techEntries?.length\" class=\"form-col\">\r\n <mat-label>technique</mat-label>\r\n <input matInput [formControl]=\"technique\" />\r\n <mat-error\r\n *ngIf=\"\r\n $any(technique).errors?.required &&\r\n (technique.dirty || technique.touched)\r\n \"\r\n >technique required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"\r\n $any(technique).errors?.maxLength &&\r\n (technique.dirty || technique.touched)\r\n \"\r\n >technique too long</mat-error\r\n >\r\n </mat-form-field>\r\n\r\n <!-- position (bound) -->\r\n <mat-form-field *ngIf=\"posEntries?.length\" class=\"form-col\">\r\n <mat-label>position</mat-label>\r\n <mat-select [formControl]=\"position\">\r\n <mat-option *ngFor=\"let e of posEntries\" [value]=\"e.id\">{{\r\n e.value\r\n }}</mat-option>\r\n </mat-select>\r\n <mat-error\r\n *ngIf=\"\r\n $any(position).errors?.required &&\r\n (position.dirty || position.touched)\r\n \"\r\n >position required</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- position (free) -->\r\n <mat-form-field *ngIf=\"!posEntries?.length\" class=\"form-col\">\r\n <mat-label>position</mat-label>\r\n <input matInput [formControl]=\"position\" />\r\n <mat-error\r\n *ngIf=\"\r\n $any(position).errors?.required &&\r\n (position.dirty || position.touched)\r\n \"\r\n >position required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"\r\n $any(position).errors?.maxLength &&\r\n (position.dirty || position.touched)\r\n \"\r\n >position too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n\r\n <fieldset>\r\n <legend>colors</legend>\r\n <cadmus-ui-flags-picker\r\n [flags]=\"clrFlags\"\r\n [selectedIds]=\"initialColors\"\r\n (selectedIdsChange)=\"onSelectedIdsChange($event)\"\r\n ></cadmus-ui-flags-picker>\r\n </fieldset>\r\n\r\n <div class=\"form-row\">\r\n <mat-checkbox [formControl]=\"hasDate\">date</mat-checkbox>\r\n <!-- date -->\r\n <cadmus-refs-historical-date\r\n *ngIf=\"hasDate?.value\"\r\n [date]=\"initialDate\"\r\n (dateChange)=\"onDateChange($event)\"\r\n ></cadmus-refs-historical-date>\r\n </div>\r\n\r\n <div>\r\n <!-- note -->\r\n <mat-form-field class=\"long-text\">\r\n <mat-label>note</mat-label>\r\n <input matInput [formControl]=\"note\" />\r\n <mat-error\r\n *ngIf=\"$any(note).errors?.maxLength && (note.dirty || note.touched)\"\r\n >note too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n\r\n <!-- buttons -->\r\n <div>\r\n <button\r\n type=\"button\"\r\n color=\"warn\"\r\n mat-icon-button\r\n matTooltip=\"Discard changes\"\r\n (click)=\"cancel()\"\r\n >\r\n <mat-icon>clear</mat-icon>\r\n </button>\r\n <button\r\n type=\"submit\"\r\n color=\"primary\"\r\n mat-icon-button\r\n matTooltip=\"Accept changes\"\r\n [disabled]=\"form.invalid || form.pristine\"\r\n >\r\n <mat-icon>check_circle</mat-icon>\r\n </button>\r\n </div>\r\n</form>\r\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}.long-text{width:100%;max-width:800px}fieldset{max-width:900px;margin-bottom:6px;border:1px solid silver;padding:8px;border-radius:6px}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatLabel, selector: "mat-label" }, { kind: "directive", type: i7.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i8.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i9.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i10.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i11.HistoricalDateComponent, selector: "cadmus-refs-historical-date", inputs: ["date", "label", "disabled"], outputs: ["dateChange"] }, { kind: "component", type: i12.FlagsPickerComponent, selector: "cadmus-ui-flags-picker", inputs: ["selectedIds", "flags", "numbering", "toolbar", "allowUserFlags"], outputs: ["selectedIdsChange", "flagsChange"] }] });
134
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: CodNColDefinitionComponent, decorators: [{
132
+ CodNColDefinitionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: CodNColDefinitionComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
133
+ CodNColDefinitionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.2", type: CodNColDefinitionComponent, selector: "cadmus-cod-n-col-definition", inputs: { definition: "definition", sysEntries: "sysEntries", techEntries: "techEntries", posEntries: "posEntries", clrEntries: "clrEntries" }, outputs: { definitionChange: "definitionChange", editorClose: "editorClose" }, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <div class=\"form-row\">\r\n <!-- rank -->\r\n <mat-form-field style=\"width: 6em\">\r\n <mat-label>rank</mat-label>\r\n <input matInput [formControl]=\"rank\" type=\"number\" min=\"0\" />\r\n </mat-form-field>\r\n\r\n <!-- isPagination -->\r\n <mat-checkbox [formControl]=\"isPagination\">pagination</mat-checkbox>\r\n </div>\r\n\r\n <div class=\"form-row\">\r\n <!-- system (bound) -->\r\n <mat-form-field *ngIf=\"sysEntries?.length\" class=\"form-col\">\r\n <mat-label>system</mat-label>\r\n <mat-select [formControl]=\"system\">\r\n <mat-option *ngFor=\"let e of sysEntries\" [value]=\"e.id\">{{\r\n e.value\r\n }}</mat-option>\r\n </mat-select>\r\n <mat-error\r\n *ngIf=\"\r\n $any(system).errors?.required && (system.dirty || system.touched)\r\n \"\r\n >system required</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- system (free) -->\r\n <mat-form-field *ngIf=\"!sysEntries?.length\" class=\"form-col\">\r\n <mat-label>system</mat-label>\r\n <input matInput [formControl]=\"system\" />\r\n <mat-error\r\n *ngIf=\"\r\n $any(system).errors?.required && (system.dirty || system.touched)\r\n \"\r\n >system required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"\r\n $any(system).errors?.maxLength && (system.dirty || system.touched)\r\n \"\r\n >system too long</mat-error\r\n >\r\n </mat-form-field>\r\n\r\n <!-- technique (bound) -->\r\n <mat-form-field *ngIf=\"techEntries?.length\" class=\"form-col\">\r\n <mat-label>technique</mat-label>\r\n <mat-select [formControl]=\"technique\">\r\n <mat-option *ngFor=\"let e of techEntries\" [value]=\"e.id\">{{\r\n e.value\r\n }}</mat-option>\r\n </mat-select>\r\n <mat-error\r\n *ngIf=\"\r\n $any(technique).errors?.required &&\r\n (technique.dirty || technique.touched)\r\n \"\r\n >technique required</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- technique (free) -->\r\n <mat-form-field *ngIf=\"!techEntries?.length\" class=\"form-col\">\r\n <mat-label>technique</mat-label>\r\n <input matInput [formControl]=\"technique\" />\r\n <mat-error\r\n *ngIf=\"\r\n $any(technique).errors?.required &&\r\n (technique.dirty || technique.touched)\r\n \"\r\n >technique required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"\r\n $any(technique).errors?.maxLength &&\r\n (technique.dirty || technique.touched)\r\n \"\r\n >technique too long</mat-error\r\n >\r\n </mat-form-field>\r\n\r\n <!-- position (bound) -->\r\n <mat-form-field *ngIf=\"posEntries?.length\" class=\"form-col\">\r\n <mat-label>position</mat-label>\r\n <mat-select [formControl]=\"position\">\r\n <mat-option *ngFor=\"let e of posEntries\" [value]=\"e.id\">{{\r\n e.value\r\n }}</mat-option>\r\n </mat-select>\r\n <mat-error\r\n *ngIf=\"\r\n $any(position).errors?.required &&\r\n (position.dirty || position.touched)\r\n \"\r\n >position required</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- position (free) -->\r\n <mat-form-field *ngIf=\"!posEntries?.length\" class=\"form-col\">\r\n <mat-label>position</mat-label>\r\n <input matInput [formControl]=\"position\" />\r\n <mat-error\r\n *ngIf=\"\r\n $any(position).errors?.required &&\r\n (position.dirty || position.touched)\r\n \"\r\n >position required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"\r\n $any(position).errors?.maxLength &&\r\n (position.dirty || position.touched)\r\n \"\r\n >position too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n\r\n <fieldset>\r\n <legend>colors</legend>\r\n <cadmus-ui-flags-picker\r\n [flags]=\"clrFlags\"\r\n [selectedIds]=\"initialColors\"\r\n (selectedIdsChange)=\"onSelectedIdsChange($event)\"\r\n ></cadmus-ui-flags-picker>\r\n </fieldset>\r\n\r\n <div class=\"form-row\">\r\n <mat-checkbox [formControl]=\"hasDate\">date</mat-checkbox>\r\n <!-- date -->\r\n <cadmus-refs-historical-date\r\n *ngIf=\"hasDate?.value\"\r\n [date]=\"initialDate\"\r\n (dateChange)=\"onDateChange($event)\"\r\n ></cadmus-refs-historical-date>\r\n </div>\r\n\r\n <div>\r\n <!-- note -->\r\n <mat-form-field class=\"long-text\">\r\n <mat-label>note</mat-label>\r\n <input matInput [formControl]=\"note\" />\r\n <mat-error\r\n *ngIf=\"$any(note).errors?.maxLength && (note.dirty || note.touched)\"\r\n >note too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n\r\n <!-- buttons -->\r\n <div>\r\n <button\r\n type=\"button\"\r\n color=\"warn\"\r\n mat-icon-button\r\n matTooltip=\"Discard changes\"\r\n (click)=\"cancel()\"\r\n >\r\n <mat-icon>clear</mat-icon>\r\n </button>\r\n <button\r\n type=\"submit\"\r\n color=\"primary\"\r\n mat-icon-button\r\n matTooltip=\"Accept changes\"\r\n [disabled]=\"form.invalid || form.pristine\"\r\n >\r\n <mat-icon>check_circle</mat-icon>\r\n </button>\r\n </div>\r\n</form>\r\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}.long-text{width:100%;max-width:800px}fieldset{max-width:900px;margin-bottom:6px;border:1px solid silver;padding:8px;border-radius:6px}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatLabel, selector: "mat-label" }, { kind: "directive", type: i7.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i8.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i9.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i10.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i11.HistoricalDateComponent, selector: "cadmus-refs-historical-date", inputs: ["date", "label", "disabled"], outputs: ["dateChange"] }, { kind: "component", type: i12.FlagsPickerComponent, selector: "cadmus-ui-flags-picker", inputs: ["selectedIds", "flags", "numbering", "toolbar", "allowUserFlags"], outputs: ["selectedIdsChange", "flagsChange"] }] });
134
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: CodNColDefinitionComponent, decorators: [{
135
135
  type: Component,
136
136
  args: [{ selector: 'cadmus-cod-n-col-definition', template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <div class=\"form-row\">\r\n <!-- rank -->\r\n <mat-form-field style=\"width: 6em\">\r\n <mat-label>rank</mat-label>\r\n <input matInput [formControl]=\"rank\" type=\"number\" min=\"0\" />\r\n </mat-form-field>\r\n\r\n <!-- isPagination -->\r\n <mat-checkbox [formControl]=\"isPagination\">pagination</mat-checkbox>\r\n </div>\r\n\r\n <div class=\"form-row\">\r\n <!-- system (bound) -->\r\n <mat-form-field *ngIf=\"sysEntries?.length\" class=\"form-col\">\r\n <mat-label>system</mat-label>\r\n <mat-select [formControl]=\"system\">\r\n <mat-option *ngFor=\"let e of sysEntries\" [value]=\"e.id\">{{\r\n e.value\r\n }}</mat-option>\r\n </mat-select>\r\n <mat-error\r\n *ngIf=\"\r\n $any(system).errors?.required && (system.dirty || system.touched)\r\n \"\r\n >system required</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- system (free) -->\r\n <mat-form-field *ngIf=\"!sysEntries?.length\" class=\"form-col\">\r\n <mat-label>system</mat-label>\r\n <input matInput [formControl]=\"system\" />\r\n <mat-error\r\n *ngIf=\"\r\n $any(system).errors?.required && (system.dirty || system.touched)\r\n \"\r\n >system required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"\r\n $any(system).errors?.maxLength && (system.dirty || system.touched)\r\n \"\r\n >system too long</mat-error\r\n >\r\n </mat-form-field>\r\n\r\n <!-- technique (bound) -->\r\n <mat-form-field *ngIf=\"techEntries?.length\" class=\"form-col\">\r\n <mat-label>technique</mat-label>\r\n <mat-select [formControl]=\"technique\">\r\n <mat-option *ngFor=\"let e of techEntries\" [value]=\"e.id\">{{\r\n e.value\r\n }}</mat-option>\r\n </mat-select>\r\n <mat-error\r\n *ngIf=\"\r\n $any(technique).errors?.required &&\r\n (technique.dirty || technique.touched)\r\n \"\r\n >technique required</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- technique (free) -->\r\n <mat-form-field *ngIf=\"!techEntries?.length\" class=\"form-col\">\r\n <mat-label>technique</mat-label>\r\n <input matInput [formControl]=\"technique\" />\r\n <mat-error\r\n *ngIf=\"\r\n $any(technique).errors?.required &&\r\n (technique.dirty || technique.touched)\r\n \"\r\n >technique required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"\r\n $any(technique).errors?.maxLength &&\r\n (technique.dirty || technique.touched)\r\n \"\r\n >technique too long</mat-error\r\n >\r\n </mat-form-field>\r\n\r\n <!-- position (bound) -->\r\n <mat-form-field *ngIf=\"posEntries?.length\" class=\"form-col\">\r\n <mat-label>position</mat-label>\r\n <mat-select [formControl]=\"position\">\r\n <mat-option *ngFor=\"let e of posEntries\" [value]=\"e.id\">{{\r\n e.value\r\n }}</mat-option>\r\n </mat-select>\r\n <mat-error\r\n *ngIf=\"\r\n $any(position).errors?.required &&\r\n (position.dirty || position.touched)\r\n \"\r\n >position required</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- position (free) -->\r\n <mat-form-field *ngIf=\"!posEntries?.length\" class=\"form-col\">\r\n <mat-label>position</mat-label>\r\n <input matInput [formControl]=\"position\" />\r\n <mat-error\r\n *ngIf=\"\r\n $any(position).errors?.required &&\r\n (position.dirty || position.touched)\r\n \"\r\n >position required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"\r\n $any(position).errors?.maxLength &&\r\n (position.dirty || position.touched)\r\n \"\r\n >position too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n\r\n <fieldset>\r\n <legend>colors</legend>\r\n <cadmus-ui-flags-picker\r\n [flags]=\"clrFlags\"\r\n [selectedIds]=\"initialColors\"\r\n (selectedIdsChange)=\"onSelectedIdsChange($event)\"\r\n ></cadmus-ui-flags-picker>\r\n </fieldset>\r\n\r\n <div class=\"form-row\">\r\n <mat-checkbox [formControl]=\"hasDate\">date</mat-checkbox>\r\n <!-- date -->\r\n <cadmus-refs-historical-date\r\n *ngIf=\"hasDate?.value\"\r\n [date]=\"initialDate\"\r\n (dateChange)=\"onDateChange($event)\"\r\n ></cadmus-refs-historical-date>\r\n </div>\r\n\r\n <div>\r\n <!-- note -->\r\n <mat-form-field class=\"long-text\">\r\n <mat-label>note</mat-label>\r\n <input matInput [formControl]=\"note\" />\r\n <mat-error\r\n *ngIf=\"$any(note).errors?.maxLength && (note.dirty || note.touched)\"\r\n >note too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n\r\n <!-- buttons -->\r\n <div>\r\n <button\r\n type=\"button\"\r\n color=\"warn\"\r\n mat-icon-button\r\n matTooltip=\"Discard changes\"\r\n (click)=\"cancel()\"\r\n >\r\n <mat-icon>clear</mat-icon>\r\n </button>\r\n <button\r\n type=\"submit\"\r\n color=\"primary\"\r\n mat-icon-button\r\n matTooltip=\"Accept changes\"\r\n [disabled]=\"form.invalid || form.pristine\"\r\n >\r\n <mat-icon>check_circle</mat-icon>\r\n </button>\r\n </div>\r\n</form>\r\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}.long-text{width:100%;max-width:800px}fieldset{max-width:900px;margin-bottom:6px;border:1px solid silver;padding:8px;border-radius:6px}\n"] }]
137
137
  }], ctorParameters: function () { return [{ type: i1.FormBuilder }]; }, propDecorators: { definition: [{
@@ -70,9 +70,9 @@ export class CodRColDefinitionComponent {
70
70
  this.definitionChange.emit(this.getModel());
71
71
  }
72
72
  }
73
- CodRColDefinitionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: CodRColDefinitionComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
74
- CodRColDefinitionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.1", type: CodRColDefinitionComponent, selector: "cadmus-cod-r-col-definition", inputs: { definition: "definition", posEntries: "posEntries" }, outputs: { definitionChange: "definitionChange", editorClose: "editorClose" }, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <div class=\"form-row\">\r\n <!-- rank -->\r\n <mat-form-field style=\"width: 6em\">\r\n <mat-label>rank</mat-label>\r\n <input matInput [formControl]=\"rank\" type=\"number\" min=\"0\" />\r\n </mat-form-field>\r\n\r\n <!-- position (bound) -->\r\n <mat-form-field *ngIf=\"posEntries?.length\" class=\"form-col\">\r\n <mat-label>position</mat-label>\r\n <mat-select [formControl]=\"position\">\r\n <mat-option *ngFor=\"let e of posEntries\" [value]=\"e.id\">{{\r\n e.value\r\n }}</mat-option>\r\n </mat-select>\r\n <mat-error\r\n *ngIf=\"\r\n $any(position).errors?.required &&\r\n (position.dirty || position.touched)\r\n \"\r\n >position required</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- position (free) -->\r\n <mat-form-field *ngIf=\"!posEntries?.length\" class=\"form-col\">\r\n <mat-label>position</mat-label>\r\n <input matInput [formControl]=\"position\" />\r\n <mat-error\r\n *ngIf=\"\r\n $any(position).errors?.required &&\r\n (position.dirty || position.touched)\r\n \"\r\n >position required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"\r\n $any(position).errors?.maxLength &&\r\n (position.dirty || position.touched)\r\n \"\r\n >position too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n\r\n <div>\r\n <!-- note -->\r\n <mat-form-field class=\"long-text\">\r\n <mat-label>note</mat-label>\r\n <input matInput [formControl]=\"note\" />\r\n <mat-error\r\n *ngIf=\"$any(note).errors?.maxLength && (note.dirty || note.touched)\"\r\n >note too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n\r\n <!-- buttons -->\r\n <div>\r\n <button\r\n type=\"button\"\r\n color=\"warn\"\r\n mat-icon-button\r\n matTooltip=\"Discard changes\"\r\n (click)=\"cancel()\"\r\n >\r\n <mat-icon>clear</mat-icon>\r\n </button>\r\n <button\r\n type=\"submit\"\r\n color=\"primary\"\r\n mat-icon-button\r\n matTooltip=\"Accept changes\"\r\n [disabled]=\"form.invalid || form.pristine\"\r\n >\r\n <mat-icon>check_circle</mat-icon>\r\n </button>\r\n </div>\r\n</form>\r\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}.long-text{width:100%;max-width:800px}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i7.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i8.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
75
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: CodRColDefinitionComponent, decorators: [{
73
+ CodRColDefinitionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: CodRColDefinitionComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
74
+ CodRColDefinitionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.2", type: CodRColDefinitionComponent, selector: "cadmus-cod-r-col-definition", inputs: { definition: "definition", posEntries: "posEntries" }, outputs: { definitionChange: "definitionChange", editorClose: "editorClose" }, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <div class=\"form-row\">\r\n <!-- rank -->\r\n <mat-form-field style=\"width: 6em\">\r\n <mat-label>rank</mat-label>\r\n <input matInput [formControl]=\"rank\" type=\"number\" min=\"0\" />\r\n </mat-form-field>\r\n\r\n <!-- position (bound) -->\r\n <mat-form-field *ngIf=\"posEntries?.length\" class=\"form-col\">\r\n <mat-label>position</mat-label>\r\n <mat-select [formControl]=\"position\">\r\n <mat-option *ngFor=\"let e of posEntries\" [value]=\"e.id\">{{\r\n e.value\r\n }}</mat-option>\r\n </mat-select>\r\n <mat-error\r\n *ngIf=\"\r\n $any(position).errors?.required &&\r\n (position.dirty || position.touched)\r\n \"\r\n >position required</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- position (free) -->\r\n <mat-form-field *ngIf=\"!posEntries?.length\" class=\"form-col\">\r\n <mat-label>position</mat-label>\r\n <input matInput [formControl]=\"position\" />\r\n <mat-error\r\n *ngIf=\"\r\n $any(position).errors?.required &&\r\n (position.dirty || position.touched)\r\n \"\r\n >position required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"\r\n $any(position).errors?.maxLength &&\r\n (position.dirty || position.touched)\r\n \"\r\n >position too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n\r\n <div>\r\n <!-- note -->\r\n <mat-form-field class=\"long-text\">\r\n <mat-label>note</mat-label>\r\n <input matInput [formControl]=\"note\" />\r\n <mat-error\r\n *ngIf=\"$any(note).errors?.maxLength && (note.dirty || note.touched)\"\r\n >note too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n\r\n <!-- buttons -->\r\n <div>\r\n <button\r\n type=\"button\"\r\n color=\"warn\"\r\n mat-icon-button\r\n matTooltip=\"Discard changes\"\r\n (click)=\"cancel()\"\r\n >\r\n <mat-icon>clear</mat-icon>\r\n </button>\r\n <button\r\n type=\"submit\"\r\n color=\"primary\"\r\n mat-icon-button\r\n matTooltip=\"Accept changes\"\r\n [disabled]=\"form.invalid || form.pristine\"\r\n >\r\n <mat-icon>check_circle</mat-icon>\r\n </button>\r\n </div>\r\n</form>\r\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}.long-text{width:100%;max-width:800px}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i7.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i8.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
75
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: CodRColDefinitionComponent, decorators: [{
76
76
  type: Component,
77
77
  args: [{ selector: 'cadmus-cod-r-col-definition', template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <div class=\"form-row\">\r\n <!-- rank -->\r\n <mat-form-field style=\"width: 6em\">\r\n <mat-label>rank</mat-label>\r\n <input matInput [formControl]=\"rank\" type=\"number\" min=\"0\" />\r\n </mat-form-field>\r\n\r\n <!-- position (bound) -->\r\n <mat-form-field *ngIf=\"posEntries?.length\" class=\"form-col\">\r\n <mat-label>position</mat-label>\r\n <mat-select [formControl]=\"position\">\r\n <mat-option *ngFor=\"let e of posEntries\" [value]=\"e.id\">{{\r\n e.value\r\n }}</mat-option>\r\n </mat-select>\r\n <mat-error\r\n *ngIf=\"\r\n $any(position).errors?.required &&\r\n (position.dirty || position.touched)\r\n \"\r\n >position required</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- position (free) -->\r\n <mat-form-field *ngIf=\"!posEntries?.length\" class=\"form-col\">\r\n <mat-label>position</mat-label>\r\n <input matInput [formControl]=\"position\" />\r\n <mat-error\r\n *ngIf=\"\r\n $any(position).errors?.required &&\r\n (position.dirty || position.touched)\r\n \"\r\n >position required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"\r\n $any(position).errors?.maxLength &&\r\n (position.dirty || position.touched)\r\n \"\r\n >position too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n\r\n <div>\r\n <!-- note -->\r\n <mat-form-field class=\"long-text\">\r\n <mat-label>note</mat-label>\r\n <input matInput [formControl]=\"note\" />\r\n <mat-error\r\n *ngIf=\"$any(note).errors?.maxLength && (note.dirty || note.touched)\"\r\n >note too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n\r\n <!-- buttons -->\r\n <div>\r\n <button\r\n type=\"button\"\r\n color=\"warn\"\r\n mat-icon-button\r\n matTooltip=\"Discard changes\"\r\n (click)=\"cancel()\"\r\n >\r\n <mat-icon>clear</mat-icon>\r\n </button>\r\n <button\r\n type=\"submit\"\r\n color=\"primary\"\r\n mat-icon-button\r\n matTooltip=\"Accept changes\"\r\n [disabled]=\"form.invalid || form.pristine\"\r\n >\r\n <mat-icon>check_circle</mat-icon>\r\n </button>\r\n </div>\r\n</form>\r\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}.long-text{width:100%;max-width:800px}\n"] }]
78
78
  }], ctorParameters: function () { return [{ type: i1.FormBuilder }]; }, propDecorators: { definition: [{
@@ -76,9 +76,9 @@ export class CodSColDefinitionComponent {
76
76
  this.definitionChange.emit(this.getModel());
77
77
  }
78
78
  }
79
- CodSColDefinitionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: CodSColDefinitionComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
80
- CodSColDefinitionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.1", type: CodSColDefinitionComponent, selector: "cadmus-cod-s-col-definition", inputs: { definition: "definition", sysEntries: "sysEntries", posEntries: "posEntries" }, outputs: { definitionChange: "definitionChange", editorClose: "editorClose" }, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <div class=\"form-row\">\r\n <!-- rank -->\r\n <mat-form-field style=\"width: 6em\">\r\n <mat-label>rank</mat-label>\r\n <input matInput [formControl]=\"rank\" type=\"number\" min=\"0\" />\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"form-row\">\r\n <!-- system (bound) -->\r\n <mat-form-field *ngIf=\"sysEntries?.length\" class=\"form-col\">\r\n <mat-label>system</mat-label>\r\n <mat-select [formControl]=\"system\">\r\n <mat-option *ngFor=\"let e of sysEntries\" [value]=\"e.id\">{{\r\n e.value\r\n }}</mat-option>\r\n </mat-select>\r\n <mat-error\r\n *ngIf=\"\r\n $any(system).errors?.required && (system.dirty || system.touched)\r\n \"\r\n >system required</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- system (free) -->\r\n <mat-form-field *ngIf=\"!sysEntries?.length\" class=\"form-col\">\r\n <mat-label>system</mat-label>\r\n <input matInput [formControl]=\"system\" />\r\n <mat-error\r\n *ngIf=\"\r\n $any(system).errors?.required && (system.dirty || system.touched)\r\n \"\r\n >system required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"\r\n $any(system).errors?.maxLength && (system.dirty || system.touched)\r\n \"\r\n >system too long</mat-error\r\n >\r\n </mat-form-field>\r\n\r\n <!-- position (bound) -->\r\n <mat-form-field *ngIf=\"posEntries?.length\" class=\"form-col\">\r\n <mat-label>position</mat-label>\r\n <mat-select [formControl]=\"position\">\r\n <mat-option *ngFor=\"let e of posEntries\" [value]=\"e.id\">{{\r\n e.value\r\n }}</mat-option>\r\n </mat-select>\r\n <mat-error\r\n *ngIf=\"\r\n $any(position).errors?.required &&\r\n (position.dirty || position.touched)\r\n \"\r\n >position required</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- position (free) -->\r\n <mat-form-field *ngIf=\"!posEntries?.length\" class=\"form-col\">\r\n <mat-label>position</mat-label>\r\n <input matInput [formControl]=\"position\" />\r\n <mat-error\r\n *ngIf=\"\r\n $any(position).errors?.required &&\r\n (position.dirty || position.touched)\r\n \"\r\n >position required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"\r\n $any(position).errors?.maxLength &&\r\n (position.dirty || position.touched)\r\n \"\r\n >position too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n\r\n <div>\r\n <!-- note -->\r\n <mat-form-field class=\"long-text\">\r\n <mat-label>note</mat-label>\r\n <input matInput [formControl]=\"note\" />\r\n <mat-error\r\n *ngIf=\"$any(note).errors?.maxLength && (note.dirty || note.touched)\"\r\n >note too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n\r\n <!-- buttons -->\r\n <div>\r\n <button\r\n type=\"button\"\r\n color=\"warn\"\r\n mat-icon-button\r\n matTooltip=\"Discard changes\"\r\n (click)=\"cancel()\"\r\n >\r\n <mat-icon>clear</mat-icon>\r\n </button>\r\n <button\r\n type=\"submit\"\r\n color=\"primary\"\r\n mat-icon-button\r\n matTooltip=\"Accept changes\"\r\n [disabled]=\"form.invalid || form.pristine\"\r\n >\r\n <mat-icon>check_circle</mat-icon>\r\n </button>\r\n </div>\r\n</form>\r\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}.long-text{width:100%;max-width:800px}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i7.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i8.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
81
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: CodSColDefinitionComponent, decorators: [{
79
+ CodSColDefinitionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: CodSColDefinitionComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
80
+ CodSColDefinitionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.2", type: CodSColDefinitionComponent, selector: "cadmus-cod-s-col-definition", inputs: { definition: "definition", sysEntries: "sysEntries", posEntries: "posEntries" }, outputs: { definitionChange: "definitionChange", editorClose: "editorClose" }, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <div class=\"form-row\">\r\n <!-- rank -->\r\n <mat-form-field style=\"width: 6em\">\r\n <mat-label>rank</mat-label>\r\n <input matInput [formControl]=\"rank\" type=\"number\" min=\"0\" />\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"form-row\">\r\n <!-- system (bound) -->\r\n <mat-form-field *ngIf=\"sysEntries?.length\" class=\"form-col\">\r\n <mat-label>system</mat-label>\r\n <mat-select [formControl]=\"system\">\r\n <mat-option *ngFor=\"let e of sysEntries\" [value]=\"e.id\">{{\r\n e.value\r\n }}</mat-option>\r\n </mat-select>\r\n <mat-error\r\n *ngIf=\"\r\n $any(system).errors?.required && (system.dirty || system.touched)\r\n \"\r\n >system required</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- system (free) -->\r\n <mat-form-field *ngIf=\"!sysEntries?.length\" class=\"form-col\">\r\n <mat-label>system</mat-label>\r\n <input matInput [formControl]=\"system\" />\r\n <mat-error\r\n *ngIf=\"\r\n $any(system).errors?.required && (system.dirty || system.touched)\r\n \"\r\n >system required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"\r\n $any(system).errors?.maxLength && (system.dirty || system.touched)\r\n \"\r\n >system too long</mat-error\r\n >\r\n </mat-form-field>\r\n\r\n <!-- position (bound) -->\r\n <mat-form-field *ngIf=\"posEntries?.length\" class=\"form-col\">\r\n <mat-label>position</mat-label>\r\n <mat-select [formControl]=\"position\">\r\n <mat-option *ngFor=\"let e of posEntries\" [value]=\"e.id\">{{\r\n e.value\r\n }}</mat-option>\r\n </mat-select>\r\n <mat-error\r\n *ngIf=\"\r\n $any(position).errors?.required &&\r\n (position.dirty || position.touched)\r\n \"\r\n >position required</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- position (free) -->\r\n <mat-form-field *ngIf=\"!posEntries?.length\" class=\"form-col\">\r\n <mat-label>position</mat-label>\r\n <input matInput [formControl]=\"position\" />\r\n <mat-error\r\n *ngIf=\"\r\n $any(position).errors?.required &&\r\n (position.dirty || position.touched)\r\n \"\r\n >position required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"\r\n $any(position).errors?.maxLength &&\r\n (position.dirty || position.touched)\r\n \"\r\n >position too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n\r\n <div>\r\n <!-- note -->\r\n <mat-form-field class=\"long-text\">\r\n <mat-label>note</mat-label>\r\n <input matInput [formControl]=\"note\" />\r\n <mat-error\r\n *ngIf=\"$any(note).errors?.maxLength && (note.dirty || note.touched)\"\r\n >note too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n\r\n <!-- buttons -->\r\n <div>\r\n <button\r\n type=\"button\"\r\n color=\"warn\"\r\n mat-icon-button\r\n matTooltip=\"Discard changes\"\r\n (click)=\"cancel()\"\r\n >\r\n <mat-icon>clear</mat-icon>\r\n </button>\r\n <button\r\n type=\"submit\"\r\n color=\"primary\"\r\n mat-icon-button\r\n matTooltip=\"Accept changes\"\r\n [disabled]=\"form.invalid || form.pristine\"\r\n >\r\n <mat-icon>check_circle</mat-icon>\r\n </button>\r\n </div>\r\n</form>\r\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}.long-text{width:100%;max-width:800px}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i7.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i8.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
81
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: CodSColDefinitionComponent, decorators: [{
82
82
  type: Component,
83
83
  args: [{ selector: 'cadmus-cod-s-col-definition', template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <div class=\"form-row\">\r\n <!-- rank -->\r\n <mat-form-field style=\"width: 6em\">\r\n <mat-label>rank</mat-label>\r\n <input matInput [formControl]=\"rank\" type=\"number\" min=\"0\" />\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"form-row\">\r\n <!-- system (bound) -->\r\n <mat-form-field *ngIf=\"sysEntries?.length\" class=\"form-col\">\r\n <mat-label>system</mat-label>\r\n <mat-select [formControl]=\"system\">\r\n <mat-option *ngFor=\"let e of sysEntries\" [value]=\"e.id\">{{\r\n e.value\r\n }}</mat-option>\r\n </mat-select>\r\n <mat-error\r\n *ngIf=\"\r\n $any(system).errors?.required && (system.dirty || system.touched)\r\n \"\r\n >system required</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- system (free) -->\r\n <mat-form-field *ngIf=\"!sysEntries?.length\" class=\"form-col\">\r\n <mat-label>system</mat-label>\r\n <input matInput [formControl]=\"system\" />\r\n <mat-error\r\n *ngIf=\"\r\n $any(system).errors?.required && (system.dirty || system.touched)\r\n \"\r\n >system required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"\r\n $any(system).errors?.maxLength && (system.dirty || system.touched)\r\n \"\r\n >system too long</mat-error\r\n >\r\n </mat-form-field>\r\n\r\n <!-- position (bound) -->\r\n <mat-form-field *ngIf=\"posEntries?.length\" class=\"form-col\">\r\n <mat-label>position</mat-label>\r\n <mat-select [formControl]=\"position\">\r\n <mat-option *ngFor=\"let e of posEntries\" [value]=\"e.id\">{{\r\n e.value\r\n }}</mat-option>\r\n </mat-select>\r\n <mat-error\r\n *ngIf=\"\r\n $any(position).errors?.required &&\r\n (position.dirty || position.touched)\r\n \"\r\n >position required</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- position (free) -->\r\n <mat-form-field *ngIf=\"!posEntries?.length\" class=\"form-col\">\r\n <mat-label>position</mat-label>\r\n <input matInput [formControl]=\"position\" />\r\n <mat-error\r\n *ngIf=\"\r\n $any(position).errors?.required &&\r\n (position.dirty || position.touched)\r\n \"\r\n >position required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"\r\n $any(position).errors?.maxLength &&\r\n (position.dirty || position.touched)\r\n \"\r\n >position too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n\r\n <div>\r\n <!-- note -->\r\n <mat-form-field class=\"long-text\">\r\n <mat-label>note</mat-label>\r\n <input matInput [formControl]=\"note\" />\r\n <mat-error\r\n *ngIf=\"$any(note).errors?.maxLength && (note.dirty || note.touched)\"\r\n >note too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n\r\n <!-- buttons -->\r\n <div>\r\n <button\r\n type=\"button\"\r\n color=\"warn\"\r\n mat-icon-button\r\n matTooltip=\"Discard changes\"\r\n (click)=\"cancel()\"\r\n >\r\n <mat-icon>clear</mat-icon>\r\n </button>\r\n <button\r\n type=\"submit\"\r\n color=\"primary\"\r\n mat-icon-button\r\n matTooltip=\"Accept changes\"\r\n [disabled]=\"form.invalid || form.pristine\"\r\n >\r\n <mat-icon>check_circle</mat-icon>\r\n </button>\r\n </div>\r\n</form>\r\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}.long-text{width:100%;max-width:800px}\n"] }]
84
84
  }], ctorParameters: function () { return [{ type: i1.FormBuilder }]; }, propDecorators: { definition: [{
@@ -15,9 +15,9 @@ export class CellAdapterPipe {
15
15
  return { ...col, rowId: rowId };
16
16
  }
17
17
  }
18
- CellAdapterPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: CellAdapterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
19
- CellAdapterPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.1.1", ngImport: i0, type: CellAdapterPipe, name: "cellAdapter" });
20
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: CellAdapterPipe, decorators: [{
18
+ CellAdapterPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: CellAdapterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
19
+ CellAdapterPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.1.2", ngImport: i0, type: CellAdapterPipe, name: "cellAdapter" });
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: CellAdapterPipe, decorators: [{
21
21
  type: Pipe,
22
22
  args: [{
23
23
  name: 'cellAdapter',
@@ -24,9 +24,9 @@ export class CellTypeColorPipe {
24
24
  return null;
25
25
  }
26
26
  }
27
- CellTypeColorPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: CellTypeColorPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
28
- CellTypeColorPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.1.1", ngImport: i0, type: CellTypeColorPipe, name: "cellTypeColor" });
29
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: CellTypeColorPipe, decorators: [{
27
+ CellTypeColorPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: CellTypeColorPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
28
+ CellTypeColorPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.1.2", ngImport: i0, type: CellTypeColorPipe, name: "cellTypeColor" });
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: CellTypeColorPipe, decorators: [{
30
30
  type: Pipe,
31
31
  args: [{
32
32
  name: 'cellTypeColor',