@myrmidon/cadmus-part-codicology-sheet-labels 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/README.md +24 -0
  2. package/esm2020/lib/cadmus-part-codicology-sheet-labels.module.mjs +156 -0
  3. package/esm2020/lib/cod-c-col-definition/cod-c-col-definition.component.mjs +95 -0
  4. package/esm2020/lib/cod-endleaf/cod-endleaf.component.mjs +102 -0
  5. package/esm2020/lib/cod-label-cell/cod-label-cell.component.mjs +102 -0
  6. package/esm2020/lib/cod-n-col-definition/cod-n-col-definition.component.mjs +151 -0
  7. package/esm2020/lib/cod-r-col-definition/cod-r-col-definition.component.mjs +87 -0
  8. package/esm2020/lib/cod-s-col-definition/cod-s-col-definition.component.mjs +95 -0
  9. package/esm2020/lib/cod-sheet-labels-part/cell-adapter.pipe.mjs +26 -0
  10. package/esm2020/lib/cod-sheet-labels-part/cell-type-color.pipe.mjs +35 -0
  11. package/esm2020/lib/cod-sheet-labels-part/cod-sheet-labels-part.component.mjs +527 -0
  12. package/esm2020/lib/cod-sheet-labels-part-feature/cod-sheet-labels-part-feature.component.mjs +39 -0
  13. package/esm2020/lib/cod-sheet-labels-part-feature/edit-cod-sheet-labels-part.query.mjs +16 -0
  14. package/esm2020/lib/cod-sheet-labels-part-feature/edit-cod-sheet-labels-part.service.mjs +18 -0
  15. package/esm2020/lib/cod-sheet-labels-part-feature/edit-cod-sheet-labels-part.store.mjs +27 -0
  16. package/esm2020/lib/cod-sheet-labels-part.mjs +520 -0
  17. package/esm2020/lib/cod-sheet-table.mjs +486 -0
  18. package/esm2020/lib/label-generator.mjs +227 -0
  19. package/esm2020/myrmidon-cadmus-part-codicology-sheet-labels.mjs +5 -0
  20. package/esm2020/public-api.mjs +16 -0
  21. package/fesm2015/myrmidon-cadmus-part-codicology-sheet-labels.mjs +2592 -0
  22. package/fesm2015/myrmidon-cadmus-part-codicology-sheet-labels.mjs.map +1 -0
  23. package/fesm2020/myrmidon-cadmus-part-codicology-sheet-labels.mjs +2597 -0
  24. package/fesm2020/myrmidon-cadmus-part-codicology-sheet-labels.mjs.map +1 -0
  25. package/lib/cadmus-part-codicology-sheet-labels.module.d.ts +37 -0
  26. package/lib/cod-c-col-definition/cod-c-col-definition.component.d.ts +28 -0
  27. package/lib/cod-endleaf/cod-endleaf.component.d.ts +33 -0
  28. package/lib/cod-label-cell/cod-label-cell.component.d.ts +27 -0
  29. package/lib/cod-n-col-definition/cod-n-col-definition.component.d.ts +44 -0
  30. package/lib/cod-r-col-definition/cod-r-col-definition.component.d.ts +26 -0
  31. package/lib/cod-s-col-definition/cod-s-col-definition.component.d.ts +28 -0
  32. package/lib/cod-sheet-labels-part/cell-adapter.pipe.d.ts +12 -0
  33. package/lib/cod-sheet-labels-part/cell-type-color.pipe.d.ts +7 -0
  34. package/lib/cod-sheet-labels-part/cod-sheet-labels-part.component.d.ts +92 -0
  35. package/lib/cod-sheet-labels-part-feature/cod-sheet-labels-part-feature.component.d.ts +13 -0
  36. package/lib/cod-sheet-labels-part-feature/edit-cod-sheet-labels-part.query.d.ts +8 -0
  37. package/lib/cod-sheet-labels-part-feature/edit-cod-sheet-labels-part.service.d.ts +9 -0
  38. package/lib/cod-sheet-labels-part-feature/edit-cod-sheet-labels-part.store.d.ts +10 -0
  39. package/lib/cod-sheet-labels-part.d.ts +539 -0
  40. package/lib/cod-sheet-table.d.ts +153 -0
  41. package/lib/label-generator.d.ts +55 -0
  42. package/myrmidon-cadmus-part-codicology-sheet-labels.d.ts +5 -0
  43. package/package.json +43 -0
  44. package/public-api.d.ts +12 -0
