@myrmidon/cadmus-part-codicology-shelfmarks 2.0.3 → 2.0.4

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.
@@ -19,8 +19,8 @@ import { CodShelfmarksPartFeatureComponent } from './cod-shelfmarks-part-feature
19
19
  import * as i0 from "@angular/core";
20
20
  export class CadmusPartCodicologyShelfmarksModule {
21
21
  }
22
- CadmusPartCodicologyShelfmarksModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: CadmusPartCodicologyShelfmarksModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
23
- CadmusPartCodicologyShelfmarksModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.3", ngImport: i0, type: CadmusPartCodicologyShelfmarksModule, declarations: [CodShelfmarksPartComponent,
22
+ CadmusPartCodicologyShelfmarksModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: CadmusPartCodicologyShelfmarksModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
23
+ CadmusPartCodicologyShelfmarksModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.3", ngImport: i0, type: CadmusPartCodicologyShelfmarksModule, declarations: [CodShelfmarksPartComponent,
24
24
  CodShelfmarkEditorComponent,
25
25
  CodShelfmarksPartFeatureComponent], imports: [CommonModule,
26
26
  FormsModule,
@@ -39,7 +39,7 @@ CadmusPartCodicologyShelfmarksModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersi
39
39
  CadmusUiPgModule], exports: [CodShelfmarksPartComponent,
40
40
  CodShelfmarkEditorComponent,
41
41
  CodShelfmarksPartFeatureComponent] });
42
- CadmusPartCodicologyShelfmarksModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: CadmusPartCodicologyShelfmarksModule, imports: [CommonModule,
42
+ CadmusPartCodicologyShelfmarksModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: CadmusPartCodicologyShelfmarksModule, imports: [CommonModule,
43
43
  FormsModule,
44
44
  ReactiveFormsModule,
45
45
  // material
@@ -54,7 +54,7 @@ CadmusPartCodicologyShelfmarksModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersi
54
54
  CadmusStateModule,
55
55
  CadmusUiModule,
56
56
  CadmusUiPgModule] });
57
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: CadmusPartCodicologyShelfmarksModule, decorators: [{
57
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: CadmusPartCodicologyShelfmarksModule, decorators: [{
58
58
  type: NgModule,
59
59
  args: [{
60
60
  declarations: [
@@ -38,6 +38,9 @@ export class CodShelfmarkEditorComponent {
38
38
  return this._shelfmark;
39
39
  }
40
40
  set shelfmark(value) {
41
+ if (this._shelfmark === value) {
42
+ return;
43
+ }
41
44
  this._shelfmark = value;
42
45
  this.updateForm(value);
43
46
  }
@@ -74,16 +77,13 @@ export class CodShelfmarkEditorComponent {
74
77
  if (this.form.invalid) {
75
78
  return;
76
79
  }
77
- const model = this.getModel();
78
- if (!model) {
79
- return;
80
- }
81
- this.shelfmarkChange.emit(model);
80
+ this._shelfmark = this.getModel();
81
+ this.shelfmarkChange.emit(this._shelfmark);
82
82
  }
83
83
  }
84
- CodShelfmarkEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: CodShelfmarkEditorComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
85
- CodShelfmarkEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.3", type: CodShelfmarkEditorComponent, selector: "cadmus-cod-shelfmark-editor", inputs: { shelfmark: "shelfmark", tagEntries: "tagEntries", libEntries: "libEntries" }, outputs: { shelfmarkChange: "shelfmarkChange", editorClose: "editorClose" }, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <div>\r\n <!-- tag (bound) -->\r\n <mat-form-field *ngIf=\"tagEntries?.length\" style=\"width: 8em\">\r\n <mat-label>tag</mat-label>\r\n <mat-select [formControl]=\"tag\">\r\n <mat-option *ngFor=\"let e of tagEntries\" [value]=\"e.id\">{{\r\n e.value\r\n }}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <!-- tag (free) -->\r\n <mat-form-field *ngIf=\"!tagEntries?.length\">\r\n <mat-label>tag</mat-label>\r\n <input matInput [formControl]=\"tag\" />\r\n <mat-error\r\n *ngIf=\"$any(tag).errors?.maxLength && (tag.dirty || tag.touched)\"\r\n >tag too long</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- city -->\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>city</mat-label>\r\n <input matInput [formControl]=\"city\" />\r\n <mat-error\r\n *ngIf=\"$any(city).errors?.required && (city.dirty || city.touched)\"\r\n >city required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"$any(city).errors?.maxLength && (city.dirty || city.touched)\"\r\n >city too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n <div>\r\n <!-- library (bound) -->\r\n <mat-form-field *ngIf=\"libEntries?.length\" style=\"width: 8em\">\r\n <mat-label>library</mat-label>\r\n <mat-select [formControl]=\"library\">\r\n <mat-option *ngFor=\"let e of libEntries\" [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(library).errors?.required && (library.dirty || library.touched)\r\n \"\r\n >library required</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- library (free) -->\r\n <mat-form-field *ngIf=\"!libEntries?.length\">\r\n <mat-label>library</mat-label>\r\n <input matInput [formControl]=\"library\" />\r\n <mat-error\r\n *ngIf=\"\r\n $any(library).errors?.required && (library.dirty || library.touched)\r\n \"\r\n >library required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"\r\n $any(library).errors?.maxLength && (library.dirty || library.touched)\r\n \"\r\n >library too long</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- fund -->\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>fund</mat-label>\r\n <input matInput [formControl]=\"fund\" />\r\n <mat-error\r\n *ngIf=\"$any(fund).errors?.maxLength && (fund.dirty || fund.touched)\"\r\n >fund too long</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- location -->\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>location</mat-label>\r\n <input matInput [formControl]=\"location\" />\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-error\r\n *ngIf=\"\r\n $any(location).errors?.maxLength &&\r\n (location.dirty || location.touched)\r\n \"\r\n >location too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\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: [""], 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"] }] });
86
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: CodShelfmarkEditorComponent, decorators: [{
84
+ CodShelfmarkEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: CodShelfmarkEditorComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
85
+ CodShelfmarkEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.3", type: CodShelfmarkEditorComponent, selector: "cadmus-cod-shelfmark-editor", inputs: { shelfmark: "shelfmark", tagEntries: "tagEntries", libEntries: "libEntries" }, outputs: { shelfmarkChange: "shelfmarkChange", editorClose: "editorClose" }, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <div>\r\n <!-- tag (bound) -->\r\n <mat-form-field *ngIf=\"tagEntries?.length\" style=\"width: 8em\">\r\n <mat-label>tag</mat-label>\r\n <mat-select [formControl]=\"tag\">\r\n <mat-option *ngFor=\"let e of tagEntries\" [value]=\"e.id\">{{\r\n e.value\r\n }}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <!-- tag (free) -->\r\n <mat-form-field *ngIf=\"!tagEntries?.length\">\r\n <mat-label>tag</mat-label>\r\n <input matInput [formControl]=\"tag\" />\r\n <mat-error\r\n *ngIf=\"$any(tag).errors?.maxLength && (tag.dirty || tag.touched)\"\r\n >tag too long</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- city -->\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>city</mat-label>\r\n <input matInput [formControl]=\"city\" />\r\n <mat-error\r\n *ngIf=\"$any(city).errors?.required && (city.dirty || city.touched)\"\r\n >city required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"$any(city).errors?.maxLength && (city.dirty || city.touched)\"\r\n >city too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n <div>\r\n <!-- library (bound) -->\r\n <mat-form-field *ngIf=\"libEntries?.length\" style=\"width: 8em\">\r\n <mat-label>library</mat-label>\r\n <mat-select [formControl]=\"library\">\r\n <mat-option *ngFor=\"let e of libEntries\" [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(library).errors?.required && (library.dirty || library.touched)\r\n \"\r\n >library required</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- library (free) -->\r\n <mat-form-field *ngIf=\"!libEntries?.length\">\r\n <mat-label>library</mat-label>\r\n <input matInput [formControl]=\"library\" />\r\n <mat-error\r\n *ngIf=\"\r\n $any(library).errors?.required && (library.dirty || library.touched)\r\n \"\r\n >library required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"\r\n $any(library).errors?.maxLength && (library.dirty || library.touched)\r\n \"\r\n >library too long</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- fund -->\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>fund</mat-label>\r\n <input matInput [formControl]=\"fund\" />\r\n <mat-error\r\n *ngIf=\"$any(fund).errors?.maxLength && (fund.dirty || fund.touched)\"\r\n >fund too long</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- location -->\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>location</mat-label>\r\n <input matInput [formControl]=\"location\" />\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-error\r\n *ngIf=\"\r\n $any(location).errors?.maxLength &&\r\n (location.dirty || location.touched)\r\n \"\r\n >location too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\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: [""], 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"] }] });
86
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: CodShelfmarkEditorComponent, decorators: [{
87
87
  type: Component,
88
88
  args: [{ selector: 'cadmus-cod-shelfmark-editor', template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <div>\r\n <!-- tag (bound) -->\r\n <mat-form-field *ngIf=\"tagEntries?.length\" style=\"width: 8em\">\r\n <mat-label>tag</mat-label>\r\n <mat-select [formControl]=\"tag\">\r\n <mat-option *ngFor=\"let e of tagEntries\" [value]=\"e.id\">{{\r\n e.value\r\n }}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <!-- tag (free) -->\r\n <mat-form-field *ngIf=\"!tagEntries?.length\">\r\n <mat-label>tag</mat-label>\r\n <input matInput [formControl]=\"tag\" />\r\n <mat-error\r\n *ngIf=\"$any(tag).errors?.maxLength && (tag.dirty || tag.touched)\"\r\n >tag too long</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- city -->\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>city</mat-label>\r\n <input matInput [formControl]=\"city\" />\r\n <mat-error\r\n *ngIf=\"$any(city).errors?.required && (city.dirty || city.touched)\"\r\n >city required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"$any(city).errors?.maxLength && (city.dirty || city.touched)\"\r\n >city too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n <div>\r\n <!-- library (bound) -->\r\n <mat-form-field *ngIf=\"libEntries?.length\" style=\"width: 8em\">\r\n <mat-label>library</mat-label>\r\n <mat-select [formControl]=\"library\">\r\n <mat-option *ngFor=\"let e of libEntries\" [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(library).errors?.required && (library.dirty || library.touched)\r\n \"\r\n >library required</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- library (free) -->\r\n <mat-form-field *ngIf=\"!libEntries?.length\">\r\n <mat-label>library</mat-label>\r\n <input matInput [formControl]=\"library\" />\r\n <mat-error\r\n *ngIf=\"\r\n $any(library).errors?.required && (library.dirty || library.touched)\r\n \"\r\n >library required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"\r\n $any(library).errors?.maxLength && (library.dirty || library.touched)\r\n \"\r\n >library too long</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- fund -->\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>fund</mat-label>\r\n <input matInput [formControl]=\"fund\" />\r\n <mat-error\r\n *ngIf=\"$any(fund).errors?.maxLength && (fund.dirty || fund.touched)\"\r\n >fund too long</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- location -->\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>location</mat-label>\r\n <input matInput [formControl]=\"location\" />\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-error\r\n *ngIf=\"\r\n $any(location).errors?.maxLength &&\r\n (location.dirty || location.touched)\r\n \"\r\n >location too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\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" }]
89
89
  }], ctorParameters: function () { return [{ type: i1.FormBuilder }]; }, propDecorators: { shelfmark: [{
@@ -97,4 +97,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImpor
97
97
  }], editorClose: [{
98
98
  type: Output
99
99
  }] } });
100
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kLXNoZWxmbWFyay1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlybWlkb24vY2FkbXVzLXBhcnQtY29kaWNvbG9neS1zaGVsZm1hcmtzL3NyYy9saWIvY29kLXNoZWxmbWFyay1lZGl0b3IvY29kLXNoZWxmbWFyay1lZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlybWlkb24vY2FkbXVzLXBhcnQtY29kaWNvbG9neS1zaGVsZm1hcmtzL3NyYy9saWIvY29kLXNoZWxmbWFyay1lZGl0b3IvY29kLXNoZWxmbWFyay1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBSUwsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7O0FBU3hCLE1BQU0sT0FBTywyQkFBMkI7SUErQnRDLFlBQVksV0FBd0I7UUFDbEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLFlBQVksRUFBZ0IsQ0FBQztRQUN4RCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDM0MsT0FBTztRQUNQLElBQUksQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQy9ELElBQUksQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFDcEMsVUFBVSxDQUFDLFFBQVE7WUFDbkIsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7U0FDekIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLE9BQU8sR0FBRyxXQUFX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LElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDVixPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDOzt3SEFuR1UsMkJBQTJCOzRHQUEzQiwyQkFBMkIsd09DZnhDLDR2SEF5SEE7MkZEMUdhLDJCQUEyQjtrQkFMdkMsU0FBUzsrQkFDRSw2QkFBNkI7a0dBUTVCLFNBQVM7c0JBRG5CLEtBQUs7Z0JBV0MsVUFBVTtzQkFEaEIsS0FBSztnQkFJQyxVQUFVO3NCQURoQixLQUFLO2dCQUlDLGVBQWU7c0JBRHJCLE1BQU07Z0JBR0EsV0FBVztzQkFEakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBGb3JtQnVpbGRlcixcclxuICBGb3JtQ29udHJvbCxcclxuICBGb3JtR3JvdXAsXHJcbiAgVmFsaWRhdG9ycyxcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFRoZXNhdXJ1c0VudHJ5IH0gZnJvbSAnQG15cm1pZG9uL2NhZG11cy1jb3JlJztcclxuaW1wb3J0IHsgQ29kU2hlbGZtYXJrIH0gZnJvbSAnLi4vY29kLXNoZWxmbWFya3MtcGFydCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NhZG11cy1jb2Qtc2hlbGZtYXJrLWVkaXRvcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvZC1zaGVsZm1hcmstZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb2Qtc2hlbGZtYXJrLWVkaXRvci5jb21wb25lbnQuY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb2RTaGVsZm1hcmtFZGl0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHByaXZhdGUgX3NoZWxmbWFyazogQ29kU2hlbGZtYXJrIHwgdW5kZWZpbmVkO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBnZXQgc2hlbGZtYXJrKCk6IENvZFNoZWxmbWFyayB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2hlbGZtYXJrO1xyXG4gIH1cclxuICBwdWJsaWMgc2V0IHNoZWxmbWFyayh2YWx1ZTogQ29kU2hlbGZtYXJrIHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLl9zaGVsZm1hcmsgPSB2YWx1ZTtcclxuICAgIHRoaXMudXBkYXRlRm9ybSh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICAvLyBjb2Qtc2hlbGZtYXJrLXRhZ3NcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyB0YWdFbnRyaWVzOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkO1xyXG4gIC8vIGNvZC1zaGVsZm1hcmstbGlicmFyaWVzXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgbGliRW50cmllczogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZDtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHNoZWxmbWFya0NoYW5nZTogRXZlbnRFbWl0dGVyPENvZFNoZWxmbWFyaz47XHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGVkaXRvckNsb3NlOiBFdmVudEVtaXR0ZXI8YW55PjtcclxuXHJcbiAgcHVibGljIHRhZzogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD47XHJcbiAgcHVibGljIGNpdHk6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xyXG4gIHB1YmxpYyBsaWJyYXJ5OiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPjtcclxuICBwdWJsaWMgZnVuZDogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD47XHJcbiAgcHVibGljIGxvY2F0aW9uOiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPjtcclxuICBwdWJsaWMgZm9ybTogRm9ybUdyb3VwO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIpIHtcclxuICAgIHRoaXMuc2hlbGZtYXJrQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxDb2RTaGVsZm1hcms+KCk7XHJcbiAgICB0aGlzLmVkaXRvckNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICAvLyBmb3JtXHJcbiAgICB0aGlzLnRhZyA9IGZvcm1CdWlsZGVyLmNvbnRyb2wobnVsbCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNTApKTtcclxuICAgIHRoaXMuY2l0eSA9IGZvcm1CdWlsZGVyLmNvbnRyb2wobnVsbCwgW1xyXG4gICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICBWYWxpZGF0b3JzLm1heExlbmd0aCg1MCksXHJcbiAgICBdKTtcclxuICAgIHRoaXMubGlicmFyeSA9IGZvcm1CdWlsZGVyLmNvbnRyb2wobnVsbCwgW1xyXG4gICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICBWYWxpZGF0b3JzLm1heExlbmd0aCg1MCksXHJcbiAgICBdKTtcclxuICAgIHRoaXMuZnVuZCA9IGZvcm1CdWlsZGVyLmNvbnRyb2wobnVsbCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNTApKTtcclxuICAgIHRoaXMubG9jYXRpb24gPSBmb3JtQnVpbGRlci5jb250cm9sKG51bGwsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDUwKSk7XHJcblxyXG4gICAgdGhpcy5mb3JtID0gZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICB0YWc6IHRoaXMudGFnLFxyXG4gICAgICBjaXR5OiB0aGlzLmNpdHksXHJcbiAgICAgIGxpYnJhcnk6IHRoaXMubGlicmFyeSxcclxuICAgICAgZnVuZDogdGhpcy5mdW5kLFxyXG4gICAgICBsb2NhdGlvbjogdGhpcy5sb2NhdGlvbixcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fc2hlbGZtYXJrKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlRm9ybSh0aGlzLl9zaGVsZm1hcmspO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVGb3JtKG1vZGVsOiBDb2RTaGVsZm1hcmsgfCB1bmRlZmluZWQpOiB2b2lkIHtcclxuICAgIGlmICghbW9kZWwpIHtcclxuICAgICAgdGhpcy5mb3JtLnJlc2V0KCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnRhZy5zZXRWYWx1ZShtb2RlbC50YWcgfHwgbnVsbCk7XHJcbiAgICB0aGlzLmNpdHkuc2V0VmFsdWUobW9kZWwuY2l0eSk7XHJcbiAgICB0aGlzLmxpYnJhcnkuc2V0VmFsdWUobW9kZWwubGlicmFyeSk7XHJcbiAgICB0aGlzLmZ1bmQuc2V0VmFsdWUobW9kZWwuZnVuZCB8fCBudWxsKTtcclxuICAgIHRoaXMubG9jYXRpb24uc2V0VmFsdWUobW9kZWwubG9jYXRpb24pO1xyXG4gICAgdGhpcy5mb3JtLm1hcmtBc1ByaXN0aW5lKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldE1vZGVsKCk6IENvZFNoZWxmbWFyayB8IG51bGwge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdGFnOiB0aGlzLnRhZy52YWx1ZT8udHJpbSgpLFxyXG4gICAgICBjaXR5OiB0aGlzLmNpdHkudmFsdWU/LnRyaW0oKSB8fCAnJyxcclxuICAgICAgbGlicmFyeTogdGhpcy5saWJyYXJ5LnZhbHVlPy50cmltKCkgfHwgJycsXHJcbiAgICAgIGZ1bmQ6IHRoaXMuZnVuZC52YWx1ZT8udHJpbSgpLFxyXG4gICAgICBsb2NhdGlvbjogdGhpcy5sb2NhdGlvbi52YWx1ZT8udHJpbSgpIHx8ICcnLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjYW5jZWwoKTogdm9pZCB7XHJcbiAgICB0aGlzLmVkaXRvckNsb3NlLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzYXZlKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZm9ybS5pbnZhbGlkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IG1vZGVsID0gdGhpcy5nZXRNb2RlbCgpO1xyXG4gICAgaWYgKCFtb2RlbCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnNoZWxmbWFya0NoYW5nZS5lbWl0KG1vZGVsKTtcclxuICB9XHJcbn1cclxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgKHN1Ym1pdCk9XCJzYXZlKClcIj5cclxuICA8ZGl2PlxyXG4gICAgPCEtLSB0YWcgKGJvdW5kKSAtLT5cclxuICAgIDxtYXQtZm9ybS1maWVsZCAqbmdJZj1cInRhZ0VudHJpZXM/Lmxlbmd0aFwiIHN0eWxlPVwid2lkdGg6IDhlbVwiPlxyXG4gICAgICA8bWF0LWxhYmVsPnRhZzwvbWF0LWxhYmVsPlxyXG4gICAgICA8bWF0LXNlbGVjdCBbZm9ybUNvbnRyb2xdPVwidGFnXCI+XHJcbiAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGUgb2YgdGFnRW50cmllc1wiIFt2YWx1ZV09XCJlLmlkXCI+e3tcclxuICAgICAgICAgIGUudmFsdWVcclxuICAgICAgICB9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwhLS0gdGFnIChmcmVlKSAtLT5cclxuICAgIDxtYXQtZm9ybS1maWVsZCAqbmdJZj1cIiF0YWdFbnRyaWVzPy5sZW5ndGhcIj5cclxuICAgICAgPG1hdC1sYWJlbD50YWc8L21hdC1sYWJlbD5cclxuICAgICAgPGlucHV0IG1hdElucHV0IFtmb3JtQ29udHJvbF09XCJ0YWdcIiAvPlxyXG4gICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgKm5nSWY9XCIkYW55KHRhZykuZXJyb3JzPy5tYXhMZW5ndGggJiYgKHRhZy5kaXJ0eSB8fCB0YWcudG91Y2hlZClcIlxyXG4gICAgICAgID50YWcgdG9vIGxvbmc8L21hdC1lcnJvclxyXG4gICAgICA+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPCEtLSBjaXR5IC0tPlxyXG4gICAgJm5ic3A7XHJcbiAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDxtYXQtbGFiZWw+Y2l0eTwvbWF0LWxhYmVsPlxyXG4gICAgICA8aW5wdXQgbWF0SW5wdXQgW2Zvcm1Db250cm9sXT1cImNpdHlcIiAvPlxyXG4gICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgKm5nSWY9XCIkYW55KGNpdHkpLmVycm9ycz8ucmVxdWlyZWQgJiYgKGNpdHkuZGlydHkgfHwgY2l0eS50b3VjaGVkKVwiXHJcbiAgICAgICAgPmNpdHkgcmVxdWlyZWQ8L21hdC1lcnJvclxyXG4gICAgICA+XHJcbiAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAqbmdJZj1cIiRhbnkoY2l0eSkuZXJyb3JzPy5tYXhMZW5ndGggJiYgKGNpdHkuZGlydHkgfHwgY2l0eS50b3VjaGVkKVwiXHJcbiAgICAgICAgPmNpdHkgdG9vIGxvbmc8L21hdC1lcnJvclxyXG4gICAgICA+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXY+XHJcbiAgICA8IS0tIGxpYnJhcnkgKGJvdW5kKSAtLT5cclxuICAgIDxtYXQtZm9ybS1maWVsZCAqbmdJZj1cImxpYkVudHJpZXM/Lmxlbmd0aFwiIHN0eWxlPVwid2lkdGg6IDhlbVwiPlxyXG4gICAgICA8bWF0LWxhYmVsPmxpYnJhcnk8L21hdC1sYWJlbD5cclxuICAgICAgPG1hdC1zZWxlY3QgW2Zvcm1Db250cm9sXT1cImxpYnJhcnlcIj5cclxuICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgZSBvZiBsaWJFbnRyaWVzXCIgW3ZhbHVlXT1cImUuaWRcIj57e1xyXG4gICAgICAgICAgZS52YWx1ZVxyXG4gICAgICAgIH19PC9tYXQtb3B0aW9uPlxyXG4gICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgJGFueShsaWJyYXJ5KS5lcnJvcnM/LnJlcXVpcmVkICYmIChsaWJyYXJ5LmRpcnR5IHx8IGxpYnJhcnkudG91Y2hlZClcclxuICAgICAgICBcIlxyXG4gICAgICAgID5saWJyYXJ5IHJlcXVpcmVkPC9tYXQtZXJyb3JcclxuICAgICAgPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwhLS0gbGlicmFyeSAoZnJlZSkgLS0+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQgKm5nSWY9XCIhbGliRW50cmllcz8ubGVuZ3RoXCI+XHJcbiAgICAgIDxtYXQtbGFiZWw+bGlicmFyeTwvbWF0LWxhYmVsPlxyXG4gICAgICA8aW5wdXQgbWF0SW5wdXQgW2Zvcm1Db250cm9sXT1cImxpYnJhcnlcIiAvPlxyXG4gICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICRhbnkobGlicmFyeSkuZXJyb3JzPy5yZXF1aXJlZCAmJiAobGlicmFyeS5kaXJ0eSB8fCBsaWJyYXJ5LnRvdWNoZWQpXHJcbiAgICAgICAgXCJcclxuICAgICAgICA+bGlicmFyeSByZXF1aXJlZDwvbWF0LWVycm9yXHJcbiAgICAgID5cclxuICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAkYW55KGxpYnJhcnkpLmVycm9ycz8ubWF4TGVuZ3RoICYmIChsaWJyYXJ5LmRpcnR5IHx8IGxpYnJhcnkudG91Y2hlZClcclxuICAgICAgICBcIlxyXG4gICAgICAgID5saWJyYXJ5IHRvbyBsb25nPC9tYXQtZXJyb3JcclxuICAgICAgPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwhLS0gZnVuZCAtLT5cclxuICAgICZuYnNwO1xyXG4gICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICA8bWF0LWxhYmVsPmZ1bmQ8L21hdC1sYWJlbD5cclxuICAgICAgPGlucHV0IG1hdElucHV0IFtmb3JtQ29udHJvbF09XCJmdW5kXCIgLz5cclxuICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICpuZ0lmPVwiJGFueShmdW5kKS5lcnJvcnM/Lm1heExlbmd0aCAmJiAoZnVuZC5kaXJ0eSB8fCBmdW5kLnRvdWNoZWQpXCJcclxuICAgICAgICA+ZnVuZCB0b28gbG9uZzwvbWF0LWVycm9yXHJcbiAgICAgID5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8IS0tIGxvY2F0aW9uIC0tPlxyXG4gICAgJm5ic3A7XHJcbiAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDxtYXQtbGFiZWw+bG9jYXRpb248L21hdC1sYWJlbD5cclxuICAgICAgPGlucHV0IG1hdElucHV0IFtmb3JtQ29udHJvbF09XCJsb2NhdGlvblwiIC8+XHJcbiAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgJGFueShsb2NhdGlvbikuZXJyb3JzPy5yZXF1aXJlZCAmJlxyXG4gICAgICAgICAgKGxvY2F0aW9uLmRpcnR5IHx8IGxvY2F0aW9uLnRvdWNoZWQpXHJcbiAgICAgICAgXCJcclxuICAgICAgICA+bG9jYXRpb24gcmVxdWlyZWQ8L21hdC1lcnJvclxyXG4gICAgICA+XHJcbiAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgJGFueShsb2NhdGlvbikuZXJyb3JzPy5tYXhMZW5ndGggJiZcclxuICAgICAgICAgIChsb2NhdGlvbi5kaXJ0eSB8fCBsb2NhdGlvbi50b3VjaGVkKVxyXG4gICAgICAgIFwiXHJcbiAgICAgICAgPmxvY2F0aW9uIHRvbyBsb25nPC9tYXQtZXJyb3JcclxuICAgICAgPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICA8L2Rpdj5cclxuICA8IS0tIGJ1dHRvbnMgLS0+XHJcbiAgPGRpdj5cclxuICAgIDxidXR0b25cclxuICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgIGNvbG9yPVwid2FyblwiXHJcbiAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICBtYXRUb29sdGlwPVwiRGlzY2FyZCBjaGFuZ2VzXCJcclxuICAgICAgKGNsaWNrKT1cImNhbmNlbCgpXCJcclxuICAgID5cclxuICAgICAgPG1hdC1pY29uPmNsZWFyPC9tYXQtaWNvbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvblxyXG4gICAgICB0eXBlPVwic3VibWl0XCJcclxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgIG1hdFRvb2x0aXA9XCJBY2NlcHQgY2hhbmdlc1wiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJmb3JtLmludmFsaWQgfHwgZm9ybS5wcmlzdGluZVwiXHJcbiAgICA+XHJcbiAgICAgIDxtYXQtaWNvbj5jaGVja19jaXJjbGU8L21hdC1pY29uPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbjwvZm9ybT5cclxuIl19
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kLXNoZWxmbWFyay1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlybWlkb24vY2FkbXVzLXBhcnQtY29kaWNvbG9neS1zaGVsZm1hcmtzL3NyYy9saWIvY29kLXNoZWxmbWFyay1lZGl0b3IvY29kLXNoZWxmbWFyay1lZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlybWlkb24vY2FkbXVzLXBhcnQtY29kaWNvbG9neS1zaGVsZm1hcmtzL3NyYy9saWIvY29kLXNoZWxmbWFyay1lZGl0b3IvY29kLXNoZWxmbWFyay1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBSUwsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7O0FBU3hCLE1BQU0sT0FBTywyQkFBMkI7SUFrQ3RDLFlBQVksV0FBd0I7UUFDbEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLFlBQVksRUFBZ0IsQ0FBQztRQUN4RCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDM0MsT0FBTztRQUNQLElBQUksQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQy9ELElBQUksQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFDcEMsVUFBVSxDQUFDLFFBQVE7WUFDbkIsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7U0FDekIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLE9BQU8sR0FBRyxXQUFX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O1NBQ1I7UUFDRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDN0MsQ0FBQzs7d0hBbkdVLDJCQUEyQjs0R0FBM0IsMkJBQTJCLHdPQ2Z4Qyw0dkhBeUhBOzJGRDFHYSwyQkFBMkI7a0JBTHZDLFNBQVM7K0JBQ0UsNkJBQTZCO2tHQVE1QixTQUFTO3NCQURuQixLQUFLO2dCQWNDLFVBQVU7c0JBRGhCLEtBQUs7Z0JBSUMsVUFBVTtzQkFEaEIsS0FBSztnQkFJQyxlQUFlO3NCQURyQixNQUFNO2dCQUdBLFdBQVc7c0JBRGpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgRm9ybUJ1aWxkZXIsXHJcbiAgRm9ybUNvbnRyb2wsXHJcbiAgRm9ybUdyb3VwLFxyXG4gIFZhbGlkYXRvcnMsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBUaGVzYXVydXNFbnRyeSB9IGZyb20gJ0BteXJtaWRvbi9jYWRtdXMtY29yZSc7XHJcbmltcG9ydCB7IENvZFNoZWxmbWFyayB9IGZyb20gJy4uL2NvZC1zaGVsZm1hcmtzLXBhcnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjYWRtdXMtY29kLXNoZWxmbWFyay1lZGl0b3InLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb2Qtc2hlbGZtYXJrLWVkaXRvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY29kLXNoZWxmbWFyay1lZGl0b3IuY29tcG9uZW50LmNzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29kU2hlbGZtYXJrRWRpdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBwcml2YXRlIF9zaGVsZm1hcms6IENvZFNoZWxmbWFyayB8IHVuZGVmaW5lZDtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZ2V0IHNoZWxmbWFyaygpOiBDb2RTaGVsZm1hcmsgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NoZWxmbWFyaztcclxuICB9XHJcbiAgcHVibGljIHNldCBzaGVsZm1hcmsodmFsdWU6IENvZFNoZWxmbWFyayB8IHVuZGVmaW5lZCkge1xyXG4gICAgaWYgKHRoaXMuX3NoZWxmbWFyayA9PT0gdmFsdWUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fc2hlbGZtYXJrID0gdmFsdWU7XHJcbiAgICB0aGlzLnVwZGF0ZUZvcm0odmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgLy8gY29kLXNoZWxmbWFyay10YWdzXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgdGFnRW50cmllczogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZDtcclxuICAvLyBjb2Qtc2hlbGZtYXJrLWxpYnJhcmllc1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGxpYkVudHJpZXM6IFRoZXNhdXJ1c0VudHJ5W10gfCB1bmRlZmluZWQ7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBzaGVsZm1hcmtDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDb2RTaGVsZm1hcms+O1xyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBlZGl0b3JDbG9zZTogRXZlbnRFbWl0dGVyPGFueT47XHJcblxyXG4gIHB1YmxpYyB0YWc6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xyXG4gIHB1YmxpYyBjaXR5OiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPjtcclxuICBwdWJsaWMgbGlicmFyeTogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD47XHJcbiAgcHVibGljIGZ1bmQ6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xyXG4gIHB1YmxpYyBsb2NhdGlvbjogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD47XHJcbiAgcHVibGljIGZvcm06IEZvcm1Hcm91cDtcclxuXHJcbiAgY29uc3RydWN0b3IoZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyKSB7XHJcbiAgICB0aGlzLnNoZWxmbWFya0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q29kU2hlbGZtYXJrPigpO1xyXG4gICAgdGhpcy5lZGl0b3JDbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgLy8gZm9ybVxyXG4gICAgdGhpcy50YWcgPSBmb3JtQnVpbGRlci5jb250cm9sKG51bGwsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDUwKSk7XHJcbiAgICB0aGlzLmNpdHkgPSBmb3JtQnVpbGRlci5jb250cm9sKG51bGwsIFtcclxuICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcclxuICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNTApLFxyXG4gICAgXSk7XHJcbiAgICB0aGlzLmxpYnJhcnkgPSBmb3JtQnVpbGRlci5jb250cm9sKG51bGwsIFtcclxuICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcclxuICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNTApLFxyXG4gICAgXSk7XHJcbiAgICB0aGlzLmZ1bmQgPSBmb3JtQnVpbGRlci5jb250cm9sKG51bGwsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDUwKSk7XHJcbiAgICB0aGlzLmxvY2F0aW9uID0gZm9ybUJ1aWxkZXIuY29udHJvbChudWxsLCBWYWxpZGF0b3JzLm1heExlbmd0aCg1MCkpO1xyXG5cclxuICAgIHRoaXMuZm9ybSA9IGZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgdGFnOiB0aGlzLnRhZyxcclxuICAgICAgY2l0eTogdGhpcy5jaXR5LFxyXG4gICAgICBsaWJyYXJ5OiB0aGlzLmxpYnJhcnksXHJcbiAgICAgIGZ1bmQ6IHRoaXMuZnVuZCxcclxuICAgICAgbG9jYXRpb246IHRoaXMubG9jYXRpb24sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX3NoZWxmbWFyaykge1xyXG4gICAgICB0aGlzLnVwZGF0ZUZvcm0odGhpcy5fc2hlbGZtYXJrKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlRm9ybShtb2RlbDogQ29kU2hlbGZtYXJrIHwgdW5kZWZpbmVkKTogdm9pZCB7XHJcbiAgICBpZiAoIW1vZGVsKSB7XHJcbiAgICAgIHRoaXMuZm9ybS5yZXNldCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy50YWcuc2V0VmFsdWUobW9kZWwudGFnIHx8IG51bGwpO1xyXG4gICAgdGhpcy5jaXR5LnNldFZhbHVlKG1vZGVsLmNpdHkpO1xyXG4gICAgdGhpcy5saWJyYXJ5LnNldFZhbHVlKG1vZGVsLmxpYnJhcnkpO1xyXG4gICAgdGhpcy5mdW5kLnNldFZhbHVlKG1vZGVsLmZ1bmQgfHwgbnVsbCk7XHJcbiAgICB0aGlzLmxvY2F0aW9uLnNldFZhbHVlKG1vZGVsLmxvY2F0aW9uKTtcclxuICAgIHRoaXMuZm9ybS5tYXJrQXNQcmlzdGluZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRNb2RlbCgpOiBDb2RTaGVsZm1hcmsge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdGFnOiB0aGlzLnRhZy52YWx1ZT8udHJpbSgpLFxyXG4gICAgICBjaXR5OiB0aGlzLmNpdHkudmFsdWU/LnRyaW0oKSB8fCAnJyxcclxuICAgICAgbGlicmFyeTogdGhpcy5saWJyYXJ5LnZhbHVlPy50cmltKCkgfHwgJycsXHJcbiAgICAgIGZ1bmQ6IHRoaXMuZnVuZC52YWx1ZT8udHJpbSgpLFxyXG4gICAgICBsb2NhdGlvbjogdGhpcy5sb2NhdGlvbi52YWx1ZT8udHJpbSgpIHx8ICcnLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjYW5jZWwoKTogdm9pZCB7XHJcbiAgICB0aGlzLmVkaXRvckNsb3NlLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzYXZlKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZm9ybS5pbnZhbGlkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX3NoZWxmbWFyayA9IHRoaXMuZ2V0TW9kZWwoKTtcclxuICAgIHRoaXMuc2hlbGZtYXJrQ2hhbmdlLmVtaXQodGhpcy5fc2hlbGZtYXJrKTtcclxuICB9XHJcbn1cclxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgKHN1Ym1pdCk9XCJzYXZlKClcIj5cclxuICA8ZGl2PlxyXG4gICAgPCEtLSB0YWcgKGJvdW5kKSAtLT5cclxuICAgIDxtYXQtZm9ybS1maWVsZCAqbmdJZj1cInRhZ0VudHJpZXM/Lmxlbmd0aFwiIHN0eWxlPVwid2lkdGg6IDhlbVwiPlxyXG4gICAgICA8bWF0LWxhYmVsPnRhZzwvbWF0LWxhYmVsPlxyXG4gICAgICA8bWF0LXNlbGVjdCBbZm9ybUNvbnRyb2xdPVwidGFnXCI+XHJcbiAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGUgb2YgdGFnRW50cmllc1wiIFt2YWx1ZV09XCJlLmlkXCI+e3tcclxuICAgICAgICAgIGUudmFsdWVcclxuICAgICAgICB9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwhLS0gdGFnIChmcmVlKSAtLT5cclxuICAgIDxtYXQtZm9ybS1maWVsZCAqbmdJZj1cIiF0YWdFbnRyaWVzPy5sZW5ndGhcIj5cclxuICAgICAgPG1hdC1sYWJlbD50YWc8L21hdC1sYWJlbD5cclxuICAgICAgPGlucHV0IG1hdElucHV0IFtmb3JtQ29udHJvbF09XCJ0YWdcIiAvPlxyXG4gICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgKm5nSWY9XCIkYW55KHRhZykuZXJyb3JzPy5tYXhMZW5ndGggJiYgKHRhZy5kaXJ0eSB8fCB0YWcudG91Y2hlZClcIlxyXG4gICAgICAgID50YWcgdG9vIGxvbmc8L21hdC1lcnJvclxyXG4gICAgICA+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPCEtLSBjaXR5IC0tPlxyXG4gICAgJm5ic3A7XHJcbiAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDxtYXQtbGFiZWw+Y2l0eTwvbWF0LWxhYmVsPlxyXG4gICAgICA8aW5wdXQgbWF0SW5wdXQgW2Zvcm1Db250cm9sXT1cImNpdHlcIiAvPlxyXG4gICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgKm5nSWY9XCIkYW55KGNpdHkpLmVycm9ycz8ucmVxdWlyZWQgJiYgKGNpdHkuZGlydHkgfHwgY2l0eS50b3VjaGVkKVwiXHJcbiAgICAgICAgPmNpdHkgcmVxdWlyZWQ8L21hdC1lcnJvclxyXG4gICAgICA+XHJcbiAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAqbmdJZj1cIiRhbnkoY2l0eSkuZXJyb3JzPy5tYXhMZW5ndGggJiYgKGNpdHkuZGlydHkgfHwgY2l0eS50b3VjaGVkKVwiXHJcbiAgICAgICAgPmNpdHkgdG9vIGxvbmc8L21hdC1lcnJvclxyXG4gICAgICA+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXY+XHJcbiAgICA8IS0tIGxpYnJhcnkgKGJvdW5kKSAtLT5cclxuICAgIDxtYXQtZm9ybS1maWVsZCAqbmdJZj1cImxpYkVudHJpZXM/Lmxlbmd0aFwiIHN0eWxlPVwid2lkdGg6IDhlbVwiPlxyXG4gICAgICA8bWF0LWxhYmVsPmxpYnJhcnk8L21hdC1sYWJlbD5cclxuICAgICAgPG1hdC1zZWxlY3QgW2Zvcm1Db250cm9sXT1cImxpYnJhcnlcIj5cclxuICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgZSBvZiBsaWJFbnRyaWVzXCIgW3ZhbHVlXT1cImUuaWRcIj57e1xyXG4gICAgICAgICAgZS52YWx1ZVxyXG4gICAgICAgIH19PC9tYXQtb3B0aW9uPlxyXG4gICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgJGFueShsaWJyYXJ5KS5lcnJvcnM/LnJlcXVpcmVkICYmIChsaWJyYXJ5LmRpcnR5IHx8IGxpYnJhcnkudG91Y2hlZClcclxuICAgICAgICBcIlxyXG4gICAgICAgID5saWJyYXJ5IHJlcXVpcmVkPC9tYXQtZXJyb3JcclxuICAgICAgPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwhLS0gbGlicmFyeSAoZnJlZSkgLS0+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQgKm5nSWY9XCIhbGliRW50cmllcz8ubGVuZ3RoXCI+XHJcbiAgICAgIDxtYXQtbGFiZWw+bGlicmFyeTwvbWF0LWxhYmVsPlxyXG4gICAgICA8aW5wdXQgbWF0SW5wdXQgW2Zvcm1Db250cm9sXT1cImxpYnJhcnlcIiAvPlxyXG4gICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICRhbnkobGlicmFyeSkuZXJyb3JzPy5yZXF1aXJlZCAmJiAobGlicmFyeS5kaXJ0eSB8fCBsaWJyYXJ5LnRvdWNoZWQpXHJcbiAgICAgICAgXCJcclxuICAgICAgICA+bGlicmFyeSByZXF1aXJlZDwvbWF0LWVycm9yXHJcbiAgICAgID5cclxuICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAkYW55KGxpYnJhcnkpLmVycm9ycz8ubWF4TGVuZ3RoICYmIChsaWJyYXJ5LmRpcnR5IHx8IGxpYnJhcnkudG91Y2hlZClcclxuICAgICAgICBcIlxyXG4gICAgICAgID5saWJyYXJ5IHRvbyBsb25nPC9tYXQtZXJyb3JcclxuICAgICAgPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwhLS0gZnVuZCAtLT5cclxuICAgICZuYnNwO1xyXG4gICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICA8bWF0LWxhYmVsPmZ1bmQ8L21hdC1sYWJlbD5cclxuICAgICAgPGlucHV0IG1hdElucHV0IFtmb3JtQ29udHJvbF09XCJmdW5kXCIgLz5cclxuICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICpuZ0lmPVwiJGFueShmdW5kKS5lcnJvcnM/Lm1heExlbmd0aCAmJiAoZnVuZC5kaXJ0eSB8fCBmdW5kLnRvdWNoZWQpXCJcclxuICAgICAgICA+ZnVuZCB0b28gbG9uZzwvbWF0LWVycm9yXHJcbiAgICAgID5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8IS0tIGxvY2F0aW9uIC0tPlxyXG4gICAgJm5ic3A7XHJcbiAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDxtYXQtbGFiZWw+bG9jYXRpb248L21hdC1sYWJlbD5cclxuICAgICAgPGlucHV0IG1hdElucHV0IFtmb3JtQ29udHJvbF09XCJsb2NhdGlvblwiIC8+XHJcbiAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgJGFueShsb2NhdGlvbikuZXJyb3JzPy5yZXF1aXJlZCAmJlxyXG4gICAgICAgICAgKGxvY2F0aW9uLmRpcnR5IHx8IGxvY2F0aW9uLnRvdWNoZWQpXHJcbiAgICAgICAgXCJcclxuICAgICAgICA+bG9jYXRpb24gcmVxdWlyZWQ8L21hdC1lcnJvclxyXG4gICAgICA+XHJcbiAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgJGFueShsb2NhdGlvbikuZXJyb3JzPy5tYXhMZW5ndGggJiZcclxuICAgICAgICAgIChsb2NhdGlvbi5kaXJ0eSB8fCBsb2NhdGlvbi50b3VjaGVkKVxyXG4gICAgICAgIFwiXHJcbiAgICAgICAgPmxvY2F0aW9uIHRvbyBsb25nPC9tYXQtZXJyb3JcclxuICAgICAgPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICA8L2Rpdj5cclxuICA8IS0tIGJ1dHRvbnMgLS0+XHJcbiAgPGRpdj5cclxuICAgIDxidXR0b25cclxuICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgIGNvbG9yPVwid2FyblwiXHJcbiAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICBtYXRUb29sdGlwPVwiRGlzY2FyZCBjaGFuZ2VzXCJcclxuICAgICAgKGNsaWNrKT1cImNhbmNlbCgpXCJcclxuICAgID5cclxuICAgICAgPG1hdC1pY29uPmNsZWFyPC9tYXQtaWNvbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvblxyXG4gICAgICB0eXBlPVwic3VibWl0XCJcclxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgIG1hdFRvb2x0aXA9XCJBY2NlcHQgY2hhbmdlc1wiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJmb3JtLmludmFsaWQgfHwgZm9ybS5wcmlzdGluZVwiXHJcbiAgICA+XHJcbiAgICAgIDxtYXQtaWNvbj5jaGVja19jaXJjbGU8L21hdC1pY29uPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbjwvZm9ybT5cclxuIl19
@@ -141,9 +141,9 @@ export class CodShelfmarksPartComponent extends ModelEditorComponentBase {
141
141
  this.shelfmarks.setValue(entries);
142
142
  }
