@myrmidon/cadmus-ui 4.0.5 → 5.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 (55) hide show
  1. package/esm2022/lib/cadmus-ui.module.mjs +140 -0
  2. package/esm2022/lib/components/close-save-buttons/close-save-buttons.component.mjs +27 -0
  3. package/esm2022/lib/components/decorated-token-text/decorated-token-text.component.mjs +68 -0
  4. package/esm2022/lib/components/error-list/error-list.component.mjs +18 -0
  5. package/esm2022/lib/components/facet-badge/facet-badge.component.mjs +89 -0
  6. package/esm2022/lib/components/flags-badge/flags-badge.component.mjs +39 -0
  7. package/esm2022/lib/components/layer-hints/layer-hints.component.mjs +102 -0
  8. package/esm2022/lib/components/lookup-pin/lookup-pin.component.mjs +136 -0
  9. package/esm2022/lib/components/model-editor-component-base.mjs +215 -0
  10. package/esm2022/lib/components/part-badge/part-badge.component.mjs +103 -0
  11. package/esm2022/lib/components/thesaurus-tree/thesaurus-tree.component.mjs +221 -0
  12. package/esm2022/lib/services/color.service.mjs +156 -0
  13. package/esm2022/lib/services/user-ref-lookup.service.mjs +34 -0
  14. package/{esm2020 → esm2022}/lib/utils.mjs +49 -49
  15. package/{esm2020 → esm2022}/lib/validators/custom-validators.mjs +34 -34
  16. package/{esm2020 → esm2022}/lib/validators/json-validators.mjs +18 -18
  17. package/{esm2020 → esm2022}/myrmidon-cadmus-ui.mjs +4 -4
  18. package/{esm2020 → esm2022}/public-api.mjs +19 -19
  19. package/{fesm2020 → fesm2022}/myrmidon-cadmus-ui.mjs +1307 -1220
  20. package/fesm2022/myrmidon-cadmus-ui.mjs.map +1 -0
  21. package/index.d.ts +5 -5
  22. package/lib/cadmus-ui.module.d.ts +31 -31
  23. package/lib/components/close-save-buttons/close-save-buttons.component.d.ts +12 -12
  24. package/lib/components/decorated-token-text/decorated-token-text.component.d.ts +35 -35
  25. package/lib/components/error-list/error-list.component.d.ts +9 -9
  26. package/lib/components/facet-badge/facet-badge.component.d.ts +27 -27
  27. package/lib/components/flags-badge/flags-badge.component.d.ts +23 -23
  28. package/lib/components/layer-hints/layer-hints.component.d.ts +29 -29
  29. package/lib/components/lookup-pin/lookup-pin.component.d.ts +67 -67
  30. package/lib/components/model-editor-component-base.d.ts +166 -166
  31. package/lib/components/part-badge/part-badge.component.d.ts +46 -46
  32. package/lib/components/thesaurus-tree/thesaurus-tree.component.d.ts +88 -88
  33. package/lib/services/color.service.d.ts +49 -25
  34. package/lib/services/user-ref-lookup.service.d.ts +17 -17
  35. package/lib/utils.d.ts +29 -29
  36. package/lib/validators/custom-validators.d.ts +14 -14
  37. package/lib/validators/json-validators.d.ts +9 -9
  38. package/package.json +8 -14
  39. package/public-api.d.ts +16 -16
  40. package/esm2020/lib/cadmus-ui.module.mjs +0 -139
  41. package/esm2020/lib/components/close-save-buttons/close-save-buttons.component.mjs +0 -26
  42. package/esm2020/lib/components/decorated-token-text/decorated-token-text.component.mjs +0 -67
  43. package/esm2020/lib/components/error-list/error-list.component.mjs +0 -17
  44. package/esm2020/lib/components/facet-badge/facet-badge.component.mjs +0 -88
  45. package/esm2020/lib/components/flags-badge/flags-badge.component.mjs +0 -38
  46. package/esm2020/lib/components/layer-hints/layer-hints.component.mjs +0 -101
  47. package/esm2020/lib/components/lookup-pin/lookup-pin.component.mjs +0 -135
  48. package/esm2020/lib/components/model-editor-component-base.mjs +0 -214
  49. package/esm2020/lib/components/part-badge/part-badge.component.mjs +0 -102
  50. package/esm2020/lib/components/thesaurus-tree/thesaurus-tree.component.mjs +0 -220
  51. package/esm2020/lib/services/color.service.mjs +0 -67
  52. package/esm2020/lib/services/user-ref-lookup.service.mjs +0 -33
  53. package/fesm2015/myrmidon-cadmus-ui.mjs +0 -1312
  54. package/fesm2015/myrmidon-cadmus-ui.mjs.map +0 -1
  55. package/fesm2020/myrmidon-cadmus-ui.mjs.map +0 -1
