@myrmidon/cadmus-ui 0.0.33 → 1.0.0

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 (85) hide show
  1. package/README.md +2 -2
  2. package/esm2020/lib/cadmus-ui.module.mjs +148 -0
  3. package/esm2020/lib/components/close-save-buttons/close-save-buttons.component.mjs +27 -0
  4. package/esm2020/lib/components/decorated-token-text/decorated-token-text.component.mjs +67 -0
  5. package/esm2020/lib/components/error-list/error-list.component.mjs +17 -0
  6. package/esm2020/lib/components/facet-badge/facet-badge.component.mjs +102 -0
  7. package/esm2020/lib/components/flags-badge/flags-badge.component.mjs +53 -0
  8. package/esm2020/lib/components/inplace-editor-component-base.mjs +97 -0
  9. package/esm2020/lib/components/layer-hints/layer-hints.component.mjs +104 -0
  10. package/esm2020/lib/components/lookup-pin/lookup-pin.component.mjs +135 -0
  11. package/esm2020/lib/components/model-editor-component-base.mjs +171 -0
  12. package/esm2020/lib/components/multi-entry-selector/multi-entry-selector.component.mjs +146 -0
  13. package/esm2020/lib/components/part-badge/part-badge.component.mjs +102 -0
  14. package/esm2020/lib/components/physical-dimension/physical-dimension.component.mjs +103 -0
  15. package/esm2020/lib/components/physical-size/physical-size.component.mjs +226 -0
  16. package/esm2020/lib/components/thesaurus-tree/thesaurus-tree.component.mjs +220 -0
  17. package/{esm2015/lib/services/color.service.js → esm2020/lib/services/color.service.mjs} +9 -7
  18. package/{esm2015/lib/utils.js → esm2020/lib/utils.mjs} +0 -0
  19. package/esm2020/lib/validators/custom-validators.mjs +35 -0
  20. package/{esm2015/lib/validators/json-validators.js → esm2020/lib/validators/json-validators.mjs} +0 -0
  21. package/{esm2015/myrmidon-cadmus-ui.js → esm2020/myrmidon-cadmus-ui.mjs} +0 -0
  22. package/esm2020/public-api.mjs +23 -0
  23. package/fesm2015/myrmidon-cadmus-ui.mjs +1820 -0
  24. package/fesm2015/myrmidon-cadmus-ui.mjs.map +1 -0
  25. package/fesm2020/myrmidon-cadmus-ui.mjs +1803 -0
  26. package/fesm2020/myrmidon-cadmus-ui.mjs.map +1 -0
  27. package/lib/cadmus-ui.module.d.ts +30 -0
  28. package/lib/components/close-save-buttons/close-save-buttons.component.d.ts +5 -2
  29. package/lib/components/decorated-token-text/decorated-token-text.component.d.ts +8 -5
  30. package/lib/components/error-list/error-list.component.d.ts +4 -1
  31. package/lib/components/facet-badge/facet-badge.component.d.ts +4 -1
  32. package/lib/components/flags-badge/flags-badge.component.d.ts +3 -0
  33. package/lib/components/inplace-editor-component-base.d.ts +10 -7
  34. package/lib/components/layer-hints/layer-hints.component.d.ts +8 -5
  35. package/lib/components/lookup-pin/lookup-pin.component.d.ts +5 -2
  36. package/lib/components/model-editor-component-base.d.ts +23 -25
  37. package/lib/components/multi-entry-selector/multi-entry-selector.component.d.ts +4 -1
  38. package/lib/components/part-badge/part-badge.component.d.ts +12 -9
  39. package/lib/components/physical-dimension/physical-dimension.component.d.ts +14 -11
  40. package/lib/components/physical-size/physical-size.component.d.ts +12 -10
  41. package/lib/components/thesaurus-tree/thesaurus-tree.component.d.ts +7 -4
  42. package/lib/services/color.service.d.ts +3 -0
  43. package/myrmidon-cadmus-ui.d.ts +1 -0
  44. package/package.json +25 -16
  45. package/public-api.d.ts +2 -11
  46. package/bundles/myrmidon-cadmus-ui.umd.js +0 -3109
  47. package/bundles/myrmidon-cadmus-ui.umd.js.map +0 -1
  48. package/esm2015/lib/cadmus-ui.module.js +0 -93
  49. package/esm2015/lib/components/close-save-buttons/close-save-buttons.component.js +0 -23
  50. package/esm2015/lib/components/confirm-dialog/confirm-dialog.component.js +0 -27
  51. package/esm2015/lib/components/datation-editor/datation-editor.component.js +0 -85
  52. package/esm2015/lib/components/decorated-token-text/decorated-token-text.component.js +0 -64
  53. package/esm2015/lib/components/doc-references/doc-references.component.js +0 -188
  54. package/esm2015/lib/components/error-list/error-list.component.js +0 -18
  55. package/esm2015/lib/components/external-ids/external-ids.component.js +0 -179
  56. package/esm2015/lib/components/facet-badge/facet-badge.component.js +0 -102
  57. package/esm2015/lib/components/flags-badge/flags-badge.component.js +0 -51
  58. package/esm2015/lib/components/historical-date-editor/historical-date-editor.component.js +0 -141
  59. package/esm2015/lib/components/inplace-editor-component-base.js +0 -96
  60. package/esm2015/lib/components/layer-hints/layer-hints.component.js +0 -96
  61. package/esm2015/lib/components/login/login.component.js +0 -55
  62. package/esm2015/lib/components/lookup-pin/lookup-pin.component.js +0 -127
  63. package/esm2015/lib/components/model-editor-component-base.js +0 -151
  64. package/esm2015/lib/components/multi-entry-selector/multi-entry-selector.component.js +0 -140
  65. package/esm2015/lib/components/part-badge/part-badge.component.js +0 -103
  66. package/esm2015/lib/components/password-strength-bar/password-strength-bar.component.js +0 -83
  67. package/esm2015/lib/components/physical-dimension/physical-dimension.component.js +0 -96
  68. package/esm2015/lib/components/physical-size/physical-size.component.js +0 -223
  69. package/esm2015/lib/components/thesaurus-tree/thesaurus-tree.component.js +0 -217
  70. package/esm2015/lib/pipes/safe-html.pipe.js +0 -33
  71. package/esm2015/lib/services/dialog.service.js +0 -39
  72. package/esm2015/lib/validators/custom-validators.js +0 -34
  73. package/esm2015/public-api.js +0 -34
  74. package/fesm2015/myrmidon-cadmus-ui.js +0 -2526
  75. package/fesm2015/myrmidon-cadmus-ui.js.map +0 -1
  76. package/lib/components/confirm-dialog/confirm-dialog.component.d.ts +0 -12
  77. package/lib/components/datation-editor/datation-editor.component.d.ts +0 -30
  78. package/lib/components/doc-references/doc-references.component.d.ts +0 -53
  79. package/lib/components/external-ids/external-ids.component.d.ts +0 -51
  80. package/lib/components/historical-date-editor/historical-date-editor.component.d.ts +0 -33
  81. package/lib/components/login/login.component.d.ts +0 -21
  82. package/lib/components/password-strength-bar/password-strength-bar.component.d.ts +0 -21
  83. package/lib/pipes/safe-html.pipe.d.ts +0 -7
  84. package/lib/services/dialog.service.d.ts +0 -16
  85. package/myrmidon-cadmus-ui.metadata.json +0 -1
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # CadmusUi
2
2
 
3
- This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 10.1.4.
3
+ This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 13.0.0.
4
4
 
5
5
  ## Code scaffolding
6
6
 