143
143
  }
144
- CodShelfmarksPartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: CodShelfmarksPartComponent, deps: [{ token: i1.AuthJwtService }, { token: i2.FormBuilder }, { token: i3.DialogService }], target: i0.ɵɵFactoryTarget.Component });
145
- CodShelfmarksPartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.3", type: CodShelfmarksPartComponent, selector: "cadmus-cod-shelfmarks-part", usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <mat-card appearance=\"outlined\">\r\n <mat-card-header>\r\n <div mat-card-avatar>\r\n <mat-icon>picture_in_picture</mat-icon>\r\n </div>\r\n <mat-card-title>Shelfmarks Part</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <mat-tab-group [(selectedIndex)]=\"tabIndex\">\r\n <mat-tab label=\"shelfmarks\">\r\n <div>\r\n <button\r\n type=\"button\"\r\n mat-flat-button\r\n color=\"primary\"\r\n (click)=\"addShelfmark()\"\r\n >\r\n <mat-icon>add_circle</mat-icon> shelfmark\r\n </button>\r\n </div>\r\n <table *ngIf=\"shelfmarks?.value?.length\">\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th>tag</th>\r\n <th>city</th>\r\n <th>library</th>\r\n <th>fund</th>\r\n <th>location</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n *ngFor=\"\r\n let entry of shelfmarks?.value;\r\n let i = index;\r\n let first = first;\r\n let last = last\r\n \"\r\n >\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n color=\"primary\"\r\n matTooltip=\"Edit this shelfmark\"\r\n (click)=\"editShelfmark(entry, i)\"\r\n >\r\n <mat-icon>edit</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this shelfmark up\"\r\n [disabled]=\"first\"\r\n (click)=\"moveShelfmarkUp(i)\"\r\n >\r\n <mat-icon>arrow_upward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this shelfmark down\"\r\n [disabled]=\"last\"\r\n (click)=\"moveShelfmarkDown(i)\"\r\n >\r\n <mat-icon>arrow_downward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n color=\"warn\"\r\n matTooltip=\"Delete this shelfmark\"\r\n (click)=\"deleteShelfmark(i)\"\r\n >\r\n <mat-icon>remove_circle</mat-icon>\r\n </button>\r\n </td>\r\n <td>{{ entry.tag }}</td>\r\n <td>{{ entry.city }}</td>\r\n <td>{{ entry.library }}</td>\r\n <td>{{ entry.fund }}</td>\r\n <td>{{ entry.location }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </mat-tab>\r\n\r\n <mat-tab label=\"shelfmark\" *ngIf=\"editedShelfmark\">\r\n <cadmus-cod-shelfmark-editor\r\n [tagEntries]=\"tagEntries\"\r\n [libEntries]=\"libEntries\"\r\n [shelfmark]=\"editedShelfmark\"\r\n (shelfmarkChange)=\"onShelfmarkSave($event)\"\r\n (editorClose)=\"editShelfmark(null)\"\r\n ></cadmus-cod-shelfmark-editor>\r\n </mat-tab>\r\n </mat-tab-group>\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <cadmus-close-save-buttons\r\n [form]=\"form\"\r\n [noSave]=\"userLevel < 2\"\r\n (closeRequest)=\"close()\"\r\n ></cadmus-close-save-buttons>\r\n </mat-card-actions>\r\n </mat-card>\r\n</form>\r\n", styles: ["th{font-weight:400;color:silver}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i6.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i6.MatCardAvatar, selector: "[mat-card-avatar], [matCardAvatar]" }, { kind: "directive", type: i6.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i6.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i6.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i8.MatTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "component", type: i8.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple", "fitInkBarToContent", "mat-stretch-tabs"], exportAs: ["matTabGroup"] }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i10.CloseSaveButtonsComponent, selector: "cadmus-close-save-buttons", inputs: ["form", "noSave"], outputs: ["closeRequest"] }, { kind: "component", type: i11.CodShelfmarkEditorComponent, selector: "cadmus-cod-shelfmark-editor", inputs: ["shelfmark", "tagEntries", "libEntries"], outputs: ["shelfmarkChange", "editorClose"] }] });
146
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: CodShelfmarksPartComponent, decorators: [{
144
+ CodShelfmarksPartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: CodShelfmarksPartComponent, deps: [{ token: i1.AuthJwtService }, { token: i2.FormBuilder }, { token: i3.DialogService }], target: i0.ɵɵFactoryTarget.Component });
145
+ CodShelfmarksPartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.3", type: CodShelfmarksPartComponent, selector: "cadmus-cod-shelfmarks-part", usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <mat-card appearance=\"outlined\">\r\n <mat-card-header>\r\n <div mat-card-avatar>\r\n <mat-icon>picture_in_picture</mat-icon>\r\n </div>\r\n <mat-card-title>Shelfmarks Part</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <mat-tab-group [(selectedIndex)]=\"tabIndex\">\r\n <mat-tab label=\"shelfmarks\">\r\n <div>\r\n <button\r\n type=\"button\"\r\n mat-flat-button\r\n color=\"primary\"\r\n (click)=\"addShelfmark()\"\r\n >\r\n <mat-icon>add_circle</mat-icon> shelfmark\r\n </button>\r\n </div>\r\n <table *ngIf=\"shelfmarks?.value?.length\">\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th>tag</th>\r\n <th>city</th>\r\n <th>library</th>\r\n <th>fund</th>\r\n <th>location</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n *ngFor=\"\r\n let entry of shelfmarks?.value;\r\n let i = index;\r\n let first = first;\r\n let last = last\r\n \"\r\n >\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n color=\"primary\"\r\n matTooltip=\"Edit this shelfmark\"\r\n (click)=\"editShelfmark(entry, i)\"\r\n >\r\n <mat-icon>edit</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this shelfmark up\"\r\n [disabled]=\"first\"\r\n (click)=\"moveShelfmarkUp(i)\"\r\n >\r\n <mat-icon>arrow_upward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this shelfmark down\"\r\n [disabled]=\"last\"\r\n (click)=\"moveShelfmarkDown(i)\"\r\n >\r\n <mat-icon>arrow_downward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n color=\"warn\"\r\n matTooltip=\"Delete this shelfmark\"\r\n (click)=\"deleteShelfmark(i)\"\r\n >\r\n <mat-icon>remove_circle</mat-icon>\r\n </button>\r\n </td>\r\n <td>{{ entry.tag }}</td>\r\n <td>{{ entry.city }}</td>\r\n <td>{{ entry.library }}</td>\r\n <td>{{ entry.fund }}</td>\r\n <td>{{ entry.location }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </mat-tab>\r\n\r\n <mat-tab label=\"shelfmark\" *ngIf=\"editedShelfmark\">\r\n <cadmus-cod-shelfmark-editor\r\n [tagEntries]=\"tagEntries\"\r\n [libEntries]=\"libEntries\"\r\n [shelfmark]=\"editedShelfmark\"\r\n (shelfmarkChange)=\"onShelfmarkSave($event)\"\r\n (editorClose)=\"editShelfmark(null)\"\r\n ></cadmus-cod-shelfmark-editor>\r\n </mat-tab>\r\n </mat-tab-group>\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <cadmus-close-save-buttons\r\n [form]=\"form\"\r\n [noSave]=\"userLevel < 2\"\r\n (closeRequest)=\"close()\"\r\n ></cadmus-close-save-buttons>\r\n </mat-card-actions>\r\n </mat-card>\r\n</form>\r\n", styles: ["th{font-weight:400;color:silver}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i6.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i6.MatCardAvatar, selector: "[mat-card-avatar], [matCardAvatar]" }, { kind: "directive", type: i6.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i6.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i6.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i8.MatTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "component", type: i8.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple", "fitInkBarToContent", "mat-stretch-tabs"], exportAs: ["matTabGroup"] }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i10.CloseSaveButtonsComponent, selector: "cadmus-close-save-buttons", inputs: ["form", "noSave"], outputs: ["closeRequest"] }, { kind: "component", type: i11.CodShelfmarkEditorComponent, selector: "cadmus-cod-shelfmark-editor", inputs: ["shelfmark", "tagEntries", "libEntries"], outputs: ["shelfmarkChange", "editorClose"] }] });
146
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: CodShelfmarksPartComponent, decorators: [{
147
147
  type: Component,
148
148
  args: [{ selector: 'cadmus-cod-shelfmarks-part', template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <mat-card appearance=\"outlined\">\r\n <mat-card-header>\r\n <div mat-card-avatar>\r\n <mat-icon>picture_in_picture</mat-icon>\r\n </div>\r\n <mat-card-title>Shelfmarks Part</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <mat-tab-group [(selectedIndex)]=\"tabIndex\">\r\n <mat-tab label=\"shelfmarks\">\r\n <div>\r\n <button\r\n type=\"button\"\r\n mat-flat-button\r\n color=\"primary\"\r\n (click)=\"addShelfmark()\"\r\n >\r\n <mat-icon>add_circle</mat-icon> shelfmark\r\n </button>\r\n </div>\r\n <table *ngIf=\"shelfmarks?.value?.length\">\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th>tag</th>\r\n <th>city</th>\r\n <th>library</th>\r\n <th>fund</th>\r\n <th>location</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n *ngFor=\"\r\n let entry of shelfmarks?.value;\r\n let i = index;\r\n let first = first;\r\n let last = last\r\n \"\r\n >\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n color=\"primary\"\r\n matTooltip=\"Edit this shelfmark\"\r\n (click)=\"editShelfmark(entry, i)\"\r\n >\r\n <mat-icon>edit</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this shelfmark up\"\r\n [disabled]=\"first\"\r\n (click)=\"moveShelfmarkUp(i)\"\r\n >\r\n <mat-icon>arrow_upward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this shelfmark down\"\r\n [disabled]=\"last\"\r\n (click)=\"moveShelfmarkDown(i)\"\r\n >\r\n <mat-icon>arrow_downward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n color=\"warn\"\r\n matTooltip=\"Delete this shelfmark\"\r\n (click)=\"deleteShelfmark(i)\"\r\n >\r\n <mat-icon>remove_circle</mat-icon>\r\n </button>\r\n </td>\r\n <td>{{ entry.tag }}</td>\r\n <td>{{ entry.city }}</td>\r\n <td>{{ entry.library }}</td>\r\n <td>{{ entry.fund }}</td>\r\n <td>{{ entry.location }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </mat-tab>\r\n\r\n <mat-tab label=\"shelfmark\" *ngIf=\"editedShelfmark\">\r\n <cadmus-cod-shelfmark-editor\r\n [tagEntries]=\"tagEntries\"\r\n [libEntries]=\"libEntries\"\r\n [shelfmark]=\"editedShelfmark\"\r\n (shelfmarkChange)=\"onShelfmarkSave($event)\"\r\n (editorClose)=\"editShelfmark(null)\"\r\n ></cadmus-cod-shelfmark-editor>\r\n </mat-tab>\r\n </mat-tab-group>\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <cadmus-close-save-buttons\r\n [form]=\"form\"\r\n [noSave]=\"userLevel < 2\"\r\n (closeRequest)=\"close()\"\r\n ></cadmus-close-save-buttons>\r\n </mat-card-actions>\r\n </mat-card>\r\n</form>\r\n", styles: ["th{font-weight:400;color:silver}\n"] }]
149
149
  }], ctorParameters: function () { return [{ type: i1.AuthJwtService }, { type: i2.FormBuilder }, { type: i3.DialogService }]; } });
@@ -15,9 +15,9 @@ export class CodShelfmarksPartFeatureComponent extends EditPartFeatureBase {
15
15
  return ['cod-shelfmark-tags', 'cod-shelfmark-libraries'];
16
16
  }
17
17
  }