package/README.md ADDED
@@ -0,0 +1,24 @@
1
+ # CadmusPartCodicologySheetLabels
2
+
3
+ This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 13.2.0.
4
+
5
+ ## Code scaffolding
6
+
7
+ Run `ng generate component component-name --project cadmus-part-codicology-sheet-labels` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project cadmus-part-codicology-sheet-labels`.
8
+ > Note: Don't forget to add `--project cadmus-part-codicology-sheet-labels` or else it will be added to the default project in your `angular.json` file.
9
+
10
+ ## Build
11
+
12
+ Run `ng build cadmus-part-codicology-sheet-labels` to build the project. The build artifacts will be stored in the `dist/` directory.
13
+
14
+ ## Publishing
15
+
16
+ After building your library with `ng build cadmus-part-codicology-sheet-labels`, go to the dist folder `cd dist/cadmus-part-codicology-sheet-labels` and run `npm publish`.
17
+
18
+ ## Running unit tests
19
+
20
+ Run `ng test cadmus-part-codicology-sheet-labels` to execute the unit tests via [Karma](https://karma-runner.github.io).
21
+
22
+ ## Further help
23
+
24
+ To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
@@ -0,0 +1,156 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { NgModule } from '@angular/core';
3
+ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
4
+ import { MatButtonModule } from '@angular/material/button';
5
+ import { MatCardModule } from '@angular/material/card';
6
+ import { MatCheckboxModule } from '@angular/material/checkbox';
7
+ import { MatExpansionModule } from '@angular/material/expansion';
8
+ import { MatIconModule } from '@angular/material/icon';
9
+ import { MatInputModule } from '@angular/material/input';
10
+ import { MatSelectModule } from '@angular/material/select';
11
+ import { MatTabsModule } from '@angular/material/tabs';
12
+ import { MatTooltipModule } from '@angular/material/tooltip';
13
+ import { FlexLayoutModule } from '@angular/flex-layout';
14
+ import { NgToolsModule } from '@myrmidon/ng-tools';
15
+ import { NgMatToolsModule } from '@myrmidon/ng-mat-tools';
16
+ import { CadmusMatPhysicalSizeModule } from '@myrmidon/cadmus-mat-physical-size';
17
+ import { CadmusRefsAssertedChronotopeModule } from '@myrmidon/cadmus-refs-asserted-chronotope';
18
+ import { CadmusRefsHistoricalDateModule } from '@myrmidon/cadmus-refs-historical-date';
19
+ import { CadmusUiFlagsPickerModule } from '@myrmidon/cadmus-ui-flags-picker';
20
+ import { CadmusStateModule } from '@myrmidon/cadmus-state';
21
+ import { CadmusUiModule } from '@myrmidon/cadmus-ui';
22
+ import { CadmusUiPgModule } from '@myrmidon/cadmus-ui-pg';
23
+ import { CodNColDefinitionComponent } from './cod-n-col-definition/cod-n-col-definition.component';
24
+ import { CodCColDefinitionComponent } from './cod-c-col-definition/cod-c-col-definition.component';
25
+ import { CodSColDefinitionComponent } from './cod-s-col-definition/cod-s-col-definition.component';
26
+ import { CodRColDefinitionComponent } from './cod-r-col-definition/cod-r-col-definition.component';
27
+ import { CodEndleafComponent } from './cod-endleaf/cod-endleaf.component';
28
+ import { CodSheetLabelsPartComponent } from './cod-sheet-labels-part/cod-sheet-labels-part.component';
29
+ import { CodLabelCellComponent } from './cod-label-cell/cod-label-cell.component';
30
+ import { CodSheetLabelsPartFeatureComponent } from './cod-sheet-labels-part-feature/cod-sheet-labels-part-feature.component';
31
+ import { CellAdapterPipe } from './cod-sheet-labels-part/cell-adapter.pipe';
32
+ import { CellTypeColorPipe } from './cod-sheet-labels-part/cell-type-color.pipe';
33
+ import * as i0 from "@angular/core";
34
+ export class CadmusPartCodicologySheetLabelsModule {
35
+ }
36
+ CadmusPartCodicologySheetLabelsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: CadmusPartCodicologySheetLabelsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
37
+ CadmusPartCodicologySheetLabelsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: CadmusPartCodicologySheetLabelsModule, declarations: [CodNColDefinitionComponent,
38
+ CodCColDefinitionComponent,
39
+ CodSColDefinitionComponent,
40
+ CodRColDefinitionComponent,
41
+ CodEndleafComponent,
42
+ CodSheetLabelsPartComponent,
43
+ CodLabelCellComponent,
44
+ CodSheetLabelsPartFeatureComponent,
45
+ CellAdapterPipe,
46
+ CellTypeColorPipe], imports: [CommonModule,
47
+ FormsModule,
48
+ ReactiveFormsModule,
49
+ // material
50
+ FlexLayoutModule,
51
+ MatButtonModule,
52
+ MatCardModule,
53
+ MatCheckboxModule,
54
+ MatExpansionModule,
55
+ MatIconModule,
56
+ MatInputModule,
57
+ MatSelectModule,
58
+ MatTabsModule,
59
+ MatTooltipModule,
60
+ // Cadmus
61
+ NgToolsModule,
62
+ NgMatToolsModule,
63
+ CadmusStateModule,
64
+ CadmusUiModule,
65
+ CadmusUiPgModule,
66
+ CadmusMatPhysicalSizeModule,
67
+ CadmusRefsAssertedChronotopeModule,
68
+ CadmusRefsHistoricalDateModule,
69
+ CadmusUiFlagsPickerModule], exports: [CodNColDefinitionComponent,
70
+ CodCColDefinitionComponent,
71
+ CodSColDefinitionComponent,
72
+ CodRColDefinitionComponent,
73
+ CodEndleafComponent,
74
+ CodSheetLabelsPartComponent,
75
+ CodLabelCellComponent,
76
+ CodSheetLabelsPartFeatureComponent] });
77
+ CadmusPartCodicologySheetLabelsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: CadmusPartCodicologySheetLabelsModule, imports: [[
78
+ CommonModule,
79
+ FormsModule,
80
+ ReactiveFormsModule,
81
+ // material
82
+ FlexLayoutModule,
83
+ MatButtonModule,
84
+ MatCardModule,
85
+ MatCheckboxModule,
86
+ MatExpansionModule,
87
+ MatIconModule,
88
+ MatInputModule,
89
+ MatSelectModule,
90
+ MatTabsModule,
91
+ MatTooltipModule,
92
+ // Cadmus
93
+ NgToolsModule,
94
+ NgMatToolsModule,
95
+ CadmusStateModule,
96
+ CadmusUiModule,
97
+ CadmusUiPgModule,
98
+ CadmusMatPhysicalSizeModule,
99
+ CadmusRefsAssertedChronotopeModule,
100
+ CadmusRefsHistoricalDateModule,
101
+ CadmusUiFlagsPickerModule,
102
+ ]] });
103
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: CadmusPartCodicologySheetLabelsModule, decorators: [{
104
+ type: NgModule,
105
+ args: [{
106
+ declarations: [
107
+ CodNColDefinitionComponent,
108
+ CodCColDefinitionComponent,
109
+ CodSColDefinitionComponent,
110
+ CodRColDefinitionComponent,
111
+ CodEndleafComponent,
112
+ CodSheetLabelsPartComponent,
113
+ CodLabelCellComponent,
114
+ CodSheetLabelsPartFeatureComponent,
115
+ CellAdapterPipe,
116
+ CellTypeColorPipe,
117
+ ],
118
+ imports: [
119
+ CommonModule,
120
+ FormsModule,
121
+ ReactiveFormsModule,
122
+ // material
123
+ FlexLayoutModule,
124
+ MatButtonModule,
125
+ MatCardModule,
126
+ MatCheckboxModule,
127
+ MatExpansionModule,
128
+ MatIconModule,
129
+ MatInputModule,
130
+ MatSelectModule,
131
+ MatTabsModule,
132
+ MatTooltipModule,
133
+ // Cadmus
134
+ NgToolsModule,
135
+ NgMatToolsModule,
136
+ CadmusStateModule,
137
+ CadmusUiModule,
138
+ CadmusUiPgModule,
139
+ CadmusMatPhysicalSizeModule,
140
+ CadmusRefsAssertedChronotopeModule,
141
+ CadmusRefsHistoricalDateModule,
142
+ CadmusUiFlagsPickerModule,
143
+ ],
144
+ exports: [
145
+ CodNColDefinitionComponent,
146
+ CodCColDefinitionComponent,
147
+ CodSColDefinitionComponent,
148
+ CodRColDefinitionComponent,
149
+ CodEndleafComponent,
150
+ CodSheetLabelsPartComponent,
151
+ CodLabelCellComponent,
152
+ CodSheetLabelsPartFeatureComponent
153
+ ],
154
+ }]
155
+ }] });
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FkbXVzLXBhcnQtY29kaWNvbG9neS1zaGVldC1sYWJlbHMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlybWlkb24vY2FkbXVzLXBhcnQtY29kaWNvbG9neS1zaGVldC1sYWJlbHMvc3JjL2xpYi9jYWRtdXMtcGFydC1jb2RpY29sb2d5LXNoZWV0LWxhYmVscy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXhELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFB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ZUFBZTt3QkFDZixpQkFBaUI7cUJBQ2xCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixXQUFXO3dCQUNYLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixhQUFhO3dCQUNiLGlCQUFpQjt3QkFDakIsa0JBQWtCO3dCQUNsQixhQUFhO3dCQUNiLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixhQUFhO3dCQUNiLGdCQUFnQjt3QkFDaEIsU0FBUzt3QkFDVCxhQUFhO3dCQUNiLGdCQUFnQjt3QkFDaEIsaUJBQWlCO3dCQUNqQixjQUFjO3dCQUNkLGdCQUFnQjt3QkFDaEIsMkJBQTJCO3dCQUMzQixrQ0FBa0M7d0JBQ2xDLDhCQUE4Qjt3QkFDOUIseUJBQXlCO3FCQUMxQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsMEJBQTBCO3dCQUMxQiwwQkFBMEI7d0JBQzFCLDBCQUEwQjt3QkFDMUIsMEJBQTBCO3dCQUMxQixtQkFBbUI7d0JBQ25CLDJCQUEyQjt3QkFDM0IscUJBQXFCO3dCQUNyQixrQ0FBa0M7cUJBQ25DO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBNYXRDYXJkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2FyZCc7XHJcbmltcG9ydCB7IE1hdENoZWNrYm94TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xyXG5pbXBvcnQgeyBNYXRFeHBhbnNpb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9leHBhbnNpb24nO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xyXG5pbXBvcnQgeyBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xyXG5pbXBvcnQgeyBNYXRUYWJzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XHJcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcclxuaW1wb3J0IHsgRmxleExheW91dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2ZsZXgtbGF5b3V0JztcclxuXHJcbmltcG9ydCB7IE5nVG9vbHNNb2R1bGUgfSBmcm9tICdAbXlybWlkb24vbmctdG9vbHMnO1xyXG5pbXBvcnQgeyBOZ01hdFRvb2xzTW9kdWxlIH0gZnJvbSAnQG15cm1pZG9uL25nLW1hdC10b29scyc7XHJcbmltcG9ydCB7IENhZG11c01hdFBoeXNpY2FsU2l6ZU1vZHVsZSB9IGZyb20gJ0BteXJtaWRvbi9jYWRtdXMtbWF0LXBoeXNpY2FsLXNpemUnO1xyXG5pbXBvcnQgeyBDYWRtdXNSZWZzQXNzZXJ0ZWRDaHJvbm90b3BlTW9kdWxlIH0gZnJvbSAnQG15cm1pZG9uL2NhZG11cy1yZWZzLWFzc2VydGVkLWNocm9ub3RvcGUnO1xyXG5pbXBvcnQgeyBDYWRtdXNSZWZzSGlzdG9yaWNhbERhdGVNb2R1bGUgfSBmcm9tICdAbXlybWlkb24vY2FkbXVzLXJlZnMtaGlzdG9yaWNhbC1kYXRlJztcclxuaW1wb3J0IHsgQ2FkbXVzVWlGbGFnc1BpY2tlck1vZHVsZSB9IGZyb20gJ0BteXJtaWRvbi9jYWRtdXMtdWktZmxhZ3MtcGlja2VyJztcclxuaW1wb3J0IHsgQ2FkbXVzU3RhdGVNb2R1bGUgfSBmcm9tICdAbXlybWlkb24vY2FkbXVzLXN0YXRlJztcclxuaW1wb3J0IHsgQ2FkbXVzVWlNb2R1bGUgfSBmcm9tICdAbXlybWlkb24vY2FkbXVzLXVpJztcclxuaW1wb3J0IHsgQ2FkbXVzVWlQZ01vZHVsZSB9IGZyb20gJ0BteXJtaWRvbi9jYWRtdXMtdWktcGcnO1xyXG5cclxuaW1wb3J0IHsgQ29kTkNvbERlZmluaXRpb25Db21wb25lbnQgfSBmcm9tICcuL2NvZC1uLWNvbC1kZWZpbml0aW9uL2NvZC1uLWNvbC1kZWZpbml0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvZENDb2xEZWZpbml0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9jb2QtYy1jb2wtZGVmaW5pdGlvbi9jb2QtYy1jb2wtZGVmaW5pdGlvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb2RTQ29sRGVmaW5pdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vY29kLXMtY29sLWRlZmluaXRpb24vY29kLXMtY29sLWRlZmluaXRpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29kUkNvbERlZmluaXRpb25Db21wb25lbnQgfSBmcm9tICcuL2NvZC1yLWNvbC1kZWZpbml0aW9uL2NvZC1yLWNvbC1kZWZpbml0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvZEVuZGxlYWZDb21wb25lbnQgfSBmcm9tICcuL2NvZC1lbmRsZWFmL2NvZC1lbmRsZWFmLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvZFNoZWV0TGFiZWxzUGFydENvbXBvbmVudCB9IGZyb20gJy4vY29kLXNoZWV0LWxhYmVscy1wYXJ0L2NvZC1zaGVldC1sYWJlbHMtcGFydC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb2RMYWJlbENlbGxDb21wb25lbnQgfSBmcm9tICcuL2NvZC1sYWJlbC1jZWxsL2NvZC1sYWJlbC1jZWxsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvZFNoZWV0TGFiZWxzUGFydEZlYXR1cmVDb21wb25lbnQgfSBmcm9tICcuL2NvZC1zaGVldC1sYWJlbHMtcGFydC1mZWF0dXJlL2NvZC1zaGVldC1sYWJlbHMtcGFydC1mZWF0dXJlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENlbGxBZGFwdGVyUGlwZSB9IGZyb20gJy4vY29kLXNoZWV0LWxhYmVscy1wYXJ0L2NlbGwtYWRhcHRlci5waXBlJztcclxuaW1wb3J0IHsgQ2VsbFR5cGVDb2xvclBpcGUgfSBmcm9tICcuL2NvZC1zaGVldC1sYWJlbHMtcGFydC9jZWxsLXR5cGUtY29sb3IucGlwZSc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgQ29kTkNvbERlZmluaXRpb25Db21wb25lbnQsXHJcbiAgICBDb2RDQ29sRGVmaW5pdGlvbkNvbXBvbmVudCxcclxuICAgIENvZFNDb2xEZWZpbml0aW9uQ29tcG9uZW50LFxyXG4gICAgQ29kUkNvbERlZmluaXRpb25Db21wb25lbnQsXHJcbiAgICBDb2RFbmRsZWFmQ29tcG9uZW50LFxyXG4gICAgQ29kU2hlZXRMYWJlbHNQYXJ0Q29tcG9uZW50LFxyXG4gICAgQ29kTGFiZWxDZWxsQ29tcG9uZW50LFxyXG4gICAgQ29kU2hlZXRMYWJlbHNQYXJ0RmVhdHVyZUNvbXBvbmVudCxcclxuICAgIENlbGxBZGFwdGVyUGlwZSxcclxuICAgIENlbGxUeXBlQ29sb3JQaXBlLFxyXG4gIF0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgLy8gbWF0ZXJpYWxcclxuICAgIEZsZXhMYXlvdXRNb2R1bGUsXHJcbiAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICBNYXRDYXJkTW9kdWxlLFxyXG4gICAgTWF0Q2hlY2tib3hNb2R1bGUsXHJcbiAgICBNYXRFeHBhbnNpb25Nb2R1bGUsXHJcbiAgICBNYXRJY29uTW9kdWxlLFxyXG4gICAgTWF0SW5wdXRNb2R1bGUsXHJcbiAgICBNYXRTZWxlY3RNb2R1bGUsXHJcbiAgICBNYXRUYWJzTW9kdWxlLFxyXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcclxuICAgIC8vIENhZG11c1xyXG4gICAgTmdUb29sc01vZHVsZSxcclxuICAgIE5nTWF0VG9vbHNNb2R1bGUsXHJcbiAgICBDYWRtdXNTdGF0ZU1vZHVsZSxcclxuICAgIENhZG11c1VpTW9kdWxlLFxyXG4gICAgQ2FkbXVzVWlQZ01vZHVsZSxcclxuICAgIENhZG11c01hdFBoeXNpY2FsU2l6ZU1vZHVsZSxcclxuICAgIENhZG11c1JlZnNBc3NlcnRlZENocm9ub3RvcGVNb2R1bGUsXHJcbiAgICBDYWRtdXNSZWZzSGlzdG9yaWNhbERhdGVNb2R1bGUsXHJcbiAgICBDYWRtdXNVaUZsYWdzUGlja2VyTW9kdWxlLFxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgQ29kTkNvbERlZmluaXRpb25Db21wb25lbnQsXHJcbiAgICBDb2RDQ29sRGVmaW5pdGlvbkNvbXBvbmVudCxcclxuICAgIENvZFNDb2xEZWZpbml0aW9uQ29tcG9uZW50LFxyXG4gICAgQ29kUkNvbERlZmluaXRpb25Db21wb25lbnQsXHJcbiAgICBDb2RFbmRsZWFmQ29tcG9uZW50LFxyXG4gICAgQ29kU2hlZXRMYWJlbHNQYXJ0Q29tcG9uZW50LFxyXG4gICAgQ29kTGFiZWxDZWxsQ29tcG9uZW50LFxyXG4gICAgQ29kU2hlZXRMYWJlbHNQYXJ0RmVhdHVyZUNvbXBvbmVudFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDYWRtdXNQYXJ0Q29kaWNvbG9neVNoZWV0TGFiZWxzTW9kdWxlIHt9XHJcbiJdfQ==
@@ -0,0 +1,95 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { Validators, } from '@angular/forms';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/forms";
5
+ import * as i2 from "@angular/material/form-field";
6
+ import * as i3 from "@angular/material/select";
7
+ import * as i4 from "@angular/material/core";
8
+ import * as i5 from "@angular/material/checkbox";
9
+ import * as i6 from "@angular/material/button";
10
+ import * as i7 from "@angular/material/icon";
11
+ import * as i8 from "@angular/material/input";
12
+ import * as i9 from "@angular/common";
13
+ import * as i10 from "@angular/material/tooltip";
14
+ export class CodCColDefinitionComponent {
15
+ constructor(formBuilder) {
16
+ this.definitionChange = new EventEmitter();
17
+ this.editorClose = new EventEmitter();
18
+ // form
19
+ this.id = '';
20
+ this.rank = formBuilder.control(0);
21
+ this.position = formBuilder.control(null, [
22
+ Validators.required,
23
+ Validators.maxLength(50),
24
+ ]);
25
+ this.isVertical = formBuilder.control(false);
26
+ this.decoration = formBuilder.control(null, Validators.maxLength(1000));
27
+ this.note = formBuilder.control(null, Validators.maxLength(1000));
28
+ this.form = formBuilder.group({
29
+ rank: this.rank,
30
+ position: this.position,
31
+ isVertical: this.isVertical,
32
+ decoration: this.decoration,
33
+ note: this.note,
34
+ });
35
+ }
36
+ get definition() {
37
+ return this._definition;
38
+ }
39
+ set definition(value) {
40
+ this._definition = value;
41
+ this.updateForm(value);
42
+ }
43
+ ngOnInit() {
44
+ if (this._definition) {
45
+ this.updateForm(this._definition);
46
+ }
47
+ }
48
+ updateForm(model) {
49
+ if (!model) {
50
+ this.form.reset();
51
+ return;
52
+ }
53
+ this.id = model.id;
54
+ this.rank.setValue(model.rank || 0);
55
+ this.position.setValue(model.position);
56
+ this.isVertical.setValue(model.isVertical ? true : false);
57
+ this.decoration.setValue(model.decoration);
58
+ this.note.setValue(model.note);
59
+ this.form.markAsPristine();
60
+ }
61
+ getModel() {
62
+ return {
63
+ id: this.id,
64
+ rank: +this.rank.value || 0,
65
+ position: this.position.value?.trim(),
66
+ isVertical: this.isVertical.value ? true : false,
67
+ decoration: this.decoration.value?.trim(),
68
+ note: this.note.value?.trim(),
69
+ };
70
+ }
71
+ cancel() {
72
+ this.editorClose.emit();
73
+ }
74
+ save() {
75
+ if (this.form.invalid) {
76
+ return;
77
+ }
78
+ this.definitionChange.emit(this.getModel());
79
+ }
80
+ }
81
+ CodCColDefinitionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: CodCColDefinitionComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
82
+ CodCColDefinitionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: CodCColDefinitionComponent, selector: "cadmus-cod-c-col-definition", inputs: { definition: "definition", posEntries: "posEntries" }, outputs: { definitionChange: "definitionChange", editorClose: "editorClose" }, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <div class=\"form-row\">\r\n <!-- rank -->\r\n <mat-form-field style=\"width: 4em\">\r\n <input\r\n matInput\r\n [formControl]=\"rank\"\r\n placeholder=\"rank\"\r\n type=\"number\"\r\n min=\"0\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"form-row\">\r\n <!-- position (bound) -->\r\n <mat-form-field *ngIf=\"posEntries?.length\" class=\"form-col\">\r\n <mat-select [formControl]=\"position\" placeholder=\"position\">\r\n <mat-option *ngFor=\"let e of posEntries\" [value]=\"e.id\">{{\r\n e.value\r\n }}</mat-option>\r\n </mat-select>\r\n <mat-error\r\n *ngIf=\"\r\n $any(position).errors?.required &&\r\n (position.dirty || position.touched)\r\n \"\r\n >position required</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- position (free) -->\r\n <mat-form-field *ngIf=\"!posEntries?.length\" class=\"form-col\">\r\n <input matInput [formControl]=\"position\" placeholder=\"position\" />\r\n <mat-error\r\n *ngIf=\"\r\n $any(position).errors?.required &&\r\n (position.dirty || position.touched)\r\n \"\r\n >position required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"\r\n $any(position).errors?.maxLength &&\r\n (position.dirty || position.touched)\r\n \"\r\n >position too long</mat-error\r\n >\r\n </mat-form-field>\r\n\r\n <!-- isVertical -->\r\n <mat-checkbox [formControl]=\"isVertical\">vertical</mat-checkbox>\r\n </div>\r\n\r\n <div>\r\n <!-- decoration -->\r\n <mat-form-field class=\"long-text\">\r\n <input matInput [formControl]=\"decoration\" placeholder=\"decoration\" />\r\n <mat-error\r\n *ngIf=\"\r\n $any(decoration).errors?.maxLength &&\r\n (decoration.dirty || decoration.touched)\r\n \"\r\n >decoration too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n\r\n <div>\r\n <!-- note -->\r\n <mat-form-field class=\"long-text\">\r\n <input matInput [formControl]=\"note\" placeholder=\"note\" />\r\n <mat-error\r\n *ngIf=\"$any(note).errors?.maxLength && (note.dirty || note.touched)\"\r\n >note too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n\r\n <!-- buttons -->\r\n <div>\r\n <button\r\n type=\"button\"\r\n color=\"warn\"\r\n mat-icon-button\r\n matTooltip=\"Discard changes\"\r\n (click)=\"cancel()\"\r\n >\r\n <mat-icon>clear</mat-icon>\r\n </button>\r\n <button\r\n type=\"submit\"\r\n color=\"primary\"\r\n mat-icon-button\r\n matTooltip=\"Accept changes\"\r\n [disabled]=\"form.invalid || form.pristine\"\r\n >\r\n <mat-icon>check_circle</mat-icon>\r\n </button>\r\n </div>\r\n</form>\r\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}.long-text{width:100%;max-width:800px}\n"], components: [{ type: i2.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i3.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i4.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i5.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i6.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i8.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"] }, { type: i1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { 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]" }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.MatError, selector: "mat-error", inputs: ["id"] }, { type: i10.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
83
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: CodCColDefinitionComponent, decorators: [{
84
+ type: Component,
85
+ args: [{ selector: 'cadmus-cod-c-col-definition', template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <div class=\"form-row\">\r\n <!-- rank -->\r\n <mat-form-field style=\"width: 4em\">\r\n <input\r\n matInput\r\n [formControl]=\"rank\"\r\n placeholder=\"rank\"\r\n type=\"number\"\r\n min=\"0\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"form-row\">\r\n <!-- position (bound) -->\r\n <mat-form-field *ngIf=\"posEntries?.length\" class=\"form-col\">\r\n <mat-select [formControl]=\"position\" placeholder=\"position\">\r\n <mat-option *ngFor=\"let e of posEntries\" [value]=\"e.id\">{{\r\n e.value\r\n }}</mat-option>\r\n </mat-select>\r\n <mat-error\r\n *ngIf=\"\r\n $any(position).errors?.required &&\r\n (position.dirty || position.touched)\r\n \"\r\n >position required</mat-error\r\n >\r\n </mat-form-field>\r\n <!-- position (free) -->\r\n <mat-form-field *ngIf=\"!posEntries?.length\" class=\"form-col\">\r\n <input matInput [formControl]=\"position\" placeholder=\"position\" />\r\n <mat-error\r\n *ngIf=\"\r\n $any(position).errors?.required &&\r\n (position.dirty || position.touched)\r\n \"\r\n >position required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"\r\n $any(position).errors?.maxLength &&\r\n (position.dirty || position.touched)\r\n \"\r\n >position too long</mat-error\r\n >\r\n </mat-form-field>\r\n\r\n <!-- isVertical -->\r\n <mat-checkbox [formControl]=\"isVertical\">vertical</mat-checkbox>\r\n </div>\r\n\r\n <div>\r\n <!-- decoration -->\r\n <mat-form-field class=\"long-text\">\r\n <input matInput [formControl]=\"decoration\" placeholder=\"decoration\" />\r\n <mat-error\r\n *ngIf=\"\r\n $any(decoration).errors?.maxLength &&\r\n (decoration.dirty || decoration.touched)\r\n \"\r\n >decoration too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n\r\n <div>\r\n <!-- note -->\r\n <mat-form-field class=\"long-text\">\r\n <input matInput [formControl]=\"note\" placeholder=\"note\" />\r\n <mat-error\r\n *ngIf=\"$any(note).errors?.maxLength && (note.dirty || note.touched)\"\r\n >note too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n\r\n <!-- buttons -->\r\n <div>\r\n <button\r\n type=\"button\"\r\n color=\"warn\"\r\n mat-icon-button\r\n matTooltip=\"Discard changes\"\r\n (click)=\"cancel()\"\r\n >\r\n <mat-icon>clear</mat-icon>\r\n </button>\r\n <button\r\n type=\"submit\"\r\n color=\"primary\"\r\n mat-icon-button\r\n matTooltip=\"Accept changes\"\r\n [disabled]=\"form.invalid || form.pristine\"\r\n >\r\n <mat-icon>check_circle</mat-icon>\r\n </button>\r\n </div>\r\n</form>\r\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}.long-text{width:100%;max-width:800px}\n"] }]
86
+ }], ctorParameters: function () { return [{ type: i1.FormBuilder }]; }, propDecorators: { definition: [{
87
+ type: Input
88
+ }], posEntries: [{
89
+ type: Input
90
+ }], definitionChange: [{
91
+ type: Output
92
+ }], editorClose: [{
93
+ type: Output
94
+ }] } });
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kLWMtY29sLWRlZmluaXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlybWlkb24vY2FkbXVzLXBhcnQtY29kaWNvbG9neS1zaGVldC1sYWJlbHMvc3JjL2xpYi9jb2QtYy1jb2wtZGVmaW5pdGlvbi9jb2QtYy1jb2wtZGVmaW5pdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJtaWRvbi9jYWRtdXMtcGFydC1jb2RpY29sb2d5LXNoZWV0LWxhYmVscy9zcmMvbGliL2NvZC1jLWNvbC1kZWZpbml0aW9uL2NvZC1jLWNvbC1kZWZpbml0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUlMLFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7QUFXeEIsTUFBTSxPQUFPLDBCQUEwQjtJQTZCckMsWUFBWSxXQUF3QjtRQUNsQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQXFCLENBQUM7UUFDOUQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQzNDLE9BQU87UUFDUCxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUNiLElBQUksQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFO1lBQ3hDLFVBQVUsQ0FBQyxRQUFRO1lBQ25CLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1NBQ3pCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxVQUFVLEdB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QUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDOUMsQ0FBQzs7dUhBNUZVLDBCQUEwQjsyR0FBMUIsMEJBQTBCLGtOQ2pCdkMscTVGQW9HQTsyRkRuRmEsMEJBQTBCO2tCQUx0QyxTQUFTOytCQUNFLDZCQUE2QjtrR0FRNUIsVUFBVTtzQkFEcEIsS0FBSztnQkFXQyxVQUFVO3NCQURoQixLQUFLO2dCQUlDLGdCQUFnQjtzQkFEdEIsTUFBTTtnQkFHQSxXQUFXO3NCQURqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEZvcm1CdWlsZGVyLFxyXG4gIEZvcm1Db250cm9sLFxyXG4gIEZvcm1Hcm91cCxcclxuICBWYWxpZGF0b3JzLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmltcG9ydCB7IFRoZXNhdXJ1c0VudHJ5IH0gZnJvbSAnQG15cm1pZG9uL2NhZG11cy1jb3JlJztcclxuXHJcbmltcG9ydCB7IENvZENDb2xEZWZpbml0aW9uIH0gZnJvbSAnLi4vY29kLXNoZWV0LWxhYmVscy1wYXJ0JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY2FkbXVzLWNvZC1jLWNvbC1kZWZpbml0aW9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29kLWMtY29sLWRlZmluaXRpb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NvZC1jLWNvbC1kZWZpbml0aW9uLmNvbXBvbmVudC5jc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIENvZENDb2xEZWZpbml0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBwcml2YXRlIF9kZWZpbml0aW9uOiBDb2RDQ29sRGVmaW5pdGlvbiB8IHVuZGVmaW5lZDtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZ2V0IGRlZmluaXRpb24oKTogQ29kQ0NvbERlZmluaXRpb24gfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RlZmluaXRpb247XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgZGVmaW5pdGlvbih2YWx1ZTogQ29kQ0NvbERlZmluaXRpb24gfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuX2RlZmluaXRpb24gPSB2YWx1ZTtcclxuICAgIHRoaXMudXBkYXRlRm9ybSh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICAvLyBjb2QtY2F0Y2h3b3Jkcy1wb3NpdGlvbnNcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBwb3NFbnRyaWVzOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgZGVmaW5pdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPENvZENDb2xEZWZpbml0aW9uPjtcclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgZWRpdG9yQ2xvc2U6IEV2ZW50RW1pdHRlcjxhbnk+O1xyXG5cclxuICBwdWJsaWMgaWQ6IHN0cmluZztcclxuICBwdWJsaWMgcmFuazogRm9ybUNvbnRyb2w7XHJcbiAgcHVibGljIHBvc2l0aW9uOiBGb3JtQ29udHJvbDtcclxuICBwdWJsaWMgaXNWZXJ0aWNhbDogRm9ybUNvbnRyb2w7XHJcbiAgcHVibGljIGRlY29yYXRpb246IEZvcm1Db250cm9sO1xyXG4gIHB1YmxpYyBub3RlOiBGb3JtQ29udHJvbDtcclxuICBwdWJsaWMgZm9ybTogRm9ybUdyb3VwO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIpIHtcclxuICAgIHRoaXMuZGVmaW5pdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q29kQ0NvbERlZmluaXRpb24+KCk7XHJcbiAgICB0aGlzLmVkaXRvckNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICAvLyBmb3JtXHJcbiAgICB0aGlzLmlkID0gJyc7XHJcbiAgICB0aGlzLnJhbmsgPSBmb3JtQnVpbGRlci5jb250cm9sKDApO1xyXG4gICAgdGhpcy5wb3NpdGlvbiA9IGZvcm1CdWlsZGVyLmNvbnRyb2wobnVsbCwgW1xyXG4gICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICBWYWxpZGF0b3JzLm1heExlbmd0aCg1MCksXHJcbiAgICBdKTtcclxuICAgIHRoaXMuaXNWZXJ0aWNhbCA9IGZvcm1CdWlsZGVyLmNvbnRyb2woZmFsc2UpO1xyXG4gICAgdGhpcy5kZWNvcmF0aW9uID0gZm9ybUJ1aWxkZXIuY29udHJvbChudWxsLCBWYWxpZGF0b3JzLm1heExlbmd0aCgxMDAwKSk7XHJcbiAgICB0aGlzLm5vdGUgPSBmb3JtQnVpbGRlci5jb250cm9sKG51bGwsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEwMDApKTtcclxuICAgIHRoaXMuZm9ybSA9IGZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgcmFuazogdGhpcy5yYW5rLFxyXG4gICAgICBwb3NpdGlvbjogdGhpcy5wb3NpdGlvbixcclxuICAgICAgaXNWZXJ0aWNhbDogdGhpcy5pc1ZlcnRpY2FsLFxyXG4gICAgICBkZWNvcmF0aW9uOiB0aGlzLmRlY29yYXRpb24sXHJcbiAgICAgIG5vdGU6IHRoaXMubm90ZSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fZGVmaW5pdGlvbikge1xyXG4gICAgICB0aGlzLnVwZGF0ZUZvcm0odGhpcy5fZGVmaW5pdGlvbik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZUZvcm0obW9kZWw6IENvZENDb2xEZWZpbml0aW9uIHwgdW5kZWZpbmVkKTogdm9pZCB7XHJcbiAgICBpZiAoIW1vZGVsKSB7XHJcbiAgICAgIHRoaXMuZm9ybS5yZXNldCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pZCA9IG1vZGVsLmlkO1xyXG4gICAgdGhpcy5yYW5rLnNldFZhbHVlKG1vZGVsLnJhbmsgfHwgMCk7XHJcbiAgICB0aGlzLnBvc2l0aW9uLnNldFZhbHVlKG1vZGVsLnBvc2l0aW9uKTtcclxuICAgIHRoaXMuaXNWZXJ0aWNhbC5zZXRWYWx1ZShtb2RlbC5pc1ZlcnRpY2FsID8gdHJ1ZSA6IGZhbHNlKTtcclxuICAgIHRoaXMuZGVjb3JhdGlvbi5zZXRWYWx1ZShtb2RlbC5kZWNvcmF0aW9uKTtcclxuICAgIHRoaXMubm90ZS5zZXRWYWx1ZShtb2RlbC5ub3RlKTtcclxuICAgIHRoaXMuZm9ybS5tYXJrQXNQcmlzdGluZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRNb2RlbCgpOiBDb2RDQ29sRGVmaW5pdGlvbiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBpZDogdGhpcy5pZCxcclxuICAgICAgcmFuazogK3RoaXMucmFuay52YWx1ZSB8fCAwLFxyXG4gICAgICBwb3NpdGlvbjogdGhpcy5wb3NpdGlvbi52YWx1ZT8udHJpbSgpLFxyXG4gICAgICBpc1ZlcnRpY2FsOiB0aGlzLmlzVmVydGljYWwudmFsdWUgPyB0cnVlIDogZmFsc2UsXHJcbiAgICAgIGRlY29yYXRpb246IHRoaXMuZGVjb3JhdGlvbi52YWx1ZT8udHJpbSgpLFxyXG4gICAgICBub3RlOiB0aGlzLm5vdGUudmFsdWU/LnRyaW0oKSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2FuY2VsKCk6IHZvaWQge1xyXG4gICAgdGhpcy5lZGl0b3JDbG9zZS5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2F2ZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmZvcm0uaW52YWxpZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmRlZmluaXRpb25DaGFuZ2UuZW1pdCh0aGlzLmdldE1vZGVsKCkpO1xyXG4gIH1cclxufVxyXG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiAoc3VibWl0KT1cInNhdmUoKVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJmb3JtLXJvd1wiPlxyXG4gICAgPCEtLSByYW5rIC0tPlxyXG4gICAgPG1hdC1mb3JtLWZpZWxkIHN0eWxlPVwid2lkdGg6IDRlbVwiPlxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJyYW5rXCJcclxuICAgICAgICBwbGFjZWhvbGRlcj1cInJhbmtcIlxyXG4gICAgICAgIHR5cGU9XCJudW1iZXJcIlxyXG4gICAgICAgIG1pbj1cIjBcIlxyXG4gICAgICAvPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImZvcm0tcm93XCI+XHJcbiAgICA8IS0tIHBvc2l0aW9uIChib3VuZCkgLS0+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQgKm5nSWY9XCJwb3NFbnRyaWVzPy5sZW5ndGhcIiBjbGFzcz1cImZvcm0tY29sXCI+XHJcbiAgICAgIDxtYXQtc2VsZWN0IFtmb3JtQ29udHJvbF09XCJwb3NpdGlvblwiIHBsYWNlaG9sZGVyPVwicG9zaXRpb25cIj5cclxuICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgZSBvZiBwb3NFbnRyaWVzXCIgW3ZhbHVlXT1cImUuaWRcIj57e1xyXG4gICAgICAgICAgZS52YWx1ZVxyXG4gICAgICAgIH19PC9tYXQtb3B0aW9uPlxyXG4gICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgJGFueShwb3NpdGlvbikuZXJyb3JzPy5yZXF1aXJlZCAmJlxyXG4gICAgICAgICAgKHBvc2l0aW9uLmRpcnR5IHx8IHBvc2l0aW9uLnRvdWNoZWQpXHJcbiAgICAgICAgXCJcclxuICAgICAgICA+cG9zaXRpb24gcmVxdWlyZWQ8L21hdC1lcnJvclxyXG4gICAgICA+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPCEtLSBwb3NpdGlvbiAoZnJlZSkgLS0+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQgKm5nSWY9XCIhcG9zRW50cmllcz8ubGVuZ3RoXCIgY2xhc3M9XCJmb3JtLWNvbFwiPlxyXG4gICAgICA8aW5wdXQgbWF0SW5wdXQgW2Zvcm1Db250cm9sXT1cInBvc2l0aW9uXCIgcGxhY2Vob2xkZXI9XCJwb3NpdGlvblwiIC8+XHJcbiAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgJGFueShwb3NpdGlvbikuZXJyb3JzPy5yZXF1aXJlZCAmJlxyXG4gICAgICAgICAgKHBvc2l0aW9uLmRpcnR5IHx8IHBvc2l0aW9uLnRvdWNoZWQpXHJcbiAgICAgICAgXCJcclxuICAgICAgICA+cG9zaXRpb24gcmVxdWlyZWQ8L21hdC1lcnJvclxyXG4gICAgICA+XHJcbiAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgJGFueShwb3NpdGlvbikuZXJyb3JzPy5tYXhMZW5ndGggJiZcclxuICAgICAgICAgIChwb3NpdGlvbi5kaXJ0eSB8fCBwb3NpdGlvbi50b3VjaGVkKVxyXG4gICAgICAgIFwiXHJcbiAgICAgICAgPnBvc2l0aW9uIHRvbyBsb25nPC9tYXQtZXJyb3JcclxuICAgICAgPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgICA8IS0tIGlzVmVydGljYWwgLS0+XHJcbiAgICA8bWF0LWNoZWNrYm94IFtmb3JtQ29udHJvbF09XCJpc1ZlcnRpY2FsXCI+dmVydGljYWw8L21hdC1jaGVja2JveD5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdj5cclxuICAgIDwhLS0gZGVjb3JhdGlvbiAtLT5cclxuICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImxvbmctdGV4dFwiPlxyXG4gICAgICA8aW5wdXQgbWF0SW5wdXQgW2Zvcm1Db250cm9sXT1cImRlY29yYXRpb25cIiBwbGFjZWhvbGRlcj1cImRlY29yYXRpb25cIiAvPlxyXG4gICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICRhbnkoZGVjb3JhdGlvbikuZXJyb3JzPy5tYXhMZW5ndGggJiZcclxuICAgICAgICAgIChkZWNvcmF0aW9uLmRpcnR5IHx8IGRlY29yYXRpb24udG91Y2hlZClcclxuICAgICAgICBcIlxyXG4gICAgICAgID5kZWNvcmF0aW9uIHRvbyBsb25nPC9tYXQtZXJyb3JcclxuICAgICAgPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdj5cclxuICAgIDwhLS0gbm90ZSAtLT5cclxuICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImxvbmctdGV4dFwiPlxyXG4gICAgICA8aW5wdXQgbWF0SW5wdXQgW2Zvcm1Db250cm9sXT1cIm5vdGVcIiBwbGFjZWhvbGRlcj1cIm5vdGVcIiAvPlxyXG4gICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgKm5nSWY9XCIkYW55KG5vdGUpLmVycm9ycz8ubWF4TGVuZ3RoICYmIChub3RlLmRpcnR5IHx8IG5vdGUudG91Y2hlZClcIlxyXG4gICAgICAgID5ub3RlIHRvbyBsb25nPC9tYXQtZXJyb3JcclxuICAgICAgPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBidXR0b25zIC0tPlxyXG4gIDxkaXY+XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICBjb2xvcj1cIndhcm5cIlxyXG4gICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgbWF0VG9vbHRpcD1cIkRpc2NhcmQgY2hhbmdlc1wiXHJcbiAgICAgIChjbGljayk9XCJjYW5jZWwoKVwiXHJcbiAgICA+XHJcbiAgICAgIDxtYXQtaWNvbj5jbGVhcjwvbWF0LWljb24+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxidXR0b25cclxuICAgICAgdHlwZT1cInN1Ym1pdFwiXHJcbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICBtYXRUb29sdGlwPVwiQWNjZXB0IGNoYW5nZXNcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkIHx8IGZvcm0ucHJpc3RpbmVcIlxyXG4gICAgPlxyXG4gICAgICA8bWF0LWljb24+Y2hlY2tfY2lyY2xlPC9tYXQtaWNvbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG48L2Zvcm0+XHJcbiJdfQ==
@@ -0,0 +1,102 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { Validators, } from '@angular/forms';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/forms";
5
+ import * as i2 from "@angular/material/form-field";
6
+ import * as i3 from "@angular/material/select";
7
+ import * as i4 from "@angular/material/core";
8
+ import * as i5 from "@myrmidon/cadmus-refs-asserted-chronotope";
9
+ import * as i6 from "@angular/material/button";
10
+ import * as i7 from "@angular/material/icon";
11
+ import * as i8 from "@angular/common";
12
+ import * as i9 from "@angular/material/input";
13
+ import * as i10 from "@angular/material/tooltip";
14
+ export class CodEndleafComponent {
15
+ constructor(formBuilder) {
16
+ this.endleafChange = new EventEmitter();
17
+ this.editorClose = new EventEmitter();
18
+ this.locations = [];
19
+ // form
20
+ this.location = formBuilder.control(null, [
21
+ Validators.required,
22
+ Validators.maxLength(50),
23
+ ]);
24
+ this.material = formBuilder.control(null, [
25
+ Validators.required,
26
+ Validators.maxLength(50),
27
+ ]);
28
+ this.chronotope = formBuilder.control(null);
29
+ this.form = formBuilder.group({
30
+ location: this.location,
31
+ material: this.material,
32
+ chronotope: this.chronotope,
33
+ });
34
+ }
35
+ get endleaf() {
36
+ return this._endleaf;
37
+ }
38
+ set endleaf(value) {
39
+ this._endleaf = value;
40
+ this.updateForm(value);
41
+ }
42
+ ngOnInit() {
43
+ if (this._endleaf) {
44
+ this.updateForm(this._endleaf);
45
+ }
46
+ }
47
+ updateForm(model) {
48
+ if (!model) {
49
+ this.form.reset();
50
+ return;
51
+ }
52
+ this.location.setValue(model.location);
53
+ this.material.setValue(model.material);
54
+ this.initialChronotope = model.chronotope;
55
+ this.form.markAsPristine();
56
+ }
57
+ onChronotopeChange(chronotope) {
58
+ this.chronotope.setValue(chronotope);
59
+ this.chronotope.markAsDirty();
60
+ }
61
+ getModel() {
62
+ return {
63
+ location: this.location.value?.trim(),
64
+ material: this.material.value?.trim(),
65
+ chronotope: this.chronotope.value,
66
+ };
67
+ }
68
+ cancel() {
69
+ this.editorClose.emit();
70
+ }
71
+ save() {
72
+ if (this.form.invalid) {
73
+ return;
74
+ }
75
+ this.endleafChange.emit(this.getModel());
76
+ }
77
+ }
78
+ CodEndleafComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: CodEndleafComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
79
+ CodEndleafComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: CodEndleafComponent, selector: "cadmus-cod-endleaf", inputs: { endleaf: "endleaf", matEntries: "matEntries", ctTagEntries: "ctTagEntries", assTagEntries: "assTagEntries", refTypeEntries: "refTypeEntries", refTagEntries: "refTagEntries", locations: "locations" }, outputs: { endleafChange: "endleafChange", editorClose: "editorClose" }, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\n <div class=\"form-row\">\n <!-- location -->\n <mat-form-field>\n <mat-select [formControl]=\"location\" placeholder=\"location\">\n <mat-option *ngFor=\"let l of locations\" [value]=\"l\">{{ l }}</mat-option>\n </mat-select>\n <mat-error\n *ngIf=\"\n $any(location).errors?.required &&\n (location.dirty || location.touched)\n \"\n >location required</mat-error\n >\n </mat-form-field>\n\n <!-- material (bound) -->\n <mat-form-field *ngIf=\"matEntries?.length\" class=\"form-col\">\n <mat-select [formControl]=\"material\" placeholder=\"material\">\n <mat-option *ngFor=\"let e of matEntries\" [value]=\"e.id\">{{\n e.value\n }}</mat-option>\n </mat-select>\n <mat-error\n *ngIf=\"\n $any(material).errors?.required &&\n (material.dirty || material.touched)\n \"\n >material required</mat-error\n >\n </mat-form-field>\n <!-- material (free) -->\n <mat-form-field *ngIf=\"!matEntries?.length\" class=\"form-col\">\n <input matInput [formControl]=\"material\" placeholder=\"material\" />\n <mat-error\n *ngIf=\"\n $any(material).errors?.required &&\n (material.dirty || material.touched)\n \"\n >material required</mat-error\n >\n <mat-error\n *ngIf=\"\n $any(material).errors?.maxLength &&\n (material.dirty || material.touched)\n \"\n >material too long</mat-error\n >\n </mat-form-field>\n </div>\n\n <!-- chronotope -->\n <cadmus-refs-asserted-chronotope\n [tagEntries]=\"ctTagEntries\"\n [assTagEntries]=\"assTagEntries\"\n [refTagEntries]=\"refTagEntries\"\n [refTypeEntries]=\"refTypeEntries\"\n [chronotope]=\"initialChronotope\"\n (chronotopeChange)=\"onChronotopeChange($event)\"\n >\n </cadmus-refs-asserted-chronotope>\n\n <!-- buttons -->\n <div>\n <button\n type=\"button\"\n color=\"warn\"\n mat-icon-button\n matTooltip=\"Discard changes\"\n (click)=\"cancel()\"\n >\n <mat-icon>clear</mat-icon>\n </button>\n <button\n type=\"submit\"\n color=\"primary\"\n mat-icon-button\n matTooltip=\"Accept changes\"\n [disabled]=\"form.invalid || form.pristine\"\n >\n <mat-icon>check_circle</mat-icon>\n </button>\n </div>\n</form>\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}.long-text{width:100%;max-width:800px}\n"], components: [{ type: i2.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i3.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i4.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i5.AssertedChronotopeComponent, selector: "cadmus-refs-asserted-chronotope", inputs: ["chronotope", "tagEntries", "assTagEntries", "refTypeEntries", "refTagEntries"], outputs: ["chronotopeChange"] }, { type: i6.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.MatError, selector: "mat-error", inputs: ["id"] }, { type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { 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]" }, { type: i10.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
80
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: CodEndleafComponent, decorators: [{
81
+ type: Component,
82
+ args: [{ selector: 'cadmus-cod-endleaf', template: "<form [formGroup]=\"form\" (submit)=\"save()\">\n <div class=\"form-row\">\n <!-- location -->\n <mat-form-field>\n <mat-select [formControl]=\"location\" placeholder=\"location\">\n <mat-option *ngFor=\"let l of locations\" [value]=\"l\">{{ l }}</mat-option>\n </mat-select>\n <mat-error\n *ngIf=\"\n $any(location).errors?.required &&\n (location.dirty || location.touched)\n \"\n >location required</mat-error\n >\n </mat-form-field>\n\n <!-- material (bound) -->\n <mat-form-field *ngIf=\"matEntries?.length\" class=\"form-col\">\n <mat-select [formControl]=\"material\" placeholder=\"material\">\n <mat-option *ngFor=\"let e of matEntries\" [value]=\"e.id\">{{\n e.value\n }}</mat-option>\n </mat-select>\n <mat-error\n *ngIf=\"\n $any(material).errors?.required &&\n (material.dirty || material.touched)\n \"\n >material required</mat-error\n >\n </mat-form-field>\n <!-- material (free) -->\n <mat-form-field *ngIf=\"!matEntries?.length\" class=\"form-col\">\n <input matInput [formControl]=\"material\" placeholder=\"material\" />\n <mat-error\n *ngIf=\"\n $any(material).errors?.required &&\n (material.dirty || material.touched)\n \"\n >material required</mat-error\n >\n <mat-error\n *ngIf=\"\n $any(material).errors?.maxLength &&\n (material.dirty || material.touched)\n \"\n >material too long</mat-error\n >\n </mat-form-field>\n </div>\n\n <!-- chronotope -->\n <cadmus-refs-asserted-chronotope\n [tagEntries]=\"ctTagEntries\"\n [assTagEntries]=\"assTagEntries\"\n [refTagEntries]=\"refTagEntries\"\n [refTypeEntries]=\"refTypeEntries\"\n [chronotope]=\"initialChronotope\"\n (chronotopeChange)=\"onChronotopeChange($event)\"\n >\n </cadmus-refs-asserted-chronotope>\n\n <!-- buttons -->\n <div>\n <button\n type=\"button\"\n color=\"warn\"\n mat-icon-button\n matTooltip=\"Discard changes\"\n (click)=\"cancel()\"\n >\n <mat-icon>clear</mat-icon>\n </button>\n <button\n type=\"submit\"\n color=\"primary\"\n mat-icon-button\n matTooltip=\"Accept changes\"\n [disabled]=\"form.invalid || form.pristine\"\n >\n <mat-icon>check_circle</mat-icon>\n </button>\n </div>\n</form>\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}.long-text{width:100%;max-width:800px}\n"] }]
83
+ }], ctorParameters: function () { return [{ type: i1.FormBuilder }]; }, propDecorators: { endleaf: [{
84
+ type: Input
85
+ }], matEntries: [{
86
+ type: Input
87
+ }], ctTagEntries: [{
88
+ type: Input
89
+ }], assTagEntries: [{
90
+ type: Input
91
+ }], refTypeEntries: [{
92
+ type: Input
93
+ }], refTagEntries: [{
94
+ type: Input
95
+ }], locations: [{
96
+ type: Input
97
+ }], endleafChange: [{
98
+ type: Output
99
+ }], editorClose: [{
100
+ type: Output
101
+ }] } });
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kLWVuZGxlYWYuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlybWlkb24vY2FkbXVzLXBhcnQtY29kaWNvbG9neS1zaGVldC1sYWJlbHMvc3JjL2xpYi9jb2QtZW5kbGVhZi9jb2QtZW5kbGVhZi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJtaWRvbi9jYWRtdXMtcGFydC1jb2RpY29sb2d5LXNoZWV0LWxhYmVscy9zcmMvbGliL2NvZC1lbmRsZWFmL2NvZC1lbmRsZWFmLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUlMLFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7QUFZeEIsTUFBTSxPQUFPLG1CQUFtQjtJQTJDOUIsWUFBWSxXQUF3QjtRQUNsQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksWUFBWSxFQUFjLENBQUM7UUFDcEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQzNDLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLE9BQU87UUFDUCxJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFO1lBQ3hDLFVBQVUsQ0FBQyxRQUFRO1lBQ25CLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1NBQ3pCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFDeEMsVUFBVSxDQUFDLFFBQVE7WUFDbkIsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7U0FDekIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUM1QixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtTQUM1QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBM0RELElBQ1csT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUNELElBQVcsT0FBTyxDQUFDLEtBQTZCO1FBQzlDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQXNERCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ2hDO0lBQ0gsQ0FBQztJQUVPLFVBQVUsQ0FBQyxLQUE2QjtRQUM5QyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNsQixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDO1FBQzFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVNLGtCQUFrQixDQUFDLFVBQTBDO1FBQ2xFLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVPLFFBQVE7UUFDZCxPQUFPO1lBQ0wsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRTtZQUNyQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFO1lBQ3JDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUs7U0FDbEMsQ0FBQztJQUNKLENBQUM7SUFFTSxNQUFNO1FBQ1gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRU0sSUFBSTtRQUNULElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDckIsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDM0MsQ0FBQzs7Z0hBeEdVLG1CQUFtQjtvR0FBbkIsbUJBQW1CLHFWQ2xCaEMsNDZFQW9GQTsyRkRsRWEsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLG9CQUFvQjtrR0FRbkIsT0FBTztzQkFEakIsS0FBSztnQkFXQyxVQUFVO3NCQURoQixLQUFLO2dCQUlDLFlBQVk7c0JBRGxCLEtBQUs7Z0JBSUMsYUFBYTtzQkFEbkIsS0FBSztnQkFJQyxjQUFjO3NCQURwQixLQUFLO2dCQUlDLGFBQWE7c0JBRG5CLEtBQUs7Z0JBSUMsU0FBUztzQkFEZixLQUFLO2dCQUlDLGFBQWE7c0JBRG5CLE1BQU07Z0JBR0EsV0FBVztzQkFEakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEZvcm1CdWlsZGVyLFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUdyb3VwLFxuICBWYWxpZGF0b3JzLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IFRoZXNhdXJ1c0VudHJ5IH0gZnJvbSAnQG15cm1pZG9uL2NhZG11cy1jb3JlJztcbmltcG9ydCB7IEFzc2VydGVkQ2hyb25vdG9wZSB9IGZyb20gJ0BteXJtaWRvbi9jYWRtdXMtcmVmcy1hc3NlcnRlZC1jaHJvbm90b3BlJztcblxuaW1wb3J0IHsgQ29kRW5kbGVhZiB9IGZyb20gJy4uL2NvZC1zaGVldC1sYWJlbHMtcGFydCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NhZG11cy1jb2QtZW5kbGVhZicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb2QtZW5kbGVhZi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvZC1lbmRsZWFmLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQ29kRW5kbGVhZkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByaXZhdGUgX2VuZGxlYWY6IENvZEVuZGxlYWYgfCB1bmRlZmluZWQ7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGdldCBlbmRsZWFmKCk6IENvZEVuZGxlYWYgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9lbmRsZWFmO1xuICB9XG4gIHB1YmxpYyBzZXQgZW5kbGVhZih2YWx1ZTogQ29kRW5kbGVhZiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX2VuZGxlYWYgPSB2YWx1ZTtcbiAgICB0aGlzLnVwZGF0ZUZvcm0odmFsdWUpO1xuICB9XG5cbiAgLy8gY29kLWVuZGxlYWYtbWF0ZXJpYWxzXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtYXRFbnRyaWVzOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkO1xuICAvLyBjaHJvbm90b3BlLXRhZ3NcbiAgQElucHV0KClcbiAgcHVibGljIGN0VGFnRW50cmllczogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZDtcbiAgLy8gYXNzZXJ0aW9uLXRhZ3NcbiAgQElucHV0KClcbiAgcHVibGljIGFzc1RhZ0VudHJpZXM6IFRoZXNhdXJ1c0VudHJ5W10gfCB1bmRlZmluZWQ7XG4gIC8vIGRvYy1yZWZlcmVuY2UtdHlwZXNcbiAgQElucHV0KClcbiAgcHVibGljIHJlZlR5cGVFbnRyaWVzOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkO1xuICAvLyBkb2MtcmVmZXJlbmNlLXRhZ3NcbiAgQElucHV0KClcbiAgcHVibGljIHJlZlRhZ0VudHJpZXM6IFRoZXNhdXJ1c0VudHJ5W10gfCB1bmRlZmluZWQ7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGxvY2F0aW9uczogc3RyaW5nW107XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBlbmRsZWFmQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q29kRW5kbGVhZj47XG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgZWRpdG9yQ2xvc2U6IEV2ZW50RW1pdHRlcjxhbnk+O1xuXG4gIHB1YmxpYyBsb2NhdGlvbjogRm9ybUNvbnRyb2w7XG4gIHB1YmxpYyBtYXRlcmlhbDogRm9ybUNvbnRyb2w7XG4gIHB1YmxpYyBjaHJvbm90b3BlOiBGb3JtQ29udHJvbDtcbiAgcHVibGljIGZvcm06IEZvcm1Hcm91cDtcblxuICBwdWJsaWMgaW5pdGlhbENocm9ub3RvcGU/OiBBc3NlcnRlZENocm9ub3RvcGU7XG5cbiAgY29uc3RydWN0b3IoZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyKSB7XG4gICAgdGhpcy5lbmRsZWFmQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxDb2RFbmRsZWFmPigpO1xuICAgIHRoaXMuZWRpdG9yQ2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICB0aGlzLmxvY2F0aW9ucyA9IFtdO1xuICAgIC8vIGZvcm1cbiAgICB0aGlzLmxvY2F0aW9uID0gZm9ybUJ1aWxkZXIuY29udHJvbChudWxsLCBbXG4gICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNTApLFxuICAgIF0pO1xuICAgIHRoaXMubWF0ZXJpYWwgPSBmb3JtQnVpbGRlci5jb250cm9sKG51bGwsIFtcbiAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICBWYWxpZGF0b3JzLm1heExlbmd0aCg1MCksXG4gICAgXSk7XG4gICAgdGhpcy5jaHJvbm90b3BlID0gZm9ybUJ1aWxkZXIuY29udHJvbChudWxsKTtcbiAgICB0aGlzLmZvcm0gPSBmb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICBsb2NhdGlvbjogdGhpcy5sb2NhdGlvbixcbiAgICAgIG1hdGVyaWFsOiB0aGlzLm1hdGVyaWFsLFxuICAgICAgY2hyb25vdG9wZTogdGhpcy5jaHJvbm90b3BlLFxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2VuZGxlYWYpIHtcbiAgICAgIHRoaXMudXBkYXRlRm9ybSh0aGlzLl9lbmRsZWFmKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUZvcm0obW9kZWw6IENvZEVuZGxlYWYgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICBpZiAoIW1vZGVsKSB7XG4gICAgICB0aGlzLmZvcm0ucmVzZXQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvY2F0aW9uLnNldFZhbHVlKG1vZGVsLmxvY2F0aW9uKTtcbiAgICB0aGlzLm1hdGVyaWFsLnNldFZhbHVlKG1vZGVsLm1hdGVyaWFsKTtcbiAgICB0aGlzLmluaXRpYWxDaHJvbm90b3BlID0gbW9kZWwuY2hyb25vdG9wZTtcbiAgICB0aGlzLmZvcm0ubWFya0FzUHJpc3RpbmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNocm9ub3RvcGVDaGFuZ2UoY2hyb25vdG9wZTogQXNzZXJ0ZWRDaHJvbm90b3BlIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgdGhpcy5jaHJvbm90b3BlLnNldFZhbHVlKGNocm9ub3RvcGUpO1xuICAgIHRoaXMuY2hyb25vdG9wZS5tYXJrQXNEaXJ0eSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRNb2RlbCgpOiBDb2RFbmRsZWFmIHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9jYXRpb246IHRoaXMubG9jYXRpb24udmFsdWU/LnRyaW0oKSxcbiAgICAgIG1hdGVyaWFsOiB0aGlzLm1hdGVyaWFsLnZhbHVlPy50cmltKCksXG4gICAgICBjaHJvbm90b3BlOiB0aGlzLmNocm9ub3RvcGUudmFsdWUsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBjYW5jZWwoKTogdm9pZCB7XG4gICAgdGhpcy5lZGl0b3JDbG9zZS5lbWl0KCk7XG4gIH1cblxuICBwdWJsaWMgc2F2ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5mb3JtLmludmFsaWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5lbmRsZWFmQ2hhbmdlLmVtaXQodGhpcy5nZXRNb2RlbCgpKTtcbiAgfVxufVxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgKHN1Ym1pdCk9XCJzYXZlKClcIj5cbiAgPGRpdiBjbGFzcz1cImZvcm0tcm93XCI+XG4gICAgPCEtLSBsb2NhdGlvbiAtLT5cbiAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICA8bWF0LXNlbGVjdCBbZm9ybUNvbnRyb2xdPVwibG9jYXRpb25cIiBwbGFjZWhvbGRlcj1cImxvY2F0aW9uXCI+XG4gICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBsIG9mIGxvY2F0aW9uc1wiIFt2YWx1ZV09XCJsXCI+e3sgbCB9fTwvbWF0LW9wdGlvbj5cbiAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgIDxtYXQtZXJyb3JcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAkYW55KGxvY2F0aW9uKS5lcnJvcnM/LnJlcXVpcmVkICYmXG4gICAgICAgICAgKGxvY2F0aW9uLmRpcnR5IHx8IGxvY2F0aW9uLnRvdWNoZWQpXG4gICAgICAgIFwiXG4gICAgICAgID5sb2NhdGlvbiByZXF1aXJlZDwvbWF0LWVycm9yXG4gICAgICA+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgIDwhLS0gbWF0ZXJpYWwgKGJvdW5kKSAtLT5cbiAgICA8bWF0LWZvcm0tZmllbGQgKm5nSWY9XCJtYXRFbnRyaWVzPy5sZW5ndGhcIiBjbGFzcz1cImZvcm0tY29sXCI+XG4gICAgICA8bWF0LXNlbGVjdCBbZm9ybUNvbnRyb2xdPVwibWF0ZXJpYWxcIiBwbGFjZWhvbGRlcj1cIm1hdGVyaWFsXCI+XG4gICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBlIG9mIG1hdEVudHJpZXNcIiBbdmFsdWVdPVwiZS5pZFwiPnt7XG4gICAgICAgICAgZS52YWx1ZVxuICAgICAgICB9fTwvbWF0LW9wdGlvbj5cbiAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgIDxtYXQtZXJyb3JcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAkYW55KG1hdGVyaWFsKS5lcnJvcnM/LnJlcXVpcmVkICYmXG4gICAgICAgICAgKG1hdGVyaWFsLmRpcnR5IHx8IG1hdGVyaWFsLnRvdWNoZWQpXG4gICAgICAgIFwiXG4gICAgICAgID5tYXRlcmlhbCByZXF1aXJlZDwvbWF0LWVycm9yXG4gICAgICA+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICA8IS0tIG1hdGVyaWFsIChmcmVlKSAtLT5cbiAgICA8bWF0LWZvcm0tZmllbGQgKm5nSWY9XCIhbWF0RW50cmllcz8ubGVuZ3RoXCIgY2xhc3M9XCJmb3JtLWNvbFwiPlxuICAgICAgPGlucHV0IG1hdElucHV0IFtmb3JtQ29udHJvbF09XCJtYXRlcmlhbFwiIHBsYWNlaG9sZGVyPVwibWF0ZXJpYWxcIiAvPlxuICAgICAgPG1hdC1lcnJvclxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICRhbnkobWF0ZXJpYWwpLmVycm9ycz8ucmVxdWlyZWQgJiZcbiAgICAgICAgICAobWF0ZXJpYWwuZGlydHkgfHwgbWF0ZXJpYWwudG91Y2hlZClcbiAgICAgICAgXCJcbiAgICAgICAgPm1hdGVyaWFsIHJlcXVpcmVkPC9tYXQtZXJyb3JcbiAgICAgID5cbiAgICAgIDxtYXQtZXJyb3JcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAkYW55KG1hdGVyaWFsKS5lcnJvcnM/Lm1heExlbmd0aCAmJlxuICAgICAgICAgIChtYXRlcmlhbC5kaXJ0eSB8fCBtYXRlcmlhbC50b3VjaGVkKVxuICAgICAgICBcIlxuICAgICAgICA+bWF0ZXJpYWwgdG9vIGxvbmc8L21hdC1lcnJvclxuICAgICAgPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gIDwvZGl2PlxuXG4gIDwhLS0gY2hyb25vdG9wZSAtLT5cbiAgPGNhZG11cy1yZWZzLWFzc2VydGVkLWNocm9ub3RvcGVcbiAgICBbdGFnRW50cmllc109XCJjdFRhZ0VudHJpZXNcIlxuICAgIFthc3NUYWdFbnRyaWVzXT1cImFzc1RhZ0VudHJpZXNcIlxuICAgIFtyZWZUYWdFbnRyaWVzXT1cInJlZlRhZ0VudHJpZXNcIlxuICAgIFtyZWZUeXBlRW50cmllc109XCJyZWZUeXBlRW50cmllc1wiXG4gICAgW2Nocm9ub3RvcGVdPVwiaW5pdGlhbENocm9ub3RvcGVcIlxuICAgIChjaHJvbm90b3BlQ2hhbmdlKT1cIm9uQ2hyb25vdG9wZUNoYW5nZSgkZXZlbnQpXCJcbiAgPlxuICA8L2NhZG11cy1yZWZzLWFzc2VydGVkLWNocm9ub3RvcGU+XG5cbiAgPCEtLSBidXR0b25zIC0tPlxuICA8ZGl2PlxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgY29sb3I9XCJ3YXJuXCJcbiAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgbWF0VG9vbHRpcD1cIkRpc2NhcmQgY2hhbmdlc1wiXG4gICAgICAoY2xpY2spPVwiY2FuY2VsKClcIlxuICAgID5cbiAgICAgIDxtYXQtaWNvbj5jbGVhcjwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICBtYXRUb29sdGlwPVwiQWNjZXB0IGNoYW5nZXNcIlxuICAgICAgW2Rpc2FibGVkXT1cImZvcm0uaW52YWxpZCB8fCBmb3JtLnByaXN0aW5lXCJcbiAgICA+XG4gICAgICA8bWF0LWljb24+Y2hlY2tfY2lyY2xlPC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Zvcm0+XG4iXX0=
@@ -0,0 +1,102 @@
1
+ import { Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
2
+ import { Validators, } from '@angular/forms';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/forms";
5
+ import * as i2 from "@angular/material/icon";
6
+ import * as i3 from "@angular/material/button";
7
+ import * as i4 from "@angular/material/form-field";
8
+ import * as i5 from "@angular/common";
9
+ import * as i6 from "@angular/material/tooltip";
10
+ import * as i7 from "@angular/material/input";
11
+ export class CodLabelCellComponent {
12
+ constructor(formBuilder) {
13
+ this.editMode = 'none';
14
+ this.cellChange = new EventEmitter();
15
+ // form
16
+ this.value = formBuilder.control(null, Validators.maxLength(50));
17
+ this.note = formBuilder.control(null, Validators.maxLength(500));
18
+ this.form = formBuilder.group({
19
+ value: this.value,
20
+ note: this.note,
21
+ });
22
+ }
23
+ get cell() {
24
+ return this._cell;
25
+ }
26
+ set cell(value) {
27
+ this._cell = value;
28
+ this.updateForm(value);
29
+ }
30
+ ngOnInit() {
31
+ if (this._cell) {
32
+ this.updateForm(this._cell);
33
+ }
34
+ }
35
+ editValue() {
36
+ if (this.editMode !== 'none') {
37
+ return;
38
+ }
39
+ this.editMode = 'value';
40
+ setTimeout(() => {
41
+ this.valueElement?.nativeElement.focus();
42
+ this.valueElement?.nativeElement.select();
43
+ }, 500);
44
+ }
45
+ editNote() {
46
+ if (this.editMode !== 'none') {
47
+ return;
48
+ }
49
+ this.editMode = 'note';
50
+ setTimeout(() => {
51
+ this.noteElement?.nativeElement.focus();
52
+ this.noteElement?.nativeElement.select();
53
+ }, 500);
54
+ }
55
+ updateForm(cell) {
56
+ if (!cell) {
57
+ this.form.reset();
58
+ return;
59
+ }
60
+ this.value.setValue(cell.value);
61
+ this.note.setValue(cell.note);
62
+ }
63
+ getCell() {
64
+ return {
65
+ rowId: this._cell.rowId,
66
+ id: this._cell.id,
67
+ value: this.value.value?.trim(),
68
+ note: this.note.value?.trim(),
69
+ };
70
+ }
71
+ saveEdit() {
72
+ if (this.form.invalid || !this._cell) {
73
+ return;
74
+ }
75
+ this.editMode = 'none';
76
+ this._cell = this.getCell();
77
+ this.cellChange.emit(this._cell);
78
+ }
79
+ cancelEdit() {
80
+ this.updateForm(this._cell);
81
+ this.editMode = 'none';
82
+ }
83
+ }
84
+ CodLabelCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: CodLabelCellComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
85
+ CodLabelCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: CodLabelCellComponent, selector: "cadmus-cod-label-cell", inputs: { cell: "cell", color: "color" }, outputs: { cellChange: "cellChange" }, viewQueries: [{ propertyName: "valueElement", first: true, predicate: ["valueInput"], descendants: true }, { propertyName: "noteElement", first: true, predicate: ["noteInput"], descendants: true }], ngImport: i0, template: "<div\n *ngIf=\"cell\"\n class=\"cell\"\n [style.background-color]=\"color || 'transparent'\"\n>\n <!-- display -->\n <div\n *ngIf=\"editMode === 'none'\"\n class=\"form-row-center\"\n >\n <span>{{ cell.value }}</span>\n <span *ngIf=\"cell.note\" [matTooltip]=\"cell.note\">\n <mat-icon>description</mat-icon>\n </span>\n <button\n class=\"muted\"\n type=\"button\"\n mat-icon-button\n matTooltip=\"Edit value\"\n color=\"primary\"\n (click)=\"editValue()\"\n >\n <mat-icon>edit</mat-icon>\n </button>\n <button\n class=\"muted\"\n type=\"button\"\n mat-icon-button\n matTooltip=\"Edit note\"\n (click)=\"editNote()\"\n >\n <mat-icon>edit_note</mat-icon>\n </button>\n </div>\n <!-- edit -->\n <form\n [formGroup]=\"form\"\n (submit)=\"saveEdit()\"\n *ngIf=\"editMode !== 'none'\"\n class=\"form-row\"\n >\n <!-- value -->\n <mat-form-field *ngIf=\"editMode === 'value'\">\n <input\n #valueInput\n matInput\n type=\"text\"\n placeholder=\"value\"\n spellcheck=\"false\"\n [formControl]=\"value\"\n (keydown.esc)=\"cancelEdit()\"\n />\n <mat-error\n *ngIf=\"value.hasError('maxLength') && (value.dirty || value.touched)\"\n >value too long</mat-error\n >\n </mat-form-field>\n <!-- note -->\n <mat-form-field *ngIf=\"editMode === 'note'\">\n <input\n #noteInput\n matInput\n type=\"text\"\n placeholder=\"note\"\n [formControl]=\"note\"\n (keydown.esc)=\"cancelEdit()\"\n />\n <mat-error\n *ngIf=\"note.hasError('maxLength') && (note.dirty || note.touched)\"\n >note too long</mat-error\n >\n </mat-form-field>\n\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Discard edit\"\n color=\"warn\"\n (click)=\"cancelEdit()\"\n >\n <mat-icon>clear</mat-icon>\n </button>\n <button\n type=\"submit\"\n [disabled]=\"form.invalid\"\n mat-icon-button\n matTooltip=\"Save edit\"\n color=\"primary\"\n >\n <mat-icon>check_circle</mat-icon>\n </button>\n </form>\n</div>\n", styles: ["div.cell{margin:2px;padding-left:4px;padding-right:4px;border:1px solid transparent;border-radius:4px}div.cell:hover{margin:2px;padding-left:4px;padding-right:4px;border:1px solid gray;border-radius:4px}.form-row{display:flex;gap:4px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}.form-row-center{display:flex;gap:4px;align-items:center;justify-content:center;flex-wrap:wrap}.form-row-center *{flex:0 0 auto}.muted{opacity:20%}.muted:hover{opacity:100%}\n"], components: [{ type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { 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]" }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i4.MatError, selector: "mat-error", inputs: ["id"] }] });
86
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: CodLabelCellComponent, decorators: [{
87
+ type: Component,
88
+ args: [{ selector: 'cadmus-cod-label-cell', template: "<div\n *ngIf=\"cell\"\n class=\"cell\"\n [style.background-color]=\"color || 'transparent'\"\n>\n <!-- display -->\n <div\n *ngIf=\"editMode === 'none'\"\n class=\"form-row-center\"\n >\n <span>{{ cell.value }}</span>\n <span *ngIf=\"cell.note\" [matTooltip]=\"cell.note\">\n <mat-icon>description</mat-icon>\n </span>\n <button\n class=\"muted\"\n type=\"button\"\n mat-icon-button\n matTooltip=\"Edit value\"\n color=\"primary\"\n (click)=\"editValue()\"\n >\n <mat-icon>edit</mat-icon>\n </button>\n <button\n class=\"muted\"\n type=\"button\"\n mat-icon-button\n matTooltip=\"Edit note\"\n (click)=\"editNote()\"\n >\n <mat-icon>edit_note</mat-icon>\n </button>\n </div>\n <!-- edit -->\n <form\n [formGroup]=\"form\"\n (submit)=\"saveEdit()\"\n *ngIf=\"editMode !== 'none'\"\n class=\"form-row\"\n >\n <!-- value -->\n <mat-form-field *ngIf=\"editMode === 'value'\">\n <input\n #valueInput\n matInput\n type=\"text\"\n placeholder=\"value\"\n spellcheck=\"false\"\n [formControl]=\"value\"\n (keydown.esc)=\"cancelEdit()\"\n />\n <mat-error\n *ngIf=\"value.hasError('maxLength') && (value.dirty || value.touched)\"\n >value too long</mat-error\n >\n </mat-form-field>\n <!-- note -->\n <mat-form-field *ngIf=\"editMode === 'note'\">\n <input\n #noteInput\n matInput\n type=\"text\"\n placeholder=\"note\"\n [formControl]=\"note\"\n (keydown.esc)=\"cancelEdit()\"\n />\n <mat-error\n *ngIf=\"note.hasError('maxLength') && (note.dirty || note.touched)\"\n >note too long</mat-error\n >\n </mat-form-field>\n\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Discard edit\"\n color=\"warn\"\n (click)=\"cancelEdit()\"\n >\n <mat-icon>clear</mat-icon>\n </button>\n <button\n type=\"submit\"\n [disabled]=\"form.invalid\"\n mat-icon-button\n matTooltip=\"Save edit\"\n color=\"primary\"\n >\n <mat-icon>check_circle</mat-icon>\n </button>\n </form>\n</div>\n", styles: ["div.cell{margin:2px;padding-left:4px;padding-right:4px;border:1px solid transparent;border-radius:4px}div.cell:hover{margin:2px;padding-left:4px;padding-right:4px;border:1px solid gray;border-radius:4px}.form-row{display:flex;gap:4px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}.form-row-center{display:flex;gap:4px;align-items:center;justify-content:center;flex-wrap:wrap}.form-row-center *{flex:0 0 auto}.muted{opacity:20%}.muted:hover{opacity:100%}\n"] }]
89
+ }], ctorParameters: function () { return [{ type: i1.FormBuilder }]; }, propDecorators: { cell: [{
90
+ type: Input
91
+ }], color: [{
92
+ type: Input
93
+ }], cellChange: [{
94
+ type: Output
95
+ }], valueElement: [{
96
+ type: ViewChild,
97
+ args: ['valueInput']
98
+ }], noteElement: [{
99
+ type: ViewChild,
100
+ args: ['noteInput']
101
+ }] } });
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kLWxhYmVsLWNlbGwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlybWlkb24vY2FkbXVzLXBhcnQtY29kaWNvbG9neS1zaGVldC1sYWJlbHMvc3JjL2xpYi9jb2QtbGFiZWwtY2VsbC9jb2QtbGFiZWwtY2VsbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJtaWRvbi9jYWRtdXMtcGFydC1jb2RpY29sb2d5LXNoZWV0LWxhYmVscy9zcmMvbGliL2NvZC1sYWJlbC1jZWxsL2NvZC1sYWJlbC1jZWxsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFJTCxVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7O0FBU3hCLE1BQU0sT0FBTyxxQkFBcUI7SUE0QmhDLFlBQVksV0FBd0I7UUFDbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLFlBQVksRUFBZ0IsQ0FBQztRQUNuRCxPQUFPO1FBQ1AsSUFBSSxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLElBQUksR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLElBQUksR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQzVCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztZQUNqQixJQUFJLEVB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QUs7c0JBRFgsS0FBSztnQkFJQyxVQUFVO3NCQURoQixNQUFNO2dCQUlBLFlBQVk7c0JBRGxCLFNBQVM7dUJBQUMsWUFBWTtnQkFHaEIsV0FBVztzQkFEakIsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEZvcm1CdWlsZGVyLFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUdyb3VwLFxuICBWYWxpZGF0b3JzLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IENvZExhYmVsQ2VsbCB9IGZyb20gJy4uL2xhYmVsLWdlbmVyYXRvcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NhZG11cy1jb2QtbGFiZWwtY2VsbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb2QtbGFiZWwtY2VsbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvZC1sYWJlbC1jZWxsLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQ29kTGFiZWxDZWxsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJpdmF0ZSBfY2VsbDogQ29kTGFiZWxDZWxsIHwgdW5kZWZpbmVkO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgY2VsbCgpOiBDb2RMYWJlbENlbGwgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9jZWxsO1xuICB9XG4gIHB1YmxpYyBzZXQgY2VsbCh2YWx1ZTogQ29kTGFiZWxDZWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fY2VsbCA9IHZhbHVlO1xuICAgIHRoaXMudXBkYXRlRm9ybSh2YWx1ZSk7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgY29sb3I/OiBzdHJpbmc7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBjZWxsQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q29kTGFiZWxDZWxsPjtcblxuICBAVmlld0NoaWxkKCd2YWx1ZUlucHV0JylcbiAgcHVibGljIHZhbHVlRWxlbWVudD86IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ25vdGVJbnB1dCcpXG4gIHB1YmxpYyBub3RlRWxlbWVudD86IEVsZW1lbnRSZWY7XG5cbiAgcHVibGljIGVkaXRNb2RlOiAnbm9uZScgfCAndmFsdWUnIHwgJ25vdGUnO1xuICBwdWJsaWMgdmFsdWU6IEZvcm1Db250cm9sO1xuICBwdWJsaWMgbm90ZTogRm9ybUNvbnRyb2w7XG4gIHB1YmxpYyBmb3JtOiBGb3JtR3JvdXA7XG5cbiAgY29uc3RydWN0b3IoZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyKSB7XG4gICAgdGhpcy5lZGl0TW9kZSA9ICdub25lJztcbiAgICB0aGlzLmNlbGxDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPENvZExhYmVsQ2VsbD4oKTtcbiAgICAvLyBmb3JtXG4gICAgdGhpcy52YWx1ZSA9IGZvcm1CdWlsZGVyLmNvbnRyb2wobnVsbCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNTApKTtcbiAgICB0aGlzLm5vdGUgPSBmb3JtQnVpbGRlci5jb250cm9sKG51bGwsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDUwMCkpO1xuICAgIHRoaXMuZm9ybSA9IGZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIHZhbHVlOiB0aGlzLnZhbHVlLFxuICAgICAgbm90ZTogdGhpcy5ub3RlLFxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2NlbGwpIHtcbiAgICAgIHRoaXMudXBkYXRlRm9ybSh0aGlzLl9jZWxsKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZWRpdFZhbHVlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmVkaXRNb2RlICE9PSAnbm9uZScpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5lZGl0TW9kZSA9ICd2YWx1ZSc7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnZhbHVlRWxlbWVudD8ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgdGhpcy52YWx1ZUVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0KCk7XG4gICAgfSwgNTAwKTtcbiAgfVxuXG4gIHB1YmxpYyBlZGl0Tm90ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5lZGl0TW9kZSAhPT0gJ25vbmUnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZWRpdE1vZGUgPSAnbm90ZSc7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLm5vdGVFbGVtZW50Py5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICB0aGlzLm5vdGVFbGVtZW50Py5uYXRpdmVFbGVtZW50LnNlbGVjdCgpO1xuICAgIH0sIDUwMCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUZvcm0oY2VsbDogQ29kTGFiZWxDZWxsIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgaWYgKCFjZWxsKSB7XG4gICAgICB0aGlzLmZvcm0ucmVzZXQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy52YWx1ZS5zZXRWYWx1ZShjZWxsLnZhbHVlKTtcbiAgICB0aGlzLm5vdGUuc2V0VmFsdWUoY2VsbC5ub3RlKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2VsbCgpOiBDb2RMYWJlbENlbGwge1xuICAgIHJldHVybiB7XG4gICAgICByb3dJZDogdGhpcy5fY2VsbCEucm93SWQsXG4gICAgICBpZDogdGhpcy5fY2VsbCEuaWQsXG4gICAgICB2YWx1ZTogdGhpcy52YWx1ZS52YWx1ZT8udHJpbSgpLFxuICAgICAgbm90ZTogdGhpcy5ub3RlLnZhbHVlPy50cmltKCksXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzYXZlRWRpdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5mb3JtLmludmFsaWQgfHwgIXRoaXMuX2NlbGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5lZGl0TW9kZSA9ICdub25lJztcbiAgICB0aGlzLl9jZWxsID0gdGhpcy5nZXRDZWxsKCk7XG4gICAgdGhpcy5jZWxsQ2hhbmdlLmVtaXQodGhpcy5fY2VsbCk7XG4gIH1cblxuICBwdWJsaWMgY2FuY2VsRWRpdCgpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZUZvcm0odGhpcy5fY2VsbCk7XG4gICAgdGhpcy5lZGl0TW9kZSA9ICdub25lJztcbiAgfVxufVxuIiwiPGRpdlxuICAqbmdJZj1cImNlbGxcIlxuICBjbGFzcz1cImNlbGxcIlxuICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJjb2xvciB8fCAndHJhbnNwYXJlbnQnXCJcbj5cbiAgPCEtLSBkaXNwbGF5IC0tPlxuICA8ZGl2XG4gICAgKm5nSWY9XCJlZGl0TW9kZSA9PT0gJ25vbmUnXCJcbiAgICBjbGFzcz1cImZvcm0tcm93LWNlbnRlclwiXG4gID5cbiAgICA8c3Bhbj57eyBjZWxsLnZhbHVlIH19PC9zcGFuPlxuICAgIDxzcGFuICpuZ0lmPVwiY2VsbC5ub3RlXCIgW21hdFRvb2x0aXBdPVwiY2VsbC5ub3RlXCI+XG4gICAgICA8bWF0LWljb24+ZGVzY3JpcHRpb248L21hdC1pY29uPlxuICAgIDwvc3Bhbj5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cIm11dGVkXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICBtYXRUb29sdGlwPVwiRWRpdCB2YWx1ZVwiXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgKGNsaWNrKT1cImVkaXRWYWx1ZSgpXCJcbiAgICA+XG4gICAgICA8bWF0LWljb24+ZWRpdDwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJtdXRlZFwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgbWF0VG9vbHRpcD1cIkVkaXQgbm90ZVwiXG4gICAgICAoY2xpY2spPVwiZWRpdE5vdGUoKVwiXG4gICAgPlxuICAgICAgPG1hdC1pY29uPmVkaXRfbm90ZTwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8IS0tIGVkaXQgLS0+XG4gIDxmb3JtXG4gICAgW2Zvcm1Hcm91cF09XCJmb3JtXCJcbiAgICAoc3VibWl0KT1cInNhdmVFZGl0KClcIlxuICAgICpuZ0lmPVwiZWRpdE1vZGUgIT09ICdub25lJ1wiXG4gICAgY2xhc3M9XCJmb3JtLXJvd1wiXG4gID5cbiAgICA8IS0tIHZhbHVlIC0tPlxuICAgIDxtYXQtZm9ybS1maWVsZCAqbmdJZj1cImVkaXRNb2RlID09PSAndmFsdWUnXCI+XG4gICAgICA8aW5wdXRcbiAgICAgICAgI3ZhbHVlSW5wdXRcbiAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cInZhbHVlXCJcbiAgICAgICAgc3BlbGxjaGVjaz1cImZhbHNlXCJcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cInZhbHVlXCJcbiAgICAgICAgKGtleWRvd24uZXNjKT1cImNhbmNlbEVkaXQoKVwiXG4gICAgICAvPlxuICAgICAgPG1hdC1lcnJvclxuICAgICAgICAqbmdJZj1cInZhbHVlLmhhc0Vycm9yKCdtYXhMZW5ndGgnKSAmJiAodmFsdWUuZGlydHkgfHwgdmFsdWUudG91Y2hlZClcIlxuICAgICAgICA+dmFsdWUgdG9vIGxvbmc8L21hdC1lcnJvclxuICAgICAgPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPCEtLSBub3RlIC0tPlxuICAgIDxtYXQtZm9ybS1maWVsZCAqbmdJZj1cImVkaXRNb2RlID09PSAnbm90ZSdcIj5cbiAgICAgIDxpbnB1dFxuICAgICAgICAjbm90ZUlucHV0XG4gICAgICAgIG1hdElucHV0XG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJub3RlXCJcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cIm5vdGVcIlxuICAgICAgICAoa2V5ZG93bi5lc2MpPVwiY2FuY2VsRWRpdCgpXCJcbiAgICAgIC8+XG4gICAgICA8bWF0LWVycm9yXG4gICAgICAgICpuZ0lmPVwibm90ZS5oYXNFcnJvcignbWF4TGVuZ3RoJykgJiYgKG5vdGUuZGlydHkgfHwgbm90ZS50b3VjaGVkKVwiXG4gICAgICAgID5ub3RlIHRvbyBsb25nPC9tYXQtZXJyb3JcbiAgICAgID5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgIG1hdFRvb2x0aXA9XCJEaXNjYXJkIGVkaXRcIlxuICAgICAgY29sb3I9XCJ3YXJuXCJcbiAgICAgIChjbGljayk9XCJjYW5jZWxFZGl0KClcIlxuICAgID5cbiAgICAgIDxtYXQtaWNvbj5jbGVhcjwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICBbZGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkXCJcbiAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgbWF0VG9vbHRpcD1cIlNhdmUgZWRpdFwiXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgID5cbiAgICAgIDxtYXQtaWNvbj5jaGVja19jaXJjbGU8L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICA8L2Zvcm0+XG48L2Rpdj5cbiJdfQ==