@@ -21,4 +21,4 @@ Run `ng test cadmus-ui` to execute the unit tests via [Karma](https://karma-runn
21
21
 
22
22
  ## Further help
23
23
 
24
- To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md).
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,148 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
4
+ import { RouterModule } from '@angular/router';
5
+ // material
6
+ import { MatAutocompleteModule } from '@angular/material/autocomplete';
7
+ import { MatButtonModule } from '@angular/material/button';
8
+ import { MatCheckboxModule } from '@angular/material/checkbox';
9
+ import { MatFormFieldModule } from '@angular/material/form-field';
10
+ import { MatIconModule } from '@angular/material/icon';
11
+ import { MatInputModule } from '@angular/material/input';
12
+ import { MatTooltipModule } from '@angular/material/tooltip';
13
+ import { MatTreeModule } from '@angular/material/tree';
14
+ // Monaco
15
+ import { MonacoEditorModule } from 'ngx-monaco-editor';
16
+ // Cadmus
17
+ import { CadmusCoreModule } from '@myrmidon/cadmus-core';
18
+ import { NgToolsModule } from '@myrmidon/ng-tools';
19
+ import { CloseSaveButtonsComponent } from './components/close-save-buttons/close-save-buttons.component';
20
+ import { ErrorListComponent } from './components/error-list/error-list.component';
21
+ import { FacetBadgeComponent } from './components/facet-badge/facet-badge.component';
22
+ import { FlagsBadgeComponent } from './components/flags-badge/flags-badge.component';
23
+ import { DecoratedTokenTextComponent } from './components/decorated-token-text/decorated-token-text.component';
24
+ import { LayerHintsComponent } from './components/layer-hints/layer-hints.component';
25
+ import { LookupPinComponent } from './components/lookup-pin/lookup-pin.component';
26
+ import { MultiEntrySelectorComponent } from './components/multi-entry-selector/multi-entry-selector.component';
27
+ import { PartBadgeComponent } from './components/part-badge/part-badge.component';
28
+ import { PhysicalDimensionComponent } from './components/physical-dimension/physical-dimension.component';
29
+ import { PhysicalSizeComponent } from './components/physical-size/physical-size.component';
30
+ import { ThesaurusTreeComponent } from './components/thesaurus-tree/thesaurus-tree.component';
31
+ import * as i0 from "@angular/core";
32
+ export class CadmusUiModule {
33
+ }
34
+ CadmusUiModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: CadmusUiModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
35
+ CadmusUiModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: CadmusUiModule, declarations: [CloseSaveButtonsComponent,
36
+ DecoratedTokenTextComponent,
37
+ ErrorListComponent,
38
+ FacetBadgeComponent,
39
+ FlagsBadgeComponent,
40
+ LayerHintsComponent,
41
+ LookupPinComponent,
42
+ MultiEntrySelectorComponent,
43
+ PartBadgeComponent,
44
+ PhysicalDimensionComponent,
45
+ PhysicalSizeComponent,
46
+ ThesaurusTreeComponent], imports: [CommonModule,
47
+ FormsModule,
48
+ RouterModule,
49
+ ReactiveFormsModule,
50
+ // material
51
+ MatAutocompleteModule,
52
+ MatButtonModule,
53
+ MatCheckboxModule,
54
+ MatFormFieldModule,
55
+ MatIconModule,
56
+ MatInputModule,
57
+ MatTreeModule,
58
+ MatTooltipModule,
59
+ // monaco
60
+ MonacoEditorModule,
61
+ // cadmus
62
+ NgToolsModule,
63
+ CadmusCoreModule], exports: [CloseSaveButtonsComponent,
64
+ DecoratedTokenTextComponent,
65
+ ErrorListComponent,
66
+ FacetBadgeComponent,
67
+ FlagsBadgeComponent,
68
+ LayerHintsComponent,
69
+ LookupPinComponent,
70
+ MultiEntrySelectorComponent,
71
+ PartBadgeComponent,
72
+ PhysicalDimensionComponent,
73
+ PhysicalSizeComponent,
74
+ ThesaurusTreeComponent] });
75
+ CadmusUiModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: CadmusUiModule, imports: [[
76
+ CommonModule,
77
+ FormsModule,
78
+ RouterModule,
79
+ ReactiveFormsModule,
80
+ // material
81
+ MatAutocompleteModule,
82
+ MatButtonModule,
83
+ MatCheckboxModule,
84
+ MatFormFieldModule,
85
+ MatIconModule,
86
+ MatInputModule,
87
+ MatTreeModule,
88
+ MatTooltipModule,
89
+ // monaco
90
+ MonacoEditorModule,
91
+ // cadmus
92
+ NgToolsModule,
93
+ CadmusCoreModule,
94
+ ]] });
95
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: CadmusUiModule, decorators: [{
96
+ type: NgModule,
97
+ args: [{
98
+ imports: [
99
+ CommonModule,
100
+ FormsModule,
101
+ RouterModule,
102
+ ReactiveFormsModule,
103
+ // material
104
+ MatAutocompleteModule,
105
+ MatButtonModule,
106
+ MatCheckboxModule,
107
+ MatFormFieldModule,
108
+ MatIconModule,
109
+ MatInputModule,
110
+ MatTreeModule,
111
+ MatTooltipModule,
112
+ // monaco
113
+ MonacoEditorModule,
114
+ // cadmus
115
+ NgToolsModule,
116
+ CadmusCoreModule,
117
+ ],
118
+ declarations: [
119
+ CloseSaveButtonsComponent,
120
+ DecoratedTokenTextComponent,
121
+ ErrorListComponent,
122
+ FacetBadgeComponent,
123
+ FlagsBadgeComponent,
124
+ LayerHintsComponent,
125
+ LookupPinComponent,
126
+ MultiEntrySelectorComponent,
127
+ PartBadgeComponent,
128
+ PhysicalDimensionComponent,
129
+ PhysicalSizeComponent,
130
+ ThesaurusTreeComponent,
131
+ ],
132
+ exports: [
133
+ CloseSaveButtonsComponent,
134
+ DecoratedTokenTextComponent,
135
+ ErrorListComponent,
136
+ FacetBadgeComponent,
137
+ FlagsBadgeComponent,
138
+ LayerHintsComponent,
139
+ LookupPinComponent,
140
+ MultiEntrySelectorComponent,
141
+ PartBadgeComponent,
142
+ PhysicalDimensionComponent,
143
+ PhysicalSizeComponent,
144
+ ThesaurusTreeComponent,
145
+ ],
146
+ }]
147
+ }] });
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FkbXVzLXVpLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2NhZG11cy11aS9zcmMvbGliL2NhZG11cy11aS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxXQUFXO0FBQ1gsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXZELFNBQVM7QUFDVCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUV2RCxTQUFTO0FBQ1QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRW5ELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDhEQUE4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LGtCQUFrQjt3QkFDbEIsbUJBQW1CO3dCQUNuQixtQkFBbUI7d0JBQ25CLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUNsQiwyQkFBMkI7d0JBQzNCLGtCQUFrQjt3QkFDbEIsMEJBQTBCO3dCQUMxQixxQkFBcUI7d0JBQ3JCLHNCQUFzQjtxQkFDdkI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbi8vIG1hdGVyaWFsXHJcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IE1hdENoZWNrYm94TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcclxuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xyXG5pbXBvcnQgeyBNYXRUcmVlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdHJlZSc7XHJcblxyXG4vLyBNb25hY29cclxuaW1wb3J0IHsgTW9uYWNvRWRpdG9yTW9kdWxlIH0gZnJvbSAnbmd4LW1vbmFjby1lZGl0b3InO1xyXG5cclxuLy8gQ2FkbXVzXHJcbmltcG9ydCB7IENhZG11c0NvcmVNb2R1bGUgfSBmcm9tICdAbXlybWlkb24vY2FkbXVzLWNvcmUnO1xyXG5pbXBvcnQgeyBOZ1Rvb2xzTW9kdWxlIH0gZnJvbSAnQG15cm1pZG9uL25nLXRvb2xzJztcclxuXHJcbmltcG9ydCB7IENsb3NlU2F2ZUJ1dHRvbnNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2xvc2Utc2F2ZS1idXR0b25zL2Nsb3NlLXNhdmUtYnV0dG9ucy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBFcnJvckxpc3RDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZXJyb3ItbGlzdC9lcnJvci1saXN0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZhY2V0QmFkZ2VDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZmFjZXQtYmFkZ2UvZmFjZXQtYmFkZ2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRmxhZ3NCYWRnZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9mbGFncy1iYWRnZS9mbGFncy1iYWRnZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEZWNvcmF0ZWRUb2tlblRleHRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZGVjb3JhdGVkLXRva2VuLXRleHQvZGVjb3JhdGVkLXRva2VuLXRleHQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTGF5ZXJIaW50c0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9sYXllci1oaW50cy9sYXllci1oaW50cy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBMb29rdXBQaW5Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbG9va3VwLXBpbi9sb29rdXAtcGluLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE11bHRpRW50cnlTZWxlY3RvckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9tdWx0aS1lbnRyeS1zZWxlY3Rvci9tdWx0aS1lbnRyeS1zZWxlY3Rvci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQYXJ0QmFkZ2VDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcGFydC1iYWRnZS9wYXJ0LWJhZGdlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFBoeXNpY2FsRGltZW5zaW9uQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3BoeXNpY2FsLWRpbWVuc2lvbi9waHlzaWNhbC1kaW1lbnNpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgUGh5c2ljYWxTaXplQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3BoeXNpY2FsLXNpemUvcGh5c2ljYWwtc2l6ZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUaGVzYXVydXNUcmVlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RoZXNhdXJ1cy10cmVlL3RoZXNhdXJ1cy10cmVlLmNvbXBvbmVudCc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgUm91dGVyTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIC8vIG1hdGVyaWFsXHJcbiAgICBNYXRBdXRvY29tcGxldGVNb2R1bGUsXHJcbiAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICBNYXRDaGVja2JveE1vZHVsZSxcclxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcclxuICAgIE1hdEljb25Nb2R1bGUsXHJcbiAgICBNYXRJbnB1dE1vZHVsZSxcclxuICAgIE1hdFRyZWVNb2R1bGUsXHJcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxyXG4gICAgLy8gbW9uYWNvXHJcbiAgICBNb25hY29FZGl0b3JNb2R1bGUsXHJcbiAgICAvLyBjYWRtdXNcclxuICAgIE5nVG9vbHNNb2R1bGUsXHJcbiAgICBDYWRtdXNDb3JlTW9kdWxlLFxyXG4gIF0sXHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICBDbG9zZVNhdmVCdXR0b25zQ29tcG9uZW50LFxyXG4gICAgRGVjb3JhdGVkVG9rZW5UZXh0Q29tcG9uZW50LFxyXG4gICAgRXJyb3JMaXN0Q29tcG9uZW50LFxyXG4gICAgRmFjZXRCYWRnZUNvbXBvbmVudCxcclxuICAgIEZsYWdzQmFkZ2VDb21wb25lbnQsXHJcbiAgICBMYXllckhpbnRzQ29tcG9uZW50LFxyXG4gICAgTG9va3VwUGluQ29tcG9uZW50LFxyXG4gICAgTXVsdGlFbnRyeVNlbGVjdG9yQ29tcG9uZW50LFxyXG4gICAgUGFydEJhZGdlQ29tcG9uZW50LFxyXG4gICAgUGh5c2ljYWxEaW1lbnNpb25Db21wb25lbnQsXHJcbiAgICBQaHlzaWNhbFNpemVDb21wb25lbnQsXHJcbiAgICBUaGVzYXVydXNUcmVlQ29tcG9uZW50LFxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgQ2xvc2VTYXZlQnV0dG9uc0NvbXBvbmVudCxcclxuICAgIERlY29yYXRlZFRva2VuVGV4dENvbXBvbmVudCxcclxuICAgIEVycm9yTGlzdENvbXBvbmVudCxcclxuICAgIEZhY2V0QmFkZ2VDb21wb25lbnQsXHJcbiAgICBGbGFnc0JhZGdlQ29tcG9uZW50LFxyXG4gICAgTGF5ZXJIaW50c0NvbXBvbmVudCxcclxuICAgIExvb2t1cFBpbkNvbXBvbmVudCxcclxuICAgIE11bHRpRW50cnlTZWxlY3RvckNvbXBvbmVudCxcclxuICAgIFBhcnRCYWRnZUNvbXBvbmVudCxcclxuICAgIFBoeXNpY2FsRGltZW5zaW9uQ29tcG9uZW50LFxyXG4gICAgUGh5c2ljYWxTaXplQ29tcG9uZW50LFxyXG4gICAgVGhlc2F1cnVzVHJlZUNvbXBvbmVudCxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2FkbXVzVWlNb2R1bGUge31cclxuIl19
@@ -0,0 +1,27 @@
1
+ import { Component, Input, Output, EventEmitter } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/material/button";
4
+ import * as i2 from "@angular/material/icon";
5
+ import * as i3 from "@angular/common";
6
+ import * as i4 from "@angular/material/tooltip";
7
+ export class CloseSaveButtonsComponent {
8
+ constructor() {
9
+ this.closeRequest = new EventEmitter();
10
+ }
11
+ close() {
12
+ this.closeRequest.emit();
13
+ }
14
+ }
15
+ CloseSaveButtonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: CloseSaveButtonsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
16
+ CloseSaveButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: CloseSaveButtonsComponent, selector: "cadmus-close-save-buttons", inputs: { form: "form", noSave: "noSave" }, outputs: { closeRequest: "closeRequest" }, ngImport: i0, template: "<ng-container *ngIf=\"form\">\r\n <button\r\n type=\"button\"\r\n mat-raised-button\r\n color=\"warn\"\r\n matTooltip=\"Close this editor\"\r\n (click)=\"close()\"\r\n >\r\n <mat-icon>cancel</mat-icon>\r\n close\r\n </button>\r\n <button\r\n *ngIf=\"!noSave\"\r\n type=\"submit\"\r\n [disabled]=\"form.invalid\"\r\n mat-raised-button\r\n color=\"primary\"\r\n matTooltip=\"Save data\"\r\n >\r\n <mat-icon>check_circle</mat-icon>\r\n save\r\n </button>\r\n</ng-container>\r\n", styles: [""], components: [{ type: i1.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: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: CloseSaveButtonsComponent, decorators: [{
18
+ type: Component,
19
+ args: [{ selector: 'cadmus-close-save-buttons', template: "<ng-container *ngIf=\"form\">\r\n <button\r\n type=\"button\"\r\n mat-raised-button\r\n color=\"warn\"\r\n matTooltip=\"Close this editor\"\r\n (click)=\"close()\"\r\n >\r\n <mat-icon>cancel</mat-icon>\r\n close\r\n </button>\r\n <button\r\n *ngIf=\"!noSave\"\r\n type=\"submit\"\r\n [disabled]=\"form.invalid\"\r\n mat-raised-button\r\n color=\"primary\"\r\n matTooltip=\"Save data\"\r\n >\r\n <mat-icon>check_circle</mat-icon>\r\n save\r\n </button>\r\n</ng-container>\r\n", styles: [""] }]
20
+ }], ctorParameters: function () { return []; }, propDecorators: { form: [{
21
+ type: Input
22
+ }], noSave: [{
23
+ type: Input
24
+ }], closeRequest: [{
25
+ type: Output
26
+ }] } });
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvc2Utc2F2ZS1idXR0b25zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2NhZG11cy11aS9zcmMvbGliL2NvbXBvbmVudHMvY2xvc2Utc2F2ZS1idXR0b25zL2Nsb3NlLXNhdmUtYnV0dG9ucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJtaWRvbi9jYWRtdXMtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Nsb3NlLXNhdmUtYnV0dG9ucy9jbG9zZS1zYXZlLWJ1dHRvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBUXZFLE1BQU0sT0FBTyx5QkFBeUI7SUFTcEM7UUFDRSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVNLEtBQUs7UUFDVixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNCLENBQUM7O3NIQWZVLHlCQUF5QjswR0FBekIseUJBQXlCLHdKQ1J0QywrZ0JBdUJBOzJGRGZhLHlCQUF5QjtrQkFMckMsU0FBUzsrQkFDRSwyQkFBMkI7MEVBTTlCLElBQUk7c0JBRFYsS0FBSztnQkFHQyxNQUFNO3NCQURaLEtBQUs7Z0JBSUMsWUFBWTtzQkFEbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY2FkbXVzLWNsb3NlLXNhdmUtYnV0dG9ucycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Nsb3NlLXNhdmUtYnV0dG9ucy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY2xvc2Utc2F2ZS1idXR0b25zLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2xvc2VTYXZlQnV0dG9uc0NvbXBvbmVudCB7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZm9ybT86IEZvcm1Hcm91cDtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBub1NhdmU/OiBib29sZWFuO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgY2xvc2VSZXF1ZXN0OiBFdmVudEVtaXR0ZXI8YW55PjtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLmNsb3NlUmVxdWVzdCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2xvc2VSZXF1ZXN0LmVtaXQoKTtcclxuICB9XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImZvcm1cIj5cclxuICA8YnV0dG9uXHJcbiAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgIG1hdC1yYWlzZWQtYnV0dG9uXHJcbiAgICBjb2xvcj1cIndhcm5cIlxyXG4gICAgbWF0VG9vbHRpcD1cIkNsb3NlIHRoaXMgZWRpdG9yXCJcclxuICAgIChjbGljayk9XCJjbG9zZSgpXCJcclxuICA+XHJcbiAgICA8bWF0LWljb24+Y2FuY2VsPC9tYXQtaWNvbj5cclxuICAgIGNsb3NlXHJcbiAgPC9idXR0b24+XHJcbiAgPGJ1dHRvblxyXG4gICAgKm5nSWY9XCIhbm9TYXZlXCJcclxuICAgIHR5cGU9XCJzdWJtaXRcIlxyXG4gICAgW2Rpc2FibGVkXT1cImZvcm0uaW52YWxpZFwiXHJcbiAgICBtYXQtcmFpc2VkLWJ1dHRvblxyXG4gICAgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgIG1hdFRvb2x0aXA9XCJTYXZlIGRhdGFcIlxyXG4gID5cclxuICAgIDxtYXQtaWNvbj5jaGVja19jaXJjbGU8L21hdC1pY29uPlxyXG4gICAgc2F2ZVxyXG4gIDwvYnV0dG9uPlxyXG48L25nLWNvbnRhaW5lcj5cclxuIl19
@@ -0,0 +1,67 @@
1
+ import { Component, ViewChild, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@myrmidon/cadmus-core";
4
+ import * as i2 from "@myrmidon/ng-tools";
5
+ /**
6
+ * Decorated token-based text visualizer. This is used when editing
7
+ * token-based text layers.
8
+ */
9
+ export class DecoratedTokenTextComponent {
10
+ constructor(_textLayerService) {
11
+ this._textLayerService = _textLayerService;
12
+ this._baseText = '';
13
+ this._locations = [];
14
+ }
15
+ /**
16
+ * The base text.
17
+ */
18
+ get baseText() {
19
+ return this._baseText;
20
+ }
21
+ set baseText(value) {
22
+ this._baseText = value || '';
23
+ this.decorate();
24
+ }
25
+ /**
26
+ * The token-based locations of all the fragments in the layer.
27
+ */
28
+ get locations() {
29
+ return this._locations;
30
+ }
31
+ set locations(value) {
32
+ this._locations = value || [];
33
+ this.decorate();
34
+ }
35
+ /**
36
+ * A selected token-based location.
37
+ */
38
+ get selectedLocation() {
39
+ return this._selectedLoc;
40
+ }
41
+ set selectedLocation(value) {
42
+ this._selectedLoc = value;
43
+ this.decorate();
44
+ }
45
+ ngOnInit() {
46
+ this.decorate();
47
+ }
48
+ decorate() {
49
+ this.text = this._textLayerService.render(this._baseText, this._locations, this._selectedLoc);
50
+ }
51
+ }
52
+ DecoratedTokenTextComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: DecoratedTokenTextComponent, deps: [{ token: i1.TextLayerService }], target: i0.ɵɵFactoryTarget.Component });
53
+ DecoratedTokenTextComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: DecoratedTokenTextComponent, selector: "cadmus-decorated-token-text", inputs: { baseText: "baseText", locations: "locations", selectedLocation: "selectedLocation" }, viewQueries: [{ propertyName: "_textElement", first: true, predicate: ["textElem"], descendants: true }], ngImport: i0, template: "<div [innerHtml]=\"text | safeHtml: 'html'\" id=\"text\" #textElem></div>\r\n", styles: [":host ::ng-deep div#text{counter-reset:text-y-counter}:host ::ng-deep div#text p:before{content:counter(text-y-counter);counter-increment:text-y-counter;margin-right:6px;color:#a0a0a0}:host ::ng-deep span.fr{background-color:#ff0;border:1px solid silver;border-radius:6px;padding:0 4px}:host ::ng-deep span.fr-sel{background-color:orange;font-weight:700;border:1px solid #404040}\n"], pipes: { "safeHtml": i2.SafeHtmlPipe } });
54
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: DecoratedTokenTextComponent, decorators: [{
55
+ type: Component,
56
+ args: [{ selector: 'cadmus-decorated-token-text', template: "<div [innerHtml]=\"text | safeHtml: 'html'\" id=\"text\" #textElem></div>\r\n", styles: [":host ::ng-deep div#text{counter-reset:text-y-counter}:host ::ng-deep div#text p:before{content:counter(text-y-counter);counter-increment:text-y-counter;margin-right:6px;color:#a0a0a0}:host ::ng-deep span.fr{background-color:#ff0;border:1px solid silver;border-radius:6px;padding:0 4px}:host ::ng-deep span.fr-sel{background-color:orange;font-weight:700;border:1px solid #404040}\n"] }]
57
+ }], ctorParameters: function () { return [{ type: i1.TextLayerService }]; }, propDecorators: { _textElement: [{
58
+ type: ViewChild,
59
+ args: ['textElem']
60
+ }], baseText: [{
61
+ type: Input
62
+ }], locations: [{
63
+ type: Input
64
+ }], selectedLocation: [{
65
+ type: Input
66
+ }] } });
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdGVkLXRva2VuLXRleHQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlybWlkb24vY2FkbXVzLXVpL3NyYy9saWIvY29tcG9uZW50cy9kZWNvcmF0ZWQtdG9rZW4tdGV4dC9kZWNvcmF0ZWQtdG9rZW4tdGV4dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJtaWRvbi9jYWRtdXMtdWkvc3JjL2xpYi9jb21wb25lbnRzL2RlY29yYXRlZC10b2tlbi10ZXh0L2RlY29yYXRlZC10b2tlbi10ZXh0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsU0FBUyxFQUFjLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQUdoRjs7O0dBR0c7QUFNSCxNQUFNLE9BQU8sMkJBQTJCO0lBNEN0QyxZQUFvQixpQkFBbUM7UUFBbkMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFrQjtRQUNyRCxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBekNEOztPQUVHO0lBQ0gsSUFDVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBQ0QsSUFBVyxRQUFRLENBQUMsS0FBYTtRQUMvQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQ1csU0FBUztRQUNsQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUNELElBQVcsU0FBUyxDQUFDLEtBQXNCO1FBQ3pDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFDVyxnQkFBZ0I7UUFDekIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFDRCxJQUFXLGdCQUFnQixDQUFDLEtBQWdDO1FBQzFELElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzFCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBU00sUUFBUTtRQUNiLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRU8sUUFBUTtRQUNkLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FDdkMsSUFBSSxDQUFDLFNBQVMsRUFDZCxJQUFJLENBQUMsVUFBVSxFQUNmLElBQUksQ0FBQyxZQUFZLENBQ2xCLENBQUM7SUFDSixDQUFDOzt3SEEzRFUsMkJBQTJCOzRHQUEzQiwyQkFBMkIsNlFDWnhDLCtFQUNBOzJGRFdhLDJCQUEyQjtrQkFMdkMsU0FBUzsrQkFDRSw2QkFBNkI7dUdBS2hCLFlBQVk7c0JBQWxDLFNBQVM7dUJBQUMsVUFBVTtnQkFTVixRQUFRO3NCQURsQixLQUFLO2dCQWFLLFNBQVM7c0JBRG5CLEtBQUs7Z0JBYUssZ0JBQWdCO3NCQUQxQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVG9rZW5Mb2NhdGlvbiwgVGV4dExheWVyU2VydmljZSB9IGZyb20gJ0BteXJtaWRvbi9jYWRtdXMtY29yZSc7XHJcblxyXG4vKipcclxuICogRGVjb3JhdGVkIHRva2VuLWJhc2VkIHRleHQgdmlzdWFsaXplci4gVGhpcyBpcyB1c2VkIHdoZW4gZWRpdGluZ1xyXG4gKiB0b2tlbi1iYXNlZCB0ZXh0IGxheWVycy5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY2FkbXVzLWRlY29yYXRlZC10b2tlbi10ZXh0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGVjb3JhdGVkLXRva2VuLXRleHQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RlY29yYXRlZC10b2tlbi10ZXh0LmNvbXBvbmVudC5jc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIERlY29yYXRlZFRva2VuVGV4dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQFZpZXdDaGlsZCgndGV4dEVsZW0nKSBfdGV4dEVsZW1lbnQ/OiBFbGVtZW50UmVmO1xyXG4gIHByaXZhdGUgX2Jhc2VUZXh0OiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBfbG9jYXRpb25zOiBUb2tlbkxvY2F0aW9uW107XHJcbiAgcHJpdmF0ZSBfc2VsZWN0ZWRMb2M/OiBUb2tlbkxvY2F0aW9uO1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgYmFzZSB0ZXh0LlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGdldCBiYXNlVGV4dCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Jhc2VUZXh0O1xyXG4gIH1cclxuICBwdWJsaWMgc2V0IGJhc2VUZXh0KHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX2Jhc2VUZXh0ID0gdmFsdWUgfHwgJyc7XHJcbiAgICB0aGlzLmRlY29yYXRlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUaGUgdG9rZW4tYmFzZWQgbG9jYXRpb25zIG9mIGFsbCB0aGUgZnJhZ21lbnRzIGluIHRoZSBsYXllci5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBnZXQgbG9jYXRpb25zKCk6IFRva2VuTG9jYXRpb25bXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb25zO1xyXG4gIH1cclxuICBwdWJsaWMgc2V0IGxvY2F0aW9ucyh2YWx1ZTogVG9rZW5Mb2NhdGlvbltdKSB7XHJcbiAgICB0aGlzLl9sb2NhdGlvbnMgPSB2YWx1ZSB8fCBbXTtcclxuICAgIHRoaXMuZGVjb3JhdGUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEEgc2VsZWN0ZWQgdG9rZW4tYmFzZWQgbG9jYXRpb24uXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkTG9jYXRpb24oKTogVG9rZW5Mb2NhdGlvbiB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRMb2M7XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgc2VsZWN0ZWRMb2NhdGlvbih2YWx1ZTogVG9rZW5Mb2NhdGlvbiB8IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy5fc2VsZWN0ZWRMb2MgPSB2YWx1ZTtcclxuICAgIHRoaXMuZGVjb3JhdGUoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB0ZXh0Pzogc3RyaW5nOyAvLyByZW5kZXJlZCBIVE1MIHRleHRcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfdGV4dExheWVyU2VydmljZTogVGV4dExheWVyU2VydmljZSkge1xyXG4gICAgdGhpcy5fYmFzZVRleHQgPSAnJztcclxuICAgIHRoaXMuX2xvY2F0aW9ucyA9IFtdO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZWNvcmF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkZWNvcmF0ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMudGV4dCA9IHRoaXMuX3RleHRMYXllclNlcnZpY2UucmVuZGVyKFxyXG4gICAgICB0aGlzLl9iYXNlVGV4dCxcclxuICAgICAgdGhpcy5fbG9jYXRpb25zLFxyXG4gICAgICB0aGlzLl9zZWxlY3RlZExvY1xyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBbaW5uZXJIdG1sXT1cInRleHQgfCBzYWZlSHRtbDogJ2h0bWwnXCIgaWQ9XCJ0ZXh0XCIgI3RleHRFbGVtPjwvZGl2PlxyXG4iXX0=
@@ -0,0 +1,17 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ export class ErrorListComponent {
5
+ constructor() { }
6
+ ngOnInit() {
7
+ }
8
+ }
9
+ ErrorListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ErrorListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10
+ ErrorListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ErrorListComponent, selector: "cadmus-error-list", inputs: { errors: "errors" }, ngImport: i0, template: "<ul *ngIf=\"errors\">\r\n <li *ngFor=\"let error of errors\">{{error}}</li>\r\n</ul>\r\n", styles: [""], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ErrorListComponent, decorators: [{
12
+ type: Component,
13
+ args: [{ selector: 'cadmus-error-list', template: "<ul *ngIf=\"errors\">\r\n <li *ngFor=\"let error of errors\">{{error}}</li>\r\n</ul>\r\n", styles: [""] }]
14
+ }], ctorParameters: function () { return []; }, propDecorators: { errors: [{
15
+ type: Input
16
+ }] } });
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJtaWRvbi9jYWRtdXMtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Vycm9yLWxpc3QvZXJyb3ItbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJtaWRvbi9jYWRtdXMtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Vycm9yLWxpc3QvZXJyb3ItbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBT3pELE1BQU0sT0FBTyxrQkFBa0I7SUFJN0IsZ0JBQWdCLENBQUM7SUFFVixRQUFRO0lBQ2YsQ0FBQzs7K0dBUFUsa0JBQWtCO21HQUFsQixrQkFBa0IsdUZDUC9CLDJGQUdBOzJGRElhLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDRSxtQkFBbUI7MEVBTXRCLE1BQU07c0JBRFosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjYWRtdXMtZXJyb3ItbGlzdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Vycm9yLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2Vycm9yLWxpc3QuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFcnJvckxpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGVycm9ycz86IHN0cmluZ1tdO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgfVxyXG59XHJcbiIsIjx1bCAqbmdJZj1cImVycm9yc1wiPlxyXG4gIDxsaSAqbmdGb3I9XCJsZXQgZXJyb3Igb2YgZXJyb3JzXCI+e3tlcnJvcn19PC9saT5cclxuPC91bD5cclxuIl19
@@ -0,0 +1,102 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../../services/color.service";
4
+ import * as i2 from "@angular/material/tooltip";
5
+ export class FacetBadgeComponent {
6
+ constructor(_colorService) {
7
+ this._colorService = _colorService;
8
+ this._facetId = '';
9
+ this._facetDefinitions = [];
10
+ this._facetColors = {};
11
+ this._facetTips = {};
12
+ this.color = 'transparent';
13
+ this.contrastColor = 'black';
14
+ }
15
+ /**
16
+ * The facet ID.
17
+ */
18
+ get facetId() {
19
+ return this._facetId;
20
+ }
21
+ set facetId(value) {
22
+ if (this._facetId === value) {
23
+ return;
24
+ }
25
+ this._facetId = value;
26
+ this.updateBadge();
27
+ }
28
+ /**
29
+ * The facets definitions.
30
+ */
31
+ get facetDefinitions() {
32
+ return this._facetDefinitions;
33
+ }
34
+ set facetDefinitions(value) {
35
+ this._facetDefinitions = value;
36
+ this._facetColors = {};
37
+ this._facetTips = {};
38
+ this.updateBadge();
39
+ }
40
+ getFacetColor(facetId) {
41
+ if (this._facetColors[facetId]) {
42
+ return this._facetColors[facetId];
43
+ }
44
+ if (!this._facetDefinitions) {
45
+ return 'transparent';
46
+ }
47
+ const facet = this._facetDefinitions.find((f) => {
48
+ return f.id === facetId;
49
+ });
50
+ if (facet?.colorKey) {
51
+ this._facetColors[facetId] = '#' + facet.colorKey;
52
+ }
53
+ else {
54
+ this._facetColors[facetId] = 'transparent';
55
+ }
56
+ return this._facetColors[facetId];
57
+ }
58
+ getFacetTip(facetId) {
59
+ if (this._facetTips[facetId]) {
60
+ return this._facetTips[facetId];
61
+ }
62
+ if (!this.facetDefinitions) {
63
+ return null;
64
+ }
65
+ const facet = this.facetDefinitions.find((f) => {
66
+ return f.id === facetId;
67
+ });
68
+ if (!facet) {
69
+ this._facetTips[facetId] = facetId;
70
+ }
71
+ else {
72
+ const sb = [];
73
+ for (let i = 0; i < facet.partDefinitions.length; i++) {
74
+ if (i > 0) {
75
+ sb.push(', ');
76
+ }
77
+ sb.push(facet.partDefinitions[i].name);
78
+ if (facet.partDefinitions[i].isRequired) {
79
+ sb.push('*');
80
+ }
81
+ }
82
+ this._facetTips[facetId] = sb.join('');
83
+ }
84
+ return this._facetTips[facetId];
85
+ }
86
+ updateBadge() {
87
+ this.color = this.getFacetColor(this._facetId);
88
+ this.contrastColor = this._colorService.getContrastColor(this.color);
89
+ this.tip = this.getFacetTip(this._facetId) ?? undefined;
90
+ }
91
+ }
92
+ FacetBadgeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: FacetBadgeComponent, deps: [{ token: i1.ColorService }], target: i0.ɵɵFactoryTarget.Component });
93
+ FacetBadgeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: FacetBadgeComponent, selector: "cadmus-facet-badge", inputs: { facetId: "facetId", facetDefinitions: "facetDefinitions" }, ngImport: i0, template: "<span\r\n class=\"model-type\"\r\n [style.background-color]=\"color\"\r\n [style.color]=\"contrastColor\"\r\n matTooltip=\"{{ tip }}\"\r\n >{{ facetId }}\r\n</span>\r\n", styles: ["span.model-type{padding:4px;border-radius:6px}\n"], directives: [{ type: i2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
94
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: FacetBadgeComponent, decorators: [{
95
+ type: Component,
96
+ args: [{ selector: 'cadmus-facet-badge', template: "<span\r\n class=\"model-type\"\r\n [style.background-color]=\"color\"\r\n [style.color]=\"contrastColor\"\r\n matTooltip=\"{{ tip }}\"\r\n >{{ facetId }}\r\n</span>\r\n", styles: ["span.model-type{padding:4px;border-radius:6px}\n"] }]
97
+ }], ctorParameters: function () { return [{ type: i1.ColorService }]; }, propDecorators: { facetId: [{
98
+ type: Input
99
+ }], facetDefinitions: [{
100
+ type: Input
101
+ }] } });
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjZXQtYmFkZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlybWlkb24vY2FkbXVzLXVpL3NyYy9saWIvY29tcG9uZW50cy9mYWNldC1iYWRnZS9mYWNldC1iYWRnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJtaWRvbi9jYWRtdXMtdWkvc3JjL2xpYi9jb21wb25lbnRzL2ZhY2V0LWJhZGdlL2ZhY2V0LWJhZGdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBU2pELE1BQU0sT0FBTyxtQkFBbUI7SUF1QzlCLFlBQW9CLGFBQTJCO1FBQTNCLGtCQUFhLEdBQWIsYUFBYSxDQUFjO1FBQzdDLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxhQUFhLENBQUM7UUFDM0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUM7SUFDL0IsQ0FBQztJQXBDRDs7T0FFRztJQUNILElBQ1csT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUNELElBQVcsT0FBTyxDQUFDLEtBQWE7UUFDOUIsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLEtBQUssRUFBRTtZQUMzQixPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVEOztP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LENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksU0FBUyxDQUFDO0lBQzFELENBQUM7O2dIQXJHVSxtQkFBbUI7b0dBQW5CLG1CQUFtQixnSUNUaEMsK0tBT0E7MkZERWEsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLG9CQUFvQjttR0FrQm5CLE9BQU87c0JBRGpCLEtBQUs7Z0JBZ0JLLGdCQUFnQjtzQkFEMUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRmFjZXREZWZpbml0aW9uIH0gZnJvbSAnQG15cm1pZG9uL2NhZG11cy1jb3JlJztcclxuaW1wb3J0IHsgQ29sb3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29sb3Iuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NhZG11cy1mYWNldC1iYWRnZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2ZhY2V0LWJhZGdlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9mYWNldC1iYWRnZS5jb21wb25lbnQuY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGYWNldEJhZGdlQ29tcG9uZW50IHtcclxuICBwcml2YXRlIF9mYWNldENvbG9yczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcclxuICBwcml2YXRlIF9mYWNldFRpcHM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XHJcbiAgcHJpdmF0ZSBfZmFjZXRJZDogc3RyaW5nO1xyXG4gIHByaXZhdGUgX2ZhY2V0RGVmaW5pdGlvbnM6IEZhY2V0RGVmaW5pdGlvbltdO1xyXG5cclxuICBwdWJsaWMgY29sb3I6IHN0cmluZztcclxuICBwdWJsaWMgY29udHJhc3RDb2xvcjogc3RyaW5nO1xyXG4gIHB1YmxpYyB0aXA/OiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBmYWNldCBJRC5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBnZXQgZmFjZXRJZCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZhY2V0SWQ7XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgZmFjZXRJZCh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5fZmFjZXRJZCA9PT0gdmFsdWUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fZmFjZXRJZCA9IHZhbHVlO1xyXG4gICAgdGhpcy51cGRhdGVCYWRnZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIGZhY2V0cyBkZWZpbml0aW9ucy5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBnZXQgZmFjZXREZWZpbml0aW9ucygpOiBGYWNldERlZmluaXRpb25bXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZmFjZXREZWZpbml0aW9ucztcclxuICB9XHJcbiAgcHVibGljIHNldCBmYWNldERlZmluaXRpb25zKHZhbHVlOiBGYWNldERlZmluaXRpb25bXSkge1xyXG4gICAgdGhpcy5fZmFjZXREZWZpbml0aW9ucyA9IHZhbHVlO1xyXG4gICAgdGhpcy5fZmFjZXRDb2xvcnMgPSB7fTtcclxuICAgIHRoaXMuX2ZhY2V0VGlwcyA9IHt9O1xyXG4gICAgdGhpcy51cGRhdGVCYWRnZSgpO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfY29sb3JTZXJ2aWNlOiBDb2xvclNlcnZpY2UpIHtcclxuICAgIHRoaXMuX2ZhY2V0SWQgPSAnJztcclxuICAgIHRoaXMuX2ZhY2V0RGVmaW5pdGlvbnMgPSBbXTtcclxuICAgIHRoaXMuX2ZhY2V0Q29sb3JzID0ge307XHJcbiAgICB0aGlzLl9mYWNldFRpcHMgPSB7fTtcclxuICAgIHRoaXMuY29sb3IgPSAndHJhbnNwYXJlbnQnO1xyXG4gICAgdGhpcy5jb250cmFzdENvbG9yID0gJ2JsYWNrJztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RmFjZXRDb2xvcihmYWNldElkOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuX2ZhY2V0Q29sb3JzW2ZhY2V0SWRdKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9mYWNldENvbG9yc1tmYWNldElkXTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5fZmFjZXREZWZpbml0aW9ucykge1xyXG4gICAgICByZXR1cm4gJ3RyYW5zcGFyZW50JztcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBmYWNldCA9IHRoaXMuX2ZhY2V0RGVmaW5pdGlvbnMuZmluZCgoZikgPT4ge1xyXG4gICAgICByZXR1cm4gZi5pZCA9PT0gZmFjZXRJZDtcclxuICAgIH0pO1xyXG4gICAgaWYgKGZhY2V0Py5jb2xvcktleSkge1xyXG4gICAgICB0aGlzLl9mYWNldENvbG9yc1tmYWNldElkXSA9ICcjJyArIGZhY2V0LmNvbG9yS2V5O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fZmFjZXRDb2xvcnNbZmFjZXRJZF0gPSAndHJhbnNwYXJlbnQnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuX2ZhY2V0Q29sb3JzW2ZhY2V0SWRdO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRGYWNldFRpcChmYWNldElkOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgIGlmICh0aGlzLl9mYWNldFRpcHNbZmFjZXRJZF0pIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX2ZhY2V0VGlwc1tmYWNldElkXTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMuZmFjZXREZWZpbml0aW9ucykge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBmYWNldCA9IHRoaXMuZmFjZXREZWZpbml0aW9ucy5maW5kKChmKSA9PiB7XHJcbiAgICAgIHJldHVybiBmLmlkID09PSBmYWNldElkO1xyXG4gICAgfSk7XHJcbiAgICBpZiAoIWZhY2V0KSB7XHJcbiAgICAgIHRoaXMuX2ZhY2V0VGlwc1tmYWNldElkXSA9IGZhY2V0SWQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBzYjogc3RyaW5nW10gPSBbXTtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmYWNldC5wYXJ0RGVmaW5pdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoaSA+IDApIHtcclxuICAgICAgICAgIHNiLnB1c2goJywgJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHNiLnB1c2goZmFjZXQucGFydERlZmluaXRpb25zW2ldLm5hbWUpO1xyXG4gICAgICAgIGlmIChmYWNldC5wYXJ0RGVmaW5pdGlvbnNbaV0uaXNSZXF1aXJlZCkge1xyXG4gICAgICAgICAgc2IucHVzaCgnKicpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLl9mYWNldFRpcHNbZmFjZXRJZF0gPSBzYi5qb2luKCcnKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLl9mYWNldFRpcHNbZmFjZXRJZF07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZUJhZGdlKCkge1xyXG4gICAgdGhpcy5jb2xvciA9IHRoaXMuZ2V0RmFjZXRDb2xvcih0aGlzLl9mYWNldElkKTtcclxuICAgIHRoaXMuY29udHJhc3RDb2xvciA9IHRoaXMuX2NvbG9yU2VydmljZS5nZXRDb250cmFzdENvbG9yKHRoaXMuY29sb3IpO1xyXG4gICAgdGhpcy50aXAgPSB0aGlzLmdldEZhY2V0VGlwKHRoaXMuX2ZhY2V0SWQpID8/IHVuZGVmaW5lZDtcclxuICB9XHJcbn1cclxuIiwiPHNwYW5cclxuICBjbGFzcz1cIm1vZGVsLXR5cGVcIlxyXG4gIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImNvbG9yXCJcclxuICBbc3R5bGUuY29sb3JdPVwiY29udHJhc3RDb2xvclwiXHJcbiAgbWF0VG9vbHRpcD1cInt7IHRpcCB9fVwiXHJcbiAgPnt7IGZhY2V0SWQgfX1cclxuPC9zcGFuPlxyXG4iXX0=
@@ -0,0 +1,53 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ import * as i2 from "@angular/material/tooltip";
5
+ /**
6
+ * Badge with item's flags. Each flag is represented by a circle filled
7
+ * with the flag's color key.
8
+ */
9
+ export class FlagsBadgeComponent {
10
+ constructor() {
11
+ this._flags = 0;
12
+ this._flagDefinitions = [];
13
+ this.badgeFlags = [];
14
+ }
15
+ get flags() {
16
+ return this._flags;
17
+ }
18
+ set flags(value) {
19
+ if (this._flags === value) {
20
+ return;
21
+ }
22
+ this._flags = value;
23
+ this.updateBadge();
24
+ }
25
+ get flagDefinitions() {
26
+ return this._flagDefinitions;
27
+ }
28
+ set flagDefinitions(value) {
29
+ this._flagDefinitions = value;
30
+ this.updateBadge();
31
+ }
32
+ ngOnInit() { }
33
+ updateBadge() {
34
+ if (!this._flagDefinitions) {
35
+ return;
36
+ }
37
+ this.badgeFlags = this._flagDefinitions.filter((def) => {
38
+ // tslint:disable-next-line: no-bitwise
39
+ return def.id & this._flags;
40
+ });
41
+ }
42
+ }
43
+ FlagsBadgeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: FlagsBadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
44
+ FlagsBadgeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: FlagsBadgeComponent, selector: "cadmus-flags-badge", inputs: { flags: "flags", flagDefinitions: "flagDefinitions" }, ngImport: i0, template: "<div>\r\n <span\r\n class=\"badge-flag\"\r\n *ngFor=\"let def of badgeFlags\"\r\n [style.color]=\"'#' + def.colorKey\"\r\n [matTooltip]=\"def.label\"\r\n >\r\n &#x25cf;\r\n </span>\r\n</div>\r\n", styles: ["span.badge-flag{margin-right:4px;font-size:24px;cursor:default}\n"], directives: [{ type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: FlagsBadgeComponent, decorators: [{
46
+ type: Component,
47
+ args: [{ selector: 'cadmus-flags-badge', template: "<div>\r\n <span\r\n class=\"badge-flag\"\r\n *ngFor=\"let def of badgeFlags\"\r\n [style.color]=\"'#' + def.colorKey\"\r\n [matTooltip]=\"def.label\"\r\n >\r\n &#x25cf;\r\n </span>\r\n</div>\r\n", styles: ["span.badge-flag{margin-right:4px;font-size:24px;cursor:default}\n"] }]
48
+ }], ctorParameters: function () { return []; }, propDecorators: { flags: [{
49
+ type: Input
50
+ }], flagDefinitions: [{
51
+ type: Input
52
+ }] } });
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhZ3MtYmFkZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlybWlkb24vY2FkbXVzLXVpL3NyYy9saWIvY29tcG9uZW50cy9mbGFncy1iYWRnZS9mbGFncy1iYWRnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJtaWRvbi9jYWRtdXMtdWkvc3JjL2xpYi9jb21wb25lbnRzL2ZsYWdzLWJhZGdlL2ZsYWdzLWJhZGdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBR3pEOzs7R0FHRztBQU1ILE1BQU0sT0FBTyxtQkFBbUI7SUEyQjlCO1FBQ0UsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDaEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBekJELElBQ1csS0FBSztRQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBQ0QsSUFBVyxLQUFLLENBQUMsS0FBYTtRQUM1QixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssS0FBSyxFQUFFO1lBQ3pCLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFDVyxlQUFlO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQy9CLENBQUM7SUFDRCxJQUFXLGVBQWUsQ0FBQyxLQUF1QjtRQUNoRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQzlCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBUUQsUUFBUSxLQUFVLENBQUM7SUFFWCxXQUFXO1FBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDMUIsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDckQsdUNBQXVDO1lBQ3ZDLE9BQU8sR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7Z0hBM0NVLG1CQUFtQjtvR0FBbkIsbUJBQW1CLDBIQ1poQyxzTkFVQTsyRkRFYSxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0Usb0JBQW9COzBFQVduQixLQUFLO3NCQURmLEtBQUs7Z0JBYUssZUFBZTtzQkFEekIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGbGFnRGVmaW5pdGlvbiB9IGZyb20gJ0BteXJtaWRvbi9jYWRtdXMtY29yZSc7XHJcblxyXG4vKipcclxuICogQmFkZ2Ugd2l0aCBpdGVtJ3MgZmxhZ3MuIEVhY2ggZmxhZyBpcyByZXByZXNlbnRlZCBieSBhIGNpcmNsZSBmaWxsZWRcclxuICogd2l0aCB0aGUgZmxhZydzIGNvbG9yIGtleS5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY2FkbXVzLWZsYWdzLWJhZGdlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZmxhZ3MtYmFkZ2UuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2ZsYWdzLWJhZGdlLmNvbXBvbmVudC5jc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEZsYWdzQmFkZ2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHByaXZhdGUgX2ZsYWdzOiBudW1iZXI7XHJcbiAgcHJpdmF0ZSBfZmxhZ0RlZmluaXRpb25zOiBGbGFnRGVmaW5pdGlvbltdO1xyXG5cclxuICBwdWJsaWMgYmFkZ2VGbGFnczogRmxhZ0RlZmluaXRpb25bXTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZ2V0IGZsYWdzKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fZmxhZ3M7XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgZmxhZ3ModmFsdWU6IG51bWJlcikge1xyXG4gICAgaWYgKHRoaXMuX2ZsYWdzID09PSB2YWx1ZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLl9mbGFncyA9IHZhbHVlO1xyXG4gICAgdGhpcy51cGRhdGVCYWRnZSgpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZ2V0IGZsYWdEZWZpbml0aW9ucygpOiBGbGFnRGVmaW5pdGlvbltdIHtcclxuICAgIHJldHVybiB0aGlzLl9mbGFnRGVmaW5pdGlvbnM7XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgZmxhZ0RlZmluaXRpb25zKHZhbHVlOiBGbGFnRGVmaW5pdGlvbltdKSB7XHJcbiAgICB0aGlzLl9mbGFnRGVmaW5pdGlvbnMgPSB2YWx1ZTtcclxuICAgIHRoaXMudXBkYXRlQmFkZ2UoKTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5fZmxhZ3MgPSAwO1xyXG4gICAgdGhpcy5fZmxhZ0RlZmluaXRpb25zID0gW107XHJcbiAgICB0aGlzLmJhZGdlRmxhZ3MgPSBbXTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge31cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVCYWRnZSgpIHtcclxuICAgIGlmICghdGhpcy5fZmxhZ0RlZmluaXRpb25zKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuYmFkZ2VGbGFncyA9IHRoaXMuX2ZsYWdEZWZpbml0aW9ucy5maWx0ZXIoKGRlZikgPT4ge1xyXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWJpdHdpc2VcclxuICAgICAgcmV0dXJuIGRlZi5pZCAmIHRoaXMuX2ZsYWdzO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXY+XHJcbiAgPHNwYW5cclxuICAgIGNsYXNzPVwiYmFkZ2UtZmxhZ1wiXHJcbiAgICAqbmdGb3I9XCJsZXQgZGVmIG9mIGJhZGdlRmxhZ3NcIlxyXG4gICAgW3N0eWxlLmNvbG9yXT1cIicjJyArIGRlZi5jb2xvcktleVwiXHJcbiAgICBbbWF0VG9vbHRpcF09XCJkZWYubGFiZWxcIlxyXG4gID5cclxuICAgICYjeDI1Y2Y7XHJcbiAgPC9zcGFuPlxyXG48L2Rpdj5cclxuIl19
@@ -0,0 +1,97 @@
1
+ import { Component, EventEmitter, Input, Output, } from '@angular/core';
2
+ import { debounceTime } from 'rxjs/operators';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/forms";
5
+ /**
6
+ * Base class for in-place editor components. These components
7
+ * do not require user to press a save button, as any change
8
+ * made is reflected in the parent consumer control. Such editors
9
+ * are fit for editing submodels in part editors.
10
+ * The general architecture for this family of components stores
11
+ * the model in an input model$ property (a BehaviorSubject<T> where
12
+ * T is the model's type), so that the form can be updated whenever
13
+ * the model gets pushed into this component.
14
+ * Also, a parentForm property can be used to add the root form
15
+ * of this component as a child of that form, so that the state
16
+ * of this form can affect that of the parent.
17
+ * When the user edits data, a new model gets built from the form
18
+ * and the modelChange event is fired. The consumer parent component
19
+ * should handle this event to get the updated model.
20
+ */
21
+ export class InplaceEditorComponentBase {
22
+ constructor(formBuilder) {
23
+ this.formBuilder = formBuilder;
24
+ // events
25
+ this.modelChange = new EventEmitter();
26
+ }
27
+ /**
28
+ * The IDs edited by this component, wrapped in a subject
29
+ * stream. This component updates when the stream updates.
30
+ */
31
+ get model$() {
32
+ return this.modelSubject;
33
+ }
34
+ set model$(value) {
35
+ this.modelSubject = value;
36
+ // unsubscribe the previous observable if any
37
+ if (this.modelSubscription) {
38
+ this.modelSubscription.unsubscribe();
39
+ }
40
+ // subscribe to the new observable
41
+ if (this.modelSubject) {
42
+ this.modelSubscription = this.modelSubject.subscribe((m) => {
43
+ this.setModel(m);
44
+ });
45
+ }
46
+ }
47
+ /**
48
+ * Initialize the editor. Your implementation MUST call this method
49
+ * in its ngOnInit.
50
+ * @param formName The name to be assigned to the form grouping
51
+ * all the controls of this component (=this.form), when it gets
52
+ * added to a parent form.
53
+ * @param formControls The configuration for the controls of this
54
+ * component.
55
+ */
56
+ initEditor(formName, formControls) {
57
+ this.form = this.formBuilder.group(formControls);
58
+ // add it as a child form to the parent, if any.
59
+ // This propagates this form's state into it.
60
+ if (this.parentForm) {
61
+ this.parentForm.addControl(formName, this.form);
62
+ }
63
+ // once we are initialized, set the model to the current
64
+ // value, because if it was set meantime it would be lost
65
+ this.setModel(this.modelSubject?.value);
66
+ // react on this form changes
67
+ this.form.valueChanges.pipe(debounceTime(300)).subscribe((_) => {
68
+ const m = this.getModel();
69
+ if (m) {
70
+ this.modelChange.emit(m);
71
+ }
72
+ });
73
+ }
74
+ /**
75
+ * Unsubscribe from the model subscription.
76
+ */
77
+ ngOnDestroy() {
78
+ if (this.modelSubscription) {
79
+ this.modelSubscription.unsubscribe();
80
+ }
81
+ }
82
+ }
83
+ InplaceEditorComponentBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: InplaceEditorComponentBase, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
84
+ InplaceEditorComponentBase.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: InplaceEditorComponentBase, selector: "ng-component", inputs: { parentForm: "parentForm", model$: "model$" }, outputs: { modelChange: "modelChange" }, ngImport: i0, template: '', isInline: true });
85
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: InplaceEditorComponentBase, decorators: [{
86
+ type: Component,
87
+ args: [{
88
+ template: '',
89
+ }]
90
+ }], ctorParameters: function () { return [{ type: i1.FormBuilder }]; }, propDecorators: { parentForm: [{
91
+ type: Input
92
+ }], model$: [{
93
+ type: Input
94
+ }], modelChange: [{
95
+ type: Output
96
+ }] } });
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wbGFjZS1lZGl0b3ItY29tcG9uZW50LWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJtaWRvbi9jYWRtdXMtdWkvc3JjL2xpYi9jb21wb25lbnRzL2lucGxhY2UtZWRpdG9yLWNvbXBvbmVudC1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFJdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFFOUM7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBSUgsTUFBTSxPQUFnQiwwQkFBMEI7SUFnRDlDLFlBQXNCLFdBQXdCO1FBQXhCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQzVDLFNBQVM7UUFDVCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksWUFBWSxFQUFLLENBQUM7SUFDM0MsQ0FBQztJQXZDRDs7O09BR0c7SUFDSCxJQUNXLE1BQU07UUFDZixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUNELElBQVcsTUFBTSxDQUFDLEtBQXFDO1FBQ3JELElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBRTFCLDZDQUE2QztRQUM3QyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMxQixJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDdEM7UUFDRCxrQ0FBa0M7UUFDbEMsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUN6RCxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25CLENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBb0JEOzs7Ozs7OztPQVFHO0lBQ0ksVUFBVSxDQUNmLFFBQWdCLEVBQ2hCLFlBQW9DO1FBRXBDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFakQsZ0RBQWdEO1FBQ2hELDZDQUE2QztRQUM3QyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNqRDtRQUVELHdEQUF3RDtRQUN4RCx5REFBeUQ7UUFDekQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXhDLDZCQUE2QjtRQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDN0QsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxFQUFFO2dCQUNMLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzFCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBYUQ7O09BRUc7SUFDSSxXQUFXO1FBQ2hCLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQzFCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN0QztJQUNILENBQUM7O3VIQXpHbUIsMEJBQTBCOzJHQUExQiwwQkFBMEIscUpBRnBDLEVBQUU7MkZBRVEsMEJBQTBCO2tCQUgvQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxFQUFFO2lCQUNiO2tHQVdRLFVBQVU7c0JBRGhCLEtBQUs7Z0JBUUssTUFBTTtzQkFEaEIsS0FBSztnQkF5QkMsV0FBVztzQkFEakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT3V0cHV0LFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcy9pbnRlcm5hbC9TdWJzY3JpcHRpb24nO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG4vKipcclxuICogQmFzZSBjbGFzcyBmb3IgaW4tcGxhY2UgZWRpdG9yIGNvbXBvbmVudHMuIFRoZXNlIGNvbXBvbmVudHNcclxuICogZG8gbm90IHJlcXVpcmUgdXNlciB0byBwcmVzcyBhIHNhdmUgYnV0dG9uLCBhcyBhbnkgY2hhbmdlXHJcbiAqIG1hZGUgaXMgcmVmbGVjdGVkIGluIHRoZSBwYXJlbnQgY29uc3VtZXIgY29udHJvbC4gU3VjaCBlZGl0b3JzXHJcbiAqIGFyZSBmaXQgZm9yIGVkaXRpbmcgc3VibW9kZWxzIGluIHBhcnQgZWRpdG9ycy5cclxuICogVGhlIGdlbmVyYWwgYXJjaGl0ZWN0dXJlIGZvciB0aGlzIGZhbWlseSBvZiBjb21wb25lbnRzIHN0b3Jlc1xyXG4gKiB0aGUgbW9kZWwgaW4gYW4gaW5wdXQgbW9kZWwkIHByb3BlcnR5IChhIEJlaGF2aW9yU3ViamVjdDxUPiB3aGVyZVxyXG4gKiBUIGlzIHRoZSBtb2RlbCdzIHR5cGUpLCBzbyB0aGF0IHRoZSBmb3JtIGNhbiBiZSB1cGRhdGVkIHdoZW5ldmVyXHJcbiAqIHRoZSBtb2RlbCBnZXRzIHB1c2hlZCBpbnRvIHRoaXMgY29tcG9uZW50LlxyXG4gKiBBbHNvLCBhIHBhcmVudEZvcm0gcHJvcGVydHkgY2FuIGJlIHVzZWQgdG8gYWRkIHRoZSByb290IGZvcm1cclxuICogb2YgdGhpcyBjb21wb25lbnQgYXMgYSBjaGlsZCBvZiB0aGF0IGZvcm0sIHNvIHRoYXQgdGhlIHN0YXRlXHJcbiAqIG9mIHRoaXMgZm9ybSBjYW4gYWZmZWN0IHRoYXQgb2YgdGhlIHBhcmVudC5cclxuICogV2hlbiB0aGUgdXNlciBlZGl0cyBkYXRhLCBhIG5ldyBtb2RlbCBnZXRzIGJ1aWx0IGZyb20gdGhlIGZvcm1cclxuICogYW5kIHRoZSBtb2RlbENoYW5nZSBldmVudCBpcyBmaXJlZC4gVGhlIGNvbnN1bWVyIHBhcmVudCBjb21wb25lbnRcclxuICogc2hvdWxkIGhhbmRsZSB0aGlzIGV2ZW50IHRvIGdldCB0aGUgdXBkYXRlZCBtb2RlbC5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHRlbXBsYXRlOiAnJyxcclxufSlcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIElucGxhY2VFZGl0b3JDb21wb25lbnRCYXNlPFQ+IGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICBwcm90ZWN0ZWQgbW9kZWxTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XHJcbiAgcHJvdGVjdGVkIG1vZGVsU3ViamVjdD86IEJlaGF2aW9yU3ViamVjdDxUPjtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIG9wdGlvbmFsIHBhcmVudCBmb3JtIHRoaXMgY29tcG9uZW50IHNob3VsZCBhdHRhY2ggdG8uXHJcbiAgICogU2V0IHRoaXMgd2hlbiB0aGUgZm9ybSBpbiB0aGlzIGNvbXBvbmVudCBzaG91bGQgY29udHJpYnV0ZVxyXG4gICAqIHRvIHRoZSBzdGF0ZSBvZiBhIHBhcmVudCBmb3JtIGluIHRoZSBjb25zdW1lciBjb250cm9sLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHBhcmVudEZvcm0/OiBGb3JtR3JvdXA7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBJRHMgZWRpdGVkIGJ5IHRoaXMgY29tcG9uZW50LCB3cmFwcGVkIGluIGEgc3ViamVjdFxyXG4gICAqIHN0cmVhbS4gVGhpcyBjb21wb25lbnQgdXBkYXRlcyB3aGVuIHRoZSBzdHJlYW0gdXBkYXRlcy5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBnZXQgbW9kZWwkKCk6IEJlaGF2aW9yU3ViamVjdDxUPiB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5tb2RlbFN1YmplY3Q7XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgbW9kZWwkKHZhbHVlOiBCZWhhdmlvclN1YmplY3Q8VD4gfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMubW9kZWxTdWJqZWN0ID0gdmFsdWU7XHJcblxyXG4gICAgLy8gdW5zdWJzY3JpYmUgdGhlIHByZXZpb3VzIG9ic2VydmFibGUgaWYgYW55XHJcbiAgICBpZiAodGhpcy5tb2RlbFN1YnNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLm1vZGVsU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgICAvLyBzdWJzY3JpYmUgdG8gdGhlIG5ldyBvYnNlcnZhYmxlXHJcbiAgICBpZiAodGhpcy5tb2RlbFN1YmplY3QpIHtcclxuICAgICAgdGhpcy5tb2RlbFN1YnNjcmlwdGlvbiA9IHRoaXMubW9kZWxTdWJqZWN0LnN1YnNjcmliZSgobSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0TW9kZWwobSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuZXZlciB0aGUgdXNlciBoYXMgY2hhbmdlZCB0aGUgbW9kZWwuXHJcbiAgICogVGhlIGNvbnN1bWVyIGNvbXBvbmVudCBzaG91bGQgc3Vic2NyaWJlIHRvIHRoaXMgdG8gZ2V0XHJcbiAgICogYSBjb3B5IG9mIHRoZSB1cGRhdGVkIG1vZGVsLlxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBtb2RlbENoYW5nZTogRXZlbnRFbWl0dGVyPFQ+O1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgZm9ybSBncm91cGluZyB0aGUgY29udHJvbHMgb2YgdGhpcyBlZGl0b3IuXHJcbiAgICovXHJcbiAgcHVibGljIGZvcm0/OiBGb3JtR3JvdXA7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIpIHtcclxuICAgIC8vIGV2ZW50c1xyXG4gICAgdGhpcy5tb2RlbENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VD4oKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemUgdGhlIGVkaXRvci4gWW91ciBpbXBsZW1lbnRhdGlvbiBNVVNUIGNhbGwgdGhpcyBtZXRob2RcclxuICAgKiBpbiBpdHMgbmdPbkluaXQuXHJcbiAgICogQHBhcmFtIGZvcm1OYW1lIFRoZSBuYW1lIHRvIGJlIGFzc2lnbmVkIHRvIHRoZSBmb3JtIGdyb3VwaW5nXHJcbiAgICogYWxsIHRoZSBjb250cm9scyBvZiB0aGlzIGNvbXBvbmVudCAoPXRoaXMuZm9ybSksIHdoZW4gaXQgZ2V0c1xyXG4gICAqIGFkZGVkIHRvIGEgcGFyZW50IGZvcm0uXHJcbiAgICogQHBhcmFtIGZvcm1Db250cm9scyBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGNvbnRyb2xzIG9mIHRoaXNcclxuICAgKiBjb21wb25lbnQuXHJcbiAgICovXHJcbiAgcHVibGljIGluaXRFZGl0b3IoXHJcbiAgICBmb3JtTmFtZTogc3RyaW5nLFxyXG4gICAgZm9ybUNvbnRyb2xzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9XHJcbiAgKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKGZvcm1Db250cm9scyk7XHJcblxyXG4gICAgLy8gYWRkIGl0IGFzIGEgY2hpbGQgZm9ybSB0byB0aGUgcGFyZW50LCBpZiBhbnkuXHJcbiAgICAvLyBUaGlzIHByb3BhZ2F0ZXMgdGhpcyBmb3JtJ3Mgc3RhdGUgaW50byBpdC5cclxuICAgIGlmICh0aGlzLnBhcmVudEZvcm0pIHtcclxuICAgICAgdGhpcy5wYXJlbnRGb3JtLmFkZENvbnRyb2woZm9ybU5hbWUsIHRoaXMuZm9ybSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gb25jZSB3ZSBhcmUgaW5pdGlhbGl6ZWQsIHNldCB0aGUgbW9kZWwgdG8gdGhlIGN1cnJlbnRcclxuICAgIC8vIHZhbHVlLCBiZWNhdXNlIGlmIGl0IHdhcyBzZXQgbWVhbnRpbWUgaXQgd291bGQgYmUgbG9zdFxyXG4gICAgdGhpcy5zZXRNb2RlbCh0aGlzLm1vZGVsU3ViamVjdD8udmFsdWUpO1xyXG5cclxuICAgIC8vIHJlYWN0IG9uIHRoaXMgZm9ybSBjaGFuZ2VzXHJcbiAgICB0aGlzLmZvcm0udmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDMwMCkpLnN1YnNjcmliZSgoXykgPT4ge1xyXG4gICAgICBjb25zdCBtID0gdGhpcy5nZXRNb2RlbCgpO1xyXG4gICAgICBpZiAobSkge1xyXG4gICAgICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdChtKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXQgdGhlIG1vZGVsIGZvciB0aGlzIGNvbXBvbmVudCwgdXBkYXRpbmcgdGhlIGZvcm0gYWNjb3JkaW5nbHkuXHJcbiAgICogQHBhcmFtIHZhbHVlIFRoZSBtb2RlbC5cclxuICAgKi9cclxuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgc2V0TW9kZWwodmFsdWU6IFQgfCB1bmRlZmluZWQpOiB2b2lkO1xyXG5cclxuICAvKipcclxuICAgKiBHZXQgdGhlIG1vZGVsIGZvciB0aGlzIGNvbXBvbmVudCwgZnJvbSB0aGUgZm9ybSBjb250cm9scy5cclxuICAgKi9cclxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0TW9kZWwoKTogVDtcclxuXHJcbiAgLyoqXHJcbiAgICogVW5zdWJzY3JpYmUgZnJvbSB0aGUgbW9kZWwgc3Vic2NyaXB0aW9uLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm1vZGVsU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIHRoaXMubW9kZWxTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19