18
- CodShelfmarksPartFeatureComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: CodShelfmarksPartFeatureComponent, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.MatSnackBar }, { token: i3.ItemService }, { token: i3.ThesaurusService }, { token: i4.PartEditorService }], target: i0.ɵɵFactoryTarget.Component });
19
- CodShelfmarksPartFeatureComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.3", type: CodShelfmarksPartFeatureComponent, selector: "cadmus-cod-shelfmarks-part-feature", usesInheritance: true, ngImport: i0, template: "<cadmus-current-item-bar></cadmus-current-item-bar>\r\n<cadmus-cod-shelfmarks-part\r\n [identity]=\"identity\"\r\n [data]=\"$any(data)\"\r\n (dataChange)=\"save($event)\"\r\n (editorClose)=\"close()\"\r\n (dirtyChange)=\"onDirtyChange($event)\"\r\n></cadmus-cod-shelfmarks-part>\r\n", styles: [""], dependencies: [{ kind: "component", type: i5.CurrentItemBarComponent, selector: "cadmus-current-item-bar" }, { kind: "component", type: i6.CodShelfmarksPartComponent, selector: "cadmus-cod-shelfmarks-part" }] });
20
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: CodShelfmarksPartFeatureComponent, decorators: [{
18
+ CodShelfmarksPartFeatureComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: CodShelfmarksPartFeatureComponent, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.MatSnackBar }, { token: i3.ItemService }, { token: i3.ThesaurusService }, { token: i4.PartEditorService }], target: i0.ɵɵFactoryTarget.Component });
19
+ CodShelfmarksPartFeatureComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.3", type: CodShelfmarksPartFeatureComponent, selector: "cadmus-cod-shelfmarks-part-feature", usesInheritance: true, ngImport: i0, template: "<cadmus-current-item-bar></cadmus-current-item-bar>\r\n<cadmus-cod-shelfmarks-part\r\n [identity]=\"identity\"\r\n [data]=\"$any(data)\"\r\n (dataChange)=\"save($event)\"\r\n (editorClose)=\"close()\"\r\n (dirtyChange)=\"onDirtyChange($event)\"\r\n></cadmus-cod-shelfmarks-part>\r\n", styles: [""], dependencies: [{ kind: "component", type: i5.CurrentItemBarComponent, selector: "cadmus-current-item-bar" }, { kind: "component", type: i6.CodShelfmarksPartComponent, selector: "cadmus-cod-shelfmarks-part" }] });
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: CodShelfmarksPartFeatureComponent, decorators: [{
21
21
  type: Component,
22
22
  args: [{ selector: 'cadmus-cod-shelfmarks-part-feature', template: "<cadmus-current-item-bar></cadmus-current-item-bar>\r\n<cadmus-cod-shelfmarks-part\r\n [identity]=\"identity\"\r\n [data]=\"$any(data)\"\r\n (dataChange)=\"save($event)\"\r\n (editorClose)=\"close()\"\r\n (dirtyChange)=\"onDirtyChange($event)\"\r\n></cadmus-cod-shelfmarks-part>\r\n" }]
23
23
  }], ctorParameters: function () { return [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.MatSnackBar }, { type: i3.ItemService }, { type: i3.ThesaurusService }, { type: i4.PartEditorService }]; } });
@@ -149,6 +149,9 @@ class CodShelfmarkEditorComponent {
149
149
  return this._shelfmark;
150
150
  }
151
151
  set shelfmark(value) {
152
+ if (this._shelfmark === value) {
153
+ return;
154
+ }
152
155
  this._shelfmark = value;
153
156
  this.updateForm(value);
154
157
  }
@@ -186,16 +189,13 @@ class CodShelfmarkEditorComponent {
186
189
  if (this.form.invalid) {
187
190
  return;
188
191
  }
189
- const model = this.getModel();
190
- if (!model) {
191
- return;
192
- }
193
- this.shelfmarkChange.emit(model);
192
+ this._shelfmark = this.getModel();
193
+ this.shelfmarkChange.emit(this._shelfmark);
194
194
  }
195
195
  }
196
- CodShelfmarkEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: CodShelfmarkEditorComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
197
- CodShelfmarkEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.3", type: CodShelfmarkEditorComponent, selector: "cadmus-cod-shelfmark-editor", inputs: { shelfmark: "shelfmark", tagEntries: "tagEntries", libEntries: "libEntries" }, outputs: { shelfmarkChange: "shelfmarkChange", editorClose: "editorClose" }, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <div>\r\n <!-- tag (bound) -->\r\n <mat-form-field *ngIf=\"tagEntries?.length\" style=\"width: 8em\">\r\n <mat-label>tag</mat-label>\r\n <mat-select [formControl]=\"tag\">\r\n <mat-option *ngFor=\"let e of tagEntries\" [value]=\"e.id\">{{\r\n e.value\r\n }}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <!-- tag (free) -->\r\n <mat-form-field *ngIf=\"!tagEntries?.length\">\r\n <mat-label>tag</mat-label>\r\n <input matInput [formControl]=\"tag\" />\r\n <mat-error\r\n *ngIf=\"$any(tag).errors?.maxLength && (tag.dirty || tag.touched)\"\r\n >tag too long</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- city -->\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>city</mat-label>\r\n <input matInput [formControl]=\"city\" />\r\n <mat-error\r\n *ngIf=\"$any(city).errors?.required && (city.dirty || city.touched)\"\r\n >city required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"$any(city).errors?.maxLength && (city.dirty || city.touched)\"\r\n >city too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n <div>\r\n <!-- library (bound) -->\r\n <mat-form-field *ngIf=\"libEntries?.length\" style=\"width: 8em\">\r\n <mat-label>library</mat-label>\r\n <mat-select [formControl]=\"library\">\r\n <mat-option *ngFor=\"let e of libEntries\" [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(library).errors?.required && (library.dirty || library.touched)\r\n \"\r\n >library required</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- library (free) -->\r\n <mat-form-field *ngIf=\"!libEntries?.length\">\r\n <mat-label>library</mat-label>\r\n <input matInput [formControl]=\"library\" />\r\n <mat-error\r\n *ngIf=\"\r\n $any(library).errors?.required && (library.dirty || library.touched)\r\n \"\r\n >library required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"\r\n $any(library).errors?.maxLength && (library.dirty || library.touched)\r\n \"\r\n >library too long</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- fund -->\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>fund</mat-label>\r\n <input matInput [formControl]=\"fund\" />\r\n <mat-error\r\n *ngIf=\"$any(fund).errors?.maxLength && (fund.dirty || fund.touched)\"\r\n >fund too long</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- location -->\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>location</mat-label>\r\n <input matInput [formControl]=\"location\" />\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-error\r\n *ngIf=\"\r\n $any(location).errors?.maxLength &&\r\n (location.dirty || location.touched)\r\n \"\r\n >location too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\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: [""], 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: i5.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$1.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"] }] });
198
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: CodShelfmarkEditorComponent, decorators: [{
196
+ CodShelfmarkEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: CodShelfmarkEditorComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
197
+ CodShelfmarkEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.3", type: CodShelfmarkEditorComponent, selector: "cadmus-cod-shelfmark-editor", inputs: { shelfmark: "shelfmark", tagEntries: "tagEntries", libEntries: "libEntries" }, outputs: { shelfmarkChange: "shelfmarkChange", editorClose: "editorClose" }, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <div>\r\n <!-- tag (bound) -->\r\n <mat-form-field *ngIf=\"tagEntries?.length\" style=\"width: 8em\">\r\n <mat-label>tag</mat-label>\r\n <mat-select [formControl]=\"tag\">\r\n <mat-option *ngFor=\"let e of tagEntries\" [value]=\"e.id\">{{\r\n e.value\r\n }}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <!-- tag (free) -->\r\n <mat-form-field *ngIf=\"!tagEntries?.length\">\r\n <mat-label>tag</mat-label>\r\n <input matInput [formControl]=\"tag\" />\r\n <mat-error\r\n *ngIf=\"$any(tag).errors?.maxLength && (tag.dirty || tag.touched)\"\r\n >tag too long</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- city -->\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>city</mat-label>\r\n <input matInput [formControl]=\"city\" />\r\n <mat-error\r\n *ngIf=\"$any(city).errors?.required && (city.dirty || city.touched)\"\r\n >city required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"$any(city).errors?.maxLength && (city.dirty || city.touched)\"\r\n >city too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n <div>\r\n <!-- library (bound) -->\r\n <mat-form-field *ngIf=\"libEntries?.length\" style=\"width: 8em\">\r\n <mat-label>library</mat-label>\r\n <mat-select [formControl]=\"library\">\r\n <mat-option *ngFor=\"let e of libEntries\" [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(library).errors?.required && (library.dirty || library.touched)\r\n \"\r\n >library required</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- library (free) -->\r\n <mat-form-field *ngIf=\"!libEntries?.length\">\r\n <mat-label>library</mat-label>\r\n <input matInput [formControl]=\"library\" />\r\n <mat-error\r\n *ngIf=\"\r\n $any(library).errors?.required && (library.dirty || library.touched)\r\n \"\r\n >library required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"\r\n $any(library).errors?.maxLength && (library.dirty || library.touched)\r\n \"\r\n >library too long</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- fund -->\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>fund</mat-label>\r\n <input matInput [formControl]=\"fund\" />\r\n <mat-error\r\n *ngIf=\"$any(fund).errors?.maxLength && (fund.dirty || fund.touched)\"\r\n >fund too long</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- location -->\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>location</mat-label>\r\n <input matInput [formControl]=\"location\" />\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-error\r\n *ngIf=\"\r\n $any(location).errors?.maxLength &&\r\n (location.dirty || location.touched)\r\n \"\r\n >location too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\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: [""], 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: i5.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$1.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"] }] });
198
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: CodShelfmarkEditorComponent, decorators: [{
199
199
  type: Component,
200
200
  args: [{ selector: 'cadmus-cod-shelfmark-editor', template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <div>\r\n <!-- tag (bound) -->\r\n <mat-form-field *ngIf=\"tagEntries?.length\" style=\"width: 8em\">\r\n <mat-label>tag</mat-label>\r\n <mat-select [formControl]=\"tag\">\r\n <mat-option *ngFor=\"let e of tagEntries\" [value]=\"e.id\">{{\r\n e.value\r\n }}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <!-- tag (free) -->\r\n <mat-form-field *ngIf=\"!tagEntries?.length\">\r\n <mat-label>tag</mat-label>\r\n <input matInput [formControl]=\"tag\" />\r\n <mat-error\r\n *ngIf=\"$any(tag).errors?.maxLength && (tag.dirty || tag.touched)\"\r\n >tag too long</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- city -->\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>city</mat-label>\r\n <input matInput [formControl]=\"city\" />\r\n <mat-error\r\n *ngIf=\"$any(city).errors?.required && (city.dirty || city.touched)\"\r\n >city required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"$any(city).errors?.maxLength && (city.dirty || city.touched)\"\r\n >city too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n <div>\r\n <!-- library (bound) -->\r\n <mat-form-field *ngIf=\"libEntries?.length\" style=\"width: 8em\">\r\n <mat-label>library</mat-label>\r\n <mat-select [formControl]=\"library\">\r\n <mat-option *ngFor=\"let e of libEntries\" [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(library).errors?.required && (library.dirty || library.touched)\r\n \"\r\n >library required</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- library (free) -->\r\n <mat-form-field *ngIf=\"!libEntries?.length\">\r\n <mat-label>library</mat-label>\r\n <input matInput [formControl]=\"library\" />\r\n <mat-error\r\n *ngIf=\"\r\n $any(library).errors?.required && (library.dirty || library.touched)\r\n \"\r\n >library required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"\r\n $any(library).errors?.maxLength && (library.dirty || library.touched)\r\n \"\r\n >library too long</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- fund -->\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>fund</mat-label>\r\n <input matInput [formControl]=\"fund\" />\r\n <mat-error\r\n *ngIf=\"$any(fund).errors?.maxLength && (fund.dirty || fund.touched)\"\r\n >fund too long</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- location -->\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>location</mat-label>\r\n <input matInput [formControl]=\"location\" />\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-error\r\n *ngIf=\"\r\n $any(location).errors?.maxLength &&\r\n (location.dirty || location.touched)\r\n \"\r\n >location too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\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" }]
201
201
  }], ctorParameters: function () { return [{ type: i1.FormBuilder }]; }, propDecorators: { shelfmark: [{
@@ -337,9 +337,9 @@ class CodShelfmarksPartComponent extends ModelEditorComponentBase {
337
337
  this.shelfmarks.setValue(entries);
338
338
  }
339
339
  }
340
- CodShelfmarksPartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: CodShelfmarksPartComponent, deps: [{ token: i1$1.AuthJwtService }, { token: i1.FormBuilder }, { token: i3.DialogService }], target: i0.ɵɵFactoryTarget.Component });
341
- CodShelfmarksPartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.3", type: CodShelfmarksPartComponent, selector: "cadmus-cod-shelfmarks-part", usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <mat-card appearance=\"outlined\">\r\n <mat-card-header>\r\n <div mat-card-avatar>\r\n <mat-icon>picture_in_picture</mat-icon>\r\n </div>\r\n <mat-card-title>Shelfmarks Part</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <mat-tab-group [(selectedIndex)]=\"tabIndex\">\r\n <mat-tab label=\"shelfmarks\">\r\n <div>\r\n <button\r\n type=\"button\"\r\n mat-flat-button\r\n color=\"primary\"\r\n (click)=\"addShelfmark()\"\r\n >\r\n <mat-icon>add_circle</mat-icon> shelfmark\r\n </button>\r\n </div>\r\n <table *ngIf=\"shelfmarks?.value?.length\">\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th>tag</th>\r\n <th>city</th>\r\n <th>library</th>\r\n <th>fund</th>\r\n <th>location</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n *ngFor=\"\r\n let entry of shelfmarks?.value;\r\n let i = index;\r\n let first = first;\r\n let last = last\r\n \"\r\n >\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n color=\"primary\"\r\n matTooltip=\"Edit this shelfmark\"\r\n (click)=\"editShelfmark(entry, i)\"\r\n >\r\n <mat-icon>edit</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this shelfmark up\"\r\n [disabled]=\"first\"\r\n (click)=\"moveShelfmarkUp(i)\"\r\n >\r\n <mat-icon>arrow_upward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this shelfmark down\"\r\n [disabled]=\"last\"\r\n (click)=\"moveShelfmarkDown(i)\"\r\n >\r\n <mat-icon>arrow_downward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n color=\"warn\"\r\n matTooltip=\"Delete this shelfmark\"\r\n (click)=\"deleteShelfmark(i)\"\r\n >\r\n <mat-icon>remove_circle</mat-icon>\r\n </button>\r\n </td>\r\n <td>{{ entry.tag }}</td>\r\n <td>{{ entry.city }}</td>\r\n <td>{{ entry.library }}</td>\r\n <td>{{ entry.fund }}</td>\r\n <td>{{ entry.location }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </mat-tab>\r\n\r\n <mat-tab label=\"shelfmark\" *ngIf=\"editedShelfmark\">\r\n <cadmus-cod-shelfmark-editor\r\n [tagEntries]=\"tagEntries\"\r\n [libEntries]=\"libEntries\"\r\n [shelfmark]=\"editedShelfmark\"\r\n (shelfmarkChange)=\"onShelfmarkSave($event)\"\r\n (editorClose)=\"editShelfmark(null)\"\r\n ></cadmus-cod-shelfmark-editor>\r\n </mat-tab>\r\n </mat-tab-group>\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <cadmus-close-save-buttons\r\n [form]=\"form\"\r\n [noSave]=\"userLevel < 2\"\r\n (closeRequest)=\"close()\"\r\n ></cadmus-close-save-buttons>\r\n </mat-card-actions>\r\n </mat-card>\r\n</form>\r\n", styles: ["th{font-weight:400;color:silver}\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.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6$1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i6$1.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i6$1.MatCardAvatar, selector: "[mat-card-avatar], [matCardAvatar]" }, { kind: "directive", type: i6$1.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i6$1.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i6$1.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i8$1.MatTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "component", type: i8$1.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple", "fitInkBarToContent", "mat-stretch-tabs"], exportAs: ["matTabGroup"] }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i10.CloseSaveButtonsComponent, selector: "cadmus-close-save-buttons", inputs: ["form", "noSave"], outputs: ["closeRequest"] }, { kind: "component", type: CodShelfmarkEditorComponent, selector: "cadmus-cod-shelfmark-editor", inputs: ["shelfmark", "tagEntries", "libEntries"], outputs: ["shelfmarkChange", "editorClose"] }] });
342
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: CodShelfmarksPartComponent, decorators: [{
340
+ CodShelfmarksPartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: CodShelfmarksPartComponent, deps: [{ token: i1$1.AuthJwtService }, { token: i1.FormBuilder }, { token: i3.DialogService }], target: i0.ɵɵFactoryTarget.Component });
341
+ CodShelfmarksPartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.3", type: CodShelfmarksPartComponent, selector: "cadmus-cod-shelfmarks-part", usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <mat-card appearance=\"outlined\">\r\n <mat-card-header>\r\n <div mat-card-avatar>\r\n <mat-icon>picture_in_picture</mat-icon>\r\n </div>\r\n <mat-card-title>Shelfmarks Part</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <mat-tab-group [(selectedIndex)]=\"tabIndex\">\r\n <mat-tab label=\"shelfmarks\">\r\n <div>\r\n <button\r\n type=\"button\"\r\n mat-flat-button\r\n color=\"primary\"\r\n (click)=\"addShelfmark()\"\r\n >\r\n <mat-icon>add_circle</mat-icon> shelfmark\r\n </button>\r\n </div>\r\n <table *ngIf=\"shelfmarks?.value?.length\">\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th>tag</th>\r\n <th>city</th>\r\n <th>library</th>\r\n <th>fund</th>\r\n <th>location</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n *ngFor=\"\r\n let entry of shelfmarks?.value;\r\n let i = index;\r\n let first = first;\r\n let last = last\r\n \"\r\n >\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n color=\"primary\"\r\n matTooltip=\"Edit this shelfmark\"\r\n (click)=\"editShelfmark(entry, i)\"\r\n >\r\n <mat-icon>edit</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this shelfmark up\"\r\n [disabled]=\"first\"\r\n (click)=\"moveShelfmarkUp(i)\"\r\n >\r\n <mat-icon>arrow_upward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this shelfmark down\"\r\n [disabled]=\"last\"\r\n (click)=\"moveShelfmarkDown(i)\"\r\n >\r\n <mat-icon>arrow_downward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n color=\"warn\"\r\n matTooltip=\"Delete this shelfmark\"\r\n (click)=\"deleteShelfmark(i)\"\r\n >\r\n <mat-icon>remove_circle</mat-icon>\r\n </button>\r\n </td>\r\n <td>{{ entry.tag }}</td>\r\n <td>{{ entry.city }}</td>\r\n <td>{{ entry.library }}</td>\r\n <td>{{ entry.fund }}</td>\r\n <td>{{ entry.location }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </mat-tab>\r\n\r\n <mat-tab label=\"shelfmark\" *ngIf=\"editedShelfmark\">\r\n <cadmus-cod-shelfmark-editor\r\n [tagEntries]=\"tagEntries\"\r\n [libEntries]=\"libEntries\"\r\n [shelfmark]=\"editedShelfmark\"\r\n (shelfmarkChange)=\"onShelfmarkSave($event)\"\r\n (editorClose)=\"editShelfmark(null)\"\r\n ></cadmus-cod-shelfmark-editor>\r\n </mat-tab>\r\n </mat-tab-group>\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <cadmus-close-save-buttons\r\n [form]=\"form\"\r\n [noSave]=\"userLevel < 2\"\r\n (closeRequest)=\"close()\"\r\n ></cadmus-close-save-buttons>\r\n </mat-card-actions>\r\n </mat-card>\r\n</form>\r\n", styles: ["th{font-weight:400;color:silver}\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.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6$1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i6$1.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i6$1.MatCardAvatar, selector: "[mat-card-avatar], [matCardAvatar]" }, { kind: "directive", type: i6$1.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i6$1.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i6$1.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i8$1.MatTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "component", type: i8$1.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple", "fitInkBarToContent", "mat-stretch-tabs"], exportAs: ["matTabGroup"] }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i10.CloseSaveButtonsComponent, selector: "cadmus-close-save-buttons", inputs: ["form", "noSave"], outputs: ["closeRequest"] }, { kind: "component", type: CodShelfmarkEditorComponent, selector: "cadmus-cod-shelfmark-editor", inputs: ["shelfmark", "tagEntries", "libEntries"], outputs: ["shelfmarkChange", "editorClose"] }] });
342
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: CodShelfmarksPartComponent, decorators: [{
343
343
  type: Component,
344
344
  args: [{ selector: 'cadmus-cod-shelfmarks-part', template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <mat-card appearance=\"outlined\">\r\n <mat-card-header>\r\n <div mat-card-avatar>\r\n <mat-icon>picture_in_picture</mat-icon>\r\n </div>\r\n <mat-card-title>Shelfmarks Part</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <mat-tab-group [(selectedIndex)]=\"tabIndex\">\r\n <mat-tab label=\"shelfmarks\">\r\n <div>\r\n <button\r\n type=\"button\"\r\n mat-flat-button\r\n color=\"primary\"\r\n (click)=\"addShelfmark()\"\r\n >\r\n <mat-icon>add_circle</mat-icon> shelfmark\r\n </button>\r\n </div>\r\n <table *ngIf=\"shelfmarks?.value?.length\">\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th>tag</th>\r\n <th>city</th>\r\n <th>library</th>\r\n <th>fund</th>\r\n <th>location</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n *ngFor=\"\r\n let entry of shelfmarks?.value;\r\n let i = index;\r\n let first = first;\r\n let last = last\r\n \"\r\n >\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n color=\"primary\"\r\n matTooltip=\"Edit this shelfmark\"\r\n (click)=\"editShelfmark(entry, i)\"\r\n >\r\n <mat-icon>edit</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this shelfmark up\"\r\n [disabled]=\"first\"\r\n (click)=\"moveShelfmarkUp(i)\"\r\n >\r\n <mat-icon>arrow_upward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this shelfmark down\"\r\n [disabled]=\"last\"\r\n (click)=\"moveShelfmarkDown(i)\"\r\n >\r\n <mat-icon>arrow_downward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n color=\"warn\"\r\n matTooltip=\"Delete this shelfmark\"\r\n (click)=\"deleteShelfmark(i)\"\r\n >\r\n <mat-icon>remove_circle</mat-icon>\r\n </button>\r\n </td>\r\n <td>{{ entry.tag }}</td>\r\n <td>{{ entry.city }}</td>\r\n <td>{{ entry.library }}</td>\r\n <td>{{ entry.fund }}</td>\r\n <td>{{ entry.location }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </mat-tab>\r\n\r\n <mat-tab label=\"shelfmark\" *ngIf=\"editedShelfmark\">\r\n <cadmus-cod-shelfmark-editor\r\n [tagEntries]=\"tagEntries\"\r\n [libEntries]=\"libEntries\"\r\n [shelfmark]=\"editedShelfmark\"\r\n (shelfmarkChange)=\"onShelfmarkSave($event)\"\r\n (editorClose)=\"editShelfmark(null)\"\r\n ></cadmus-cod-shelfmark-editor>\r\n </mat-tab>\r\n </mat-tab-group>\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <cadmus-close-save-buttons\r\n [form]=\"form\"\r\n [noSave]=\"userLevel < 2\"\r\n (closeRequest)=\"close()\"\r\n ></cadmus-close-save-buttons>\r\n </mat-card-actions>\r\n </mat-card>\r\n</form>\r\n", styles: ["th{font-weight:400;color:silver}\n"] }]
345
345
  }], ctorParameters: function () { return [{ type: i1$1.AuthJwtService }, { type: i1.FormBuilder }, { type: i3.DialogService }]; } });
@@ -352,17 +352,17 @@ class CodShelfmarksPartFeatureComponent extends EditPartFeatureBase {
352
352
  return ['cod-shelfmark-tags', 'cod-shelfmark-libraries'];
353
353
  }
354
354
  }
355
- CodShelfmarksPartFeatureComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: CodShelfmarksPartFeatureComponent, deps: [{ token: i1$2.Router }, { token: i1$2.ActivatedRoute }, { token: i2$1.MatSnackBar }, { token: i3$1.ItemService }, { token: i3$1.ThesaurusService }, { token: i4$1.PartEditorService }], target: i0.ɵɵFactoryTarget.Component });
356
- CodShelfmarksPartFeatureComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.3", type: CodShelfmarksPartFeatureComponent, selector: "cadmus-cod-shelfmarks-part-feature", usesInheritance: true, ngImport: i0, template: "<cadmus-current-item-bar></cadmus-current-item-bar>\r\n<cadmus-cod-shelfmarks-part\r\n [identity]=\"identity\"\r\n [data]=\"$any(data)\"\r\n (dataChange)=\"save($event)\"\r\n (editorClose)=\"close()\"\r\n (dirtyChange)=\"onDirtyChange($event)\"\r\n></cadmus-cod-shelfmarks-part>\r\n", styles: [""], dependencies: [{ kind: "component", type: i5$2.CurrentItemBarComponent, selector: "cadmus-current-item-bar" }, { kind: "component", type: CodShelfmarksPartComponent, selector: "cadmus-cod-shelfmarks-part" }] });
357
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: CodShelfmarksPartFeatureComponent, decorators: [{
355
+ CodShelfmarksPartFeatureComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: CodShelfmarksPartFeatureComponent, deps: [{ token: i1$2.Router }, { token: i1$2.ActivatedRoute }, { token: i2$1.MatSnackBar }, { token: i3$1.ItemService }, { token: i3$1.ThesaurusService }, { token: i4$1.PartEditorService }], target: i0.ɵɵFactoryTarget.Component });
356
+ CodShelfmarksPartFeatureComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.3", type: CodShelfmarksPartFeatureComponent, selector: "cadmus-cod-shelfmarks-part-feature", usesInheritance: true, ngImport: i0, template: "<cadmus-current-item-bar></cadmus-current-item-bar>\r\n<cadmus-cod-shelfmarks-part\r\n [identity]=\"identity\"\r\n [data]=\"$any(data)\"\r\n (dataChange)=\"save($event)\"\r\n (editorClose)=\"close()\"\r\n (dirtyChange)=\"onDirtyChange($event)\"\r\n></cadmus-cod-shelfmarks-part>\r\n", styles: [""], dependencies: [{ kind: "component", type: i5$2.CurrentItemBarComponent, selector: "cadmus-current-item-bar" }, { kind: "component", type: CodShelfmarksPartComponent, selector: "cadmus-cod-shelfmarks-part" }] });
357
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: CodShelfmarksPartFeatureComponent, decorators: [{
358
358
  type: Component,
359
359
  args: [{ selector: 'cadmus-cod-shelfmarks-part-feature', template: "<cadmus-current-item-bar></cadmus-current-item-bar>\r\n<cadmus-cod-shelfmarks-part\r\n [identity]=\"identity\"\r\n [data]=\"$any(data)\"\r\n (dataChange)=\"save($event)\"\r\n (editorClose)=\"close()\"\r\n (dirtyChange)=\"onDirtyChange($event)\"\r\n></cadmus-cod-shelfmarks-part>\r\n" }]
360
360
  }], ctorParameters: function () { return [{ type: i1$2.Router }, { type: i1$2.ActivatedRoute }, { type: i2$1.MatSnackBar }, { type: i3$1.ItemService }, { type: i3$1.ThesaurusService }, { type: i4$1.PartEditorService }]; } });
361
361
 
362
362
  class CadmusPartCodicologyShelfmarksModule {
363
363
  }
364
- CadmusPartCodicologyShelfmarksModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: CadmusPartCodicologyShelfmarksModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
365
- CadmusPartCodicologyShelfmarksModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.3", ngImport: i0, type: CadmusPartCodicologyShelfmarksModule, declarations: [CodShelfmarksPartComponent,
364
+ CadmusPartCodicologyShelfmarksModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: CadmusPartCodicologyShelfmarksModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
365
+ CadmusPartCodicologyShelfmarksModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.3", ngImport: i0, type: CadmusPartCodicologyShelfmarksModule, declarations: [CodShelfmarksPartComponent,
366
366
  CodShelfmarkEditorComponent,
367
367
  CodShelfmarksPartFeatureComponent], imports: [CommonModule,
368
368
  FormsModule,
@@ -381,7 +381,7 @@ CadmusPartCodicologyShelfmarksModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersi
381
381
  CadmusUiPgModule], exports: [CodShelfmarksPartComponent,
382
382
  CodShelfmarkEditorComponent,
383
383
  CodShelfmarksPartFeatureComponent] });
384
- CadmusPartCodicologyShelfmarksModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: CadmusPartCodicologyShelfmarksModule, imports: [CommonModule,
384
+ CadmusPartCodicologyShelfmarksModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: CadmusPartCodicologyShelfmarksModule, imports: [CommonModule,
385
385
  FormsModule,
386
386
  ReactiveFormsModule,
387
387
  // material
@@ -396,7 +396,7 @@ CadmusPartCodicologyShelfmarksModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersi
396
396
  CadmusStateModule,
397
397
  CadmusUiModule,
398
398
  CadmusUiPgModule] });