@@ -0,0 +1,140 @@
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 { MatSelectModule } from '@angular/material/select';
13
+ import { MatTooltipModule } from '@angular/material/tooltip';
14
+ import { MatTreeModule } from '@angular/material/tree';
15
+ // Monaco
16
+ import { MonacoEditorModule } from 'ngx-monaco-editor';
17
+ // Cadmus
18
+ import { CadmusCoreModule } from '@myrmidon/cadmus-core';
19
+ import { NgToolsModule } from '@myrmidon/ng-tools';
20
+ import { CadmusRefsLookupModule } from '@myrmidon/cadmus-refs-lookup';
21
+ import { CloseSaveButtonsComponent } from './components/close-save-buttons/close-save-buttons.component';
22
+ import { ErrorListComponent } from './components/error-list/error-list.component';
23
+ import { FacetBadgeComponent } from './components/facet-badge/facet-badge.component';
24
+ import { FlagsBadgeComponent } from './components/flags-badge/flags-badge.component';
25
+ import { DecoratedTokenTextComponent } from './components/decorated-token-text/decorated-token-text.component';
26
+ import { LayerHintsComponent } from './components/layer-hints/layer-hints.component';
27
+ import { LookupPinComponent } from './components/lookup-pin/lookup-pin.component';
28
+ import { PartBadgeComponent } from './components/part-badge/part-badge.component';
29
+ import { ThesaurusTreeComponent } from './components/thesaurus-tree/thesaurus-tree.component';
30
+ import * as i0 from "@angular/core";
31
+ class CadmusUiModule {
32
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: CadmusUiModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
33
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.1", ngImport: i0, type: CadmusUiModule, declarations: [CloseSaveButtonsComponent,
34
+ DecoratedTokenTextComponent,
35
+ ErrorListComponent,
36
+ FacetBadgeComponent,
37
+ FlagsBadgeComponent,
38
+ LayerHintsComponent,
39
+ LookupPinComponent,
40
+ PartBadgeComponent,
41
+ ThesaurusTreeComponent], imports: [CommonModule,
42
+ FormsModule,
43
+ RouterModule,
44
+ ReactiveFormsModule,
45
+ // material
46
+ MatAutocompleteModule,
47
+ MatButtonModule,
48
+ MatCheckboxModule,
49
+ MatFormFieldModule,
50
+ MatIconModule,
51
+ MatInputModule,
52
+ MatSelectModule,
53
+ MatTreeModule,
54
+ MatTooltipModule,
55
+ // monaco
56
+ MonacoEditorModule,
57
+ // cadmus
58
+ NgToolsModule,
59
+ CadmusCoreModule,
60
+ CadmusRefsLookupModule], exports: [CloseSaveButtonsComponent,
61
+ DecoratedTokenTextComponent,
62
+ ErrorListComponent,
63
+ FacetBadgeComponent,
64
+ FlagsBadgeComponent,
65
+ LayerHintsComponent,
66
+ LookupPinComponent,
67
+ PartBadgeComponent,
68
+ ThesaurusTreeComponent] }); }
69
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: CadmusUiModule, imports: [CommonModule,
70
+ FormsModule,
71
+ RouterModule,
72
+ ReactiveFormsModule,
73
+ // material
74
+ MatAutocompleteModule,
75
+ MatButtonModule,
76
+ MatCheckboxModule,
77
+ MatFormFieldModule,
78
+ MatIconModule,
79
+ MatInputModule,
80
+ MatSelectModule,
81
+ MatTreeModule,
82
+ MatTooltipModule,
83
+ // monaco
84
+ MonacoEditorModule,
85
+ // cadmus
86
+ NgToolsModule,
87
+ CadmusCoreModule,
88
+ CadmusRefsLookupModule] }); }
89
+ }
90
+ export { CadmusUiModule };
91
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: CadmusUiModule, decorators: [{
92
+ type: NgModule,
93
+ args: [{
94
+ imports: [
95
+ CommonModule,
96
+ FormsModule,
97
+ RouterModule,
98
+ ReactiveFormsModule,
99
+ // material
100
+ MatAutocompleteModule,
101
+ MatButtonModule,
102
+ MatCheckboxModule,
103
+ MatFormFieldModule,
104
+ MatIconModule,
105
+ MatInputModule,
106
+ MatSelectModule,
107
+ MatTreeModule,
108
+ MatTooltipModule,
109
+ // monaco
110
+ MonacoEditorModule,
111
+ // cadmus
112
+ NgToolsModule,
113
+ CadmusCoreModule,
114
+ CadmusRefsLookupModule
115
+ ],
116
+ declarations: [
117
+ CloseSaveButtonsComponent,
118
+ DecoratedTokenTextComponent,
119
+ ErrorListComponent,
120
+ FacetBadgeComponent,
121
+ FlagsBadgeComponent,
122
+ LayerHintsComponent,
123
+ LookupPinComponent,
124
+ PartBadgeComponent,
125
+ ThesaurusTreeComponent,
126
+ ],
127
+ exports: [
128
+ CloseSaveButtonsComponent,
129
+ DecoratedTokenTextComponent,
130
+ ErrorListComponent,
131
+ FacetBadgeComponent,
132
+ FlagsBadgeComponent,
133
+ LayerHintsComponent,
134
+ LookupPinComponent,
135
+ PartBadgeComponent,
136
+ ThesaurusTreeComponent,
137
+ ],
138
+ }]
139
+ }] });
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FkbXVzLXVpLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2NhZG11cy11aS9zcmMvbGliL2NhZG11cy11aS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxXQUFXO0FBQ1gsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV2RCxTQUFTO0FBQ1QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFdkQsU0FBUztBQUNULE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0Is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RiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuLy8gbWF0ZXJpYWxcclxuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XHJcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xyXG5pbXBvcnQgeyBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcbmltcG9ydCB7IE1hdFRyZWVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90cmVlJztcclxuXHJcbi8vIE1vbmFjb1xyXG5pbXBvcnQgeyBNb25hY29FZGl0b3JNb2R1bGUgfSBmcm9tICduZ3gtbW9uYWNvLWVkaXRvcic7XHJcblxyXG4vLyBDYWRtdXNcclxuaW1wb3J0IHsgQ2FkbXVzQ29yZU1vZHVsZSB9IGZyb20gJ0BteXJtaWRvbi9jYWRtdXMtY29yZSc7XHJcbmltcG9ydCB7IE5nVG9vbHNNb2R1bGUgfSBmcm9tICdAbXlybWlkb24vbmctdG9vbHMnO1xyXG5pbXBvcnQgeyBDYWRtdXNSZWZzTG9va3VwTW9kdWxlIH0gZnJvbSAnQG15cm1pZG9uL2NhZG11cy1yZWZzLWxvb2t1cCc7XHJcblxyXG5pbXBvcnQgeyBDbG9zZVNhdmVCdXR0b25zQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2Nsb3NlLXNhdmUtYnV0dG9ucy9jbG9zZS1zYXZlLWJ1dHRvbnMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRXJyb3JMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2Vycm9yLWxpc3QvZXJyb3ItbGlzdC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGYWNldEJhZGdlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2ZhY2V0LWJhZGdlL2ZhY2V0LWJhZGdlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZsYWdzQmFkZ2VDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZmxhZ3MtYmFkZ2UvZmxhZ3MtYmFkZ2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGVjb3JhdGVkVG9rZW5UZXh0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2RlY29yYXRlZC10b2tlbi10ZXh0L2RlY29yYXRlZC10b2tlbi10ZXh0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IExheWVySGludHNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbGF5ZXItaGludHMvbGF5ZXItaGludHMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTG9va3VwUGluQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2xvb2t1cC1waW4vbG9va3VwLXBpbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQYXJ0QmFkZ2VDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcGFydC1iYWRnZS9wYXJ0LWJhZGdlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRoZXNhdXJ1c1RyZWVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGhlc2F1cnVzLXRyZWUvdGhlc2F1cnVzLXRyZWUuY29tcG9uZW50JztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBSb3V0ZXJNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgLy8gbWF0ZXJpYWxcclxuICAgIE1hdEF1dG9jb21wbGV0ZU1vZHVsZSxcclxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcclxuICAgIE1hdENoZWNrYm94TW9kdWxlLFxyXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxyXG4gICAgTWF0SWNvbk1vZHVsZSxcclxuICAgIE1hdElucHV0TW9kdWxlLFxyXG4gICAgTWF0U2VsZWN0TW9kdWxlLFxyXG4gICAgTWF0VHJlZU1vZHVsZSxcclxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXHJcbiAgICAvLyBtb25hY29cclxuICAgIE1vbmFjb0VkaXRvck1vZHVsZSxcclxuICAgIC8vIGNhZG11c1xyXG4gICAgTmdUb29sc01vZHVsZSxcclxuICAgIENhZG11c0NvcmVNb2R1bGUsXHJcbiAgICBDYWRtdXNSZWZzTG9va3VwTW9kdWxlXHJcbiAgXSxcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIENsb3NlU2F2ZUJ1dHRvbnNDb21wb25lbnQsXHJcbiAgICBEZWNvcmF0ZWRUb2tlblRleHRDb21wb25lbnQsXHJcbiAgICBFcnJvckxpc3RDb21wb25lbnQsXHJcbiAgICBGYWNldEJhZGdlQ29tcG9uZW50LFxyXG4gICAgRmxhZ3NCYWRnZUNvbXBvbmVudCxcclxuICAgIExheWVySGludHNDb21wb25lbnQsXHJcbiAgICBMb29rdXBQaW5Db21wb25lbnQsXHJcbiAgICBQYXJ0QmFkZ2VDb21wb25lbnQsXHJcbiAgICBUaGVzYXVydXNUcmVlQ29tcG9uZW50LFxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgQ2xvc2VTYXZlQnV0dG9uc0NvbXBvbmVudCxcclxuICAgIERlY29yYXRlZFRva2VuVGV4dENvbXBvbmVudCxcclxuICAgIEVycm9yTGlzdENvbXBvbmVudCxcclxuICAgIEZhY2V0QmFkZ2VDb21wb25lbnQsXHJcbiAgICBGbGFnc0JhZGdlQ29tcG9uZW50LFxyXG4gICAgTGF5ZXJIaW50c0NvbXBvbmVudCxcclxuICAgIExvb2t1cFBpbkNvbXBvbmVudCxcclxuICAgIFBhcnRCYWRnZUNvbXBvbmVudCxcclxuICAgIFRoZXNhdXJ1c1RyZWVDb21wb25lbnQsXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIENhZG11c1VpTW9kdWxlIHt9XHJcbiJdfQ==
@@ -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/common";
4
+ import * as i2 from "@angular/material/button";
5
+ import * as i3 from "@angular/material/icon";
6
+ class CloseSaveButtonsComponent {
7
+ constructor() {
8
+ this.closeRequest = new EventEmitter();
9
+ }
10
+ close() {
11
+ this.closeRequest.emit();
12
+ }
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: CloseSaveButtonsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
14
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", 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 type=\"button\" mat-raised-button color=\"warn\" (click)=\"close()\">\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 style=\"margin-left:8px\"\r\n >\r\n <mat-icon>check_circle</mat-icon>\r\n save\r\n </button>\r\n</ng-container>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
15
+ }
16
+ export { CloseSaveButtonsComponent };
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: CloseSaveButtonsComponent, decorators: [{
18
+ type: Component,
19
+ args: [{ selector: 'cadmus-close-save-buttons', template: "<ng-container *ngIf=\"form\">\r\n <button type=\"button\" mat-raised-button color=\"warn\" (click)=\"close()\">\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 style=\"margin-left:8px\"\r\n >\r\n <mat-icon>check_circle</mat-icon>\r\n save\r\n </button>\r\n</ng-container>\r\n" }]
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvc2Utc2F2ZS1idXR0b25zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2NhZG11cy11aS9zcmMvbGliL2NvbXBvbmVudHMvY2xvc2Utc2F2ZS1idXR0b25zL2Nsb3NlLXNhdmUtYnV0dG9ucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJtaWRvbi9jYWRtdXMtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Nsb3NlLXNhdmUtYnV0dG9ucy9jbG9zZS1zYXZlLWJ1dHRvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFHdkUsTUFLYSx5QkFBeUI7SUFTcEM7UUFDRSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVNLEtBQUs7UUFDVixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNCLENBQUM7OEdBZlUseUJBQXlCO2tHQUF6Qix5QkFBeUIsd0pDUnRDLHNjQWlCQTs7U0RUYSx5QkFBeUI7MkZBQXpCLHlCQUF5QjtrQkFMckMsU0FBUzsrQkFDRSwyQkFBMkI7MEVBTTlCLElBQUk7c0JBRFYsS0FBSztnQkFHQyxNQUFNO3NCQURaLEtBQUs7Z0JBSUMsWUFBWTtzQkFEbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCwgVW50eXBlZEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY2FkbXVzLWNsb3NlLXNhdmUtYnV0dG9ucycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Nsb3NlLXNhdmUtYnV0dG9ucy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY2xvc2Utc2F2ZS1idXR0b25zLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2xvc2VTYXZlQnV0dG9uc0NvbXBvbmVudCB7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZm9ybT86IEZvcm1Hcm91cCB8IFVudHlwZWRGb3JtR3JvdXA7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgbm9TYXZlPzogYm9vbGVhbjtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGNsb3NlUmVxdWVzdDogRXZlbnRFbWl0dGVyPGFueT47XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5jbG9zZVJlcXVlc3QgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xvc2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNsb3NlUmVxdWVzdC5lbWl0KCk7XHJcbiAgfVxyXG59XHJcbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJmb3JtXCI+XHJcbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJ3YXJuXCIgKGNsaWNrKT1cImNsb3NlKClcIj5cclxuICAgIDxtYXQtaWNvbj5jYW5jZWw8L21hdC1pY29uPlxyXG4gICAgY2xvc2VcclxuICA8L2J1dHRvbj5cclxuICA8YnV0dG9uXHJcbiAgICAqbmdJZj1cIiFub1NhdmVcIlxyXG4gICAgdHlwZT1cInN1Ym1pdFwiXHJcbiAgICBbZGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkXCJcclxuICAgIG1hdC1yYWlzZWQtYnV0dG9uXHJcbiAgICBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgc3R5bGU9XCJtYXJnaW4tbGVmdDo4cHhcIlxyXG4gID5cclxuICAgIDxtYXQtaWNvbj5jaGVja19jaXJjbGU8L21hdC1pY29uPlxyXG4gICAgc2F2ZVxyXG4gIDwvYnV0dG9uPlxyXG48L25nLWNvbnRhaW5lcj5cclxuIl19
@@ -0,0 +1,68 @@
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
+ class DecoratedTokenTextComponent {
10
+ /**
11
+ * The base text.
12
+ */
13
+ get baseText() {
14
+ return this._baseText;
15
+ }
16
+ set baseText(value) {
17
+ this._baseText = value || '';
18
+ this.decorate();
19
+ }
20
+ /**
21
+ * The token-based locations of all the fragments in the layer.
22
+ */
23
+ get locations() {
24
+ return this._locations;
25
+ }
26
+ set locations(value) {
27
+ this._locations = value || [];
28
+ this.decorate();
29
+ }
30
+ /**
31
+ * A selected token-based location.
32
+ */
33
+ get selectedLocation() {
34
+ return this._selectedLoc;
35
+ }
36
+ set selectedLocation(value) {
37
+ this._selectedLoc = value;
38
+ this.decorate();
39
+ }
40
+ constructor(_textLayerService) {
41
+ this._textLayerService = _textLayerService;
42
+ this._baseText = '';
43
+ this._locations = [];
44
+ }
45
+ ngOnInit() {
46
+ this.decorate();
47
+ }
48
+ decorate() {
49
+ this.text = this._textLayerService.render(this._baseText, this._locations, this._selectedLoc);
50
+ }
51
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: DecoratedTokenTextComponent, deps: [{ token: i1.TextLayerService }], target: i0.ɵɵFactoryTarget.Component }); }
52
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", 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"], dependencies: [{ kind: "pipe", type: i2.SafeHtmlPipe, name: "safeHtml" }] }); }
53
+ }
54
+ export { DecoratedTokenTextComponent };
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: DecoratedTokenTextComponent, decorators: [{
56
+ type: Component,
57
+ 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"] }]
58
+ }], ctorParameters: function () { return [{ type: i1.TextLayerService }]; }, propDecorators: { _textElement: [{
59
+ type: ViewChild,
60
+ args: ['textElem']
61
+ }], baseText: [{
62
+ type: Input
63
+ }], locations: [{
64
+ type: Input
65
+ }], selectedLocation: [{
66
+ type: Input
67
+ }] } });
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdGVkLXRva2VuLXRleHQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlybWlkb24vY2FkbXVzLXVpL3NyYy9saWIvY29tcG9uZW50cy9kZWNvcmF0ZWQtdG9rZW4tdGV4dC9kZWNvcmF0ZWQtdG9rZW4tdGV4dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJtaWRvbi9jYWRtdXMtdWkvc3JjL2xpYi9jb21wb25lbnRzL2RlY29yYXRlZC10b2tlbi10ZXh0L2RlY29yYXRlZC10b2tlbi10ZXh0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsU0FBUyxFQUFjLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQUdoRjs7O0dBR0c7QUFDSCxNQUthLDJCQUEyQjtJQU10Qzs7T0FFRztJQUNILElBQ1csUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUNELElBQVcsUUFBUSxDQUFDLEtBQWE7UUFDL0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUNXLFNBQVM7UUFDbEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFDRCxJQUFXLFNBQVMsQ0FBQyxLQUFzQjtRQUN6QyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQ1csZ0JBQWdCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBQ0QsSUFBVyxnQkFBZ0IsQ0FBQyxLQUFnQztRQUMxRCxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztRQUMxQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUlELFlBQW9CLGlCQUFtQztRQUFuQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQWtCO1FBQ3JELElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFTyxRQUFRO1FBQ2QsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUN2QyxJQUFJLENBQUMsU0FBUyxFQUNkLElBQUksQ0FBQyxVQUFVLEVBQ2YsSUFBSSxDQUFDLFlBQVksQ0FDbEIsQ0FBQztJQUNKLENBQUM7OEdBM0RVLDJCQUEyQjtrR0FBM0IsMkJBQTJCLDZRQ1p4QywrRUFDQTs7U0RXYSwyQkFBMkI7MkZBQTNCLDJCQUEyQjtrQkFMdkMsU0FBUzsrQkFDRSw2QkFBNkI7dUdBS2hCLFlBQVk7c0JBQWxDLFNBQVM7dUJBQUMsVUFBVTtnQkFTVixRQUFRO3NCQURsQixLQUFLO2dCQWFLLFNBQVM7c0JBRG5CLEtBQUs7Z0JBYUssZ0JBQWdCO3NCQUQxQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVG9rZW5Mb2NhdGlvbiwgVGV4dExheWVyU2VydmljZSB9IGZyb20gJ0BteXJtaWRvbi9jYWRtdXMtY29yZSc7XHJcblxyXG4vKipcclxuICogRGVjb3JhdGVkIHRva2VuLWJhc2VkIHRleHQgdmlzdWFsaXplci4gVGhpcyBpcyB1c2VkIHdoZW4gZWRpdGluZ1xyXG4gKiB0b2tlbi1iYXNlZCB0ZXh0IGxheWVycy5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY2FkbXVzLWRlY29yYXRlZC10b2tlbi10ZXh0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGVjb3JhdGVkLXRva2VuLXRleHQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RlY29yYXRlZC10b2tlbi10ZXh0LmNvbXBvbmVudC5jc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIERlY29yYXRlZFRva2VuVGV4dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQFZpZXdDaGlsZCgndGV4dEVsZW0nKSBfdGV4dEVsZW1lbnQ/OiBFbGVtZW50UmVmO1xyXG4gIHByaXZhdGUgX2Jhc2VUZXh0OiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBfbG9jYXRpb25zOiBUb2tlbkxvY2F0aW9uW107XHJcbiAgcHJpdmF0ZSBfc2VsZWN0ZWRMb2M/OiBUb2tlbkxvY2F0aW9uO1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgYmFzZSB0ZXh0LlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGdldCBiYXNlVGV4dCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Jhc2VUZXh0O1xyXG4gIH1cclxuICBwdWJsaWMgc2V0IGJhc2VUZXh0KHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX2Jhc2VUZXh0ID0gdmFsdWUgfHwgJyc7XHJcbiAgICB0aGlzLmRlY29yYXRlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUaGUgdG9rZW4tYmFzZWQgbG9jYXRpb25zIG9mIGFsbCB0aGUgZnJhZ21lbnRzIGluIHRoZSBsYXllci5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBnZXQgbG9jYXRpb25zKCk6IFRva2VuTG9jYXRpb25bXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb25zO1xyXG4gIH1cclxuICBwdWJsaWMgc2V0IGxvY2F0aW9ucyh2YWx1ZTogVG9rZW5Mb2NhdGlvbltdKSB7XHJcbiAgICB0aGlzLl9sb2NhdGlvbnMgPSB2YWx1ZSB8fCBbXTtcclxuICAgIHRoaXMuZGVjb3JhdGUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEEgc2VsZWN0ZWQgdG9rZW4tYmFzZWQgbG9jYXRpb24uXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkTG9jYXRpb24oKTogVG9rZW5Mb2NhdGlvbiB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRMb2M7XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgc2VsZWN0ZWRMb2NhdGlvbih2YWx1ZTogVG9rZW5Mb2NhdGlvbiB8IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy5fc2VsZWN0ZWRMb2MgPSB2YWx1ZTtcclxuICAgIHRoaXMuZGVjb3JhdGUoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB0ZXh0Pzogc3RyaW5nOyAvLyByZW5kZXJlZCBIVE1MIHRleHRcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfdGV4dExheWVyU2VydmljZTogVGV4dExheWVyU2VydmljZSkge1xyXG4gICAgdGhpcy5fYmFzZVRleHQgPSAnJztcclxuICAgIHRoaXMuX2xvY2F0aW9ucyA9IFtdO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZWNvcmF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkZWNvcmF0ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMudGV4dCA9IHRoaXMuX3RleHRMYXllclNlcnZpY2UucmVuZGVyKFxyXG4gICAgICB0aGlzLl9iYXNlVGV4dCxcclxuICAgICAgdGhpcy5fbG9jYXRpb25zLFxyXG4gICAgICB0aGlzLl9zZWxlY3RlZExvY1xyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBbaW5uZXJIdG1sXT1cInRleHQgfCBzYWZlSHRtbDogJ2h0bWwnXCIgaWQ9XCJ0ZXh0XCIgI3RleHRFbGVtPjwvZGl2PlxyXG4iXX0=
@@ -0,0 +1,18 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ class ErrorListComponent {
5
+ constructor() { }
6
+ ngOnInit() {
7
+ }
8
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ErrorListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", 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: [""], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
10
+ }
11
+ export { ErrorListComponent };
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ErrorListComponent, decorators: [{
13
+ type: Component,
14
+ args: [{ selector: 'cadmus-error-list', template: "<ul *ngIf=\"errors\">\r\n <li *ngFor=\"let error of errors\">{{error}}</li>\r\n</ul>\r\n" }]
15
+ }], ctorParameters: function () { return []; }, propDecorators: { errors: [{
16
+ type: Input
17
+ }] } });
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJtaWRvbi9jYWRtdXMtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Vycm9yLWxpc3QvZXJyb3ItbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJtaWRvbi9jYWRtdXMtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Vycm9yLWxpc3QvZXJyb3ItbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBRXpELE1BS2Esa0JBQWtCO0lBSTdCLGdCQUFnQixDQUFDO0lBRVYsUUFBUTtJQUNmLENBQUM7OEdBUFUsa0JBQWtCO2tHQUFsQixrQkFBa0IsdUZDUC9CLDJGQUdBOztTRElhLGtCQUFrQjsyRkFBbEIsa0JBQWtCO2tCQUw5QixTQUFTOytCQUNFLG1CQUFtQjswRUFNdEIsTUFBTTtzQkFEWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NhZG11cy1lcnJvci1saXN0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZXJyb3ItbGlzdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZXJyb3ItbGlzdC5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEVycm9yTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZXJyb3JzPzogc3RyaW5nW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICB9XHJcbn1cclxuIiwiPHVsICpuZ0lmPVwiZXJyb3JzXCI+XHJcbiAgPGxpICpuZ0Zvcj1cImxldCBlcnJvciBvZiBlcnJvcnNcIj57e2Vycm9yfX08L2xpPlxyXG48L3VsPlxyXG4iXX0=
@@ -0,0 +1,89 @@
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
+ class FacetBadgeComponent {
6
+ /**
7
+ * The facet data.
8
+ */
9
+ get data() {
10
+ return this._data;
11
+ }
12
+ set data(value) {
13
+ this._data = value;
14
+ this._facetColors = {};
15
+ this._facetTips = {};
16
+ this.updateBadge();
17
+ }
18
+ constructor(_colorService) {
19
+ this._colorService = _colorService;
20
+ this._data = {
21
+ definitions: [],
22
+ };
23
+ this._facetColors = {};
24
+ this._facetTips = {};
25
+ this.color = 'transparent';
26
+ this.contrastColor = 'black';
27
+ }
28
+ getFacetColor(facetId) {
29
+ if (this._facetColors[facetId]) {
30
+ return this._facetColors[facetId];
31
+ }
32
+ if (!this._data?.definitions?.length) {
33
+ return 'transparent';
34
+ }
35
+ const facet = this._data.definitions.find((f) => {
36
+ return f.id === facetId;
37
+ });
38
+ if (facet?.colorKey) {
39
+ this._facetColors[facetId] = '#' + facet.colorKey;
40
+ }
41
+ else {
42
+ this._facetColors[facetId] = 'transparent';
43
+ }
44
+ return this._facetColors[facetId];
45
+ }
46
+ getFacetTip(facetId) {
47
+ if (this._facetTips[facetId]) {
48
+ return this._facetTips[facetId];
49
+ }
50
+ if (!this._data?.definitions?.length) {
51
+ return null;
52
+ }
53
+ const facet = this._data.definitions.find((f) => {
54
+ return f.id === facetId;
55
+ });
56
+ if (!facet) {
57
+ this._facetTips[facetId] = facetId;
58
+ }
59
+ else {
60
+ const sb = [];
61
+ for (let i = 0; i < facet.partDefinitions.length; i++) {
62
+ if (i > 0) {
63
+ sb.push(', ');
64
+ }
65
+ sb.push(facet.partDefinitions[i].name);
66
+ if (facet.partDefinitions[i].isRequired) {
67
+ sb.push('*');
68
+ }
69
+ }
70
+ this._facetTips[facetId] = sb.join('');
71
+ }
72
+ return this._facetTips[facetId];
73
+ }
74
+ updateBadge() {
75
+ this.color = this.getFacetColor(this._data?.facetId || '');
76
+ this.contrastColor = this._colorService.getContrastColor(this.color);
77
+ this.tip = this.getFacetTip(this._data?.facetId || '') ?? undefined;
78
+ }
79
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: FacetBadgeComponent, deps: [{ token: i1.ColorService }], target: i0.ɵɵFactoryTarget.Component }); }
80
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: FacetBadgeComponent, selector: "cadmus-facet-badge", inputs: { data: "data" }, 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 >{{ data?.facetId }}\r\n</span>\r\n", styles: ["span.model-type{padding:4px;border-radius:6px}\n"], dependencies: [{ kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] }); }
81
+ }
82
+ export { FacetBadgeComponent };
83
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: FacetBadgeComponent, decorators: [{
84
+ type: Component,
85
+ 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 >{{ data?.facetId }}\r\n</span>\r\n", styles: ["span.model-type{padding:4px;border-radius:6px}\n"] }]
86
+ }], ctorParameters: function () { return [{ type: i1.ColorService }]; }, propDecorators: { data: [{
87
+ type: Input
88
+ }] } });
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjZXQtYmFkZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlybWlkb24vY2FkbXVzLXVpL3NyYy9saWIvY29tcG9uZW50cy9mYWNldC1iYWRnZS9mYWNldC1iYWRnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJtaWRvbi9jYWRtdXMtdWkvc3JjL2xpYi9jb21wb25lbnRzL2ZhY2V0LWJhZGdlL2ZhY2V0LWJhZGdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBVWpELE1BS2EsbUJBQW1CO0lBUzlCOztPQUVHO0lBQ0gsSUFDVyxJQUFJO1FBQ2IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFDRCxJQUFXLElBQUksQ0FBQyxLQUF3QztRQUN0RCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELFlBQW9CLGFBQTJCO1FBQTNCLGtCQUFhLEdBQWIsYUFBYSxDQUFjO1FBQzdDLElBQUksQ0FBQyxLQUFLLEdBQUc7WUFDWCxXQUFXLEVBQUUsRUFBRTtTQUNoQixDQUFDO1FBQ0YsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxhQUFhLENBQUM7UUFDM0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUM7SUFDL0IsQ0FBQztJQUVPLGFBQWEsQ0FBQyxP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RlUsbUJBQW1CO2tHQUFuQixtQkFBbUIsb0ZDZmhDLHFMQU9BOztTRFFhLG1CQUFtQjsyRkFBbkIsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLG9CQUFvQjttR0FpQm5CLElBQUk7c0JBRGQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRmFjZXREZWZpbml0aW9uIH0gZnJvbSAnQG15cm1pZG9uL2NhZG11cy1jb3JlJztcclxuXHJcbmltcG9ydCB7IENvbG9yU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbG9yLnNlcnZpY2UnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGYWNldEJhZGdlRGF0YSB7XHJcbiAgZGVmaW5pdGlvbnM6IEZhY2V0RGVmaW5pdGlvbltdO1xyXG4gIGZhY2V0SWQ/OiBzdHJpbmc7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY2FkbXVzLWZhY2V0LWJhZGdlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZmFjZXQtYmFkZ2UuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2ZhY2V0LWJhZGdlLmNvbXBvbmVudC5jc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEZhY2V0QmFkZ2VDb21wb25lbnQge1xyXG4gIHByaXZhdGUgX2ZhY2V0Q29sb3JzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xyXG4gIHByaXZhdGUgX2ZhY2V0VGlwczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcclxuICBwcml2YXRlIF9kYXRhPzogRmFjZXRCYWRnZURhdGEgfCBudWxsO1xyXG5cclxuICBwdWJsaWMgY29sb3I6IHN0cmluZztcclxuICBwdWJsaWMgY29udHJhc3RDb2xvcjogc3RyaW5nO1xyXG4gIHB1YmxpYyB0aXA/OiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBmYWNldCBkYXRhLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGdldCBkYXRhKCk6IEZhY2V0QmFkZ2VEYXRhIHwgdW5kZWZpbmVkIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGF0YTtcclxuICB9XHJcbiAgcHVibGljIHNldCBkYXRhKHZhbHVlOiBGYWNldEJhZGdlRGF0YSB8IHVuZGVmaW5lZCB8IG51bGwpIHtcclxuICAgIHRoaXMuX2RhdGEgPSB2YWx1ZTtcclxuICAgIHRoaXMuX2ZhY2V0Q29sb3JzID0ge307XHJcbiAgICB0aGlzLl9mYWNldFRpcHMgPSB7fTtcclxuICAgIHRoaXMudXBkYXRlQmFkZ2UoKTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2NvbG9yU2VydmljZTogQ29sb3JTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLl9kYXRhID0ge1xyXG4gICAgICBkZWZpbml0aW9uczogW10sXHJcbiAgICB9O1xyXG4gICAgdGhpcy5fZmFjZXRDb2xvcnMgPSB7fTtcclxuICAgIHRoaXMuX2ZhY2V0VGlwcyA9IHt9O1xyXG4gICAgdGhpcy5jb2xvciA9ICd0cmFuc3BhcmVudCc7XHJcbiAgICB0aGlzLmNvbnRyYXN0Q29sb3IgPSAnYmxhY2snO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRGYWNldENvbG9yKGZhY2V0SWQ6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAodGhpcy5fZmFjZXRDb2xvcnNbZmFjZXRJZF0pIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX2ZhY2V0Q29sb3JzW2ZhY2V0SWRdO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLl9kYXRhPy5kZWZpbml0aW9ucz8ubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiAndHJhbnNwYXJlbnQnO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZhY2V0ID0gdGhpcy5fZGF0YS5kZWZpbml0aW9ucy5maW5kKChmKSA9PiB7XHJcbiAgICAgIHJldHVybiBmLmlkID09PSBmYWNldElkO1xyXG4gICAgfSk7XHJcbiAgICBpZiAoZmFjZXQ/LmNvbG9yS2V5KSB7XHJcbiAgICAgIHRoaXMuX2ZhY2V0Q29sb3JzW2ZhY2V0SWRdID0gJyMnICsgZmFjZXQuY29sb3JLZXk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9mYWNldENvbG9yc1tmYWNldElkXSA9ICd0cmFuc3BhcmVudCc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5fZmFjZXRDb2xvcnNbZmFjZXRJZF07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEZhY2V0VGlwKGZhY2V0SWQ6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgaWYgKHRoaXMuX2ZhY2V0VGlwc1tmYWNldElkXSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5fZmFjZXRUaXBzW2ZhY2V0SWRdO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5fZGF0YT8uZGVmaW5pdGlvbnM/Lmxlbmd0aCkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBmYWNldCA9IHRoaXMuX2RhdGEuZGVmaW5pdGlvbnMuZmluZCgoZikgPT4ge1xyXG4gICAgICByZXR1cm4gZi5pZCA9PT0gZmFjZXRJZDtcclxuICAgIH0pO1xyXG4gICAgaWYgKCFmYWNldCkge1xyXG4gICAgICB0aGlzLl9mYWNldFRpcHNbZmFjZXRJZF0gPSBmYWNldElkO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3Qgc2I6IHN0cmluZ1tdID0gW107XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmFjZXQucGFydERlZmluaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGkgPiAwKSB7XHJcbiAgICAgICAgICBzYi5wdXNoKCcsICcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzYi5wdXNoKGZhY2V0LnBhcnREZWZpbml0aW9uc1tpXS5uYW1lKTtcclxuICAgICAgICBpZiAoZmFjZXQucGFydERlZmluaXRpb25zW2ldLmlzUmVxdWlyZWQpIHtcclxuICAgICAgICAgIHNiLnB1c2goJyonKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5fZmFjZXRUaXBzW2ZhY2V0SWRdID0gc2Iuam9pbignJyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5fZmFjZXRUaXBzW2ZhY2V0SWRdO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVCYWRnZSgpIHtcclxuICAgIHRoaXMuY29sb3IgPSB0aGlzLmdldEZhY2V0Q29sb3IodGhpcy5fZGF0YT8uZmFjZXRJZCB8fCAnJyk7XHJcbiAgICB0aGlzLmNvbnRyYXN0Q29sb3IgPSB0aGlzLl9jb2xvclNlcnZpY2UuZ2V0Q29udHJhc3RDb2xvcih0aGlzLmNvbG9yKTtcclxuICAgIHRoaXMudGlwID0gdGhpcy5nZXRGYWNldFRpcCh0aGlzLl9kYXRhPy5mYWNldElkIHx8ICcnKSA/PyB1bmRlZmluZWQ7XHJcbiAgfVxyXG59XHJcbiIsIjxzcGFuXHJcbiAgY2xhc3M9XCJtb2RlbC10eXBlXCJcclxuICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJjb2xvclwiXHJcbiAgW3N0eWxlLmNvbG9yXT1cImNvbnRyYXN0Q29sb3JcIlxyXG4gIG1hdFRvb2x0aXA9XCJ7eyB0aXAgfX1cIlxyXG4gID57eyBkYXRhPy5mYWNldElkIH19XHJcbjwvc3Bhbj5cclxuIl19
@@ -0,0 +1,39 @@
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
+ class FlagsBadgeComponent {
10
+ get data() {
11
+ return this._data;
12
+ }
13
+ set data(value) {
14
+ this._data = value;
15
+ this.updateBadge();
16
+ }
17
+ constructor() {
18
+ this.badgeFlags = [];
19
+ }
20
+ updateBadge() {
21
+ if (!this._data) {
22
+ return;
23
+ }
24
+ this.badgeFlags = this._data.definitions.filter((def) => {
25
+ // tslint:disable-next-line: no-bitwise
26
+ return def.id & this._data.flags;
27
+ });
28
+ }
29
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: FlagsBadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
30
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: FlagsBadgeComponent, selector: "cadmus-flags-badge", inputs: { data: "data" }, 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 &#x2b24;\r\n </span>\r\n</div>\r\n", styles: ["span.badge-flag{font-size:1rem;cursor:default}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] }); }
31
+ }
32
+ export { FlagsBadgeComponent };
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: FlagsBadgeComponent, decorators: [{
34
+ type: Component,
35
+ 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 &#x2b24;\r\n </span>\r\n</div>\r\n", styles: ["span.badge-flag{font-size:1rem;cursor:default}\n"] }]
36
+ }], ctorParameters: function () { return []; }, propDecorators: { data: [{
37
+ type: Input
38
+ }] } });
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhZ3MtYmFkZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlybWlkb24vY2FkbXVzLXVpL3NyYy9saWIvY29tcG9uZW50cy9mbGFncy1iYWRnZS9mbGFncy1iYWRnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJtaWRvbi9jYWRtdXMtdWkvc3JjL2xpYi9jb21wb25lbnRzL2ZsYWdzLWJhZGdlL2ZsYWdzLWJhZGdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBV2pEOzs7R0FHRztBQUNILE1BS2EsbUJBQW1CO0lBSzlCLElBQ1csSUFBSTtRQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBQ0QsSUFBVyxJQUFJLENBQUMsS0FBd0M7UUFDdEQsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRDtRQUNFLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFTyxXQUFXO1FBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2YsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUN0RCx1Q0FBdUM7WUFDdkMsT0FBTyxHQUFHLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFNLENBQUMsS0FBSyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0ExQlUsbUJBQW1CO2tHQUFuQixtQkFBbUIsb0ZDcEJoQyxzTkFVQTs7U0RVYSxtQkFBbUI7MkZBQW5CLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxvQkFBb0I7MEVBVW5CLElBQUk7c0JBRGQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRmxhZ0RlZmluaXRpb24gfSBmcm9tICdAbXlybWlkb24vY2FkbXVzLWNvcmUnO1xyXG5cclxuLyoqXHJcbiAqIERhdGEgZm9yIEZsYWdzQmFkZ2VDb21wb25lbnQsIGluY2x1ZGluZyBmbGFncyBhbmQgdGhlaXIgZGVmaW5pdGlvbnMuXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEZsYWdzQmFkZ2VEYXRhIHtcclxuICBkZWZpbml0aW9uczogRmxhZ0RlZmluaXRpb25bXTtcclxuICBmbGFnczogbnVtYmVyO1xyXG59XHJcblxyXG4vKipcclxuICogQmFkZ2Ugd2l0aCBpdGVtJ3MgZmxhZ3MuIEVhY2ggZmxhZyBpcyByZXByZXNlbnRlZCBieSBhIGNpcmNsZSBmaWxsZWRcclxuICogd2l0aCB0aGUgZmxhZydzIGNvbG9yIGtleS5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY2FkbXVzLWZsYWdzLWJhZGdlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZmxhZ3MtYmFkZ2UuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2ZsYWdzLWJhZGdlLmNvbXBvbmVudC5jc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEZsYWdzQmFkZ2VDb21wb25lbnQge1xyXG4gIHByaXZhdGUgX2RhdGE/OiBGbGFnc0JhZGdlRGF0YSB8IG51bGw7XHJcblxyXG4gIHB1YmxpYyBiYWRnZUZsYWdzOiBGbGFnRGVmaW5pdGlvbltdO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBnZXQgZGF0YSgpOiBGbGFnc0JhZGdlRGF0YSB8IHVuZGVmaW5lZCB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RhdGE7XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgZGF0YSh2YWx1ZTogRmxhZ3NCYWRnZURhdGEgfCB1bmRlZmluZWQgfCBudWxsKSB7XHJcbiAgICB0aGlzLl9kYXRhID0gdmFsdWU7XHJcbiAgICB0aGlzLnVwZGF0ZUJhZGdlKCk7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuYmFkZ2VGbGFncyA9IFtdO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVCYWRnZSgpIHtcclxuICAgIGlmICghdGhpcy5fZGF0YSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmJhZGdlRmxhZ3MgPSB0aGlzLl9kYXRhLmRlZmluaXRpb25zLmZpbHRlcigoZGVmKSA9PiB7XHJcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tYml0d2lzZVxyXG4gICAgICByZXR1cm4gZGVmLmlkICYgdGhpcy5fZGF0YSEuZmxhZ3M7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPGRpdj5cclxuICA8c3BhblxyXG4gICAgY2xhc3M9XCJiYWRnZS1mbGFnXCJcclxuICAgICpuZ0Zvcj1cImxldCBkZWYgb2YgYmFkZ2VGbGFnc1wiXHJcbiAgICBbc3R5bGUuY29sb3JdPVwiJyMnICsgZGVmLmNvbG9yS2V5XCJcclxuICAgIFttYXRUb29sdGlwXT1cImRlZi5sYWJlbFwiXHJcbiAgPlxyXG4gICAgJiN4MmIyNDtcclxuICA8L3NwYW4+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -0,0 +1,102 @@
1
+ import { Component, Input, Output, EventEmitter } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/forms";
4
+ import * as i2 from "@myrmidon/ng-mat-tools";
5
+ import * as i3 from "@angular/common";
6
+ import * as i4 from "@angular/material/button";
7
+ import * as i5 from "@angular/material/checkbox";
8
+ import * as i6 from "@angular/material/icon";
9
+ import * as i7 from "@angular/material/tooltip";
10
+ class LayerHintsComponent {
11
+ get hints() {
12
+ return this._hints;
13
+ }
14
+ set hints(value) {
15
+ this._hints = value || [];
16
+ this.checks.controls = [];
17
+ for (let i = 0; i < this._hints.length; i++) {
18
+ this.checks.push(this._formBuilder.control(false));
19
+ }
20
+ }
21
+ constructor(_formBuilder, _dialogService) {
22
+ this._formBuilder = _formBuilder;
23
+ this._dialogService = _dialogService;
24
+ this.requestEdit = new EventEmitter();
25
+ this.requestDelete = new EventEmitter();
26
+ this.requestMove = new EventEmitter();
27
+ this.requestPatch = new EventEmitter();
28
+ this._hints = [];
29
+ this.checks = _formBuilder.array([]);
30
+ this.form = _formBuilder.group({
31
+ checks: this.checks,
32
+ });
33
+ }
34
+ ngOnInit() { }
35
+ emitRequestEdit(hint) {
36
+ this.requestEdit.emit(hint);
37
+ }
38
+ emitRequestDelete(hint) {
39
+ this._dialogService
40
+ .confirm('Confirm Deletion', `Delete fragment at "${hint.location}"?`)
41
+ .subscribe((ok) => {
42
+ if (ok) {
43
+ this.requestDelete.emit(hint);
44
+ }
45
+ });
46
+ }
47
+ emitRequestMove(hint) {
48
+ if (!this.targetLocation) {
49
+ return;
50
+ }
51
+ this._dialogService
52
+ .confirm('Confirm Move', `Move fragment at ${hint.location} to ${this.targetLocation}?`)
53
+ .subscribe((ok) => {
54
+ if (ok) {
55
+ this.requestMove.emit(hint);
56
+ }
57
+ });
58
+ }
59
+ emitRequestPatch() {
60
+ if (this.form.invalid) {
61
+ return;
62
+ }
63
+ this._dialogService
64
+ .confirm('Confirm Patch', `Patch the selected fragments?`)
65
+ .subscribe((ok) => {
66
+ if (ok) {
67
+ const patches = [];
68
+ for (let i = 0; i < this.checks.controls.length; i++) {
69
+ const n = this.checks.controls[i].value;
70
+ if (n) {
71
+ patches.push(this._hints[n - 1].patchOperation);
72
+ }
73
+ }
74
+ this.requestPatch.emit(patches);
75
+ }
76
+ });
77
+ }
78
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: LayerHintsComponent, deps: [{ token: i1.FormBuilder }, { token: i2.DialogService }], target: i0.ɵɵFactoryTarget.Component }); }
79
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: LayerHintsComponent, selector: "cadmus-layer-hints", inputs: { hints: "hints", targetLocation: "targetLocation", disabled: "disabled", readonly: "readonly" }, outputs: { requestEdit: "requestEdit", requestDelete: "requestDelete", requestMove: "requestMove", requestPatch: "requestPatch" }, ngImport: i0, template: "<form *ngIf=\"hints\" [formGroup]=\"form\" (submit)=\"emitRequestPatch()\">\r\n <table class=\"patches\">\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th>location</th>\r\n <th>description</th>\r\n <th>patch</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let hint of hints; let i = index\">\r\n <td *ngIf=\"!readonly\">\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Edit this fragment\"\r\n [disabled]=\"disabled\"\r\n >\r\n <mat-icon>edit</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this fragment to {{ targetLocation }}\"\r\n [disabled]=\"\r\n disabled || !targetLocation || targetLocation === hint.location\r\n \"\r\n (click)=\"emitRequestMove(hint)\"\r\n >\r\n <mat-icon>arrow_forward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Delete this fragment\"\r\n color=\"warn\"\r\n [disabled]=\"disabled\"\r\n (click)=\"emitRequestDelete(hint)\"\r\n >\r\n <mat-icon>delete</mat-icon>\r\n </button>\r\n </td>\r\n <td>{{ hint.location }}</td>\r\n <td>{{ hint.description }}</td>\r\n <td>\r\n <mat-checkbox\r\n *ngIf=\"hint.patchOperation\"\r\n matTooltip=\"Apply this patch\"\r\n [disabled]=\"disabled\"\r\n [value]=\"(i + 1).toString()\"\r\n >\r\n {{ hint.patchOperation }}\r\n </mat-checkbox>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <div *ngIf=\"targetLocation\">move target: {{ targetLocation }}</div>\r\n <button\r\n type=\"submit\"\r\n mat-raised-button\r\n [disabled]=\"readonly || disabled || form.invalid\"\r\n >\r\n apply patches\r\n </button>\r\n</form>\r\n", styles: ["table.patches th{font-weight:400;color:#bdbdbd}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i7.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] }); }
80
+ }
81
+ export { LayerHintsComponent };
82
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: LayerHintsComponent, decorators: [{
83
+ type: Component,
84
+ args: [{ selector: 'cadmus-layer-hints', template: "<form *ngIf=\"hints\" [formGroup]=\"form\" (submit)=\"emitRequestPatch()\">\r\n <table class=\"patches\">\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th>location</th>\r\n <th>description</th>\r\n <th>patch</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let hint of hints; let i = index\">\r\n <td *ngIf=\"!readonly\">\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Edit this fragment\"\r\n [disabled]=\"disabled\"\r\n >\r\n <mat-icon>edit</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this fragment to {{ targetLocation }}\"\r\n [disabled]=\"\r\n disabled || !targetLocation || targetLocation === hint.location\r\n \"\r\n (click)=\"emitRequestMove(hint)\"\r\n >\r\n <mat-icon>arrow_forward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Delete this fragment\"\r\n color=\"warn\"\r\n [disabled]=\"disabled\"\r\n (click)=\"emitRequestDelete(hint)\"\r\n >\r\n <mat-icon>delete</mat-icon>\r\n </button>\r\n </td>\r\n <td>{{ hint.location }}</td>\r\n <td>{{ hint.description }}</td>\r\n <td>\r\n <mat-checkbox\r\n *ngIf=\"hint.patchOperation\"\r\n matTooltip=\"Apply this patch\"\r\n [disabled]=\"disabled\"\r\n [value]=\"(i + 1).toString()\"\r\n >\r\n {{ hint.patchOperation }}\r\n </mat-checkbox>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <div *ngIf=\"targetLocation\">move target: {{ targetLocation }}</div>\r\n <button\r\n type=\"submit\"\r\n mat-raised-button\r\n [disabled]=\"readonly || disabled || form.invalid\"\r\n >\r\n apply patches\r\n </button>\r\n</form>\r\n", styles: ["table.patches th{font-weight:400;color:#bdbdbd}\n"] }]
85
+ }], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.DialogService }]; }, propDecorators: { hints: [{
86
+ type: Input
87
+ }], targetLocation: [{
88
+ type: Input
89
+ }], disabled: [{
90
+ type: Input
91
+ }], readonly: [{
92
+ type: Input
93
+ }], requestEdit: [{
94
+ type: Output
95
+ }], requestDelete: [{
96
+ type: Output
97
+ }], requestMove: [{
98
+ type: Output
99
+ }], requestPatch: [{
100
+ type: Output
101
+ }] } });
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXItaGludHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlybWlkb24vY2FkbXVzLXVpL3NyYy9saWIvY29tcG9uZW50cy9sYXllci1oaW50cy9sYXllci1oaW50cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJtaWRvbi9jYWRtdXMtdWkvc3JjL2xpYi9jb21wb25lbnRzL2xheWVyLWhpbnRzL2xheWVyLWhpbnRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7OztBQVkvRSxNQUthLG1CQUFtQjtJQUc5QixJQUNXLEtBQUs7UUFDZCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUNELElBQVcsS0FBSyxDQUFDLEtBQWtCO1FBQ2pDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDMUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzNDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDcEQ7SUFDSCxDQUFDO0lBcUJELFlBQ1UsWUFBeUIsRUFDekIsY0FBNkI7UUFEN0IsaUJBQVksR0FBWixZQUFZLENBQWE7UUFDekIsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFFckMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLFlBQVksRUFB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SUMsV0FBVztzQkFEakIsTUFBTTtnQkFHQSxhQUFhO3NCQURuQixNQUFNO2dCQUdBLFdBQVc7c0JBRGpCLE1BQU07Z0JBR0EsWUFBWTtzQkFEbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBGb3JtR3JvdXAsXHJcbiAgRm9ybUFycmF5LFxyXG4gIEZvcm1CdWlsZGVyLFxyXG4gIEZvcm1Db250cm9sLFxyXG4gIFZhbGlkYXRvcnMsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuaW1wb3J0IHsgTGF5ZXJIaW50IH0gZnJvbSAnQG15cm1pZG9uL2NhZG11cy1jb3JlJztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJ0BteXJtaWRvbi9uZy1tYXQtdG9vbHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjYWRtdXMtbGF5ZXItaGludHMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9sYXllci1oaW50cy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbGF5ZXItaGludHMuY29tcG9uZW50LmNzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTGF5ZXJIaW50c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgcHJpdmF0ZSBfaGludHM6IExheWVySGludFtdO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBnZXQgaGludHMoKTogTGF5ZXJIaW50W10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2hpbnRzO1xyXG4gIH1cclxuICBwdWJsaWMgc2V0IGhpbnRzKHZhbHVlOiBMYXllckhpbnRbXSkge1xyXG4gICAgdGhpcy5faGludHMgPSB2YWx1ZSB8fCBbXTtcclxuICAgIHRoaXMuY2hlY2tzLmNvbnRyb2xzID0gW107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX2hpbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIHRoaXMuY2hlY2tzLnB1c2godGhpcy5fZm9ybUJ1aWxkZXIuY29udHJvbChmYWxzZSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgdGFyZ2V0TG9jYXRpb24/OiBzdHJpbmc7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZGlzYWJsZWQ/OiBib29sZWFuO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHJlYWRvbmx5PzogYm9vbGVhbjtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHJlcXVlc3RFZGl0OiBFdmVudEVtaXR0ZXI8TGF5ZXJIaW50PjtcclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgcmVxdWVzdERlbGV0ZTogRXZlbnRFbWl0dGVyPExheWVySGludD47XHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHJlcXVlc3RNb3ZlOiBFdmVudEVtaXR0ZXI8TGF5ZXJIaW50PjtcclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgcmVxdWVzdFBhdGNoOiBFdmVudEVtaXR0ZXI8c3RyaW5nW10+O1xyXG5cclxuICBwdWJsaWMgZm9ybTogRm9ybUdyb3VwO1xyXG4gIHB1YmxpYyBjaGVja3M6IEZvcm1BcnJheTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9mb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXHJcbiAgICBwcml2YXRlIF9kaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLnJlcXVlc3RFZGl0ID0gbmV3IEV2ZW50RW1pdHRlcjxMYXllckhpbnQ+KCk7XHJcbiAgICB0aGlzLnJlcXVlc3REZWxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPExheWVySGludD4oKTtcclxuICAgIHRoaXMucmVxdWVzdE1vdmUgPSBuZXcgRXZlbnRFbWl0dGVyPExheWVySGludD4oKTtcclxuICAgIHRoaXMucmVxdWVzdFBhdGNoID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmdbXT4oKTtcclxuICAgIHRoaXMuX2hpbnRzID0gW107XHJcblxyXG4gICAgdGhpcy5jaGVja3MgPSBfZm9ybUJ1aWxkZXIuYXJyYXkoW10pO1xyXG4gICAgdGhpcy5mb3JtID0gX2Zvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgY2hlY2tzOiB0aGlzLmNoZWNrcyxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7fVxyXG5cclxuICBwdWJsaWMgZW1pdFJlcXVlc3RFZGl0KGhpbnQ6IExheWVySGludCkge1xyXG4gICAgdGhpcy5yZXF1ZXN0RWRpdC5lbWl0KGhpbnQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGVtaXRSZXF1ZXN0RGVsZXRlKGhpbnQ6IExheWVySGludCkge1xyXG4gICAgdGhpcy5fZGlhbG9nU2VydmljZVxyXG4gICAgICAuY29uZmlybSgnQ29uZmlybSBEZWxldGlvbicsIGBEZWxldGUgZnJhZ21lbnQgYXQgXCIke2hpbnQubG9jYXRpb259XCI/YClcclxuICAgICAgLnN1YnNjcmliZSgob2s6IGJvb2xlYW4pID0+IHtcclxuICAgICAgICBpZiAob2spIHtcclxuICAgICAgICAgIHRoaXMucmVxdWVzdERlbGV0ZS5lbWl0KGhpbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZW1pdFJlcXVlc3RNb3ZlKGhpbnQ6IExheWVySGludCkge1xyXG4gICAgaWYgKCF0aGlzLnRhcmdldExvY2F0aW9uKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX2RpYWxvZ1NlcnZpY2VcclxuICAgICAgLmNvbmZpcm0oXHJcbiAgICAgICAgJ0NvbmZpcm0gTW92ZScsXHJcbiAgICAgICAgYE1vdmUgZnJhZ21lbnQgYXQgJHtoaW50LmxvY2F0aW9ufSB0byAke3RoaXMudGFyZ2V0TG9jYXRpb259P2BcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKChvazogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgIGlmIChvaykge1xyXG4gICAgICAgICAgdGhpcy5yZXF1ZXN0TW92ZS5lbWl0KGhpbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZW1pdFJlcXVlc3RQYXRjaCgpIHtcclxuICAgIGlmICh0aGlzLmZvcm0uaW52YWxpZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLl9kaWFsb2dTZXJ2aWNlXHJcbiAgICAgIC5jb25maXJtKCdDb25maXJtIFBhdGNoJywgYFBhdGNoIHRoZSBzZWxlY3RlZCBmcmFnbWVudHM/YClcclxuICAgICAgLnN1YnNjcmliZSgob2s6IGJvb2xlYW4pID0+IHtcclxuICAgICAgICBpZiAob2spIHtcclxuICAgICAgICAgIGNvbnN0IHBhdGNoZXM6IHN0cmluZ1tdID0gW107XHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY2hlY2tzLmNvbnRyb2xzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG4gPSB0aGlzLmNoZWNrcy5jb250cm9sc1tpXS52YWx1ZTtcclxuICAgICAgICAgICAgaWYgKG4pIHtcclxuICAgICAgICAgICAgICBwYXRjaGVzLnB1c2godGhpcy5faGludHNbbiAtIDFdLnBhdGNoT3BlcmF0aW9uISk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMucmVxdWVzdFBhdGNoLmVtaXQocGF0Y2hlcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPGZvcm0gKm5nSWY9XCJoaW50c1wiIFtmb3JtR3JvdXBdPVwiZm9ybVwiIChzdWJtaXQpPVwiZW1pdFJlcXVlc3RQYXRjaCgpXCI+XHJcbiAgPHRhYmxlIGNsYXNzPVwicGF0Y2hlc1wiPlxyXG4gICAgPHRoZWFkPlxyXG4gICAgICA8dHI+XHJcbiAgICAgICAgPHRoPjwvdGg+XHJcbiAgICAgICAgPHRoPmxvY2F0aW9uPC90aD5cclxuICAgICAgICA8dGg+ZGVzY3JpcHRpb248L3RoPlxyXG4gICAgICAgIDx0aD5wYXRjaDwvdGg+XHJcbiAgICAgIDwvdHI+XHJcbiAgICA8L3RoZWFkPlxyXG4gICAgPHRib2R5PlxyXG4gICAgICA8dHIgKm5nRm9yPVwibGV0IGhpbnQgb2YgaGludHM7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICA8dGQgKm5nSWY9XCIhcmVhZG9ubHlcIj5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgICBtYXRUb29sdGlwPVwiRWRpdCB0aGlzIGZyYWdtZW50XCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmVkaXQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgbWF0VG9vbHRpcD1cIk1vdmUgdGhpcyBmcmFnbWVudCB0byB7eyB0YXJnZXRMb2NhdGlvbiB9fVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJcclxuICAgICAgICAgICAgICBkaXNhYmxlZCB8fCAhdGFyZ2V0TG9jYXRpb24gfHwgdGFyZ2V0TG9jYXRpb24gPT09IGhpbnQubG9jYXRpb25cclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImVtaXRSZXF1ZXN0TW92ZShoaW50KVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5hcnJvd19mb3J3YXJkPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJEZWxldGUgdGhpcyBmcmFnbWVudFwiXHJcbiAgICAgICAgICAgIGNvbG9yPVwid2FyblwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJlbWl0UmVxdWVzdERlbGV0ZShoaW50KVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5kZWxldGU8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgICA8dGQ+e3sgaGludC5sb2NhdGlvbiB9fTwvdGQ+XHJcbiAgICAgICAgPHRkPnt7IGhpbnQuZGVzY3JpcHRpb24gfX08L3RkPlxyXG4gICAgICAgIDx0ZD5cclxuICAgICAgICAgIDxtYXQtY2hlY2tib3hcclxuICAgICAgICAgICAgKm5nSWY9XCJoaW50LnBhdGNoT3BlcmF0aW9uXCJcclxuICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkFwcGx5IHRoaXMgcGF0Y2hcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICBbdmFsdWVdPVwiKGkgKyAxKS50b1N0cmluZygpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgaGludC5wYXRjaE9wZXJhdGlvbiB9fVxyXG4gICAgICAgICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgPC90cj5cclxuICAgIDwvdGJvZHk+XHJcbiAgPC90YWJsZT5cclxuICA8ZGl2ICpuZ0lmPVwidGFyZ2V0TG9jYXRpb25cIj5tb3ZlIHRhcmdldDoge3sgdGFyZ2V0TG9jYXRpb24gfX08L2Rpdj5cclxuICA8YnV0dG9uXHJcbiAgICB0eXBlPVwic3VibWl0XCJcclxuICAgIG1hdC1yYWlzZWQtYnV0dG9uXHJcbiAgICBbZGlzYWJsZWRdPVwicmVhZG9ubHkgfHwgZGlzYWJsZWQgfHwgZm9ybS5pbnZhbGlkXCJcclxuICA+XHJcbiAgICBhcHBseSBwYXRjaGVzXHJcbiAgPC9idXR0b24+XHJcbjwvZm9ybT5cclxuIl19