399
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: CadmusPartCodicologyShelfmarksModule, decorators: [{
399
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: CadmusPartCodicologyShelfmarksModule, decorators: [{
400
400
  type: NgModule,
401
401
  args: [{
402
402
  declarations: [
@@ -1 +1 @@
1
- {"version":3,"file":"myrmidon-cadmus-part-codicology-shelfmarks.mjs","sources":["../../../../projects/myrmidon/cadmus-part-codicology-shelfmarks/src/lib/cod-shelfmarks-part.ts","../../../../projects/myrmidon/cadmus-part-codicology-shelfmarks/src/lib/cod-shelfmark-editor/cod-shelfmark-editor.component.ts","../../../../projects/myrmidon/cadmus-part-codicology-shelfmarks/src/lib/cod-shelfmark-editor/cod-shelfmark-editor.component.html","../../../../projects/myrmidon/cadmus-part-codicology-shelfmarks/src/lib/cod-shelfmarks-part/cod-shelfmarks-part.component.ts","../../../../projects/myrmidon/cadmus-part-codicology-shelfmarks/src/lib/cod-shelfmarks-part/cod-shelfmarks-part.component.html","../../../../projects/myrmidon/cadmus-part-codicology-shelfmarks/src/lib/cod-shelfmarks-part-feature/cod-shelfmarks-part-feature.component.ts","../../../../projects/myrmidon/cadmus-part-codicology-shelfmarks/src/lib/cod-shelfmarks-part-feature/cod-shelfmarks-part-feature.component.html","../../../../projects/myrmidon/cadmus-part-codicology-shelfmarks/src/lib/cadmus-part-codicology-shelfmarks.module.ts","../../../../projects/myrmidon/cadmus-part-codicology-shelfmarks/src/public-api.ts","../../../../projects/myrmidon/cadmus-part-codicology-shelfmarks/src/myrmidon-cadmus-part-codicology-shelfmarks.ts"],"sourcesContent":["import { Part } from '@myrmidon/cadmus-core';\r\n\r\n/**\r\n * A manuscript's shelfmark.\r\n */\r\nexport interface CodShelfmark {\r\n tag?: string;\r\n city: string;\r\n library: string;\r\n fund?: string;\r\n location: string;\r\n}\r\n\r\n/**\r\n * The CodShelfmarks part model.\r\n */\r\nexport interface CodShelfmarksPart extends Part {\r\n shelfmarks: CodShelfmark[];\r\n}\r\n\r\n/**\r\n * The type ID used to identify the CodShelfmarksPart type.\r\n */\r\nexport const COD_SHELFMARKS_PART_TYPEID = 'it.vedph.codicology.shelfmarks';\r\n\r\n/**\r\n * JSON schema for the CodShelfmarks part.\r\n * You can use the JSON schema tool at https://jsonschema.net/.\r\n */\r\nexport const COD_SHELFMARKS_PART_SCHEMA = {\r\n $schema: 'http://json-schema.org/draft-07/schema#',\r\n $id:\r\n 'www.vedph.it/cadmus/parts/codicology/' +\r\n COD_SHELFMARKS_PART_TYPEID +\r\n '.json',\r\n type: 'object',\r\n title: 'CodShelfmarksPart',\r\n required: [\r\n 'id',\r\n 'itemId',\r\n 'typeId',\r\n 'timeCreated',\r\n 'creatorId',\r\n 'timeModified',\r\n 'userId',\r\n 'shelfmarks',\r\n ],\r\n properties: {\r\n timeCreated: {\r\n type: 'string',\r\n pattern: '^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}.\\\\d+Z$',\r\n },\r\n creatorId: {\r\n type: 'string',\r\n },\r\n timeModified: {\r\n type: 'string',\r\n pattern: '^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}.\\\\d+Z$',\r\n },\r\n userId: {\r\n type: 'string',\r\n },\r\n id: {\r\n type: 'string',\r\n pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$',\r\n },\r\n itemId: {\r\n type: 'string',\r\n pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$',\r\n },\r\n typeId: {\r\n type: 'string',\r\n pattern: '^[a-z][-0-9a-z._]*$',\r\n },\r\n roleId: {\r\n type: ['string', 'null'],\r\n pattern: '^([a-z][-0-9a-z._]*)?$',\r\n },\r\n shelfmarks: {\r\n type: 'array',\r\n items: {\r\n anyOf: [\r\n {\r\n type: 'object',\r\n required: ['city', 'library', 'location'],\r\n properties: {\r\n tag: {\r\n type: 'string',\r\n },\r\n city: {\r\n type: 'string',\r\n },\r\n library: {\r\n type: 'string',\r\n },\r\n fund: {\r\n type: 'string',\r\n },\r\n location: {\r\n type: 'string',\r\n },\r\n },\r\n },\r\n ],\r\n },\r\n },\r\n },\r\n};\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport {\r\n FormBuilder,\r\n FormControl,\r\n FormGroup,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { ThesaurusEntry } from '@myrmidon/cadmus-core';\r\nimport { CodShelfmark } from '../cod-shelfmarks-part';\r\n\r\n@Component({\r\n selector: 'cadmus-cod-shelfmark-editor',\r\n templateUrl: './cod-shelfmark-editor.component.html',\r\n styleUrls: ['./cod-shelfmark-editor.component.css'],\r\n})\r\nexport class CodShelfmarkEditorComponent implements OnInit {\r\n private _shelfmark: CodShelfmark | undefined;\r\n\r\n @Input()\r\n public get shelfmark(): CodShelfmark | undefined {\r\n return this._shelfmark;\r\n }\r\n public set shelfmark(value: CodShelfmark | undefined) {\r\n this._shelfmark = value;\r\n this.updateForm(value);\r\n }\r\n\r\n // cod-shelfmark-tags\r\n @Input()\r\n public tagEntries: ThesaurusEntry[] | undefined;\r\n // cod-shelfmark-libraries\r\n @Input()\r\n public libEntries: ThesaurusEntry[] | undefined;\r\n\r\n @Output()\r\n public shelfmarkChange: EventEmitter<CodShelfmark>;\r\n @Output()\r\n public editorClose: EventEmitter<any>;\r\n\r\n public tag: FormControl<string | null>;\r\n public city: FormControl<string | null>;\r\n public library: FormControl<string | null>;\r\n public fund: FormControl<string | null>;\r\n public location: FormControl<string | null>;\r\n public form: FormGroup;\r\n\r\n constructor(formBuilder: FormBuilder) {\r\n this.shelfmarkChange = new EventEmitter<CodShelfmark>();\r\n this.editorClose = new EventEmitter<any>();\r\n // form\r\n this.tag = formBuilder.control(null, Validators.maxLength(50));\r\n this.city = formBuilder.control(null, [\r\n Validators.required,\r\n Validators.maxLength(50),\r\n ]);\r\n this.library = formBuilder.control(null, [\r\n Validators.required,\r\n Validators.maxLength(50),\r\n ]);\r\n this.fund = formBuilder.control(null, Validators.maxLength(50));\r\n this.location = formBuilder.control(null, Validators.maxLength(50));\r\n\r\n this.form = formBuilder.group({\r\n tag: this.tag,\r\n city: this.city,\r\n library: this.library,\r\n fund: this.fund,\r\n location: this.location,\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this._shelfmark) {\r\n this.updateForm(this._shelfmark);\r\n }\r\n }\r\n\r\n private updateForm(model: CodShelfmark | undefined): void {\r\n if (!model) {\r\n this.form.reset();\r\n return;\r\n }\r\n\r\n this.tag.setValue(model.tag || null);\r\n this.city.setValue(model.city);\r\n this.library.setValue(model.library);\r\n this.fund.setValue(model.fund || null);\r\n this.location.setValue(model.location);\r\n this.form.markAsPristine();\r\n }\r\n\r\n private getModel(): CodShelfmark | null {\r\n return {\r\n tag: this.tag.value?.trim(),\r\n city: this.city.value?.trim() || '',\r\n library: this.library.value?.trim() || '',\r\n fund: this.fund.value?.trim(),\r\n location: this.location.value?.trim() || '',\r\n };\r\n }\r\n\r\n public cancel(): void {\r\n this.editorClose.emit();\r\n }\r\n\r\n public save(): void {\r\n if (this.form.invalid) {\r\n return;\r\n }\r\n const model = this.getModel();\r\n if (!model) {\r\n return;\r\n }\r\n this.shelfmarkChange.emit(model);\r\n }\r\n}\r\n","<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <div>\r\n <!-- tag (bound) -->\r\n <mat-form-field *ngIf=\"tagEntries?.length\" style=\"width: 8em\">\r\n <mat-label>tag</mat-label>\r\n <mat-select [formControl]=\"tag\">\r\n <mat-option *ngFor=\"let e of tagEntries\" [value]=\"e.id\">{{\r\n e.value\r\n }}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <!-- tag (free) -->\r\n <mat-form-field *ngIf=\"!tagEntries?.length\">\r\n <mat-label>tag</mat-label>\r\n <input matInput [formControl]=\"tag\" />\r\n <mat-error\r\n *ngIf=\"$any(tag).errors?.maxLength && (tag.dirty || tag.touched)\"\r\n >tag too long</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- city -->\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>city</mat-label>\r\n <input matInput [formControl]=\"city\" />\r\n <mat-error\r\n *ngIf=\"$any(city).errors?.required && (city.dirty || city.touched)\"\r\n >city required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"$any(city).errors?.maxLength && (city.dirty || city.touched)\"\r\n >city too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n <div>\r\n <!-- library (bound) -->\r\n <mat-form-field *ngIf=\"libEntries?.length\" style=\"width: 8em\">\r\n <mat-label>library</mat-label>\r\n <mat-select [formControl]=\"library\">\r\n <mat-option *ngFor=\"let e of libEntries\" [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(library).errors?.required && (library.dirty || library.touched)\r\n \"\r\n >library required</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- library (free) -->\r\n <mat-form-field *ngIf=\"!libEntries?.length\">\r\n <mat-label>library</mat-label>\r\n <input matInput [formControl]=\"library\" />\r\n <mat-error\r\n *ngIf=\"\r\n $any(library).errors?.required && (library.dirty || library.touched)\r\n \"\r\n >library required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"\r\n $any(library).errors?.maxLength && (library.dirty || library.touched)\r\n \"\r\n >library too long</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- fund -->\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>fund</mat-label>\r\n <input matInput [formControl]=\"fund\" />\r\n <mat-error\r\n *ngIf=\"$any(fund).errors?.maxLength && (fund.dirty || fund.touched)\"\r\n >fund too long</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- location -->\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>location</mat-label>\r\n <input matInput [formControl]=\"location\" />\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-error\r\n *ngIf=\"\r\n $any(location).errors?.maxLength &&\r\n (location.dirty || location.touched)\r\n \"\r\n >location too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\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","import { Component, OnInit } from '@angular/core';\r\nimport {\r\n FormControl,\r\n FormBuilder,\r\n FormGroup,\r\n UntypedFormGroup,\r\n} from '@angular/forms';\r\nimport { take } from 'rxjs/operators';\r\n\r\nimport { deepCopy, NgToolsValidators } from '@myrmidon/ng-tools';\r\nimport { DialogService } from '@myrmidon/ng-mat-tools';\r\nimport { AuthJwtService } from '@myrmidon/auth-jwt-login';\r\nimport { EditedObject, ModelEditorComponentBase } from '@myrmidon/cadmus-ui';\r\nimport { ThesauriSet, ThesaurusEntry } from '@myrmidon/cadmus-core';\r\n\r\nimport {\r\n CodShelfmark,\r\n CodShelfmarksPart,\r\n COD_SHELFMARKS_PART_TYPEID,\r\n} from '../cod-shelfmarks-part';\r\n\r\n/**\r\n * CodShelfmarksPart editor component.\r\n * Thesauri: cod-shelfmark-tags, cod-shelfmark-libraries (all optional).\r\n */\r\n@Component({\r\n selector: 'cadmus-cod-shelfmarks-part',\r\n templateUrl: './cod-shelfmarks-part.component.html',\r\n styleUrls: ['./cod-shelfmarks-part.component.css'],\r\n})\r\nexport class CodShelfmarksPartComponent\r\n extends ModelEditorComponentBase<CodShelfmarksPart>\r\n implements OnInit\r\n{\r\n private _editedIndex: number;\r\n\r\n public tabIndex: number;\r\n public editedShelfmark: CodShelfmark | undefined;\r\n\r\n // cod-shelfmark-tags\r\n public tagEntries: ThesaurusEntry[] | undefined;\r\n // cod-shelfmark-libraries\r\n public libEntries: ThesaurusEntry[] | undefined;\r\n\r\n public shelfmarks: FormControl<CodShelfmark[]>;\r\n\r\n constructor(\r\n authService: AuthJwtService,\r\n formBuilder: FormBuilder,\r\n private _dialogService: DialogService\r\n ) {\r\n super(authService, formBuilder);\r\n this._editedIndex = -1;\r\n this.tabIndex = 0;\r\n // form\r\n this.shelfmarks = formBuilder.control([], {\r\n nonNullable: true,\r\n validators: NgToolsValidators.strictMinLengthValidator(1),\r\n });\r\n }\r\n\r\n public override ngOnInit(): void {\r\n super.ngOnInit();\r\n }\r\n\r\n protected buildForm(formBuilder: FormBuilder): FormGroup | UntypedFormGroup {\r\n return formBuilder.group({\r\n shelfmarks: this.shelfmarks,\r\n });\r\n }\r\n\r\n private updateThesauri(thesauri: ThesauriSet): void {\r\n let key = 'cod-shelfmark-tags';\r\n if (this.hasThesaurus(key)) {\r\n this.tagEntries = thesauri[key].entries;\r\n } else {\r\n this.tagEntries = undefined;\r\n }\r\n key = 'cod-shelfmark-libraries';\r\n if (this.hasThesaurus(key)) {\r\n this.libEntries = thesauri[key].entries;\r\n } else {\r\n this.libEntries = undefined;\r\n }\r\n }\r\n\r\n private updateForm(part?: CodShelfmarksPart | null): void {\r\n if (!part) {\r\n this.form.reset();\r\n return;\r\n }\r\n this.shelfmarks.setValue(part.shelfmarks || []);\r\n this.form.markAsPristine();\r\n }\r\n\r\n protected override onDataSet(data?: EditedObject<CodShelfmarksPart>): void {\r\n // thesauri\r\n if (data?.thesauri) {\r\n this.updateThesauri(data.thesauri);\r\n }\r\n\r\n // form\r\n this.updateForm(data?.value);\r\n }\r\n\r\n protected getValue(): CodShelfmarksPart {\r\n let part = this.getEditedPart(\r\n COD_SHELFMARKS_PART_TYPEID\r\n ) as CodShelfmarksPart;\r\n part.shelfmarks = this.shelfmarks.value || [];\r\n return part;\r\n }\r\n\r\n public addShelfmark(): void {\r\n this.editShelfmark({\r\n city: '',\r\n library: this.libEntries?.length ? this.libEntries[0].id : '',\r\n location: '',\r\n });\r\n }\r\n\r\n public editShelfmark(shelfmark: CodShelfmark | null, index = -1): void {\r\n if (!shelfmark) {\r\n this._editedIndex = -1;\r\n this.tabIndex = 0;\r\n this.editedShelfmark = undefined;\r\n } else {\r\n this._editedIndex = index;\r\n this.editedShelfmark = shelfmark;\r\n setTimeout(() => {\r\n this.tabIndex = 1;\r\n });\r\n }\r\n }\r\n\r\n public onShelfmarkSave(shelfmark: CodShelfmark): void {\r\n const shelfmarks = [...this.shelfmarks.value];\r\n\r\n if (this._editedIndex > -1) {\r\n shelfmarks.splice(this._editedIndex, 1, shelfmark);\r\n } else {\r\n shelfmarks.push(shelfmark);\r\n }\r\n\r\n this.shelfmarks.setValue(shelfmarks);\r\n this.editShelfmark(null);\r\n }\r\n\r\n public deleteShelfmark(index: number): void {\r\n this._dialogService\r\n .confirm('Confirmation', 'Delete shelfmark?')\r\n .pipe(take(1))\r\n .subscribe((yes) => {\r\n if (yes) {\r\n const entries = [...this.shelfmarks.value];\r\n entries.splice(index, 1);\r\n this.shelfmarks.setValue(entries);\r\n }\r\n });\r\n }\r\n\r\n public moveShelfmarkUp(index: number): void {\r\n if (index < 1) {\r\n return;\r\n }\r\n const entry = this.shelfmarks.value[index];\r\n const entries = [...this.shelfmarks.value];\r\n entries.splice(index, 1);\r\n entries.splice(index - 1, 0, entry);\r\n this.shelfmarks.setValue(entries);\r\n }\r\n\r\n public moveShelfmarkDown(index: number): void {\r\n if (index + 1 >= this.shelfmarks.value.length) {\r\n return;\r\n }\r\n const entry = this.shelfmarks.value[index];\r\n const entries = [...this.shelfmarks.value];\r\n entries.splice(index, 1);\r\n entries.splice(index + 1, 0, entry);\r\n this.shelfmarks.setValue(entries);\r\n }\r\n}\r\n","<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <mat-card appearance=\"outlined\">\r\n <mat-card-header>\r\n <div mat-card-avatar>\r\n <mat-icon>picture_in_picture</mat-icon>\r\n </div>\r\n <mat-card-title>Shelfmarks Part</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <mat-tab-group [(selectedIndex)]=\"tabIndex\">\r\n <mat-tab label=\"shelfmarks\">\r\n <div>\r\n <button\r\n type=\"button\"\r\n mat-flat-button\r\n color=\"primary\"\r\n (click)=\"addShelfmark()\"\r\n >\r\n <mat-icon>add_circle</mat-icon> shelfmark\r\n </button>\r\n </div>\r\n <table *ngIf=\"shelfmarks?.value?.length\">\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th>tag</th>\r\n <th>city</th>\r\n <th>library</th>\r\n <th>fund</th>\r\n <th>location</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n *ngFor=\"\r\n let entry of shelfmarks?.value;\r\n let i = index;\r\n let first = first;\r\n let last = last\r\n \"\r\n >\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n color=\"primary\"\r\n matTooltip=\"Edit this shelfmark\"\r\n (click)=\"editShelfmark(entry, i)\"\r\n >\r\n <mat-icon>edit</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this shelfmark up\"\r\n [disabled]=\"first\"\r\n (click)=\"moveShelfmarkUp(i)\"\r\n >\r\n <mat-icon>arrow_upward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this shelfmark down\"\r\n [disabled]=\"last\"\r\n (click)=\"moveShelfmarkDown(i)\"\r\n >\r\n <mat-icon>arrow_downward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n color=\"warn\"\r\n matTooltip=\"Delete this shelfmark\"\r\n (click)=\"deleteShelfmark(i)\"\r\n >\r\n <mat-icon>remove_circle</mat-icon>\r\n </button>\r\n </td>\r\n <td>{{ entry.tag }}</td>\r\n <td>{{ entry.city }}</td>\r\n <td>{{ entry.library }}</td>\r\n <td>{{ entry.fund }}</td>\r\n <td>{{ entry.location }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </mat-tab>\r\n\r\n <mat-tab label=\"shelfmark\" *ngIf=\"editedShelfmark\">\r\n <cadmus-cod-shelfmark-editor\r\n [tagEntries]=\"tagEntries\"\r\n [libEntries]=\"libEntries\"\r\n [shelfmark]=\"editedShelfmark\"\r\n (shelfmarkChange)=\"onShelfmarkSave($event)\"\r\n (editorClose)=\"editShelfmark(null)\"\r\n ></cadmus-cod-shelfmark-editor>\r\n </mat-tab>\r\n </mat-tab-group>\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <cadmus-close-save-buttons\r\n [form]=\"form\"\r\n [noSave]=\"userLevel < 2\"\r\n (closeRequest)=\"close()\"\r\n ></cadmus-close-save-buttons>\r\n </mat-card-actions>\r\n </mat-card>\r\n</form>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\n\r\nimport { EditPartFeatureBase, PartEditorService } from '@myrmidon/cadmus-state';\r\nimport { ItemService, ThesaurusService } from '@myrmidon/cadmus-api';\r\n\r\n@Component({\r\n selector: 'cadmus-cod-shelfmarks-part-feature',\r\n templateUrl: './cod-shelfmarks-part-feature.component.html',\r\n styleUrls: ['./cod-shelfmarks-part-feature.component.css'],\r\n})\r\nexport class CodShelfmarksPartFeatureComponent\r\n extends EditPartFeatureBase\r\n implements OnInit\r\n{\r\n constructor(\r\n router: Router,\r\n route: ActivatedRoute,\r\n snackbar: MatSnackBar,\r\n itemService: ItemService,\r\n thesaurusService: ThesaurusService,\r\n editorService: PartEditorService\r\n ) {\r\n super(\r\n router,\r\n route,\r\n snackbar,\r\n itemService,\r\n thesaurusService,\r\n editorService\r\n );\r\n }\r\n\r\n protected override getReqThesauriIds(): string[] {\r\n return ['cod-shelfmark-tags', 'cod-shelfmark-libraries'];\r\n }\r\n}\r\n","<cadmus-current-item-bar></cadmus-current-item-bar>\r\n<cadmus-cod-shelfmarks-part\r\n [identity]=\"identity\"\r\n [data]=\"$any(data)\"\r\n (dataChange)=\"save($event)\"\r\n (editorClose)=\"close()\"\r\n (dirtyChange)=\"onDirtyChange($event)\"\r\n></cadmus-cod-shelfmarks-part>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\n// cadmus\r\nimport { CadmusStateModule } from '@myrmidon/cadmus-state';\r\nimport { CadmusUiModule } from '@myrmidon/cadmus-ui';\r\nimport { CadmusUiPgModule } from '@myrmidon/cadmus-ui-pg';\r\n// locals (UI editor and PG wrapper)\r\nimport { CodShelfmarksPartComponent } from './cod-shelfmarks-part/cod-shelfmarks-part.component';\r\nimport { CodShelfmarkEditorComponent } from './cod-shelfmark-editor/cod-shelfmark-editor.component';\r\nimport { CodShelfmarksPartFeatureComponent } from './cod-shelfmarks-part-feature/cod-shelfmarks-part-feature.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n CodShelfmarksPartComponent,\r\n CodShelfmarkEditorComponent,\r\n CodShelfmarksPartFeatureComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n // material\r\n MatButtonModule,\r\n MatCardModule,\r\n MatIconModule,\r\n MatInputModule,\r\n MatSelectModule,\r\n MatTabsModule,\r\n MatTooltipModule,\r\n // Cadmus\r\n CadmusStateModule,\r\n CadmusUiModule,\r\n CadmusUiPgModule,\r\n ],\r\n exports: [\r\n CodShelfmarksPartComponent,\r\n CodShelfmarkEditorComponent,\r\n CodShelfmarksPartFeatureComponent,\r\n ],\r\n})\r\nexport class CadmusPartCodicologyShelfmarksModule {}\r\n","/*\r\n * Public API Surface of cadmus-part-codicology-shelfmarks\r\n */\r\n\r\nexport * from './lib/cod-shelfmarks-part';\r\nexport * from './lib/cod-shelfmarks-part/cod-shelfmarks-part.component';\r\nexport * from './lib/cod-shelfmark-editor/cod-shelfmark-editor.component';\r\nexport * from './lib/cod-shelfmarks-part-feature/cod-shelfmarks-part-feature.component';\r\nexport * from './lib/cadmus-part-codicology-shelfmarks.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i5","i1","i2","i4","i6","i7","i8","i11.CodShelfmarkEditorComponent","i6.CodShelfmarksPartComponent"],"mappings":"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"}
1
+ {"version":3,"file":"myrmidon-cadmus-part-codicology-shelfmarks.mjs","sources":["../../../../projects/myrmidon/cadmus-part-codicology-shelfmarks/src/lib/cod-shelfmarks-part.ts","../../../../projects/myrmidon/cadmus-part-codicology-shelfmarks/src/lib/cod-shelfmark-editor/cod-shelfmark-editor.component.ts","../../../../projects/myrmidon/cadmus-part-codicology-shelfmarks/src/lib/cod-shelfmark-editor/cod-shelfmark-editor.component.html","../../../../projects/myrmidon/cadmus-part-codicology-shelfmarks/src/lib/cod-shelfmarks-part/cod-shelfmarks-part.component.ts","../../../../projects/myrmidon/cadmus-part-codicology-shelfmarks/src/lib/cod-shelfmarks-part/cod-shelfmarks-part.component.html","../../../../projects/myrmidon/cadmus-part-codicology-shelfmarks/src/lib/cod-shelfmarks-part-feature/cod-shelfmarks-part-feature.component.ts","../../../../projects/myrmidon/cadmus-part-codicology-shelfmarks/src/lib/cod-shelfmarks-part-feature/cod-shelfmarks-part-feature.component.html","../../../../projects/myrmidon/cadmus-part-codicology-shelfmarks/src/lib/cadmus-part-codicology-shelfmarks.module.ts","../../../../projects/myrmidon/cadmus-part-codicology-shelfmarks/src/public-api.ts","../../../../projects/myrmidon/cadmus-part-codicology-shelfmarks/src/myrmidon-cadmus-part-codicology-shelfmarks.ts"],"sourcesContent":["import { Part } from '@myrmidon/cadmus-core';\r\n\r\n/**\r\n * A manuscript's shelfmark.\r\n */\r\nexport interface CodShelfmark {\r\n tag?: string;\r\n city: string;\r\n library: string;\r\n fund?: string;\r\n location: string;\r\n}\r\n\r\n/**\r\n * The CodShelfmarks part model.\r\n */\r\nexport interface CodShelfmarksPart extends Part {\r\n shelfmarks: CodShelfmark[];\r\n}\r\n\r\n/**\r\n * The type ID used to identify the CodShelfmarksPart type.\r\n */\r\nexport const COD_SHELFMARKS_PART_TYPEID = 'it.vedph.codicology.shelfmarks';\r\n\r\n/**\r\n * JSON schema for the CodShelfmarks part.\r\n * You can use the JSON schema tool at https://jsonschema.net/.\r\n */\r\nexport const COD_SHELFMARKS_PART_SCHEMA = {\r\n $schema: 'http://json-schema.org/draft-07/schema#',\r\n $id:\r\n 'www.vedph.it/cadmus/parts/codicology/' +\r\n COD_SHELFMARKS_PART_TYPEID +\r\n '.json',\r\n type: 'object',\r\n title: 'CodShelfmarksPart',\r\n required: [\r\n 'id',\r\n 'itemId',\r\n 'typeId',\r\n 'timeCreated',\r\n 'creatorId',\r\n 'timeModified',\r\n 'userId',\r\n 'shelfmarks',\r\n ],\r\n properties: {\r\n timeCreated: {\r\n type: 'string',\r\n pattern: '^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}.\\\\d+Z$',\r\n },\r\n creatorId: {\r\n type: 'string',\r\n },\r\n timeModified: {\r\n type: 'string',\r\n pattern: '^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}.\\\\d+Z$',\r\n },\r\n userId: {\r\n type: 'string',\r\n },\r\n id: {\r\n type: 'string',\r\n pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$',\r\n },\r\n itemId: {\r\n type: 'string',\r\n pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$',\r\n },\r\n typeId: {\r\n type: 'string',\r\n pattern: '^[a-z][-0-9a-z._]*$',\r\n },\r\n roleId: {\r\n type: ['string', 'null'],\r\n pattern: '^([a-z][-0-9a-z._]*)?$',\r\n },\r\n shelfmarks: {\r\n type: 'array',\r\n items: {\r\n anyOf: [\r\n {\r\n type: 'object',\r\n required: ['city', 'library', 'location'],\r\n properties: {\r\n tag: {\r\n type: 'string',\r\n },\r\n city: {\r\n type: 'string',\r\n },\r\n library: {\r\n type: 'string',\r\n },\r\n fund: {\r\n type: 'string',\r\n },\r\n location: {\r\n type: 'string',\r\n },\r\n },\r\n },\r\n ],\r\n },\r\n },\r\n },\r\n};\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport {\r\n FormBuilder,\r\n FormControl,\r\n FormGroup,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { ThesaurusEntry } from '@myrmidon/cadmus-core';\r\nimport { CodShelfmark } from '../cod-shelfmarks-part';\r\n\r\n@Component({\r\n selector: 'cadmus-cod-shelfmark-editor',\r\n templateUrl: './cod-shelfmark-editor.component.html',\r\n styleUrls: ['./cod-shelfmark-editor.component.css'],\r\n})\r\nexport class CodShelfmarkEditorComponent implements OnInit {\r\n private _shelfmark: CodShelfmark | undefined;\r\n\r\n @Input()\r\n public get shelfmark(): CodShelfmark | undefined {\r\n return this._shelfmark;\r\n }\r\n public set shelfmark(value: CodShelfmark | undefined) {\r\n if (this._shelfmark === value) {\r\n return;\r\n }\r\n this._shelfmark = value;\r\n this.updateForm(value);\r\n }\r\n\r\n // cod-shelfmark-tags\r\n @Input()\r\n public tagEntries: ThesaurusEntry[] | undefined;\r\n // cod-shelfmark-libraries\r\n @Input()\r\n public libEntries: ThesaurusEntry[] | undefined;\r\n\r\n @Output()\r\n public shelfmarkChange: EventEmitter<CodShelfmark>;\r\n @Output()\r\n public editorClose: EventEmitter<any>;\r\n\r\n public tag: FormControl<string | null>;\r\n public city: FormControl<string | null>;\r\n public library: FormControl<string | null>;\r\n public fund: FormControl<string | null>;\r\n public location: FormControl<string | null>;\r\n public form: FormGroup;\r\n\r\n constructor(formBuilder: FormBuilder) {\r\n this.shelfmarkChange = new EventEmitter<CodShelfmark>();\r\n this.editorClose = new EventEmitter<any>();\r\n // form\r\n this.tag = formBuilder.control(null, Validators.maxLength(50));\r\n this.city = formBuilder.control(null, [\r\n Validators.required,\r\n Validators.maxLength(50),\r\n ]);\r\n this.library = formBuilder.control(null, [\r\n Validators.required,\r\n Validators.maxLength(50),\r\n ]);\r\n this.fund = formBuilder.control(null, Validators.maxLength(50));\r\n this.location = formBuilder.control(null, Validators.maxLength(50));\r\n\r\n this.form = formBuilder.group({\r\n tag: this.tag,\r\n city: this.city,\r\n library: this.library,\r\n fund: this.fund,\r\n location: this.location,\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this._shelfmark) {\r\n this.updateForm(this._shelfmark);\r\n }\r\n }\r\n\r\n private updateForm(model: CodShelfmark | undefined): void {\r\n if (!model) {\r\n this.form.reset();\r\n return;\r\n }\r\n\r\n this.tag.setValue(model.tag || null);\r\n this.city.setValue(model.city);\r\n this.library.setValue(model.library);\r\n this.fund.setValue(model.fund || null);\r\n this.location.setValue(model.location);\r\n this.form.markAsPristine();\r\n }\r\n\r\n private getModel(): CodShelfmark {\r\n return {\r\n tag: this.tag.value?.trim(),\r\n city: this.city.value?.trim() || '',\r\n library: this.library.value?.trim() || '',\r\n fund: this.fund.value?.trim(),\r\n location: this.location.value?.trim() || '',\r\n };\r\n }\r\n\r\n public cancel(): void {\r\n this.editorClose.emit();\r\n }\r\n\r\n public save(): void {\r\n if (this.form.invalid) {\r\n return;\r\n }\r\n this._shelfmark = this.getModel();\r\n this.shelfmarkChange.emit(this._shelfmark);\r\n }\r\n}\r\n","<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <div>\r\n <!-- tag (bound) -->\r\n <mat-form-field *ngIf=\"tagEntries?.length\" style=\"width: 8em\">\r\n <mat-label>tag</mat-label>\r\n <mat-select [formControl]=\"tag\">\r\n <mat-option *ngFor=\"let e of tagEntries\" [value]=\"e.id\">{{\r\n e.value\r\n }}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <!-- tag (free) -->\r\n <mat-form-field *ngIf=\"!tagEntries?.length\">\r\n <mat-label>tag</mat-label>\r\n <input matInput [formControl]=\"tag\" />\r\n <mat-error\r\n *ngIf=\"$any(tag).errors?.maxLength && (tag.dirty || tag.touched)\"\r\n >tag too long</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- city -->\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>city</mat-label>\r\n <input matInput [formControl]=\"city\" />\r\n <mat-error\r\n *ngIf=\"$any(city).errors?.required && (city.dirty || city.touched)\"\r\n >city required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"$any(city).errors?.maxLength && (city.dirty || city.touched)\"\r\n >city too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n <div>\r\n <!-- library (bound) -->\r\n <mat-form-field *ngIf=\"libEntries?.length\" style=\"width: 8em\">\r\n <mat-label>library</mat-label>\r\n <mat-select [formControl]=\"library\">\r\n <mat-option *ngFor=\"let e of libEntries\" [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(library).errors?.required && (library.dirty || library.touched)\r\n \"\r\n >library required</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- library (free) -->\r\n <mat-form-field *ngIf=\"!libEntries?.length\">\r\n <mat-label>library</mat-label>\r\n <input matInput [formControl]=\"library\" />\r\n <mat-error\r\n *ngIf=\"\r\n $any(library).errors?.required && (library.dirty || library.touched)\r\n \"\r\n >library required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"\r\n $any(library).errors?.maxLength && (library.dirty || library.touched)\r\n \"\r\n >library too long</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- fund -->\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>fund</mat-label>\r\n <input matInput [formControl]=\"fund\" />\r\n <mat-error\r\n *ngIf=\"$any(fund).errors?.maxLength && (fund.dirty || fund.touched)\"\r\n >fund too long</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- location -->\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>location</mat-label>\r\n <input matInput [formControl]=\"location\" />\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-error\r\n *ngIf=\"\r\n $any(location).errors?.maxLength &&\r\n (location.dirty || location.touched)\r\n \"\r\n >location too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\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","import { Component, OnInit } from '@angular/core';\r\nimport {\r\n FormControl,\r\n FormBuilder,\r\n FormGroup,\r\n UntypedFormGroup,\r\n} from '@angular/forms';\r\nimport { take } from 'rxjs/operators';\r\n\r\nimport { deepCopy, NgToolsValidators } from '@myrmidon/ng-tools';\r\nimport { DialogService } from '@myrmidon/ng-mat-tools';\r\nimport { AuthJwtService } from '@myrmidon/auth-jwt-login';\r\nimport { EditedObject, ModelEditorComponentBase } from '@myrmidon/cadmus-ui';\r\nimport { ThesauriSet, ThesaurusEntry } from '@myrmidon/cadmus-core';\r\n\r\nimport {\r\n CodShelfmark,\r\n CodShelfmarksPart,\r\n COD_SHELFMARKS_PART_TYPEID,\r\n} from '../cod-shelfmarks-part';\r\n\r\n/**\r\n * CodShelfmarksPart editor component.\r\n * Thesauri: cod-shelfmark-tags, cod-shelfmark-libraries (all optional).\r\n */\r\n@Component({\r\n selector: 'cadmus-cod-shelfmarks-part',\r\n templateUrl: './cod-shelfmarks-part.component.html',\r\n styleUrls: ['./cod-shelfmarks-part.component.css'],\r\n})\r\nexport class CodShelfmarksPartComponent\r\n extends ModelEditorComponentBase<CodShelfmarksPart>\r\n implements OnInit\r\n{\r\n private _editedIndex: number;\r\n\r\n public tabIndex: number;\r\n public editedShelfmark: CodShelfmark | undefined;\r\n\r\n // cod-shelfmark-tags\r\n public tagEntries: ThesaurusEntry[] | undefined;\r\n // cod-shelfmark-libraries\r\n public libEntries: ThesaurusEntry[] | undefined;\r\n\r\n public shelfmarks: FormControl<CodShelfmark[]>;\r\n\r\n constructor(\r\n authService: AuthJwtService,\r\n formBuilder: FormBuilder,\r\n private _dialogService: DialogService\r\n ) {\r\n super(authService, formBuilder);\r\n this._editedIndex = -1;\r\n this.tabIndex = 0;\r\n // form\r\n this.shelfmarks = formBuilder.control([], {\r\n nonNullable: true,\r\n validators: NgToolsValidators.strictMinLengthValidator(1),\r\n });\r\n }\r\n\r\n public override ngOnInit(): void {\r\n super.ngOnInit();\r\n }\r\n\r\n protected buildForm(formBuilder: FormBuilder): FormGroup | UntypedFormGroup {\r\n return formBuilder.group({\r\n shelfmarks: this.shelfmarks,\r\n });\r\n }\r\n\r\n private updateThesauri(thesauri: ThesauriSet): void {\r\n let key = 'cod-shelfmark-tags';\r\n if (this.hasThesaurus(key)) {\r\n this.tagEntries = thesauri[key].entries;\r\n } else {\r\n this.tagEntries = undefined;\r\n }\r\n key = 'cod-shelfmark-libraries';\r\n if (this.hasThesaurus(key)) {\r\n this.libEntries = thesauri[key].entries;\r\n } else {\r\n this.libEntries = undefined;\r\n }\r\n }\r\n\r\n private updateForm(part?: CodShelfmarksPart | null): void {\r\n if (!part) {\r\n this.form.reset();\r\n return;\r\n }\r\n this.shelfmarks.setValue(part.shelfmarks || []);\r\n this.form.markAsPristine();\r\n }\r\n\r\n protected override onDataSet(data?: EditedObject<CodShelfmarksPart>): void {\r\n // thesauri\r\n if (data?.thesauri) {\r\n this.updateThesauri(data.thesauri);\r\n }\r\n\r\n // form\r\n this.updateForm(data?.value);\r\n }\r\n\r\n protected getValue(): CodShelfmarksPart {\r\n let part = this.getEditedPart(\r\n COD_SHELFMARKS_PART_TYPEID\r\n ) as CodShelfmarksPart;\r\n part.shelfmarks = this.shelfmarks.value || [];\r\n return part;\r\n }\r\n\r\n public addShelfmark(): void {\r\n this.editShelfmark({\r\n city: '',\r\n library: this.libEntries?.length ? this.libEntries[0].id : '',\r\n location: '',\r\n });\r\n }\r\n\r\n public editShelfmark(shelfmark: CodShelfmark | null, index = -1): void {\r\n if (!shelfmark) {\r\n this._editedIndex = -1;\r\n this.tabIndex = 0;\r\n this.editedShelfmark = undefined;\r\n } else {\r\n this._editedIndex = index;\r\n this.editedShelfmark = shelfmark;\r\n setTimeout(() => {\r\n this.tabIndex = 1;\r\n });\r\n }\r\n }\r\n\r\n public onShelfmarkSave(shelfmark: CodShelfmark): void {\r\n const shelfmarks = [...this.shelfmarks.value];\r\n\r\n if (this._editedIndex > -1) {\r\n shelfmarks.splice(this._editedIndex, 1, shelfmark);\r\n } else {\r\n shelfmarks.push(shelfmark);\r\n }\r\n\r\n this.shelfmarks.setValue(shelfmarks);\r\n this.editShelfmark(null);\r\n }\r\n\r\n public deleteShelfmark(index: number): void {\r\n this._dialogService\r\n .confirm('Confirmation', 'Delete shelfmark?')\r\n .pipe(take(1))\r\n .subscribe((yes) => {\r\n if (yes) {\r\n const entries = [...this.shelfmarks.value];\r\n entries.splice(index, 1);\r\n this.shelfmarks.setValue(entries);\r\n }\r\n });\r\n }\r\n\r\n public moveShelfmarkUp(index: number): void {\r\n if (index < 1) {\r\n return;\r\n }\r\n const entry = this.shelfmarks.value[index];\r\n const entries = [...this.shelfmarks.value];\r\n entries.splice(index, 1);\r\n entries.splice(index - 1, 0, entry);\r\n this.shelfmarks.setValue(entries);\r\n }\r\n\r\n public moveShelfmarkDown(index: number): void {\r\n if (index + 1 >= this.shelfmarks.value.length) {\r\n return;\r\n }\r\n const entry = this.shelfmarks.value[index];\r\n const entries = [...this.shelfmarks.value];\r\n entries.splice(index, 1);\r\n entries.splice(index + 1, 0, entry);\r\n this.shelfmarks.setValue(entries);\r\n }\r\n}\r\n","<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <mat-card appearance=\"outlined\">\r\n <mat-card-header>\r\n <div mat-card-avatar>\r\n <mat-icon>picture_in_picture</mat-icon>\r\n </div>\r\n <mat-card-title>Shelfmarks Part</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <mat-tab-group [(selectedIndex)]=\"tabIndex\">\r\n <mat-tab label=\"shelfmarks\">\r\n <div>\r\n <button\r\n type=\"button\"\r\n mat-flat-button\r\n color=\"primary\"\r\n (click)=\"addShelfmark()\"\r\n >\r\n <mat-icon>add_circle</mat-icon> shelfmark\r\n </button>\r\n </div>\r\n <table *ngIf=\"shelfmarks?.value?.length\">\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th>tag</th>\r\n <th>city</th>\r\n <th>library</th>\r\n <th>fund</th>\r\n <th>location</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n *ngFor=\"\r\n let entry of shelfmarks?.value;\r\n let i = index;\r\n let first = first;\r\n let last = last\r\n \"\r\n >\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n color=\"primary\"\r\n matTooltip=\"Edit this shelfmark\"\r\n (click)=\"editShelfmark(entry, i)\"\r\n >\r\n <mat-icon>edit</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this shelfmark up\"\r\n [disabled]=\"first\"\r\n (click)=\"moveShelfmarkUp(i)\"\r\n >\r\n <mat-icon>arrow_upward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this shelfmark down\"\r\n [disabled]=\"last\"\r\n (click)=\"moveShelfmarkDown(i)\"\r\n >\r\n <mat-icon>arrow_downward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n color=\"warn\"\r\n matTooltip=\"Delete this shelfmark\"\r\n (click)=\"deleteShelfmark(i)\"\r\n >\r\n <mat-icon>remove_circle</mat-icon>\r\n </button>\r\n </td>\r\n <td>{{ entry.tag }}</td>\r\n <td>{{ entry.city }}</td>\r\n <td>{{ entry.library }}</td>\r\n <td>{{ entry.fund }}</td>\r\n <td>{{ entry.location }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </mat-tab>\r\n\r\n <mat-tab label=\"shelfmark\" *ngIf=\"editedShelfmark\">\r\n <cadmus-cod-shelfmark-editor\r\n [tagEntries]=\"tagEntries\"\r\n [libEntries]=\"libEntries\"\r\n [shelfmark]=\"editedShelfmark\"\r\n (shelfmarkChange)=\"onShelfmarkSave($event)\"\r\n (editorClose)=\"editShelfmark(null)\"\r\n ></cadmus-cod-shelfmark-editor>\r\n </mat-tab>\r\n </mat-tab-group>\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <cadmus-close-save-buttons\r\n [form]=\"form\"\r\n [noSave]=\"userLevel < 2\"\r\n (closeRequest)=\"close()\"\r\n ></cadmus-close-save-buttons>\r\n </mat-card-actions>\r\n </mat-card>\r\n</form>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\n\r\nimport { EditPartFeatureBase, PartEditorService } from '@myrmidon/cadmus-state';\r\nimport { ItemService, ThesaurusService } from '@myrmidon/cadmus-api';\r\n\r\n@Component({\r\n selector: 'cadmus-cod-shelfmarks-part-feature',\r\n templateUrl: './cod-shelfmarks-part-feature.component.html',\r\n styleUrls: ['./cod-shelfmarks-part-feature.component.css'],\r\n})\r\nexport class CodShelfmarksPartFeatureComponent\r\n extends EditPartFeatureBase\r\n implements OnInit\r\n{\r\n constructor(\r\n router: Router,\r\n route: ActivatedRoute,\r\n snackbar: MatSnackBar,\r\n itemService: ItemService,\r\n thesaurusService: ThesaurusService,\r\n editorService: PartEditorService\r\n ) {\r\n super(\r\n router,\r\n route,\r\n snackbar,\r\n itemService,\r\n thesaurusService,\r\n editorService\r\n );\r\n }\r\n\r\n protected override getReqThesauriIds(): string[] {\r\n return ['cod-shelfmark-tags', 'cod-shelfmark-libraries'];\r\n }\r\n}\r\n","<cadmus-current-item-bar></cadmus-current-item-bar>\r\n<cadmus-cod-shelfmarks-part\r\n [identity]=\"identity\"\r\n [data]=\"$any(data)\"\r\n (dataChange)=\"save($event)\"\r\n (editorClose)=\"close()\"\r\n (dirtyChange)=\"onDirtyChange($event)\"\r\n></cadmus-cod-shelfmarks-part>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\n// cadmus\r\nimport { CadmusStateModule } from '@myrmidon/cadmus-state';\r\nimport { CadmusUiModule } from '@myrmidon/cadmus-ui';\r\nimport { CadmusUiPgModule } from '@myrmidon/cadmus-ui-pg';\r\n// locals (UI editor and PG wrapper)\r\nimport { CodShelfmarksPartComponent } from './cod-shelfmarks-part/cod-shelfmarks-part.component';\r\nimport { CodShelfmarkEditorComponent } from './cod-shelfmark-editor/cod-shelfmark-editor.component';\r\nimport { CodShelfmarksPartFeatureComponent } from './cod-shelfmarks-part-feature/cod-shelfmarks-part-feature.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n CodShelfmarksPartComponent,\r\n CodShelfmarkEditorComponent,\r\n CodShelfmarksPartFeatureComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n // material\r\n MatButtonModule,\r\n MatCardModule,\r\n MatIconModule,\r\n MatInputModule,\r\n MatSelectModule,\r\n MatTabsModule,\r\n MatTooltipModule,\r\n // Cadmus\r\n CadmusStateModule,\r\n CadmusUiModule,\r\n CadmusUiPgModule,\r\n ],\r\n exports: [\r\n CodShelfmarksPartComponent,\r\n CodShelfmarkEditorComponent,\r\n CodShelfmarksPartFeatureComponent,\r\n ],\r\n})\r\nexport class CadmusPartCodicologyShelfmarksModule {}\r\n","/*\r\n * Public API Surface of cadmus-part-codicology-shelfmarks\r\n */\r\n\r\nexport * from './lib/cod-shelfmarks-part';\r\nexport * from './lib/cod-shelfmarks-part/cod-shelfmarks-part.component';\r\nexport * from './lib/cod-shelfmark-editor/cod-shelfmark-editor.component';\r\nexport * from './lib/cod-shelfmarks-part-feature/cod-shelfmarks-part-feature.component';\r\nexport * from './lib/cadmus-part-codicology-shelfmarks.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i5","i1","i2","i4","i6","i7","i8","i11.CodShelfmarkEditorComponent","i6.CodShelfmarksPartComponent"],"mappings":"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"}
@@ -149,6 +149,9 @@ class CodShelfmarkEditorComponent {
149
149
  return this._shelfmark;
150
150
  }
151
151
  set shelfmark(value) {
152
+ if (this._shelfmark === value) {
153
+ return;
154
+ }
152
155
  this._shelfmark = value;
153
156
  this.updateForm(value);
154
157
  }
@@ -185,16 +188,13 @@ class CodShelfmarkEditorComponent {
185
188
  if (this.form.invalid) {
186
189
  return;
187
190
  }
188
- const model = this.getModel();
189
- if (!model) {
190
- return;
191
- }
192
- this.shelfmarkChange.emit(model);
191
+ this._shelfmark = this.getModel();
192
+ this.shelfmarkChange.emit(this._shelfmark);
193
193
  }
194
194
  }
195
- CodShelfmarkEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: CodShelfmarkEditorComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
196
- CodShelfmarkEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.3", type: CodShelfmarkEditorComponent, selector: "cadmus-cod-shelfmark-editor", inputs: { shelfmark: "shelfmark", tagEntries: "tagEntries", libEntries: "libEntries" }, outputs: { shelfmarkChange: "shelfmarkChange", editorClose: "editorClose" }, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <div>\r\n <!-- tag (bound) -->\r\n <mat-form-field *ngIf=\"tagEntries?.length\" style=\"width: 8em\">\r\n <mat-label>tag</mat-label>\r\n <mat-select [formControl]=\"tag\">\r\n <mat-option *ngFor=\"let e of tagEntries\" [value]=\"e.id\">{{\r\n e.value\r\n }}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <!-- tag (free) -->\r\n <mat-form-field *ngIf=\"!tagEntries?.length\">\r\n <mat-label>tag</mat-label>\r\n <input matInput [formControl]=\"tag\" />\r\n <mat-error\r\n *ngIf=\"$any(tag).errors?.maxLength && (tag.dirty || tag.touched)\"\r\n >tag too long</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- city -->\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>city</mat-label>\r\n <input matInput [formControl]=\"city\" />\r\n <mat-error\r\n *ngIf=\"$any(city).errors?.required && (city.dirty || city.touched)\"\r\n >city required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"$any(city).errors?.maxLength && (city.dirty || city.touched)\"\r\n >city too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n <div>\r\n <!-- library (bound) -->\r\n <mat-form-field *ngIf=\"libEntries?.length\" style=\"width: 8em\">\r\n <mat-label>library</mat-label>\r\n <mat-select [formControl]=\"library\">\r\n <mat-option *ngFor=\"let e of libEntries\" [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(library).errors?.required && (library.dirty || library.touched)\r\n \"\r\n >library required</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- library (free) -->\r\n <mat-form-field *ngIf=\"!libEntries?.length\">\r\n <mat-label>library</mat-label>\r\n <input matInput [formControl]=\"library\" />\r\n <mat-error\r\n *ngIf=\"\r\n $any(library).errors?.required && (library.dirty || library.touched)\r\n \"\r\n >library required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"\r\n $any(library).errors?.maxLength && (library.dirty || library.touched)\r\n \"\r\n >library too long</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- fund -->\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>fund</mat-label>\r\n <input matInput [formControl]=\"fund\" />\r\n <mat-error\r\n *ngIf=\"$any(fund).errors?.maxLength && (fund.dirty || fund.touched)\"\r\n >fund too long</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- location -->\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>location</mat-label>\r\n <input matInput [formControl]=\"location\" />\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-error\r\n *ngIf=\"\r\n $any(location).errors?.maxLength &&\r\n (location.dirty || location.touched)\r\n \"\r\n >location too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\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: [""], 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: i5.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$1.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"] }] });
197
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: CodShelfmarkEditorComponent, decorators: [{
195
+ CodShelfmarkEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: CodShelfmarkEditorComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
196
+ CodShelfmarkEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.3", type: CodShelfmarkEditorComponent, selector: "cadmus-cod-shelfmark-editor", inputs: { shelfmark: "shelfmark", tagEntries: "tagEntries", libEntries: "libEntries" }, outputs: { shelfmarkChange: "shelfmarkChange", editorClose: "editorClose" }, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <div>\r\n <!-- tag (bound) -->\r\n <mat-form-field *ngIf=\"tagEntries?.length\" style=\"width: 8em\">\r\n <mat-label>tag</mat-label>\r\n <mat-select [formControl]=\"tag\">\r\n <mat-option *ngFor=\"let e of tagEntries\" [value]=\"e.id\">{{\r\n e.value\r\n }}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <!-- tag (free) -->\r\n <mat-form-field *ngIf=\"!tagEntries?.length\">\r\n <mat-label>tag</mat-label>\r\n <input matInput [formControl]=\"tag\" />\r\n <mat-error\r\n *ngIf=\"$any(tag).errors?.maxLength && (tag.dirty || tag.touched)\"\r\n >tag too long</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- city -->\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>city</mat-label>\r\n <input matInput [formControl]=\"city\" />\r\n <mat-error\r\n *ngIf=\"$any(city).errors?.required && (city.dirty || city.touched)\"\r\n >city required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"$any(city).errors?.maxLength && (city.dirty || city.touched)\"\r\n >city too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n <div>\r\n <!-- library (bound) -->\r\n <mat-form-field *ngIf=\"libEntries?.length\" style=\"width: 8em\">\r\n <mat-label>library</mat-label>\r\n <mat-select [formControl]=\"library\">\r\n <mat-option *ngFor=\"let e of libEntries\" [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(library).errors?.required && (library.dirty || library.touched)\r\n \"\r\n >library required</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- library (free) -->\r\n <mat-form-field *ngIf=\"!libEntries?.length\">\r\n <mat-label>library</mat-label>\r\n <input matInput [formControl]=\"library\" />\r\n <mat-error\r\n *ngIf=\"\r\n $any(library).errors?.required && (library.dirty || library.touched)\r\n \"\r\n >library required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"\r\n $any(library).errors?.maxLength && (library.dirty || library.touched)\r\n \"\r\n >library too long</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- fund -->\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>fund</mat-label>\r\n <input matInput [formControl]=\"fund\" />\r\n <mat-error\r\n *ngIf=\"$any(fund).errors?.maxLength && (fund.dirty || fund.touched)\"\r\n >fund too long</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- location -->\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>location</mat-label>\r\n <input matInput [formControl]=\"location\" />\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-error\r\n *ngIf=\"\r\n $any(location).errors?.maxLength &&\r\n (location.dirty || location.touched)\r\n \"\r\n >location too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\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: [""], 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: i5.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$1.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"] }] });
197
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: CodShelfmarkEditorComponent, decorators: [{
198
198
  type: Component,
199
199
  args: [{ selector: 'cadmus-cod-shelfmark-editor', template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <div>\r\n <!-- tag (bound) -->\r\n <mat-form-field *ngIf=\"tagEntries?.length\" style=\"width: 8em\">\r\n <mat-label>tag</mat-label>\r\n <mat-select [formControl]=\"tag\">\r\n <mat-option *ngFor=\"let e of tagEntries\" [value]=\"e.id\">{{\r\n e.value\r\n }}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <!-- tag (free) -->\r\n <mat-form-field *ngIf=\"!tagEntries?.length\">\r\n <mat-label>tag</mat-label>\r\n <input matInput [formControl]=\"tag\" />\r\n <mat-error\r\n *ngIf=\"$any(tag).errors?.maxLength && (tag.dirty || tag.touched)\"\r\n >tag too long</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- city -->\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>city</mat-label>\r\n <input matInput [formControl]=\"city\" />\r\n <mat-error\r\n *ngIf=\"$any(city).errors?.required && (city.dirty || city.touched)\"\r\n >city required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"$any(city).errors?.maxLength && (city.dirty || city.touched)\"\r\n >city too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n <div>\r\n <!-- library (bound) -->\r\n <mat-form-field *ngIf=\"libEntries?.length\" style=\"width: 8em\">\r\n <mat-label>library</mat-label>\r\n <mat-select [formControl]=\"library\">\r\n <mat-option *ngFor=\"let e of libEntries\" [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(library).errors?.required && (library.dirty || library.touched)\r\n \"\r\n >library required</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- library (free) -->\r\n <mat-form-field *ngIf=\"!libEntries?.length\">\r\n <mat-label>library</mat-label>\r\n <input matInput [formControl]=\"library\" />\r\n <mat-error\r\n *ngIf=\"\r\n $any(library).errors?.required && (library.dirty || library.touched)\r\n \"\r\n >library required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"\r\n $any(library).errors?.maxLength && (library.dirty || library.touched)\r\n \"\r\n >library too long</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- fund -->\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>fund</mat-label>\r\n <input matInput [formControl]=\"fund\" />\r\n <mat-error\r\n *ngIf=\"$any(fund).errors?.maxLength && (fund.dirty || fund.touched)\"\r\n >fund too long</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- location -->\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>location</mat-label>\r\n <input matInput [formControl]=\"location\" />\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-error\r\n *ngIf=\"\r\n $any(location).errors?.maxLength &&\r\n (location.dirty || location.touched)\r\n \"\r\n >location too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\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" }]
200
200
  }], ctorParameters: function () { return [{ type: i1.FormBuilder }]; }, propDecorators: { shelfmark: [{
@@ -335,9 +335,9 @@ class CodShelfmarksPartComponent extends ModelEditorComponentBase {
335
335
  this.shelfmarks.setValue(entries);
336
336
  }
337
337
  }
338
- CodShelfmarksPartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: CodShelfmarksPartComponent, deps: [{ token: i1$1.AuthJwtService }, { token: i1.FormBuilder }, { token: i3.DialogService }], target: i0.ɵɵFactoryTarget.Component });
339
- CodShelfmarksPartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.3", type: CodShelfmarksPartComponent, selector: "cadmus-cod-shelfmarks-part", usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <mat-card appearance=\"outlined\">\r\n <mat-card-header>\r\n <div mat-card-avatar>\r\n <mat-icon>picture_in_picture</mat-icon>\r\n </div>\r\n <mat-card-title>Shelfmarks Part</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <mat-tab-group [(selectedIndex)]=\"tabIndex\">\r\n <mat-tab label=\"shelfmarks\">\r\n <div>\r\n <button\r\n type=\"button\"\r\n mat-flat-button\r\n color=\"primary\"\r\n (click)=\"addShelfmark()\"\r\n >\r\n <mat-icon>add_circle</mat-icon> shelfmark\r\n </button>\r\n </div>\r\n <table *ngIf=\"shelfmarks?.value?.length\">\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th>tag</th>\r\n <th>city</th>\r\n <th>library</th>\r\n <th>fund</th>\r\n <th>location</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n *ngFor=\"\r\n let entry of shelfmarks?.value;\r\n let i = index;\r\n let first = first;\r\n let last = last\r\n \"\r\n >\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n color=\"primary\"\r\n matTooltip=\"Edit this shelfmark\"\r\n (click)=\"editShelfmark(entry, i)\"\r\n >\r\n <mat-icon>edit</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this shelfmark up\"\r\n [disabled]=\"first\"\r\n (click)=\"moveShelfmarkUp(i)\"\r\n >\r\n <mat-icon>arrow_upward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this shelfmark down\"\r\n [disabled]=\"last\"\r\n (click)=\"moveShelfmarkDown(i)\"\r\n >\r\n <mat-icon>arrow_downward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n color=\"warn\"\r\n matTooltip=\"Delete this shelfmark\"\r\n (click)=\"deleteShelfmark(i)\"\r\n >\r\n <mat-icon>remove_circle</mat-icon>\r\n </button>\r\n </td>\r\n <td>{{ entry.tag }}</td>\r\n <td>{{ entry.city }}</td>\r\n <td>{{ entry.library }}</td>\r\n <td>{{ entry.fund }}</td>\r\n <td>{{ entry.location }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </mat-tab>\r\n\r\n <mat-tab label=\"shelfmark\" *ngIf=\"editedShelfmark\">\r\n <cadmus-cod-shelfmark-editor\r\n [tagEntries]=\"tagEntries\"\r\n [libEntries]=\"libEntries\"\r\n [shelfmark]=\"editedShelfmark\"\r\n (shelfmarkChange)=\"onShelfmarkSave($event)\"\r\n (editorClose)=\"editShelfmark(null)\"\r\n ></cadmus-cod-shelfmark-editor>\r\n </mat-tab>\r\n </mat-tab-group>\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <cadmus-close-save-buttons\r\n [form]=\"form\"\r\n [noSave]=\"userLevel < 2\"\r\n (closeRequest)=\"close()\"\r\n ></cadmus-close-save-buttons>\r\n </mat-card-actions>\r\n </mat-card>\r\n</form>\r\n", styles: ["th{font-weight:400;color:silver}\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.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6$1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i6$1.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i6$1.MatCardAvatar, selector: "[mat-card-avatar], [matCardAvatar]" }, { kind: "directive", type: i6$1.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i6$1.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i6$1.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i8$1.MatTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "component", type: i8$1.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple", "fitInkBarToContent", "mat-stretch-tabs"], exportAs: ["matTabGroup"] }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i10.CloseSaveButtonsComponent, selector: "cadmus-close-save-buttons", inputs: ["form", "noSave"], outputs: ["closeRequest"] }, { kind: "component", type: CodShelfmarkEditorComponent, selector: "cadmus-cod-shelfmark-editor", inputs: ["shelfmark", "tagEntries", "libEntries"], outputs: ["shelfmarkChange", "editorClose"] }] });
340
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: CodShelfmarksPartComponent, decorators: [{
338
+ CodShelfmarksPartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: CodShelfmarksPartComponent, deps: [{ token: i1$1.AuthJwtService }, { token: i1.FormBuilder }, { token: i3.DialogService }], target: i0.ɵɵFactoryTarget.Component });
339
+ CodShelfmarksPartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.3", type: CodShelfmarksPartComponent, selector: "cadmus-cod-shelfmarks-part", usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <mat-card appearance=\"outlined\">\r\n <mat-card-header>\r\n <div mat-card-avatar>\r\n <mat-icon>picture_in_picture</mat-icon>\r\n </div>\r\n <mat-card-title>Shelfmarks Part</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <mat-tab-group [(selectedIndex)]=\"tabIndex\">\r\n <mat-tab label=\"shelfmarks\">\r\n <div>\r\n <button\r\n type=\"button\"\r\n mat-flat-button\r\n color=\"primary\"\r\n (click)=\"addShelfmark()\"\r\n >\r\n <mat-icon>add_circle</mat-icon> shelfmark\r\n </button>\r\n </div>\r\n <table *ngIf=\"shelfmarks?.value?.length\">\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th>tag</th>\r\n <th>city</th>\r\n <th>library</th>\r\n <th>fund</th>\r\n <th>location</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n *ngFor=\"\r\n let entry of shelfmarks?.value;\r\n let i = index;\r\n let first = first;\r\n let last = last\r\n \"\r\n >\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n color=\"primary\"\r\n matTooltip=\"Edit this shelfmark\"\r\n (click)=\"editShelfmark(entry, i)\"\r\n >\r\n <mat-icon>edit</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this shelfmark up\"\r\n [disabled]=\"first\"\r\n (click)=\"moveShelfmarkUp(i)\"\r\n >\r\n <mat-icon>arrow_upward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this shelfmark down\"\r\n [disabled]=\"last\"\r\n (click)=\"moveShelfmarkDown(i)\"\r\n >\r\n <mat-icon>arrow_downward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n color=\"warn\"\r\n matTooltip=\"Delete this shelfmark\"\r\n (click)=\"deleteShelfmark(i)\"\r\n >\r\n <mat-icon>remove_circle</mat-icon>\r\n </button>\r\n </td>\r\n <td>{{ entry.tag }}</td>\r\n <td>{{ entry.city }}</td>\r\n <td>{{ entry.library }}</td>\r\n <td>{{ entry.fund }}</td>\r\n <td>{{ entry.location }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </mat-tab>\r\n\r\n <mat-tab label=\"shelfmark\" *ngIf=\"editedShelfmark\">\r\n <cadmus-cod-shelfmark-editor\r\n [tagEntries]=\"tagEntries\"\r\n [libEntries]=\"libEntries\"\r\n [shelfmark]=\"editedShelfmark\"\r\n (shelfmarkChange)=\"onShelfmarkSave($event)\"\r\n (editorClose)=\"editShelfmark(null)\"\r\n ></cadmus-cod-shelfmark-editor>\r\n </mat-tab>\r\n </mat-tab-group>\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <cadmus-close-save-buttons\r\n [form]=\"form\"\r\n [noSave]=\"userLevel < 2\"\r\n (closeRequest)=\"close()\"\r\n ></cadmus-close-save-buttons>\r\n </mat-card-actions>\r\n </mat-card>\r\n</form>\r\n", styles: ["th{font-weight:400;color:silver}\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.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6$1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i6$1.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i6$1.MatCardAvatar, selector: "[mat-card-avatar], [matCardAvatar]" }, { kind: "directive", type: i6$1.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i6$1.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i6$1.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i8$1.MatTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "component", type: i8$1.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple", "fitInkBarToContent", "mat-stretch-tabs"], exportAs: ["matTabGroup"] }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i10.CloseSaveButtonsComponent, selector: "cadmus-close-save-buttons", inputs: ["form", "noSave"], outputs: ["closeRequest"] }, { kind: "component", type: CodShelfmarkEditorComponent, selector: "cadmus-cod-shelfmark-editor", inputs: ["shelfmark", "tagEntries", "libEntries"], outputs: ["shelfmarkChange", "editorClose"] }] });
340
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: CodShelfmarksPartComponent, decorators: [{
341
341
  type: Component,
342
342
  args: [{ selector: 'cadmus-cod-shelfmarks-part', template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <mat-card appearance=\"outlined\">\r\n <mat-card-header>\r\n <div mat-card-avatar>\r\n <mat-icon>picture_in_picture</mat-icon>\r\n </div>\r\n <mat-card-title>Shelfmarks Part</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <mat-tab-group [(selectedIndex)]=\"tabIndex\">\r\n <mat-tab label=\"shelfmarks\">\r\n <div>\r\n <button\r\n type=\"button\"\r\n mat-flat-button\r\n color=\"primary\"\r\n (click)=\"addShelfmark()\"\r\n >\r\n <mat-icon>add_circle</mat-icon> shelfmark\r\n </button>\r\n </div>\r\n <table *ngIf=\"shelfmarks?.value?.length\">\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th>tag</th>\r\n <th>city</th>\r\n <th>library</th>\r\n <th>fund</th>\r\n <th>location</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n *ngFor=\"\r\n let entry of shelfmarks?.value;\r\n let i = index;\r\n let first = first;\r\n let last = last\r\n \"\r\n >\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n color=\"primary\"\r\n matTooltip=\"Edit this shelfmark\"\r\n (click)=\"editShelfmark(entry, i)\"\r\n >\r\n <mat-icon>edit</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this shelfmark up\"\r\n [disabled]=\"first\"\r\n (click)=\"moveShelfmarkUp(i)\"\r\n >\r\n <mat-icon>arrow_upward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this shelfmark down\"\r\n [disabled]=\"last\"\r\n (click)=\"moveShelfmarkDown(i)\"\r\n >\r\n <mat-icon>arrow_downward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n color=\"warn\"\r\n matTooltip=\"Delete this shelfmark\"\r\n (click)=\"deleteShelfmark(i)\"\r\n >\r\n <mat-icon>remove_circle</mat-icon>\r\n </button>\r\n </td>\r\n <td>{{ entry.tag }}</td>\r\n <td>{{ entry.city }}</td>\r\n <td>{{ entry.library }}</td>\r\n <td>{{ entry.fund }}</td>\r\n <td>{{ entry.location }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </mat-tab>\r\n\r\n <mat-tab label=\"shelfmark\" *ngIf=\"editedShelfmark\">\r\n <cadmus-cod-shelfmark-editor\r\n [tagEntries]=\"tagEntries\"\r\n [libEntries]=\"libEntries\"\r\n [shelfmark]=\"editedShelfmark\"\r\n (shelfmarkChange)=\"onShelfmarkSave($event)\"\r\n (editorClose)=\"editShelfmark(null)\"\r\n ></cadmus-cod-shelfmark-editor>\r\n </mat-tab>\r\n </mat-tab-group>\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <cadmus-close-save-buttons\r\n [form]=\"form\"\r\n [noSave]=\"userLevel < 2\"\r\n (closeRequest)=\"close()\"\r\n ></cadmus-close-save-buttons>\r\n </mat-card-actions>\r\n </mat-card>\r\n</form>\r\n", styles: ["th{font-weight:400;color:silver}\n"] }]
343
343
  }], ctorParameters: function () { return [{ type: i1$1.AuthJwtService }, { type: i1.FormBuilder }, { type: i3.DialogService }]; } });
@@ -350,17 +350,17 @@ class CodShelfmarksPartFeatureComponent extends EditPartFeatureBase {
350
350
  return ['cod-shelfmark-tags', 'cod-shelfmark-libraries'];
351
351
  }
352
352
  }
353
- CodShelfmarksPartFeatureComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: CodShelfmarksPartFeatureComponent, deps: [{ token: i1$2.Router }, { token: i1$2.ActivatedRoute }, { token: i2$1.MatSnackBar }, { token: i3$1.ItemService }, { token: i3$1.ThesaurusService }, { token: i4$1.PartEditorService }], target: i0.ɵɵFactoryTarget.Component });
354
- CodShelfmarksPartFeatureComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.3", type: CodShelfmarksPartFeatureComponent, selector: "cadmus-cod-shelfmarks-part-feature", usesInheritance: true, ngImport: i0, template: "<cadmus-current-item-bar></cadmus-current-item-bar>\r\n<cadmus-cod-shelfmarks-part\r\n [identity]=\"identity\"\r\n [data]=\"$any(data)\"\r\n (dataChange)=\"save($event)\"\r\n (editorClose)=\"close()\"\r\n (dirtyChange)=\"onDirtyChange($event)\"\r\n></cadmus-cod-shelfmarks-part>\r\n", styles: [""], dependencies: [{ kind: "component", type: i5$2.CurrentItemBarComponent, selector: "cadmus-current-item-bar" }, { kind: "component", type: CodShelfmarksPartComponent, selector: "cadmus-cod-shelfmarks-part" }] });
355
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: CodShelfmarksPartFeatureComponent, decorators: [{
353
+ CodShelfmarksPartFeatureComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: CodShelfmarksPartFeatureComponent, deps: [{ token: i1$2.Router }, { token: i1$2.ActivatedRoute }, { token: i2$1.MatSnackBar }, { token: i3$1.ItemService }, { token: i3$1.ThesaurusService }, { token: i4$1.PartEditorService }], target: i0.ɵɵFactoryTarget.Component });
354
+ CodShelfmarksPartFeatureComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.3", type: CodShelfmarksPartFeatureComponent, selector: "cadmus-cod-shelfmarks-part-feature", usesInheritance: true, ngImport: i0, template: "<cadmus-current-item-bar></cadmus-current-item-bar>\r\n<cadmus-cod-shelfmarks-part\r\n [identity]=\"identity\"\r\n [data]=\"$any(data)\"\r\n (dataChange)=\"save($event)\"\r\n (editorClose)=\"close()\"\r\n (dirtyChange)=\"onDirtyChange($event)\"\r\n></cadmus-cod-shelfmarks-part>\r\n", styles: [""], dependencies: [{ kind: "component", type: i5$2.CurrentItemBarComponent, selector: "cadmus-current-item-bar" }, { kind: "component", type: CodShelfmarksPartComponent, selector: "cadmus-cod-shelfmarks-part" }] });
355
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: CodShelfmarksPartFeatureComponent, decorators: [{
356
356
  type: Component,
357
357
  args: [{ selector: 'cadmus-cod-shelfmarks-part-feature', template: "<cadmus-current-item-bar></cadmus-current-item-bar>\r\n<cadmus-cod-shelfmarks-part\r\n [identity]=\"identity\"\r\n [data]=\"$any(data)\"\r\n (dataChange)=\"save($event)\"\r\n (editorClose)=\"close()\"\r\n (dirtyChange)=\"onDirtyChange($event)\"\r\n></cadmus-cod-shelfmarks-part>\r\n" }]
358
358
  }], ctorParameters: function () { return [{ type: i1$2.Router }, { type: i1$2.ActivatedRoute }, { type: i2$1.MatSnackBar }, { type: i3$1.ItemService }, { type: i3$1.ThesaurusService }, { type: i4$1.PartEditorService }]; } });
359
359
 
360
360
  class CadmusPartCodicologyShelfmarksModule {
361
361
  }
362
- CadmusPartCodicologyShelfmarksModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: CadmusPartCodicologyShelfmarksModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
363
- CadmusPartCodicologyShelfmarksModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.3", ngImport: i0, type: CadmusPartCodicologyShelfmarksModule, declarations: [CodShelfmarksPartComponent,
362
+ CadmusPartCodicologyShelfmarksModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: CadmusPartCodicologyShelfmarksModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
363
+ CadmusPartCodicologyShelfmarksModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.3", ngImport: i0, type: CadmusPartCodicologyShelfmarksModule, declarations: [CodShelfmarksPartComponent,
364
364
  CodShelfmarkEditorComponent,
365
365
  CodShelfmarksPartFeatureComponent], imports: [CommonModule,
366
366
  FormsModule,
@@ -379,7 +379,7 @@ CadmusPartCodicologyShelfmarksModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersi
379
379
  CadmusUiPgModule], exports: [CodShelfmarksPartComponent,
380
380
  CodShelfmarkEditorComponent,
381
381
  CodShelfmarksPartFeatureComponent] });
382
- CadmusPartCodicologyShelfmarksModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: CadmusPartCodicologyShelfmarksModule, imports: [CommonModule,
382
+ CadmusPartCodicologyShelfmarksModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: CadmusPartCodicologyShelfmarksModule, imports: [CommonModule,
383
383
  FormsModule,
384
384
  ReactiveFormsModule,
385
385
  // material
@@ -394,7 +394,7 @@ CadmusPartCodicologyShelfmarksModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersi
394
394
  CadmusStateModule,
395
395
  CadmusUiModule,
396
396
  CadmusUiPgModule] });
397
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: CadmusPartCodicologyShelfmarksModule, decorators: [{
397
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: CadmusPartCodicologyShelfmarksModule, decorators: [{
398
398
  type: NgModule,
399
399
  args: [{
400
400
  declarations: [
@@ -1 +1 @@
1
- {"version":3,"file":"myrmidon-cadmus-part-codicology-shelfmarks.mjs","sources":["../../../../projects/myrmidon/cadmus-part-codicology-shelfmarks/src/lib/cod-shelfmarks-part.ts","../../../../projects/myrmidon/cadmus-part-codicology-shelfmarks/src/lib/cod-shelfmark-editor/cod-shelfmark-editor.component.ts","../../../../projects/myrmidon/cadmus-part-codicology-shelfmarks/src/lib/cod-shelfmark-editor/cod-shelfmark-editor.component.html","../../../../projects/myrmidon/cadmus-part-codicology-shelfmarks/src/lib/cod-shelfmarks-part/cod-shelfmarks-part.component.ts","../../../../projects/myrmidon/cadmus-part-codicology-shelfmarks/src/lib/cod-shelfmarks-part/cod-shelfmarks-part.component.html","../../../../projects/myrmidon/cadmus-part-codicology-shelfmarks/src/lib/cod-shelfmarks-part-feature/cod-shelfmarks-part-feature.component.ts","../../../../projects/myrmidon/cadmus-part-codicology-shelfmarks/src/lib/cod-shelfmarks-part-feature/cod-shelfmarks-part-feature.component.html","../../../../projects/myrmidon/cadmus-part-codicology-shelfmarks/src/lib/cadmus-part-codicology-shelfmarks.module.ts","../../../../projects/myrmidon/cadmus-part-codicology-shelfmarks/src/public-api.ts","../../../../projects/myrmidon/cadmus-part-codicology-shelfmarks/src/myrmidon-cadmus-part-codicology-shelfmarks.ts"],"sourcesContent":["import { Part } from '@myrmidon/cadmus-core';\r\n\r\n/**\r\n * A manuscript's shelfmark.\r\n */\r\nexport interface CodShelfmark {\r\n tag?: string;\r\n city: string;\r\n library: string;\r\n fund?: string;\r\n location: string;\r\n}\r\n\r\n/**\r\n * The CodShelfmarks part model.\r\n */\r\nexport interface CodShelfmarksPart extends Part {\r\n shelfmarks: CodShelfmark[];\r\n}\r\n\r\n/**\r\n * The type ID used to identify the CodShelfmarksPart type.\r\n */\r\nexport const COD_SHELFMARKS_PART_TYPEID = 'it.vedph.codicology.shelfmarks';\r\n\r\n/**\r\n * JSON schema for the CodShelfmarks part.\r\n * You can use the JSON schema tool at https://jsonschema.net/.\r\n */\r\nexport const COD_SHELFMARKS_PART_SCHEMA = {\r\n $schema: 'http://json-schema.org/draft-07/schema#',\r\n $id:\r\n 'www.vedph.it/cadmus/parts/codicology/' +\r\n COD_SHELFMARKS_PART_TYPEID +\r\n '.json',\r\n type: 'object',\r\n title: 'CodShelfmarksPart',\r\n required: [\r\n 'id',\r\n 'itemId',\r\n 'typeId',\r\n 'timeCreated',\r\n 'creatorId',\r\n 'timeModified',\r\n 'userId',\r\n 'shelfmarks',\r\n ],\r\n properties: {\r\n timeCreated: {\r\n type: 'string',\r\n pattern: '^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}.\\\\d+Z$',\r\n },\r\n creatorId: {\r\n type: 'string',\r\n },\r\n timeModified: {\r\n type: 'string',\r\n pattern: '^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}.\\\\d+Z$',\r\n },\r\n userId: {\r\n type: 'string',\r\n },\r\n id: {\r\n type: 'string',\r\n pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$',\r\n },\r\n itemId: {\r\n type: 'string',\r\n pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$',\r\n },\r\n typeId: {\r\n type: 'string',\r\n pattern: '^[a-z][-0-9a-z._]*$',\r\n },\r\n roleId: {\r\n type: ['string', 'null'],\r\n pattern: '^([a-z][-0-9a-z._]*)?$',\r\n },\r\n shelfmarks: {\r\n type: 'array',\r\n items: {\r\n anyOf: [\r\n {\r\n type: 'object',\r\n required: ['city', 'library', 'location'],\r\n properties: {\r\n tag: {\r\n type: 'string',\r\n },\r\n city: {\r\n type: 'string',\r\n },\r\n library: {\r\n type: 'string',\r\n },\r\n fund: {\r\n type: 'string',\r\n },\r\n location: {\r\n type: 'string',\r\n },\r\n },\r\n },\r\n ],\r\n },\r\n },\r\n },\r\n};\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport {\r\n FormBuilder,\r\n FormControl,\r\n FormGroup,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { ThesaurusEntry } from '@myrmidon/cadmus-core';\r\nimport { CodShelfmark } from '../cod-shelfmarks-part';\r\n\r\n@Component({\r\n selector: 'cadmus-cod-shelfmark-editor',\r\n templateUrl: './cod-shelfmark-editor.component.html',\r\n styleUrls: ['./cod-shelfmark-editor.component.css'],\r\n})\r\nexport class CodShelfmarkEditorComponent implements OnInit {\r\n private _shelfmark: CodShelfmark | undefined;\r\n\r\n @Input()\r\n public get shelfmark(): CodShelfmark | undefined {\r\n return this._shelfmark;\r\n }\r\n public set shelfmark(value: CodShelfmark | undefined) {\r\n this._shelfmark = value;\r\n this.updateForm(value);\r\n }\r\n\r\n // cod-shelfmark-tags\r\n @Input()\r\n public tagEntries: ThesaurusEntry[] | undefined;\r\n // cod-shelfmark-libraries\r\n @Input()\r\n public libEntries: ThesaurusEntry[] | undefined;\r\n\r\n @Output()\r\n public shelfmarkChange: EventEmitter<CodShelfmark>;\r\n @Output()\r\n public editorClose: EventEmitter<any>;\r\n\r\n public tag: FormControl<string | null>;\r\n public city: FormControl<string | null>;\r\n public library: FormControl<string | null>;\r\n public fund: FormControl<string | null>;\r\n public location: FormControl<string | null>;\r\n public form: FormGroup;\r\n\r\n constructor(formBuilder: FormBuilder) {\r\n this.shelfmarkChange = new EventEmitter<CodShelfmark>();\r\n this.editorClose = new EventEmitter<any>();\r\n // form\r\n this.tag = formBuilder.control(null, Validators.maxLength(50));\r\n this.city = formBuilder.control(null, [\r\n Validators.required,\r\n Validators.maxLength(50),\r\n ]);\r\n this.library = formBuilder.control(null, [\r\n Validators.required,\r\n Validators.maxLength(50),\r\n ]);\r\n this.fund = formBuilder.control(null, Validators.maxLength(50));\r\n this.location = formBuilder.control(null, Validators.maxLength(50));\r\n\r\n this.form = formBuilder.group({\r\n tag: this.tag,\r\n city: this.city,\r\n library: this.library,\r\n fund: this.fund,\r\n location: this.location,\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this._shelfmark) {\r\n this.updateForm(this._shelfmark);\r\n }\r\n }\r\n\r\n private updateForm(model: CodShelfmark | undefined): void {\r\n if (!model) {\r\n this.form.reset();\r\n return;\r\n }\r\n\r\n this.tag.setValue(model.tag || null);\r\n this.city.setValue(model.city);\r\n this.library.setValue(model.library);\r\n this.fund.setValue(model.fund || null);\r\n this.location.setValue(model.location);\r\n this.form.markAsPristine();\r\n }\r\n\r\n private getModel(): CodShelfmark | null {\r\n return {\r\n tag: this.tag.value?.trim(),\r\n city: this.city.value?.trim() || '',\r\n library: this.library.value?.trim() || '',\r\n fund: this.fund.value?.trim(),\r\n location: this.location.value?.trim() || '',\r\n };\r\n }\r\n\r\n public cancel(): void {\r\n this.editorClose.emit();\r\n }\r\n\r\n public save(): void {\r\n if (this.form.invalid) {\r\n return;\r\n }\r\n const model = this.getModel();\r\n if (!model) {\r\n return;\r\n }\r\n this.shelfmarkChange.emit(model);\r\n }\r\n}\r\n","<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <div>\r\n <!-- tag (bound) -->\r\n <mat-form-field *ngIf=\"tagEntries?.length\" style=\"width: 8em\">\r\n <mat-label>tag</mat-label>\r\n <mat-select [formControl]=\"tag\">\r\n <mat-option *ngFor=\"let e of tagEntries\" [value]=\"e.id\">{{\r\n e.value\r\n }}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <!-- tag (free) -->\r\n <mat-form-field *ngIf=\"!tagEntries?.length\">\r\n <mat-label>tag</mat-label>\r\n <input matInput [formControl]=\"tag\" />\r\n <mat-error\r\n *ngIf=\"$any(tag).errors?.maxLength && (tag.dirty || tag.touched)\"\r\n >tag too long</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- city -->\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>city</mat-label>\r\n <input matInput [formControl]=\"city\" />\r\n <mat-error\r\n *ngIf=\"$any(city).errors?.required && (city.dirty || city.touched)\"\r\n >city required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"$any(city).errors?.maxLength && (city.dirty || city.touched)\"\r\n >city too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n <div>\r\n <!-- library (bound) -->\r\n <mat-form-field *ngIf=\"libEntries?.length\" style=\"width: 8em\">\r\n <mat-label>library</mat-label>\r\n <mat-select [formControl]=\"library\">\r\n <mat-option *ngFor=\"let e of libEntries\" [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(library).errors?.required && (library.dirty || library.touched)\r\n \"\r\n >library required</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- library (free) -->\r\n <mat-form-field *ngIf=\"!libEntries?.length\">\r\n <mat-label>library</mat-label>\r\n <input matInput [formControl]=\"library\" />\r\n <mat-error\r\n *ngIf=\"\r\n $any(library).errors?.required && (library.dirty || library.touched)\r\n \"\r\n >library required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"\r\n $any(library).errors?.maxLength && (library.dirty || library.touched)\r\n \"\r\n >library too long</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- fund -->\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>fund</mat-label>\r\n <input matInput [formControl]=\"fund\" />\r\n <mat-error\r\n *ngIf=\"$any(fund).errors?.maxLength && (fund.dirty || fund.touched)\"\r\n >fund too long</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- location -->\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>location</mat-label>\r\n <input matInput [formControl]=\"location\" />\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-error\r\n *ngIf=\"\r\n $any(location).errors?.maxLength &&\r\n (location.dirty || location.touched)\r\n \"\r\n >location too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\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","import { Component, OnInit } from '@angular/core';\r\nimport {\r\n FormControl,\r\n FormBuilder,\r\n FormGroup,\r\n UntypedFormGroup,\r\n} from '@angular/forms';\r\nimport { take } from 'rxjs/operators';\r\n\r\nimport { deepCopy, NgToolsValidators } from '@myrmidon/ng-tools';\r\nimport { DialogService } from '@myrmidon/ng-mat-tools';\r\nimport { AuthJwtService } from '@myrmidon/auth-jwt-login';\r\nimport { EditedObject, ModelEditorComponentBase } from '@myrmidon/cadmus-ui';\r\nimport { ThesauriSet, ThesaurusEntry } from '@myrmidon/cadmus-core';\r\n\r\nimport {\r\n CodShelfmark,\r\n CodShelfmarksPart,\r\n COD_SHELFMARKS_PART_TYPEID,\r\n} from '../cod-shelfmarks-part';\r\n\r\n/**\r\n * CodShelfmarksPart editor component.\r\n * Thesauri: cod-shelfmark-tags, cod-shelfmark-libraries (all optional).\r\n */\r\n@Component({\r\n selector: 'cadmus-cod-shelfmarks-part',\r\n templateUrl: './cod-shelfmarks-part.component.html',\r\n styleUrls: ['./cod-shelfmarks-part.component.css'],\r\n})\r\nexport class CodShelfmarksPartComponent\r\n extends ModelEditorComponentBase<CodShelfmarksPart>\r\n implements OnInit\r\n{\r\n private _editedIndex: number;\r\n\r\n public tabIndex: number;\r\n public editedShelfmark: CodShelfmark | undefined;\r\n\r\n // cod-shelfmark-tags\r\n public tagEntries: ThesaurusEntry[] | undefined;\r\n // cod-shelfmark-libraries\r\n public libEntries: ThesaurusEntry[] | undefined;\r\n\r\n public shelfmarks: FormControl<CodShelfmark[]>;\r\n\r\n constructor(\r\n authService: AuthJwtService,\r\n formBuilder: FormBuilder,\r\n private _dialogService: DialogService\r\n ) {\r\n super(authService, formBuilder);\r\n this._editedIndex = -1;\r\n this.tabIndex = 0;\r\n // form\r\n this.shelfmarks = formBuilder.control([], {\r\n nonNullable: true,\r\n validators: NgToolsValidators.strictMinLengthValidator(1),\r\n });\r\n }\r\n\r\n public override ngOnInit(): void {\r\n super.ngOnInit();\r\n }\r\n\r\n protected buildForm(formBuilder: FormBuilder): FormGroup | UntypedFormGroup {\r\n return formBuilder.group({\r\n shelfmarks: this.shelfmarks,\r\n });\r\n }\r\n\r\n private updateThesauri(thesauri: ThesauriSet): void {\r\n let key = 'cod-shelfmark-tags';\r\n if (this.hasThesaurus(key)) {\r\n this.tagEntries = thesauri[key].entries;\r\n } else {\r\n this.tagEntries = undefined;\r\n }\r\n key = 'cod-shelfmark-libraries';\r\n if (this.hasThesaurus(key)) {\r\n this.libEntries = thesauri[key].entries;\r\n } else {\r\n this.libEntries = undefined;\r\n }\r\n }\r\n\r\n private updateForm(part?: CodShelfmarksPart | null): void {\r\n if (!part) {\r\n this.form.reset();\r\n return;\r\n }\r\n this.shelfmarks.setValue(part.shelfmarks || []);\r\n this.form.markAsPristine();\r\n }\r\n\r\n protected override onDataSet(data?: EditedObject<CodShelfmarksPart>): void {\r\n // thesauri\r\n if (data?.thesauri) {\r\n this.updateThesauri(data.thesauri);\r\n }\r\n\r\n // form\r\n this.updateForm(data?.value);\r\n }\r\n\r\n protected getValue(): CodShelfmarksPart {\r\n let part = this.getEditedPart(\r\n COD_SHELFMARKS_PART_TYPEID\r\n ) as CodShelfmarksPart;\r\n part.shelfmarks = this.shelfmarks.value || [];\r\n return part;\r\n }\r\n\r\n public addShelfmark(): void {\r\n this.editShelfmark({\r\n city: '',\r\n library: this.libEntries?.length ? this.libEntries[0].id : '',\r\n location: '',\r\n });\r\n }\r\n\r\n public editShelfmark(shelfmark: CodShelfmark | null, index = -1): void {\r\n if (!shelfmark) {\r\n this._editedIndex = -1;\r\n this.tabIndex = 0;\r\n this.editedShelfmark = undefined;\r\n } else {\r\n this._editedIndex = index;\r\n this.editedShelfmark = shelfmark;\r\n setTimeout(() => {\r\n this.tabIndex = 1;\r\n });\r\n }\r\n }\r\n\r\n public onShelfmarkSave(shelfmark: CodShelfmark): void {\r\n const shelfmarks = [...this.shelfmarks.value];\r\n\r\n if (this._editedIndex > -1) {\r\n shelfmarks.splice(this._editedIndex, 1, shelfmark);\r\n } else {\r\n shelfmarks.push(shelfmark);\r\n }\r\n\r\n this.shelfmarks.setValue(shelfmarks);\r\n this.editShelfmark(null);\r\n }\r\n\r\n public deleteShelfmark(index: number): void {\r\n this._dialogService\r\n .confirm('Confirmation', 'Delete shelfmark?')\r\n .pipe(take(1))\r\n .subscribe((yes) => {\r\n if (yes) {\r\n const entries = [...this.shelfmarks.value];\r\n entries.splice(index, 1);\r\n this.shelfmarks.setValue(entries);\r\n }\r\n });\r\n }\r\n\r\n public moveShelfmarkUp(index: number): void {\r\n if (index < 1) {\r\n return;\r\n }\r\n const entry = this.shelfmarks.value[index];\r\n const entries = [...this.shelfmarks.value];\r\n entries.splice(index, 1);\r\n entries.splice(index - 1, 0, entry);\r\n this.shelfmarks.setValue(entries);\r\n }\r\n\r\n public moveShelfmarkDown(index: number): void {\r\n if (index + 1 >= this.shelfmarks.value.length) {\r\n return;\r\n }\r\n const entry = this.shelfmarks.value[index];\r\n const entries = [...this.shelfmarks.value];\r\n entries.splice(index, 1);\r\n entries.splice(index + 1, 0, entry);\r\n this.shelfmarks.setValue(entries);\r\n }\r\n}\r\n","<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <mat-card appearance=\"outlined\">\r\n <mat-card-header>\r\n <div mat-card-avatar>\r\n <mat-icon>picture_in_picture</mat-icon>\r\n </div>\r\n <mat-card-title>Shelfmarks Part</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <mat-tab-group [(selectedIndex)]=\"tabIndex\">\r\n <mat-tab label=\"shelfmarks\">\r\n <div>\r\n <button\r\n type=\"button\"\r\n mat-flat-button\r\n color=\"primary\"\r\n (click)=\"addShelfmark()\"\r\n >\r\n <mat-icon>add_circle</mat-icon> shelfmark\r\n </button>\r\n </div>\r\n <table *ngIf=\"shelfmarks?.value?.length\">\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th>tag</th>\r\n <th>city</th>\r\n <th>library</th>\r\n <th>fund</th>\r\n <th>location</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n *ngFor=\"\r\n let entry of shelfmarks?.value;\r\n let i = index;\r\n let first = first;\r\n let last = last\r\n \"\r\n >\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n color=\"primary\"\r\n matTooltip=\"Edit this shelfmark\"\r\n (click)=\"editShelfmark(entry, i)\"\r\n >\r\n <mat-icon>edit</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this shelfmark up\"\r\n [disabled]=\"first\"\r\n (click)=\"moveShelfmarkUp(i)\"\r\n >\r\n <mat-icon>arrow_upward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this shelfmark down\"\r\n [disabled]=\"last\"\r\n (click)=\"moveShelfmarkDown(i)\"\r\n >\r\n <mat-icon>arrow_downward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n color=\"warn\"\r\n matTooltip=\"Delete this shelfmark\"\r\n (click)=\"deleteShelfmark(i)\"\r\n >\r\n <mat-icon>remove_circle</mat-icon>\r\n </button>\r\n </td>\r\n <td>{{ entry.tag }}</td>\r\n <td>{{ entry.city }}</td>\r\n <td>{{ entry.library }}</td>\r\n <td>{{ entry.fund }}</td>\r\n <td>{{ entry.location }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </mat-tab>\r\n\r\n <mat-tab label=\"shelfmark\" *ngIf=\"editedShelfmark\">\r\n <cadmus-cod-shelfmark-editor\r\n [tagEntries]=\"tagEntries\"\r\n [libEntries]=\"libEntries\"\r\n [shelfmark]=\"editedShelfmark\"\r\n (shelfmarkChange)=\"onShelfmarkSave($event)\"\r\n (editorClose)=\"editShelfmark(null)\"\r\n ></cadmus-cod-shelfmark-editor>\r\n </mat-tab>\r\n </mat-tab-group>\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <cadmus-close-save-buttons\r\n [form]=\"form\"\r\n [noSave]=\"userLevel < 2\"\r\n (closeRequest)=\"close()\"\r\n ></cadmus-close-save-buttons>\r\n </mat-card-actions>\r\n </mat-card>\r\n</form>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\n\r\nimport { EditPartFeatureBase, PartEditorService } from '@myrmidon/cadmus-state';\r\nimport { ItemService, ThesaurusService } from '@myrmidon/cadmus-api';\r\n\r\n@Component({\r\n selector: 'cadmus-cod-shelfmarks-part-feature',\r\n templateUrl: './cod-shelfmarks-part-feature.component.html',\r\n styleUrls: ['./cod-shelfmarks-part-feature.component.css'],\r\n})\r\nexport class CodShelfmarksPartFeatureComponent\r\n extends EditPartFeatureBase\r\n implements OnInit\r\n{\r\n constructor(\r\n router: Router,\r\n route: ActivatedRoute,\r\n snackbar: MatSnackBar,\r\n itemService: ItemService,\r\n thesaurusService: ThesaurusService,\r\n editorService: PartEditorService\r\n ) {\r\n super(\r\n router,\r\n route,\r\n snackbar,\r\n itemService,\r\n thesaurusService,\r\n editorService\r\n );\r\n }\r\n\r\n protected override getReqThesauriIds(): string[] {\r\n return ['cod-shelfmark-tags', 'cod-shelfmark-libraries'];\r\n }\r\n}\r\n","<cadmus-current-item-bar></cadmus-current-item-bar>\r\n<cadmus-cod-shelfmarks-part\r\n [identity]=\"identity\"\r\n [data]=\"$any(data)\"\r\n (dataChange)=\"save($event)\"\r\n (editorClose)=\"close()\"\r\n (dirtyChange)=\"onDirtyChange($event)\"\r\n></cadmus-cod-shelfmarks-part>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\n// cadmus\r\nimport { CadmusStateModule } from '@myrmidon/cadmus-state';\r\nimport { CadmusUiModule } from '@myrmidon/cadmus-ui';\r\nimport { CadmusUiPgModule } from '@myrmidon/cadmus-ui-pg';\r\n// locals (UI editor and PG wrapper)\r\nimport { CodShelfmarksPartComponent } from './cod-shelfmarks-part/cod-shelfmarks-part.component';\r\nimport { CodShelfmarkEditorComponent } from './cod-shelfmark-editor/cod-shelfmark-editor.component';\r\nimport { CodShelfmarksPartFeatureComponent } from './cod-shelfmarks-part-feature/cod-shelfmarks-part-feature.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n CodShelfmarksPartComponent,\r\n CodShelfmarkEditorComponent,\r\n CodShelfmarksPartFeatureComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n // material\r\n MatButtonModule,\r\n MatCardModule,\r\n MatIconModule,\r\n MatInputModule,\r\n MatSelectModule,\r\n MatTabsModule,\r\n MatTooltipModule,\r\n // Cadmus\r\n CadmusStateModule,\r\n CadmusUiModule,\r\n CadmusUiPgModule,\r\n ],\r\n exports: [\r\n CodShelfmarksPartComponent,\r\n CodShelfmarkEditorComponent,\r\n CodShelfmarksPartFeatureComponent,\r\n ],\r\n})\r\nexport class CadmusPartCodicologyShelfmarksModule {}\r\n","/*\r\n * Public API Surface of cadmus-part-codicology-shelfmarks\r\n */\r\n\r\nexport * from './lib/cod-shelfmarks-part';\r\nexport * from './lib/cod-shelfmarks-part/cod-shelfmarks-part.component';\r\nexport * from './lib/cod-shelfmark-editor/cod-shelfmark-editor.component';\r\nexport * from './lib/cod-shelfmarks-part-feature/cod-shelfmarks-part-feature.component';\r\nexport * from './lib/cadmus-part-codicology-shelfmarks.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i5","i1","i2","i4","i6","i7","i8","i11.CodShelfmarkEditorComponent","i6.CodShelfmarksPartComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBA;;AAEG;AACI,MAAM,0BAA0B,GAAG,iCAAiC;AAE3E;;;AAGG;AACU,MAAA,0BAA0B,GAAG;AACxC,IAAA,OAAO,EAAE,yCAAyC;AAClD,IAAA,GAAG,EACD,uCAAuC;QACvC,0BAA0B;QAC1B,OAAO;AACT,IAAA,IAAI,EAAE,QAAQ;AACd,IAAA,KAAK,EAAE,mBAAmB;AAC1B,IAAA,QAAQ,EAAE;QACR,IAAI;QACJ,QAAQ;QACR,QAAQ;QACR,aAAa;QACb,WAAW;QACX,cAAc;QACd,QAAQ;QACR,YAAY;AACb,KAAA;AACD,IAAA,UAAU,EAAE;AACV,QAAA,WAAW,EAAE;AACX,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,OAAO,EAAE,mDAAmD;AAC7D,SAAA;AACD,QAAA,SAAS,EAAE;AACT,YAAA,IAAI,EAAE,QAAQ;AACf,SAAA;AACD,QAAA,YAAY,EAAE;AACZ,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,OAAO,EAAE,mDAAmD;AAC7D,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,IAAI,EAAE,QAAQ;AACf,SAAA;AACD,QAAA,EAAE,EAAE;AACF,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,OAAO,EAAE,gEAAgE;AAC1E,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,OAAO,EAAE,gEAAgE;AAC1E,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,OAAO,EAAE,qBAAqB;AAC/B,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC;AACxB,YAAA,OAAO,EAAE,wBAAwB;AAClC,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,KAAK,EAAE;AACL,gBAAA,KAAK,EAAE;AACL,oBAAA;AACE,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC;AACzC,wBAAA,UAAU,EAAE;AACV,4BAAA,GAAG,EAAE;AACH,gCAAA,IAAI,EAAE,QAAQ;AACf,6BAAA;AACD,4BAAA,IAAI,EAAE;AACJ,gCAAA,IAAI,EAAE,QAAQ;AACf,6BAAA;AACD,4BAAA,OAAO,EAAE;AACP,gCAAA,IAAI,EAAE,QAAQ;AACf,6BAAA;AACD,4BAAA,IAAI,EAAE;AACJ,gCAAA,IAAI,EAAE,QAAQ;AACf,6BAAA;AACD,4BAAA,QAAQ,EAAE;AACR,gCAAA,IAAI,EAAE,QAAQ;AACf,6BAAA;AACF,yBAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA;AACF,KAAA;;;MC3FU,2BAA2B,CAAA;AA+BtC,IAAA,WAAA,CAAY,WAAwB,EAAA;AAClC,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,YAAY,EAAgB,CAAC;AACxD,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,YAAY,EAAO,CAAC;;AAE3C,QAAA,IAAI,CAAC,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE;AACpC,YAAA,UAAU,CAAC,QAAQ;AACnB,YAAA,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;AACzB,SAAA,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE;AACvC,YAAA,UAAU,CAAC,QAAQ;AACnB,YAAA,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;AACzB,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;AAChE,QAAA,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;AAEpE,QAAA,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC;YAC5B,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACxB,SAAA,CAAC,CAAC;KACJ;AAnDD,IAAA,IACW,SAAS,GAAA;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;IACD,IAAW,SAAS,CAAC,KAA+B,EAAA;AAClD,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;KACxB;IA8CD,QAAQ,GAAA;QACN,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAClC,SAAA;KACF;AAEO,IAAA,UAAU,CAAC,KAA+B,EAAA;QAChD,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAClB,OAAO;AACR,SAAA;QAED,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AACvC,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;KAC5B;IAEO,QAAQ,GAAA;QACd,OAAO;YACL,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE;YAC3B,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE;YACnC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE;YACzC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE;YAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE;SAC5C,CAAC;KACH;IAEM,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;KACzB;IAEM,IAAI,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACrB,OAAO;AACR,SAAA;AACD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC,KAAK,EAAE;YACV,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAClC;;wHAnGU,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,2BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,wOCfxC,4vHAyHA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FD1Ga,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBALvC,SAAS;+BACE,6BAA6B,EAAA,QAAA,EAAA,4vHAAA,EAAA,CAAA;kGAQ5B,SAAS,EAAA,CAAA;sBADnB,KAAK;gBAWC,UAAU,EAAA,CAAA;sBADhB,KAAK;gBAIC,UAAU,EAAA,CAAA;sBADhB,KAAK;gBAIC,eAAe,EAAA,CAAA;sBADrB,MAAM;gBAGA,WAAW,EAAA,CAAA;sBADjB,MAAM;;;AEfT;;;AAGG;AAMG,MAAO,0BACX,SAAQ,wBAA2C,CAAA;AAenD,IAAA,WAAA,CACE,WAA2B,EAC3B,WAAwB,EAChB,cAA6B,EAAA;AAErC,QAAA,KAAK,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QAFxB,IAAc,CAAA,cAAA,GAAd,cAAc,CAAe;AAGrC,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;AACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;;QAElB,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE;AACxC,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,UAAU,EAAE,iBAAiB,CAAC,wBAAwB,CAAC,CAAC,CAAC;AAC1D,SAAA,CAAC,CAAC;KACJ;IAEe,QAAQ,GAAA;QACtB,KAAK,CAAC,QAAQ,EAAE,CAAC;KAClB;AAES,IAAA,SAAS,CAAC,WAAwB,EAAA;QAC1C,OAAO,WAAW,CAAC,KAAK,CAAC;YACvB,UAAU,EAAE,IAAI,CAAC,UAAU;AAC5B,SAAA,CAAC,CAAC;KACJ;AAEO,IAAA,cAAc,CAAC,QAAqB,EAAA;QAC1C,IAAI,GAAG,GAAG,oBAAoB,CAAC;AAC/B,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE;YAC1B,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;AACzC,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAC7B,SAAA;QACD,GAAG,GAAG,yBAAyB,CAAC;AAChC,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE;YAC1B,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;AACzC,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAC7B,SAAA;KACF;AAEO,IAAA,UAAU,CAAC,IAA+B,EAAA;QAChD,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAClB,OAAO;AACR,SAAA;QACD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;AAChD,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;KAC5B;AAEkB,IAAA,SAAS,CAAC,IAAsC,EAAA;;QAEjE,IAAI,IAAI,EAAE,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACpC,SAAA;;AAGD,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;KAC9B;IAES,QAAQ,GAAA;QAChB,IAAI,IAAI,GAAG,IAAI,CAAC,aAAa,CAC3B,0BAA0B,CACN,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE,CAAC;AAC9C,QAAA,OAAO,IAAI,CAAC;KACb;IAEM,YAAY,GAAA;QACjB,IAAI,CAAC,aAAa,CAAC;AACjB,YAAA,IAAI,EAAE,EAAE;YACR,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE;AAC7D,YAAA,QAAQ,EAAE,EAAE;AACb,SAAA,CAAC,CAAC;KACJ;AAEM,IAAA,aAAa,CAAC,SAA8B,EAAE,KAAK,GAAG,CAAC,CAAC,EAAA;QAC7D,IAAI,CAAC,SAAS,EAAE;AACd,YAAA,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;AACvB,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AAClB,YAAA,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;AAClC,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC1B,YAAA,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;YACjC,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACpB,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;AAEM,IAAA,eAAe,CAAC,SAAuB,EAAA;QAC5C,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAE9C,QAAA,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,EAAE;YAC1B,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;AACpD,SAAA;AAAM,aAAA;AACL,YAAA,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC5B,SAAA;AAED,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AACrC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;KAC1B;AAEM,IAAA,eAAe,CAAC,KAAa,EAAA;AAClC,QAAA,IAAI,CAAC,cAAc;AAChB,aAAA,OAAO,CAAC,cAAc,EAAE,mBAAmB,CAAC;AAC5C,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACb,aAAA,SAAS,CAAC,CAAC,GAAG,KAAI;AACjB,YAAA,IAAI,GAAG,EAAE;gBACP,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC3C,gBAAA,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACzB,gBAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACnC,aAAA;AACH,SAAC,CAAC,CAAC;KACN;AAEM,IAAA,eAAe,CAAC,KAAa,EAAA;QAClC,IAAI,KAAK,GAAG,CAAC,EAAE;YACb,OAAO;AACR,SAAA;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC3C,QAAA,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACzB,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AACpC,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;KACnC;AAEM,IAAA,iBAAiB,CAAC,KAAa,EAAA;QACpC,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE;YAC7C,OAAO;AACR,SAAA;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC3C,QAAA,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACzB,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AACpC,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;KACnC;;uHAvJU,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,0BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,yFC9BvC,i4HA6GA,EAAA,MAAA,EAAA,CAAA,oCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FD/Ea,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBALtC,SAAS;+BACE,4BAA4B,EAAA,QAAA,EAAA,i4HAAA,EAAA,MAAA,EAAA,CAAA,oCAAA,CAAA,EAAA,CAAA;;;AEdlC,MAAO,iCACX,SAAQ,mBAAmB,CAAA;IAG3B,WACE,CAAA,MAAc,EACd,KAAqB,EACrB,QAAqB,EACrB,WAAwB,EACxB,gBAAkC,EAClC,aAAgC,EAAA;AAEhC,QAAA,KAAK,CACH,MAAM,EACN,KAAK,EACL,QAAQ,EACR,WAAW,EACX,gBAAgB,EAChB,aAAa,CACd,CAAC;KACH;IAEkB,iBAAiB,GAAA;AAClC,QAAA,OAAO,CAAC,oBAAoB,EAAE,yBAAyB,CAAC,CAAC;KAC1D;;8HAxBU,iCAAiC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAN,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAH,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,IAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjC,iCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iCAAiC,iGCZ9C,iSAQA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,0BAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDIa,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAL7C,SAAS;+BACE,oCAAoC,EAAA,QAAA,EAAA,iSAAA,EAAA,CAAA;;;ME0CnC,oCAAoC,CAAA;;iIAApC,oCAAoC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAApC,oCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oCAAoC,iBA3B7C,0BAA0B;QAC1B,2BAA2B;AAC3B,QAAA,iCAAiC,aAGjC,YAAY;QACZ,WAAW;QACX,mBAAmB;;QAEnB,eAAe;QACf,aAAa;QACb,aAAa;QACb,cAAc;QACd,eAAe;QACf,aAAa;QACb,gBAAgB;;QAEhB,iBAAiB;QACjB,cAAc;AACd,QAAA,gBAAgB,aAGhB,0BAA0B;QAC1B,2BAA2B;QAC3B,iCAAiC,CAAA,EAAA,CAAA,CAAA;AAGxB,oCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oCAAoC,YAtB7C,YAAY;QACZ,WAAW;QACX,mBAAmB;;QAEnB,eAAe;QACf,aAAa;QACb,aAAa;QACb,cAAc;QACd,eAAe;QACf,aAAa;QACb,gBAAgB;;QAEhB,iBAAiB;QACjB,cAAc;QACd,gBAAgB,CAAA,EAAA,CAAA,CAAA;2FAQP,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBA7BhD,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,0BAA0B;wBAC1B,2BAA2B;wBAC3B,iCAAiC;AAClC,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,mBAAmB;;wBAEnB,eAAe;wBACf,aAAa;wBACb,aAAa;wBACb,cAAc;wBACd,eAAe;wBACf,aAAa;wBACb,gBAAgB;;wBAEhB,iBAAiB;wBACjB,cAAc;wBACd,gBAAgB;AACjB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,0BAA0B;wBAC1B,2BAA2B;wBAC3B,iCAAiC;AAClC,qBAAA;AACF,iBAAA,CAAA;;;ACjDD;;AAEG;;ACFH;;AAEG;;;;"}
1
+ {"version":3,"file":"myrmidon-cadmus-part-codicology-shelfmarks.mjs","sources":["../../../../projects/myrmidon/cadmus-part-codicology-shelfmarks/src/lib/cod-shelfmarks-part.ts","../../../../projects/myrmidon/cadmus-part-codicology-shelfmarks/src/lib/cod-shelfmark-editor/cod-shelfmark-editor.component.ts","../../../../projects/myrmidon/cadmus-part-codicology-shelfmarks/src/lib/cod-shelfmark-editor/cod-shelfmark-editor.component.html","../../../../projects/myrmidon/cadmus-part-codicology-shelfmarks/src/lib/cod-shelfmarks-part/cod-shelfmarks-part.component.ts","../../../../projects/myrmidon/cadmus-part-codicology-shelfmarks/src/lib/cod-shelfmarks-part/cod-shelfmarks-part.component.html","../../../../projects/myrmidon/cadmus-part-codicology-shelfmarks/src/lib/cod-shelfmarks-part-feature/cod-shelfmarks-part-feature.component.ts","../../../../projects/myrmidon/cadmus-part-codicology-shelfmarks/src/lib/cod-shelfmarks-part-feature/cod-shelfmarks-part-feature.component.html","../../../../projects/myrmidon/cadmus-part-codicology-shelfmarks/src/lib/cadmus-part-codicology-shelfmarks.module.ts","../../../../projects/myrmidon/cadmus-part-codicology-shelfmarks/src/public-api.ts","../../../../projects/myrmidon/cadmus-part-codicology-shelfmarks/src/myrmidon-cadmus-part-codicology-shelfmarks.ts"],"sourcesContent":["import { Part } from '@myrmidon/cadmus-core';\r\n\r\n/**\r\n * A manuscript's shelfmark.\r\n */\r\nexport interface CodShelfmark {\r\n tag?: string;\r\n city: string;\r\n library: string;\r\n fund?: string;\r\n location: string;\r\n}\r\n\r\n/**\r\n * The CodShelfmarks part model.\r\n */\r\nexport interface CodShelfmarksPart extends Part {\r\n shelfmarks: CodShelfmark[];\r\n}\r\n\r\n/**\r\n * The type ID used to identify the CodShelfmarksPart type.\r\n */\r\nexport const COD_SHELFMARKS_PART_TYPEID = 'it.vedph.codicology.shelfmarks';\r\n\r\n/**\r\n * JSON schema for the CodShelfmarks part.\r\n * You can use the JSON schema tool at https://jsonschema.net/.\r\n */\r\nexport const COD_SHELFMARKS_PART_SCHEMA = {\r\n $schema: 'http://json-schema.org/draft-07/schema#',\r\n $id:\r\n 'www.vedph.it/cadmus/parts/codicology/' +\r\n COD_SHELFMARKS_PART_TYPEID +\r\n '.json',\r\n type: 'object',\r\n title: 'CodShelfmarksPart',\r\n required: [\r\n 'id',\r\n 'itemId',\r\n 'typeId',\r\n 'timeCreated',\r\n 'creatorId',\r\n 'timeModified',\r\n 'userId',\r\n 'shelfmarks',\r\n ],\r\n properties: {\r\n timeCreated: {\r\n type: 'string',\r\n pattern: '^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}.\\\\d+Z$',\r\n },\r\n creatorId: {\r\n type: 'string',\r\n },\r\n timeModified: {\r\n type: 'string',\r\n pattern: '^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}.\\\\d+Z$',\r\n },\r\n userId: {\r\n type: 'string',\r\n },\r\n id: {\r\n type: 'string',\r\n pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$',\r\n },\r\n itemId: {\r\n type: 'string',\r\n pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$',\r\n },\r\n typeId: {\r\n type: 'string',\r\n pattern: '^[a-z][-0-9a-z._]*$',\r\n },\r\n roleId: {\r\n type: ['string', 'null'],\r\n pattern: '^([a-z][-0-9a-z._]*)?$',\r\n },\r\n shelfmarks: {\r\n type: 'array',\r\n items: {\r\n anyOf: [\r\n {\r\n type: 'object',\r\n required: ['city', 'library', 'location'],\r\n properties: {\r\n tag: {\r\n type: 'string',\r\n },\r\n city: {\r\n type: 'string',\r\n },\r\n library: {\r\n type: 'string',\r\n },\r\n fund: {\r\n type: 'string',\r\n },\r\n location: {\r\n type: 'string',\r\n },\r\n },\r\n },\r\n ],\r\n },\r\n },\r\n },\r\n};\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport {\r\n FormBuilder,\r\n FormControl,\r\n FormGroup,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { ThesaurusEntry } from '@myrmidon/cadmus-core';\r\nimport { CodShelfmark } from '../cod-shelfmarks-part';\r\n\r\n@Component({\r\n selector: 'cadmus-cod-shelfmark-editor',\r\n templateUrl: './cod-shelfmark-editor.component.html',\r\n styleUrls: ['./cod-shelfmark-editor.component.css'],\r\n})\r\nexport class CodShelfmarkEditorComponent implements OnInit {\r\n private _shelfmark: CodShelfmark | undefined;\r\n\r\n @Input()\r\n public get shelfmark(): CodShelfmark | undefined {\r\n return this._shelfmark;\r\n }\r\n public set shelfmark(value: CodShelfmark | undefined) {\r\n if (this._shelfmark === value) {\r\n return;\r\n }\r\n this._shelfmark = value;\r\n this.updateForm(value);\r\n }\r\n\r\n // cod-shelfmark-tags\r\n @Input()\r\n public tagEntries: ThesaurusEntry[] | undefined;\r\n // cod-shelfmark-libraries\r\n @Input()\r\n public libEntries: ThesaurusEntry[] | undefined;\r\n\r\n @Output()\r\n public shelfmarkChange: EventEmitter<CodShelfmark>;\r\n @Output()\r\n public editorClose: EventEmitter<any>;\r\n\r\n public tag: FormControl<string | null>;\r\n public city: FormControl<string | null>;\r\n public library: FormControl<string | null>;\r\n public fund: FormControl<string | null>;\r\n public location: FormControl<string | null>;\r\n public form: FormGroup;\r\n\r\n constructor(formBuilder: FormBuilder) {\r\n this.shelfmarkChange = new EventEmitter<CodShelfmark>();\r\n this.editorClose = new EventEmitter<any>();\r\n // form\r\n this.tag = formBuilder.control(null, Validators.maxLength(50));\r\n this.city = formBuilder.control(null, [\r\n Validators.required,\r\n Validators.maxLength(50),\r\n ]);\r\n this.library = formBuilder.control(null, [\r\n Validators.required,\r\n Validators.maxLength(50),\r\n ]);\r\n this.fund = formBuilder.control(null, Validators.maxLength(50));\r\n this.location = formBuilder.control(null, Validators.maxLength(50));\r\n\r\n this.form = formBuilder.group({\r\n tag: this.tag,\r\n city: this.city,\r\n library: this.library,\r\n fund: this.fund,\r\n location: this.location,\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this._shelfmark) {\r\n this.updateForm(this._shelfmark);\r\n }\r\n }\r\n\r\n private updateForm(model: CodShelfmark | undefined): void {\r\n if (!model) {\r\n this.form.reset();\r\n return;\r\n }\r\n\r\n this.tag.setValue(model.tag || null);\r\n this.city.setValue(model.city);\r\n this.library.setValue(model.library);\r\n this.fund.setValue(model.fund || null);\r\n this.location.setValue(model.location);\r\n this.form.markAsPristine();\r\n }\r\n\r\n private getModel(): CodShelfmark {\r\n return {\r\n tag: this.tag.value?.trim(),\r\n city: this.city.value?.trim() || '',\r\n library: this.library.value?.trim() || '',\r\n fund: this.fund.value?.trim(),\r\n location: this.location.value?.trim() || '',\r\n };\r\n }\r\n\r\n public cancel(): void {\r\n this.editorClose.emit();\r\n }\r\n\r\n public save(): void {\r\n if (this.form.invalid) {\r\n return;\r\n }\r\n this._shelfmark = this.getModel();\r\n this.shelfmarkChange.emit(this._shelfmark);\r\n }\r\n}\r\n","<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <div>\r\n <!-- tag (bound) -->\r\n <mat-form-field *ngIf=\"tagEntries?.length\" style=\"width: 8em\">\r\n <mat-label>tag</mat-label>\r\n <mat-select [formControl]=\"tag\">\r\n <mat-option *ngFor=\"let e of tagEntries\" [value]=\"e.id\">{{\r\n e.value\r\n }}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <!-- tag (free) -->\r\n <mat-form-field *ngIf=\"!tagEntries?.length\">\r\n <mat-label>tag</mat-label>\r\n <input matInput [formControl]=\"tag\" />\r\n <mat-error\r\n *ngIf=\"$any(tag).errors?.maxLength && (tag.dirty || tag.touched)\"\r\n >tag too long</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- city -->\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>city</mat-label>\r\n <input matInput [formControl]=\"city\" />\r\n <mat-error\r\n *ngIf=\"$any(city).errors?.required && (city.dirty || city.touched)\"\r\n >city required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"$any(city).errors?.maxLength && (city.dirty || city.touched)\"\r\n >city too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n <div>\r\n <!-- library (bound) -->\r\n <mat-form-field *ngIf=\"libEntries?.length\" style=\"width: 8em\">\r\n <mat-label>library</mat-label>\r\n <mat-select [formControl]=\"library\">\r\n <mat-option *ngFor=\"let e of libEntries\" [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(library).errors?.required && (library.dirty || library.touched)\r\n \"\r\n >library required</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- library (free) -->\r\n <mat-form-field *ngIf=\"!libEntries?.length\">\r\n <mat-label>library</mat-label>\r\n <input matInput [formControl]=\"library\" />\r\n <mat-error\r\n *ngIf=\"\r\n $any(library).errors?.required && (library.dirty || library.touched)\r\n \"\r\n >library required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"\r\n $any(library).errors?.maxLength && (library.dirty || library.touched)\r\n \"\r\n >library too long</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- fund -->\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>fund</mat-label>\r\n <input matInput [formControl]=\"fund\" />\r\n <mat-error\r\n *ngIf=\"$any(fund).errors?.maxLength && (fund.dirty || fund.touched)\"\r\n >fund too long</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- location -->\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>location</mat-label>\r\n <input matInput [formControl]=\"location\" />\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-error\r\n *ngIf=\"\r\n $any(location).errors?.maxLength &&\r\n (location.dirty || location.touched)\r\n \"\r\n >location too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\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","import { Component, OnInit } from '@angular/core';\r\nimport {\r\n FormControl,\r\n FormBuilder,\r\n FormGroup,\r\n UntypedFormGroup,\r\n} from '@angular/forms';\r\nimport { take } from 'rxjs/operators';\r\n\r\nimport { deepCopy, NgToolsValidators } from '@myrmidon/ng-tools';\r\nimport { DialogService } from '@myrmidon/ng-mat-tools';\r\nimport { AuthJwtService } from '@myrmidon/auth-jwt-login';\r\nimport { EditedObject, ModelEditorComponentBase } from '@myrmidon/cadmus-ui';\r\nimport { ThesauriSet, ThesaurusEntry } from '@myrmidon/cadmus-core';\r\n\r\nimport {\r\n CodShelfmark,\r\n CodShelfmarksPart,\r\n COD_SHELFMARKS_PART_TYPEID,\r\n} from '../cod-shelfmarks-part';\r\n\r\n/**\r\n * CodShelfmarksPart editor component.\r\n * Thesauri: cod-shelfmark-tags, cod-shelfmark-libraries (all optional).\r\n */\r\n@Component({\r\n selector: 'cadmus-cod-shelfmarks-part',\r\n templateUrl: './cod-shelfmarks-part.component.html',\r\n styleUrls: ['./cod-shelfmarks-part.component.css'],\r\n})\r\nexport class CodShelfmarksPartComponent\r\n extends ModelEditorComponentBase<CodShelfmarksPart>\r\n implements OnInit\r\n{\r\n private _editedIndex: number;\r\n\r\n public tabIndex: number;\r\n public editedShelfmark: CodShelfmark | undefined;\r\n\r\n // cod-shelfmark-tags\r\n public tagEntries: ThesaurusEntry[] | undefined;\r\n // cod-shelfmark-libraries\r\n public libEntries: ThesaurusEntry[] | undefined;\r\n\r\n public shelfmarks: FormControl<CodShelfmark[]>;\r\n\r\n constructor(\r\n authService: AuthJwtService,\r\n formBuilder: FormBuilder,\r\n private _dialogService: DialogService\r\n ) {\r\n super(authService, formBuilder);\r\n this._editedIndex = -1;\r\n this.tabIndex = 0;\r\n // form\r\n this.shelfmarks = formBuilder.control([], {\r\n nonNullable: true,\r\n validators: NgToolsValidators.strictMinLengthValidator(1),\r\n });\r\n }\r\n\r\n public override ngOnInit(): void {\r\n super.ngOnInit();\r\n }\r\n\r\n protected buildForm(formBuilder: FormBuilder): FormGroup | UntypedFormGroup {\r\n return formBuilder.group({\r\n shelfmarks: this.shelfmarks,\r\n });\r\n }\r\n\r\n private updateThesauri(thesauri: ThesauriSet): void {\r\n let key = 'cod-shelfmark-tags';\r\n if (this.hasThesaurus(key)) {\r\n this.tagEntries = thesauri[key].entries;\r\n } else {\r\n this.tagEntries = undefined;\r\n }\r\n key = 'cod-shelfmark-libraries';\r\n if (this.hasThesaurus(key)) {\r\n this.libEntries = thesauri[key].entries;\r\n } else {\r\n this.libEntries = undefined;\r\n }\r\n }\r\n\r\n private updateForm(part?: CodShelfmarksPart | null): void {\r\n if (!part) {\r\n this.form.reset();\r\n return;\r\n }\r\n this.shelfmarks.setValue(part.shelfmarks || []);\r\n this.form.markAsPristine();\r\n }\r\n\r\n protected override onDataSet(data?: EditedObject<CodShelfmarksPart>): void {\r\n // thesauri\r\n if (data?.thesauri) {\r\n this.updateThesauri(data.thesauri);\r\n }\r\n\r\n // form\r\n this.updateForm(data?.value);\r\n }\r\n\r\n protected getValue(): CodShelfmarksPart {\r\n let part = this.getEditedPart(\r\n COD_SHELFMARKS_PART_TYPEID\r\n ) as CodShelfmarksPart;\r\n part.shelfmarks = this.shelfmarks.value || [];\r\n return part;\r\n }\r\n\r\n public addShelfmark(): void {\r\n this.editShelfmark({\r\n city: '',\r\n library: this.libEntries?.length ? this.libEntries[0].id : '',\r\n location: '',\r\n });\r\n }\r\n\r\n public editShelfmark(shelfmark: CodShelfmark | null, index = -1): void {\r\n if (!shelfmark) {\r\n this._editedIndex = -1;\r\n this.tabIndex = 0;\r\n this.editedShelfmark = undefined;\r\n } else {\r\n this._editedIndex = index;\r\n this.editedShelfmark = shelfmark;\r\n setTimeout(() => {\r\n this.tabIndex = 1;\r\n });\r\n }\r\n }\r\n\r\n public onShelfmarkSave(shelfmark: CodShelfmark): void {\r\n const shelfmarks = [...this.shelfmarks.value];\r\n\r\n if (this._editedIndex > -1) {\r\n shelfmarks.splice(this._editedIndex, 1, shelfmark);\r\n } else {\r\n shelfmarks.push(shelfmark);\r\n }\r\n\r\n this.shelfmarks.setValue(shelfmarks);\r\n this.editShelfmark(null);\r\n }\r\n\r\n public deleteShelfmark(index: number): void {\r\n this._dialogService\r\n .confirm('Confirmation', 'Delete shelfmark?')\r\n .pipe(take(1))\r\n .subscribe((yes) => {\r\n if (yes) {\r\n const entries = [...this.shelfmarks.value];\r\n entries.splice(index, 1);\r\n this.shelfmarks.setValue(entries);\r\n }\r\n });\r\n }\r\n\r\n public moveShelfmarkUp(index: number): void {\r\n if (index < 1) {\r\n return;\r\n }\r\n const entry = this.shelfmarks.value[index];\r\n const entries = [...this.shelfmarks.value];\r\n entries.splice(index, 1);\r\n entries.splice(index - 1, 0, entry);\r\n this.shelfmarks.setValue(entries);\r\n }\r\n\r\n public moveShelfmarkDown(index: number): void {\r\n if (index + 1 >= this.shelfmarks.value.length) {\r\n return;\r\n }\r\n const entry = this.shelfmarks.value[index];\r\n const entries = [...this.shelfmarks.value];\r\n entries.splice(index, 1);\r\n entries.splice(index + 1, 0, entry);\r\n this.shelfmarks.setValue(entries);\r\n }\r\n}\r\n","<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <mat-card appearance=\"outlined\">\r\n <mat-card-header>\r\n <div mat-card-avatar>\r\n <mat-icon>picture_in_picture</mat-icon>\r\n </div>\r\n <mat-card-title>Shelfmarks Part</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <mat-tab-group [(selectedIndex)]=\"tabIndex\">\r\n <mat-tab label=\"shelfmarks\">\r\n <div>\r\n <button\r\n type=\"button\"\r\n mat-flat-button\r\n color=\"primary\"\r\n (click)=\"addShelfmark()\"\r\n >\r\n <mat-icon>add_circle</mat-icon> shelfmark\r\n </button>\r\n </div>\r\n <table *ngIf=\"shelfmarks?.value?.length\">\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th>tag</th>\r\n <th>city</th>\r\n <th>library</th>\r\n <th>fund</th>\r\n <th>location</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n *ngFor=\"\r\n let entry of shelfmarks?.value;\r\n let i = index;\r\n let first = first;\r\n let last = last\r\n \"\r\n >\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n color=\"primary\"\r\n matTooltip=\"Edit this shelfmark\"\r\n (click)=\"editShelfmark(entry, i)\"\r\n >\r\n <mat-icon>edit</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this shelfmark up\"\r\n [disabled]=\"first\"\r\n (click)=\"moveShelfmarkUp(i)\"\r\n >\r\n <mat-icon>arrow_upward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this shelfmark down\"\r\n [disabled]=\"last\"\r\n (click)=\"moveShelfmarkDown(i)\"\r\n >\r\n <mat-icon>arrow_downward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n color=\"warn\"\r\n matTooltip=\"Delete this shelfmark\"\r\n (click)=\"deleteShelfmark(i)\"\r\n >\r\n <mat-icon>remove_circle</mat-icon>\r\n </button>\r\n </td>\r\n <td>{{ entry.tag }}</td>\r\n <td>{{ entry.city }}</td>\r\n <td>{{ entry.library }}</td>\r\n <td>{{ entry.fund }}</td>\r\n <td>{{ entry.location }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </mat-tab>\r\n\r\n <mat-tab label=\"shelfmark\" *ngIf=\"editedShelfmark\">\r\n <cadmus-cod-shelfmark-editor\r\n [tagEntries]=\"tagEntries\"\r\n [libEntries]=\"libEntries\"\r\n [shelfmark]=\"editedShelfmark\"\r\n (shelfmarkChange)=\"onShelfmarkSave($event)\"\r\n (editorClose)=\"editShelfmark(null)\"\r\n ></cadmus-cod-shelfmark-editor>\r\n </mat-tab>\r\n </mat-tab-group>\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <cadmus-close-save-buttons\r\n [form]=\"form\"\r\n [noSave]=\"userLevel < 2\"\r\n (closeRequest)=\"close()\"\r\n ></cadmus-close-save-buttons>\r\n </mat-card-actions>\r\n </mat-card>\r\n</form>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\n\r\nimport { EditPartFeatureBase, PartEditorService } from '@myrmidon/cadmus-state';\r\nimport { ItemService, ThesaurusService } from '@myrmidon/cadmus-api';\r\n\r\n@Component({\r\n selector: 'cadmus-cod-shelfmarks-part-feature',\r\n templateUrl: './cod-shelfmarks-part-feature.component.html',\r\n styleUrls: ['./cod-shelfmarks-part-feature.component.css'],\r\n})\r\nexport class CodShelfmarksPartFeatureComponent\r\n extends EditPartFeatureBase\r\n implements OnInit\r\n{\r\n constructor(\r\n router: Router,\r\n route: ActivatedRoute,\r\n snackbar: MatSnackBar,\r\n itemService: ItemService,\r\n thesaurusService: ThesaurusService,\r\n editorService: PartEditorService\r\n ) {\r\n super(\r\n router,\r\n route,\r\n snackbar,\r\n itemService,\r\n thesaurusService,\r\n editorService\r\n );\r\n }\r\n\r\n protected override getReqThesauriIds(): string[] {\r\n return ['cod-shelfmark-tags', 'cod-shelfmark-libraries'];\r\n }\r\n}\r\n","<cadmus-current-item-bar></cadmus-current-item-bar>\r\n<cadmus-cod-shelfmarks-part\r\n [identity]=\"identity\"\r\n [data]=\"$any(data)\"\r\n (dataChange)=\"save($event)\"\r\n (editorClose)=\"close()\"\r\n (dirtyChange)=\"onDirtyChange($event)\"\r\n></cadmus-cod-shelfmarks-part>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\n// cadmus\r\nimport { CadmusStateModule } from '@myrmidon/cadmus-state';\r\nimport { CadmusUiModule } from '@myrmidon/cadmus-ui';\r\nimport { CadmusUiPgModule } from '@myrmidon/cadmus-ui-pg';\r\n// locals (UI editor and PG wrapper)\r\nimport { CodShelfmarksPartComponent } from './cod-shelfmarks-part/cod-shelfmarks-part.component';\r\nimport { CodShelfmarkEditorComponent } from './cod-shelfmark-editor/cod-shelfmark-editor.component';\r\nimport { CodShelfmarksPartFeatureComponent } from './cod-shelfmarks-part-feature/cod-shelfmarks-part-feature.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n CodShelfmarksPartComponent,\r\n CodShelfmarkEditorComponent,\r\n CodShelfmarksPartFeatureComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n // material\r\n MatButtonModule,\r\n MatCardModule,\r\n MatIconModule,\r\n MatInputModule,\r\n MatSelectModule,\r\n MatTabsModule,\r\n MatTooltipModule,\r\n // Cadmus\r\n CadmusStateModule,\r\n CadmusUiModule,\r\n CadmusUiPgModule,\r\n ],\r\n exports: [\r\n CodShelfmarksPartComponent,\r\n CodShelfmarkEditorComponent,\r\n CodShelfmarksPartFeatureComponent,\r\n ],\r\n})\r\nexport class CadmusPartCodicologyShelfmarksModule {}\r\n","/*\r\n * Public API Surface of cadmus-part-codicology-shelfmarks\r\n */\r\n\r\nexport * from './lib/cod-shelfmarks-part';\r\nexport * from './lib/cod-shelfmarks-part/cod-shelfmarks-part.component';\r\nexport * from './lib/cod-shelfmark-editor/cod-shelfmark-editor.component';\r\nexport * from './lib/cod-shelfmarks-part-feature/cod-shelfmarks-part-feature.component';\r\nexport * from './lib/cadmus-part-codicology-shelfmarks.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i5","i1","i2","i4","i6","i7","i8","i11.CodShelfmarkEditorComponent","i6.CodShelfmarksPartComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBA;;AAEG;AACI,MAAM,0BAA0B,GAAG,iCAAiC;AAE3E;;;AAGG;AACU,MAAA,0BAA0B,GAAG;AACxC,IAAA,OAAO,EAAE,yCAAyC;AAClD,IAAA,GAAG,EACD,uCAAuC;QACvC,0BAA0B;QAC1B,OAAO;AACT,IAAA,IAAI,EAAE,QAAQ;AACd,IAAA,KAAK,EAAE,mBAAmB;AAC1B,IAAA,QAAQ,EAAE;QACR,IAAI;QACJ,QAAQ;QACR,QAAQ;QACR,aAAa;QACb,WAAW;QACX,cAAc;QACd,QAAQ;QACR,YAAY;AACb,KAAA;AACD,IAAA,UAAU,EAAE;AACV,QAAA,WAAW,EAAE;AACX,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,OAAO,EAAE,mDAAmD;AAC7D,SAAA;AACD,QAAA,SAAS,EAAE;AACT,YAAA,IAAI,EAAE,QAAQ;AACf,SAAA;AACD,QAAA,YAAY,EAAE;AACZ,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,OAAO,EAAE,mDAAmD;AAC7D,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,IAAI,EAAE,QAAQ;AACf,SAAA;AACD,QAAA,EAAE,EAAE;AACF,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,OAAO,EAAE,gEAAgE;AAC1E,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,OAAO,EAAE,gEAAgE;AAC1E,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,OAAO,EAAE,qBAAqB;AAC/B,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC;AACxB,YAAA,OAAO,EAAE,wBAAwB;AAClC,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,KAAK,EAAE;AACL,gBAAA,KAAK,EAAE;AACL,oBAAA;AACE,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC;AACzC,wBAAA,UAAU,EAAE;AACV,4BAAA,GAAG,EAAE;AACH,gCAAA,IAAI,EAAE,QAAQ;AACf,6BAAA;AACD,4BAAA,IAAI,EAAE;AACJ,gCAAA,IAAI,EAAE,QAAQ;AACf,6BAAA;AACD,4BAAA,OAAO,EAAE;AACP,gCAAA,IAAI,EAAE,QAAQ;AACf,6BAAA;AACD,4BAAA,IAAI,EAAE;AACJ,gCAAA,IAAI,EAAE,QAAQ;AACf,6BAAA;AACD,4BAAA,QAAQ,EAAE;AACR,gCAAA,IAAI,EAAE,QAAQ;AACf,6BAAA;AACF,yBAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA;AACF,KAAA;;;MC3FU,2BAA2B,CAAA;AAkCtC,IAAA,WAAA,CAAY,WAAwB,EAAA;AAClC,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,YAAY,EAAgB,CAAC;AACxD,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,YAAY,EAAO,CAAC;;AAE3C,QAAA,IAAI,CAAC,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE;AACpC,YAAA,UAAU,CAAC,QAAQ;AACnB,YAAA,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;AACzB,SAAA,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE;AACvC,YAAA,UAAU,CAAC,QAAQ;AACnB,YAAA,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;AACzB,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;AAChE,QAAA,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;AAEpE,QAAA,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC;YAC5B,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACxB,SAAA,CAAC,CAAC;KACJ;AAtDD,IAAA,IACW,SAAS,GAAA;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;IACD,IAAW,SAAS,CAAC,KAA+B,EAAA;AAClD,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK,EAAE;YAC7B,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;KACxB;IA8CD,QAAQ,GAAA;QACN,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAClC,SAAA;KACF;AAEO,IAAA,UAAU,CAAC,KAA+B,EAAA;QAChD,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAClB,OAAO;AACR,SAAA;QAED,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AACvC,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;KAC5B;IAEO,QAAQ,GAAA;QACd,OAAO;YACL,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE;YAC3B,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE;YACnC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE;YACzC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE;YAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE;SAC5C,CAAC;KACH;IAEM,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;KACzB;IAEM,IAAI,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACrB,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KAC5C;;wHAnGU,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,2BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,wOCfxC,4vHAyHA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FD1Ga,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBALvC,SAAS;+BACE,6BAA6B,EAAA,QAAA,EAAA,4vHAAA,EAAA,CAAA;kGAQ5B,SAAS,EAAA,CAAA;sBADnB,KAAK;gBAcC,UAAU,EAAA,CAAA;sBADhB,KAAK;gBAIC,UAAU,EAAA,CAAA;sBADhB,KAAK;gBAIC,eAAe,EAAA,CAAA;sBADrB,MAAM;gBAGA,WAAW,EAAA,CAAA;sBADjB,MAAM;;;AElBT;;;AAGG;AAMG,MAAO,0BACX,SAAQ,wBAA2C,CAAA;AAenD,IAAA,WAAA,CACE,WAA2B,EAC3B,WAAwB,EAChB,cAA6B,EAAA;AAErC,QAAA,KAAK,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QAFxB,IAAc,CAAA,cAAA,GAAd,cAAc,CAAe;AAGrC,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;AACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;;QAElB,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE;AACxC,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,UAAU,EAAE,iBAAiB,CAAC,wBAAwB,CAAC,CAAC,CAAC;AAC1D,SAAA,CAAC,CAAC;KACJ;IAEe,QAAQ,GAAA;QACtB,KAAK,CAAC,QAAQ,EAAE,CAAC;KAClB;AAES,IAAA,SAAS,CAAC,WAAwB,EAAA;QAC1C,OAAO,WAAW,CAAC,KAAK,CAAC;YACvB,UAAU,EAAE,IAAI,CAAC,UAAU;AAC5B,SAAA,CAAC,CAAC;KACJ;AAEO,IAAA,cAAc,CAAC,QAAqB,EAAA;QAC1C,IAAI,GAAG,GAAG,oBAAoB,CAAC;AAC/B,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE;YAC1B,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;AACzC,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAC7B,SAAA;QACD,GAAG,GAAG,yBAAyB,CAAC;AAChC,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE;YAC1B,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;AACzC,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAC7B,SAAA;KACF;AAEO,IAAA,UAAU,CAAC,IAA+B,EAAA;QAChD,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAClB,OAAO;AACR,SAAA;QACD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;AAChD,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;KAC5B;AAEkB,IAAA,SAAS,CAAC,IAAsC,EAAA;;QAEjE,IAAI,IAAI,EAAE,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACpC,SAAA;;AAGD,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;KAC9B;IAES,QAAQ,GAAA;QAChB,IAAI,IAAI,GAAG,IAAI,CAAC,aAAa,CAC3B,0BAA0B,CACN,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE,CAAC;AAC9C,QAAA,OAAO,IAAI,CAAC;KACb;IAEM,YAAY,GAAA;QACjB,IAAI,CAAC,aAAa,CAAC;AACjB,YAAA,IAAI,EAAE,EAAE;YACR,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE;AAC7D,YAAA,QAAQ,EAAE,EAAE;AACb,SAAA,CAAC,CAAC;KACJ;AAEM,IAAA,aAAa,CAAC,SAA8B,EAAE,KAAK,GAAG,CAAC,CAAC,EAAA;QAC7D,IAAI,CAAC,SAAS,EAAE;AACd,YAAA,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;AACvB,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AAClB,YAAA,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;AAClC,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC1B,YAAA,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;YACjC,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACpB,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;AAEM,IAAA,eAAe,CAAC,SAAuB,EAAA;QAC5C,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAE9C,QAAA,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,EAAE;YAC1B,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;AACpD,SAAA;AAAM,aAAA;AACL,YAAA,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC5B,SAAA;AAED,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AACrC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;KAC1B;AAEM,IAAA,eAAe,CAAC,KAAa,EAAA;AAClC,QAAA,IAAI,CAAC,cAAc;AAChB,aAAA,OAAO,CAAC,cAAc,EAAE,mBAAmB,CAAC;AAC5C,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACb,aAAA,SAAS,CAAC,CAAC,GAAG,KAAI;AACjB,YAAA,IAAI,GAAG,EAAE;gBACP,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC3C,gBAAA,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACzB,gBAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACnC,aAAA;AACH,SAAC,CAAC,CAAC;KACN;AAEM,IAAA,eAAe,CAAC,KAAa,EAAA;QAClC,IAAI,KAAK,GAAG,CAAC,EAAE;YACb,OAAO;AACR,SAAA;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC3C,QAAA,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACzB,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AACpC,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;KACnC;AAEM,IAAA,iBAAiB,CAAC,KAAa,EAAA;QACpC,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE;YAC7C,OAAO;AACR,SAAA;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC3C,QAAA,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACzB,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AACpC,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;KACnC;;uHAvJU,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,0BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,yFC9BvC,i4HA6GA,EAAA,MAAA,EAAA,CAAA,oCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FD/Ea,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBALtC,SAAS;+BACE,4BAA4B,EAAA,QAAA,EAAA,i4HAAA,EAAA,MAAA,EAAA,CAAA,oCAAA,CAAA,EAAA,CAAA;;;AEdlC,MAAO,iCACX,SAAQ,mBAAmB,CAAA;IAG3B,WACE,CAAA,MAAc,EACd,KAAqB,EACrB,QAAqB,EACrB,WAAwB,EACxB,gBAAkC,EAClC,aAAgC,EAAA;AAEhC,QAAA,KAAK,CACH,MAAM,EACN,KAAK,EACL,QAAQ,EACR,WAAW,EACX,gBAAgB,EAChB,aAAa,CACd,CAAC;KACH;IAEkB,iBAAiB,GAAA;AAClC,QAAA,OAAO,CAAC,oBAAoB,EAAE,yBAAyB,CAAC,CAAC;KAC1D;;8HAxBU,iCAAiC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAN,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAH,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,IAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjC,iCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iCAAiC,iGCZ9C,iSAQA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,0BAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDIa,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAL7C,SAAS;+BACE,oCAAoC,EAAA,QAAA,EAAA,iSAAA,EAAA,CAAA;;;ME0CnC,oCAAoC,CAAA;;iIAApC,oCAAoC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAApC,oCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oCAAoC,iBA3B7C,0BAA0B;QAC1B,2BAA2B;AAC3B,QAAA,iCAAiC,aAGjC,YAAY;QACZ,WAAW;QACX,mBAAmB;;QAEnB,eAAe;QACf,aAAa;QACb,aAAa;QACb,cAAc;QACd,eAAe;QACf,aAAa;QACb,gBAAgB;;QAEhB,iBAAiB;QACjB,cAAc;AACd,QAAA,gBAAgB,aAGhB,0BAA0B;QAC1B,2BAA2B;QAC3B,iCAAiC,CAAA,EAAA,CAAA,CAAA;AAGxB,oCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oCAAoC,YAtB7C,YAAY;QACZ,WAAW;QACX,mBAAmB;;QAEnB,eAAe;QACf,aAAa;QACb,aAAa;QACb,cAAc;QACd,eAAe;QACf,aAAa;QACb,gBAAgB;;QAEhB,iBAAiB;QACjB,cAAc;QACd,gBAAgB,CAAA,EAAA,CAAA,CAAA;2FAQP,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBA7BhD,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,0BAA0B;wBAC1B,2BAA2B;wBAC3B,iCAAiC;AAClC,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,mBAAmB;;wBAEnB,eAAe;wBACf,aAAa;wBACb,aAAa;wBACb,cAAc;wBACd,eAAe;wBACf,aAAa;wBACb,gBAAgB;;wBAEhB,iBAAiB;wBACjB,cAAc;wBACd,gBAAgB;AACjB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,0BAA0B;wBAC1B,2BAA2B;wBAC3B,iCAAiC;AAClC,qBAAA;AACF,iBAAA,CAAA;;;ACjDD;;AAEG;;ACFH;;AAEG;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@myrmidon/cadmus-part-codicology-shelfmarks",
3
- "version": "2.0.3",
3
+ "version": "2.0.4",
4
4
  "description": "Cadmus codicology - shelfmarks part.",
5
5
  "keywords": [
6
6
  "Cadmus"