@myrmidon/cadmus-ui 1.0.1 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/README.md +24 -24
  2. package/esm2020/lib/cadmus-ui.module.mjs +5 -15
  3. package/esm2020/lib/components/close-save-buttons/close-save-buttons.component.mjs +3 -3
  4. package/esm2020/lib/components/decorated-token-text/decorated-token-text.component.mjs +3 -3
  5. package/esm2020/lib/components/error-list/error-list.component.mjs +3 -3
  6. package/esm2020/lib/components/facet-badge/facet-badge.component.mjs +3 -3
  7. package/esm2020/lib/components/flags-badge/flags-badge.component.mjs +3 -3
  8. package/esm2020/lib/components/inplace-editor-component-base.mjs +3 -3
  9. package/esm2020/lib/components/layer-hints/layer-hints.component.mjs +3 -3
  10. package/esm2020/lib/components/lookup-pin/lookup-pin.component.mjs +3 -3
  11. package/esm2020/lib/components/model-editor-component-base.mjs +8 -8
  12. package/esm2020/lib/components/multi-entry-selector/multi-entry-selector.component.mjs +3 -3
  13. package/esm2020/lib/components/part-badge/part-badge.component.mjs +3 -3
  14. package/esm2020/lib/components/thesaurus-tree/thesaurus-tree.component.mjs +3 -3
  15. package/esm2020/lib/services/color.service.mjs +3 -3
  16. package/esm2020/public-api.mjs +1 -3
  17. package/fesm2015/myrmidon-cadmus-ui.mjs +54 -379
  18. package/fesm2015/myrmidon-cadmus-ui.mjs.map +1 -1
  19. package/fesm2020/myrmidon-cadmus-ui.mjs +54 -374
  20. package/fesm2020/myrmidon-cadmus-ui.mjs.map +1 -1
  21. package/lib/cadmus-ui.module.d.ts +17 -19
  22. package/lib/components/model-editor-component-base.d.ts +2 -2
  23. package/package.json +1 -1
  24. package/public-api.d.ts +0 -2
  25. package/esm2020/lib/components/physical-dimension/physical-dimension.component.mjs +0 -104
  26. package/esm2020/lib/components/physical-size/physical-size.component.mjs +0 -227
  27. package/lib/components/physical-dimension/physical-dimension.component.d.ts +0 -29
  28. package/lib/components/physical-size/physical-size.component.d.ts +0 -38
package/README.md CHANGED
@@ -1,24 +1,24 @@
1
- # CadmusUi
2
-
3
- This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 13.0.0.
4
-
5
- ## Code scaffolding
6
-
7
- Run `ng generate component component-name --project cadmus-ui` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project cadmus-ui`.
8
- > Note: Don't forget to add `--project cadmus-ui` or else it will be added to the default project in your `angular.json` file.
9
-
10
- ## Build
11
-
12
- Run `ng build cadmus-ui` to build the project. The build artifacts will be stored in the `dist/` directory.
13
-
14
- ## Publishing
15
-
16
- After building your library with `ng build cadmus-ui`, go to the dist folder `cd dist/cadmus-ui` and run `npm publish`.
17
-
18
- ## Running unit tests
19
-
20
- Run `ng test cadmus-ui` to execute the unit tests via [Karma](https://karma-runner.github.io).
21
-
22
- ## Further help
23
-
24
- To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
1
+ # CadmusUi
2
+
3
+ This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 13.0.0.
4
+
5
+ ## Code scaffolding
6
+
7
+ Run `ng generate component component-name --project cadmus-ui` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project cadmus-ui`.
8
+ > Note: Don't forget to add `--project cadmus-ui` or else it will be added to the default project in your `angular.json` file.
9
+
10
+ ## Build
11
+
12
+ Run `ng build cadmus-ui` to build the project. The build artifacts will be stored in the `dist/` directory.
13
+
14
+ ## Publishing
15
+
16
+ After building your library with `ng build cadmus-ui`, go to the dist folder `cd dist/cadmus-ui` and run `npm publish`.
17
+
18
+ ## Running unit tests
19
+
20
+ Run `ng test cadmus-ui` to execute the unit tests via [Karma](https://karma-runner.github.io).
21
+
22
+ ## Further help
23
+
24
+ To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
@@ -26,14 +26,12 @@ import { LayerHintsComponent } from './components/layer-hints/layer-hints.compon
26
26
  import { LookupPinComponent } from './components/lookup-pin/lookup-pin.component';
27
27
  import { MultiEntrySelectorComponent } from './components/multi-entry-selector/multi-entry-selector.component';
28
28
  import { PartBadgeComponent } from './components/part-badge/part-badge.component';
29
- import { PhysicalDimensionComponent } from './components/physical-dimension/physical-dimension.component';
30
- import { PhysicalSizeComponent } from './components/physical-size/physical-size.component';
31
29
  import { ThesaurusTreeComponent } from './components/thesaurus-tree/thesaurus-tree.component';
32
30
  import * as i0 from "@angular/core";
33
31
  export class CadmusUiModule {
34
32
  }
35
- CadmusUiModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: CadmusUiModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
36
- CadmusUiModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: CadmusUiModule, declarations: [CloseSaveButtonsComponent,
33
+ CadmusUiModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: CadmusUiModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
34
+ CadmusUiModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: CadmusUiModule, declarations: [CloseSaveButtonsComponent,
37
35
  DecoratedTokenTextComponent,
38
36
  ErrorListComponent,
39
37
  FacetBadgeComponent,
@@ -42,8 +40,6 @@ CadmusUiModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version:
42
40
  LookupPinComponent,
43
41
  MultiEntrySelectorComponent,
44
42
  PartBadgeComponent,
45
- PhysicalDimensionComponent,
46
- PhysicalSizeComponent,
47
43
  ThesaurusTreeComponent], imports: [CommonModule,
48
44
  FormsModule,
49
45
  RouterModule,
@@ -71,10 +67,8 @@ CadmusUiModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version:
71
67
  LookupPinComponent,
72
68
  MultiEntrySelectorComponent,
73
69
  PartBadgeComponent,
74
- PhysicalDimensionComponent,
75
- PhysicalSizeComponent,
76
70
  ThesaurusTreeComponent] });
77
- CadmusUiModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: CadmusUiModule, imports: [[
71
+ CadmusUiModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: CadmusUiModule, imports: [[
78
72
  CommonModule,
79
73
  FormsModule,
80
74
  RouterModule,
@@ -95,7 +89,7 @@ CadmusUiModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version:
95
89
  NgToolsModule,
96
90
  CadmusCoreModule,
97
91
  ]] });
98
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: CadmusUiModule, decorators: [{
92
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: CadmusUiModule, decorators: [{
99
93
  type: NgModule,
100
94
  args: [{
101
95
  imports: [
@@ -129,8 +123,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
129
123
  LookupPinComponent,
130
124
  MultiEntrySelectorComponent,
131
125
  PartBadgeComponent,
132
- PhysicalDimensionComponent,
133
- PhysicalSizeComponent,
134
126
  ThesaurusTreeComponent,
135
127
  ],
136
128
  exports: [
@@ -143,10 +135,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
143
135
  LookupPinComponent,
144
136
  MultiEntrySelectorComponent,
145
137
  PartBadgeComponent,
146
- PhysicalDimensionComponent,
147
- PhysicalSizeComponent,
148
138
  ThesaurusTreeComponent,
149
139
  ],
150
140
  }]
151
141
  }] });
152
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FkbXVzLXVpLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2NhZG11cy11aS9zcmMvbGliL2NhZG11cy11aS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxXQUFXO0FBQ1gsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV2RCxTQUFTO0FBQ1QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFdkQsU0FBUztBQUNULE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0Is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QXFCO3dCQUNyQixzQkFBc0I7cUJBQ3ZCO29CQUNELE9BQU8sRUFBRTt3QkFDUCx5QkFBeUI7d0JBQ3pCLDJCQUEyQjt3QkFDM0Isa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3dCQUNuQixrQkFBa0I7d0JBQ2xCLDJCQUEyQjt3QkFDM0Isa0JBQWtCO3dCQUNsQiwwQkFBMEI7d0JBQzFCLHFCQUFxQjt3QkFDckIsc0JBQXNCO3FCQUN2QjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuLy8gbWF0ZXJpYWxcclxuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XHJcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xyXG5pbXBvcnQgeyBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcbmltcG9ydCB7IE1hdFRyZWVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90cmVlJztcclxuXHJcbi8vIE1vbmFjb1xyXG5pbXBvcnQgeyBNb25hY29FZGl0b3JNb2R1bGUgfSBmcm9tICduZ3gtbW9uYWNvLWVkaXRvcic7XHJcblxyXG4vLyBDYWRtdXNcclxuaW1wb3J0IHsgQ2FkbXVzQ29yZU1vZHVsZSB9IGZyb20gJ0BteXJtaWRvbi9jYWRtdXMtY29yZSc7XHJcbmltcG9ydCB7IE5nVG9vbHNNb2R1bGUgfSBmcm9tICdAbXlybWlkb24vbmctdG9vbHMnO1xyXG5cclxuaW1wb3J0IHsgQ2xvc2VTYXZlQnV0dG9uc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jbG9zZS1zYXZlLWJ1dHRvbnMvY2xvc2Utc2F2ZS1idXR0b25zLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEVycm9yTGlzdENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9lcnJvci1saXN0L2Vycm9yLWxpc3QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRmFjZXRCYWRnZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9mYWNldC1iYWRnZS9mYWNldC1iYWRnZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGbGFnc0JhZGdlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2ZsYWdzLWJhZGdlL2ZsYWdzLWJhZGdlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERlY29yYXRlZFRva2VuVGV4dENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9kZWNvcmF0ZWQtdG9rZW4tdGV4dC9kZWNvcmF0ZWQtdG9rZW4tdGV4dC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBMYXllckhpbnRzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2xheWVyLWhpbnRzL2xheWVyLWhpbnRzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IExvb2t1cFBpbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9sb29rdXAtcGluL2xvb2t1cC1waW4uY29tcG9uZW50JztcclxuaW1wb3J0IHsgTXVsdGlFbnRyeVNlbGVjdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL211bHRpLWVudHJ5LXNlbGVjdG9yL211bHRpLWVudHJ5LXNlbGVjdG9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFBhcnRCYWRnZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9wYXJ0LWJhZGdlL3BhcnQtYmFkZ2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUGh5c2ljYWxEaW1lbnNpb25Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcGh5c2ljYWwtZGltZW5zaW9uL3BoeXNpY2FsLWRpbWVuc2lvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQaHlzaWNhbFNpemVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcGh5c2ljYWwtc2l6ZS9waHlzaWNhbC1zaXplLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRoZXNhdXJ1c1RyZWVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGhlc2F1cnVzLXRyZWUvdGhlc2F1cnVzLXRyZWUuY29tcG9uZW50JztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBSb3V0ZXJNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgLy8gbWF0ZXJpYWxcclxuICAgIE1hdEF1dG9jb21wbGV0ZU1vZHVsZSxcclxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcclxuICAgIE1hdENoZWNrYm94TW9kdWxlLFxyXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxyXG4gICAgTWF0SWNvbk1vZHVsZSxcclxuICAgIE1hdElucHV0TW9kdWxlLFxyXG4gICAgTWF0U2VsZWN0TW9kdWxlLFxyXG4gICAgTWF0VHJlZU1vZHVsZSxcclxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXHJcbiAgICAvLyBtb25hY29cclxuICAgIE1vbmFjb0VkaXRvck1vZHVsZSxcclxuICAgIC8vIGNhZG11c1xyXG4gICAgTmdUb29sc01vZHVsZSxcclxuICAgIENhZG11c0NvcmVNb2R1bGUsXHJcbiAgXSxcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIENsb3NlU2F2ZUJ1dHRvbnNDb21wb25lbnQsXHJcbiAgICBEZWNvcmF0ZWRUb2tlblRleHRDb21wb25lbnQsXHJcbiAgICBFcnJvckxpc3RDb21wb25lbnQsXHJcbiAgICBGYWNldEJhZGdlQ29tcG9uZW50LFxyXG4gICAgRmxhZ3NCYWRnZUNvbXBvbmVudCxcclxuICAgIExheWVySGludHNDb21wb25lbnQsXHJcbiAgICBMb29rdXBQaW5Db21wb25lbnQsXHJcbiAgICBNdWx0aUVudHJ5U2VsZWN0b3JDb21wb25lbnQsXHJcbiAgICBQYXJ0QmFkZ2VDb21wb25lbnQsXHJcbiAgICBQaHlzaWNhbERpbWVuc2lvbkNvbXBvbmVudCxcclxuICAgIFBoeXNpY2FsU2l6ZUNvbXBvbmVudCxcclxuICAgIFRoZXNhdXJ1c1RyZWVDb21wb25lbnQsXHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBDbG9zZVNhdmVCdXR0b25zQ29tcG9uZW50LFxyXG4gICAgRGVjb3JhdGVkVG9rZW5UZXh0Q29tcG9uZW50LFxyXG4gICAgRXJyb3JMaXN0Q29tcG9uZW50LFxyXG4gICAgRmFjZXRCYWRnZUNvbXBvbmVudCxcclxuICAgIEZsYWdzQmFkZ2VDb21wb25lbnQsXHJcbiAgICBMYXllckhpbnRzQ29tcG9uZW50LFxyXG4gICAgTG9va3VwUGluQ29tcG9uZW50LFxyXG4gICAgTXVsdGlFbnRyeVNlbGVjdG9yQ29tcG9uZW50LFxyXG4gICAgUGFydEJhZGdlQ29tcG9uZW50LFxyXG4gICAgUGh5c2ljYWxEaW1lbnNpb25Db21wb25lbnQsXHJcbiAgICBQaHlzaWNhbFNpemVDb21wb25lbnQsXHJcbiAgICBUaGVzYXVydXNUcmVlQ29tcG9uZW50LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDYWRtdXNVaU1vZHVsZSB7fVxyXG4iXX0=
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FkbXVzLXVpLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2NhZG11cy11aS9zcmMvbGliL2NhZG11cy11aS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxXQUFXO0FBQ1gsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV2RCxTQUFTO0FBQ1QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFdkQsU0FBUztBQUNULE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0Is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QixzQkFBc0I7cUJBQ3ZCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG4vLyBtYXRlcmlhbFxyXG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBNYXRDaGVja2JveE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcclxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XHJcbmltcG9ydCB7IE1hdFNlbGVjdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XHJcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcclxuaW1wb3J0IHsgTWF0VHJlZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RyZWUnO1xyXG5cclxuLy8gTW9uYWNvXHJcbmltcG9ydCB7IE1vbmFjb0VkaXRvck1vZHVsZSB9IGZyb20gJ25neC1tb25hY28tZWRpdG9yJztcclxuXHJcbi8vIENhZG11c1xyXG5pbXBvcnQgeyBDYWRtdXNDb3JlTW9kdWxlIH0gZnJvbSAnQG15cm1pZG9uL2NhZG11cy1jb3JlJztcclxuaW1wb3J0IHsgTmdUb29sc01vZHVsZSB9IGZyb20gJ0BteXJtaWRvbi9uZy10b29scyc7XHJcblxyXG5pbXBvcnQgeyBDbG9zZVNhdmVCdXR0b25zQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2Nsb3NlLXNhdmUtYnV0dG9ucy9jbG9zZS1zYXZlLWJ1dHRvbnMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRXJyb3JMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2Vycm9yLWxpc3QvZXJyb3ItbGlzdC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGYWNldEJhZGdlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2ZhY2V0LWJhZGdlL2ZhY2V0LWJhZGdlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZsYWdzQmFkZ2VDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZmxhZ3MtYmFkZ2UvZmxhZ3MtYmFkZ2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGVjb3JhdGVkVG9rZW5UZXh0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2RlY29yYXRlZC10b2tlbi10ZXh0L2RlY29yYXRlZC10b2tlbi10ZXh0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IExheWVySGludHNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbGF5ZXItaGludHMvbGF5ZXItaGludHMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTG9va3VwUGluQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2xvb2t1cC1waW4vbG9va3VwLXBpbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNdWx0aUVudHJ5U2VsZWN0b3JDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbXVsdGktZW50cnktc2VsZWN0b3IvbXVsdGktZW50cnktc2VsZWN0b3IuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUGFydEJhZGdlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3BhcnQtYmFkZ2UvcGFydC1iYWRnZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUaGVzYXVydXNUcmVlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RoZXNhdXJ1cy10cmVlL3RoZXNhdXJ1cy10cmVlLmNvbXBvbmVudCc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgUm91dGVyTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIC8vIG1hdGVyaWFsXHJcbiAgICBNYXRBdXRvY29tcGxldGVNb2R1bGUsXHJcbiAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICBNYXRDaGVja2JveE1vZHVsZSxcclxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcclxuICAgIE1hdEljb25Nb2R1bGUsXHJcbiAgICBNYXRJbnB1dE1vZHVsZSxcclxuICAgIE1hdFNlbGVjdE1vZHVsZSxcclxuICAgIE1hdFRyZWVNb2R1bGUsXHJcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxyXG4gICAgLy8gbW9uYWNvXHJcbiAgICBNb25hY29FZGl0b3JNb2R1bGUsXHJcbiAgICAvLyBjYWRtdXNcclxuICAgIE5nVG9vbHNNb2R1bGUsXHJcbiAgICBDYWRtdXNDb3JlTW9kdWxlLFxyXG4gIF0sXHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICBDbG9zZVNhdmVCdXR0b25zQ29tcG9uZW50LFxyXG4gICAgRGVjb3JhdGVkVG9rZW5UZXh0Q29tcG9uZW50LFxyXG4gICAgRXJyb3JMaXN0Q29tcG9uZW50LFxyXG4gICAgRmFjZXRCYWRnZUNvbXBvbmVudCxcclxuICAgIEZsYWdzQmFkZ2VDb21wb25lbnQsXHJcbiAgICBMYXllckhpbnRzQ29tcG9uZW50LFxyXG4gICAgTG9va3VwUGluQ29tcG9uZW50LFxyXG4gICAgTXVsdGlFbnRyeVNlbGVjdG9yQ29tcG9uZW50LFxyXG4gICAgUGFydEJhZGdlQ29tcG9uZW50LFxyXG4gICAgVGhlc2F1cnVzVHJlZUNvbXBvbmVudCxcclxuICBdLFxyXG4gIGV4cG9ydHM6IFtcclxuICAgIENsb3NlU2F2ZUJ1dHRvbnNDb21wb25lbnQsXHJcbiAgICBEZWNvcmF0ZWRUb2tlblRleHRDb21wb25lbnQsXHJcbiAgICBFcnJvckxpc3RDb21wb25lbnQsXHJcbiAgICBGYWNldEJhZGdlQ29tcG9uZW50LFxyXG4gICAgRmxhZ3NCYWRnZUNvbXBvbmVudCxcclxuICAgIExheWVySGludHNDb21wb25lbnQsXHJcbiAgICBMb29rdXBQaW5Db21wb25lbnQsXHJcbiAgICBNdWx0aUVudHJ5U2VsZWN0b3JDb21wb25lbnQsXHJcbiAgICBQYXJ0QmFkZ2VDb21wb25lbnQsXHJcbiAgICBUaGVzYXVydXNUcmVlQ29tcG9uZW50LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDYWRtdXNVaU1vZHVsZSB7fVxyXG4iXX0=
@@ -12,9 +12,9 @@ export class CloseSaveButtonsComponent {
12
12
  this.closeRequest.emit();
13
13
  }
14
14
  }
15
- CloseSaveButtonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: CloseSaveButtonsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
16
- CloseSaveButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.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\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.1.1", ngImport: i0, type: CloseSaveButtonsComponent, decorators: [{
15
+ CloseSaveButtonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: CloseSaveButtonsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
16
+ CloseSaveButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", 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.3.0", ngImport: i0, type: CloseSaveButtonsComponent, decorators: [{
18
18
  type: Component,
19
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
20
  }], ctorParameters: function () { return []; }, propDecorators: { form: [{
@@ -49,9 +49,9 @@ export class DecoratedTokenTextComponent {
49
49
  this.text = this._textLayerService.render(this._baseText, this._locations, this._selectedLoc);
50
50
  }
51
51
  }
52
- DecoratedTokenTextComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: DecoratedTokenTextComponent, deps: [{ token: i1.TextLayerService }], target: i0.ɵɵFactoryTarget.Component });
53
- DecoratedTokenTextComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.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"], pipes: { "safeHtml": i2.SafeHtmlPipe } });
54
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: DecoratedTokenTextComponent, decorators: [{
52
+ DecoratedTokenTextComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DecoratedTokenTextComponent, deps: [{ token: i1.TextLayerService }], target: i0.ɵɵFactoryTarget.Component });
53
+ DecoratedTokenTextComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", 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.3.0", ngImport: i0, type: DecoratedTokenTextComponent, decorators: [{
55
55
  type: Component,
56
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
57
  }], ctorParameters: function () { return [{ type: i1.TextLayerService }]; }, propDecorators: { _textElement: [{
@@ -6,9 +6,9 @@ export class ErrorListComponent {
6
6
  ngOnInit() {
7
7
  }
8
8
  }
9
- ErrorListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ErrorListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10
- ErrorListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.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: [""], 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.1.1", ngImport: i0, type: ErrorListComponent, decorators: [{
9
+ ErrorListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: ErrorListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10
+ ErrorListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", 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.3.0", ngImport: i0, type: ErrorListComponent, decorators: [{
12
12
  type: Component,
13
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
14
  }], ctorParameters: function () { return []; }, propDecorators: { errors: [{
@@ -89,9 +89,9 @@ export class FacetBadgeComponent {
89
89
  this.tip = this.getFacetTip(this._facetId) ?? undefined;
90
90
  }
91
91
  }
92
- FacetBadgeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FacetBadgeComponent, deps: [{ token: i1.ColorService }], target: i0.ɵɵFactoryTarget.Component });
93
- FacetBadgeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", 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.1.1", ngImport: i0, type: FacetBadgeComponent, decorators: [{
92
+ FacetBadgeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: FacetBadgeComponent, deps: [{ token: i1.ColorService }], target: i0.ɵɵFactoryTarget.Component });
93
+ FacetBadgeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", 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.3.0", ngImport: i0, type: FacetBadgeComponent, decorators: [{
95
95
  type: Component,
96
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
97
  }], ctorParameters: function () { return [{ type: i1.ColorService }]; }, propDecorators: { facetId: [{
@@ -40,9 +40,9 @@ export class FlagsBadgeComponent {
40
40
  });
41
41
  }
42
42
  }
43
- FlagsBadgeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FlagsBadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
44
- FlagsBadgeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", 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.1.1", ngImport: i0, type: FlagsBadgeComponent, decorators: [{
43
+ FlagsBadgeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: FlagsBadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
44
+ FlagsBadgeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", 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.3.0", ngImport: i0, type: FlagsBadgeComponent, decorators: [{
46
46
  type: Component,
47
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
48
  }], ctorParameters: function () { return []; }, propDecorators: { flags: [{
@@ -80,9 +80,9 @@ export class InplaceEditorComponentBase {
80
80
  }
81
81
  }
82
82
  }
83
- InplaceEditorComponentBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: InplaceEditorComponentBase, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
84
- InplaceEditorComponentBase.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", 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.1.1", ngImport: i0, type: InplaceEditorComponentBase, decorators: [{
83
+ InplaceEditorComponentBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: InplaceEditorComponentBase, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
84
+ InplaceEditorComponentBase.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", 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.3.0", ngImport: i0, type: InplaceEditorComponentBase, decorators: [{
86
86
  type: Component,
87
87
  args: [{
88
88
  template: '',
@@ -79,9 +79,9 @@ export class LayerHintsComponent {
79
79
  });
80
80
  }
81
81
  }
82
- LayerHintsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: LayerHintsComponent, deps: [{ token: i1.FormBuilder }, { token: i2.DialogService }], target: i0.ɵɵFactoryTarget.Component });
83
- LayerHintsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.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"], components: [{ type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i5.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i7.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
84
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: LayerHintsComponent, decorators: [{
82
+ LayerHintsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: LayerHintsComponent, deps: [{ token: i1.FormBuilder }, { token: i2.DialogService }], target: i0.ɵɵFactoryTarget.Component });
83
+ LayerHintsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", 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"], components: [{ type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i5.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i7.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
84
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: LayerHintsComponent, decorators: [{
85
85
  type: Component,
86
86
  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"] }]
87
87
  }], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.DialogService }]; }, propDecorators: { hints: [{
@@ -111,9 +111,9 @@ export class LookupPinComponent {
111
111
  }
112
112
  }
113
113
  }
114
- LookupPinComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: LookupPinComponent, deps: [{ token: i1.FormBuilder }, { token: i2.ItemService }, { token: 'indexLookupDefinitions' }], target: i0.ɵɵFactoryTarget.Component });
115
- LookupPinComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: LookupPinComponent, selector: "cadmus-lookup-pin", inputs: { initialValue: "initialValue", label: "label", limit: "limit", resetOnPick: "resetOnPick", lookupKey: "lookupKey" }, outputs: { entryChange: "entryChange" }, ngImport: i0, template: "<form [formGroup]=\"form\">\r\n <mat-autocomplete #lookupAuto=\"matAutocomplete\" [displayWith]=\"entryToName\">\r\n <mat-option\r\n *ngFor=\"let entry of entries$ | async\"\r\n [value]=\"entry\"\r\n (onSelectionChange)=\"pickEntry(entry)\"\r\n >\r\n {{ entry?.value }}\r\n </mat-option>\r\n </mat-autocomplete>\r\n\r\n <mat-form-field>\r\n <input\r\n matInput\r\n type=\"text\"\r\n [placeholder]=\"label\"\r\n [formControl]=\"lookup\"\r\n [matAutocomplete]=\"lookupAuto\"\r\n />\r\n </mat-form-field>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n color=\"warn\"\r\n (click)=\"clear()\"\r\n [disabled]=\"!entry\"\r\n matTooltip=\"Clear\"\r\n >\r\n <mat-icon>clear</mat-icon>\r\n </button>\r\n</form>\r\n", styles: [""], components: [{ type: i3.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i4.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i5.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i6.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i3.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i10.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], pipes: { "async": i8.AsyncPipe } });
116
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: LookupPinComponent, decorators: [{
114
+ LookupPinComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: LookupPinComponent, deps: [{ token: i1.FormBuilder }, { token: i2.ItemService }, { token: 'indexLookupDefinitions' }], target: i0.ɵɵFactoryTarget.Component });
115
+ LookupPinComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: LookupPinComponent, selector: "cadmus-lookup-pin", inputs: { initialValue: "initialValue", label: "label", limit: "limit", resetOnPick: "resetOnPick", lookupKey: "lookupKey" }, outputs: { entryChange: "entryChange" }, ngImport: i0, template: "<form [formGroup]=\"form\">\r\n <mat-autocomplete #lookupAuto=\"matAutocomplete\" [displayWith]=\"entryToName\">\r\n <mat-option\r\n *ngFor=\"let entry of entries$ | async\"\r\n [value]=\"entry\"\r\n (onSelectionChange)=\"pickEntry(entry)\"\r\n >\r\n {{ entry?.value }}\r\n </mat-option>\r\n </mat-autocomplete>\r\n\r\n <mat-form-field>\r\n <input\r\n matInput\r\n type=\"text\"\r\n [placeholder]=\"label\"\r\n [formControl]=\"lookup\"\r\n [matAutocomplete]=\"lookupAuto\"\r\n />\r\n </mat-form-field>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n color=\"warn\"\r\n (click)=\"clear()\"\r\n [disabled]=\"!entry\"\r\n matTooltip=\"Clear\"\r\n >\r\n <mat-icon>clear</mat-icon>\r\n </button>\r\n</form>\r\n", styles: [""], components: [{ type: i3.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i4.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i5.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i6.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i3.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i10.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], pipes: { "async": i8.AsyncPipe } });
116
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: LookupPinComponent, decorators: [{
117
117
  type: Component,
118
118
  args: [{ selector: 'cadmus-lookup-pin', template: "<form [formGroup]=\"form\">\r\n <mat-autocomplete #lookupAuto=\"matAutocomplete\" [displayWith]=\"entryToName\">\r\n <mat-option\r\n *ngFor=\"let entry of entries$ | async\"\r\n [value]=\"entry\"\r\n (onSelectionChange)=\"pickEntry(entry)\"\r\n >\r\n {{ entry?.value }}\r\n </mat-option>\r\n </mat-autocomplete>\r\n\r\n <mat-form-field>\r\n <input\r\n matInput\r\n type=\"text\"\r\n [placeholder]=\"label\"\r\n [formControl]=\"lookup\"\r\n [matAutocomplete]=\"lookupAuto\"\r\n />\r\n </mat-form-field>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n color=\"warn\"\r\n (click)=\"clear()\"\r\n [disabled]=\"!entry\"\r\n matTooltip=\"Clear\"\r\n >\r\n <mat-icon>clear</mat-icon>\r\n </button>\r\n</form>\r\n", styles: [""] }]
119
119
  }], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.ItemService }, { type: undefined, decorators: [{
@@ -100,7 +100,7 @@ export class ModelEditorComponentBase {
100
100
  */
101
101
  initEditor() {
102
102
  this.onThesauriSet();
103
- this.onModelSet(this.model);
103
+ this.onModelSet(this._model);
104
104
  if (this.form) {
105
105
  extractPristineChanges(this.form).subscribe((p) => {
106
106
  this.dirtyChange.emit(!p);
@@ -114,7 +114,7 @@ export class ModelEditorComponentBase {
114
114
  * @param model The model.
115
115
  */
116
116
  updateModel(model) {
117
- this.model = model;
117
+ this._model = model;
118
118
  this.modelChange.emit(model);
119
119
  }
120
120
  /**
@@ -130,8 +130,8 @@ export class ModelEditorComponentBase {
130
130
  }
131
131
  /**
132
132
  * Save the edited data if valid. This invokes getModelFromForm to get
133
- * the model from the form's controls, serializes it into JSON,
134
- * updates the json property, and marks the root form as pristine.
133
+ * the model from the form's controls, updates the underlying model,
134
+ * marks the root form as pristine, and emits dirtyChange(false).
135
135
  */
136
136
  save() {
137
137
  if (this.form?.invalid) {
@@ -144,9 +144,9 @@ export class ModelEditorComponentBase {
144
144
  this.dirtyChange.emit(false);
145
145
  }
146
146
  }
147
- ModelEditorComponentBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ModelEditorComponentBase, deps: [{ token: i1.AuthJwtService }], target: i0.ɵɵFactoryTarget.Component });
148
- ModelEditorComponentBase.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: ModelEditorComponentBase, selector: "ng-component", inputs: { itemId: "itemId", roleId: "roleId", model: "model", thesauri: "thesauri", disabled: "disabled" }, outputs: { modelChange: "modelChange", editorClose: "editorClose", dirtyChange: "dirtyChange" }, ngImport: i0, template: '', isInline: true });
149
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ModelEditorComponentBase, decorators: [{
147
+ ModelEditorComponentBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: ModelEditorComponentBase, deps: [{ token: i1.AuthJwtService }], target: i0.ɵɵFactoryTarget.Component });
148
+ ModelEditorComponentBase.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: ModelEditorComponentBase, selector: "ng-component", inputs: { itemId: "itemId", roleId: "roleId", model: "model", thesauri: "thesauri", disabled: "disabled" }, outputs: { modelChange: "modelChange", editorClose: "editorClose", dirtyChange: "dirtyChange" }, ngImport: i0, template: '', isInline: true });
149
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: ModelEditorComponentBase, decorators: [{
150
150
  type: Component,
151
151
  args: [{
152
152
  template: '',
@@ -168,4 +168,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
168
168
  }], dirtyChange: [{
169
169
  type: Output
170
170
  }] } });
171
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtZWRpdG9yLWNvbXBvbmVudC1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlybWlkb24vY2FkbXVzLXVpL3NyYy9saWIvY29tcG9uZW50cy9tb2RlbC1lZGl0b3ItY29tcG9uZW50LWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU12RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxVQUFVLENBQUM7OztBQUVsRDs7Ozs7Ozs7Ozs7OztHQWFHO0FBSUgsTUFBTSxPQUFnQix3QkFBd0I7SUF5RjVDLFlBQW9CLFlBQTRCO1FBQTVCLGlCQUFZLEdBQVosWUFBWSxDQUFnQjtRQUM5QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksWUFBWSxFQUFLLENBQUM7UUFDekMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQzNDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUMvQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBRTVDLFlBQVksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBaUIsRUFBRSxFQUFFO1lBQ3hELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFsRkQ7O09BRUc7SUFDSCxJQUNXLEtBQUs7UUFDZCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUNELElBQVcsS0FBSyxDQUFDLEtBQW9CO1FBQ25DLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQVFEOztPQUVHO0lBQ0gsSUFDVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBQ0QsSUFBVyxRQUFRLENBQUMsS0FBOEI7UUFDaEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQ0ksUUFBUSxDQUFDLEtBQWM7UUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDZCxPQUFPO1NBQ1I7UUFDRCxJQUFJLEtBQUssRUFBRTtZQUNULElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDckI7YUFBTTtZQUNMLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDcEI7SUFDSCxDQUFDO0lBeUNEOzs7T0FHRztJQUNLLG1CQUFtQjtRQUN6QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDO1FBQ2hELElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ3hCLE9BQU8sQ0FBQyxDQUFDO1NBQ1Y7UUFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQ3BDLE9BQU8sQ0FBQyxDQUFDO1NBQ1Y7UUFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQ3JDLE9BQU8sQ0FBQyxDQUFDO1NBQ1Y7UUFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQ3ZDLE9BQU8sQ0FBQyxDQUFDO1NBQ1Y7UUFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQ3RDLE9BQU8sQ0FBQyxDQUFDO1NBQ1Y7UUFDRCxPQUFPLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxJQUFpQjtRQUM1QyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1QsSUFBSSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7WUFDdEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7U0FDcEI7YUFBTTtZQUNMLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7U0FDN0M7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ08sVUFBVTtRQUNsQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFNUIsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2Isc0JBQXNCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNoRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVCLENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDTyxXQUFXLENBQUMsS0FBUTtRQUM1QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBV0Q7OztPQUdHO0lBQ08sYUFBYSxLQUFVLENBQUM7SUFRbEM7O09BRUc7SUFDSSxLQUFLO1FBQ1YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLElBQUk7UUFDVCxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFO1lBQ3RCLE9BQU87U0FDUjtRQUNELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkIsNEJBQTRCO1FBQzVCLElBQUksQ0FBQyxJQUFJLEVBQUUsY0FBYyxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0IsQ0FBQzs7cUhBMU1tQix3QkFBd0I7eUdBQXhCLHdCQUF3QixpUUFGbEMsRUFBRTsyRkFFUSx3QkFBd0I7a0JBSDdDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLEVBQUU7aUJBQ2I7cUdBU1EsTUFBTTtzQkFEWixLQUFLO2dCQU9DLE1BQU07c0JBRFosS0FBSztnQkFPSyxLQUFLO3NCQURmLEtBQUs7Z0JBYUMsV0FBVztzQkFEakIsTUFBTTtnQkFPSSxRQUFRO3NCQURsQixLQUFLO2dCQWFGLFFBQVE7c0JBRFgsS0FBSztnQkFnQkMsV0FBVztzQkFEakIsTUFBTTtnQkFPQSxXQUFXO3NCQURqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBBdXRoSnd0U2VydmljZSwgVXNlciB9IGZyb20gJ0BteXJtaWRvbi9hdXRoLWp3dC1sb2dpbic7XHJcblxyXG5pbXBvcnQgeyBUaGVzYXVyaVNldCB9IGZyb20gJ0BteXJtaWRvbi9jYWRtdXMtY29yZSc7XHJcblxyXG5pbXBvcnQgeyBleHRyYWN0UHJpc3RpbmVDaGFuZ2VzIH0gZnJvbSAnLi4vdXRpbHMnO1xyXG5cclxuLyoqXHJcbiAqIEJhc2UgY2xhc3MgZm9yIHBhcnQvZnJhZ21lbnQgZWRpdG9ycyBkdW1iIGNvbXBvbmVudHMuXHJcbiAqIFRoZSBtb2RlbCB0eXBlIGlzIHRoZSB0ZW1wbGF0ZWQgYXJndW1lbnQgVC5cclxuICogQSBkdW1iIGNvbXBvbmVudCBnZXRzIGFzIGlucHV0IHRoZSBwYXJ0L2ZyYWdtZW50IG1vZGVsLFxyXG4gKiBhbmQgb3B0aW9uYWxseSBhIHNldCBvZiB0aGVzYXVyaS5cclxuICogSXQgb3V0cHV0cyB0aGUgbW9kZWwgKHdoZW4gc2F2ZWQpLCBhIHJlcXVlc3QgdG8gY2xvc2UgdGhlXHJcbiAqIGVkaXRvciwgYW5kIGEgbm90aWZpY2F0aW9uIGFib3V0IHRoZSBkaXJ0eSBzdGF0ZSBvZiB0aGUgZWRpdG9yXHJcbiAqIGl0c2VsZi5cclxuICogV2hlbiBpbXBsZW1lbnRpbmcgeW91ciBtb2RlbCBlZGl0b3IgZXh0ZW5kaW5nIHRoaXMgY2xhc3M6XHJcbiAqIC0gc2V0IHRoZSBmb3JtIHByb3BlcnR5IHRvIHlvdXIgXCJyb290XCIgZm9ybTtcclxuICogLSBjYWxsIGluaXRFZGl0b3IgaW4geW91ciBPbkluaXQ7XHJcbiAqIC0gb3ZlcnJpZGUgb25Nb2RlbFNldCwgYW5kIGV2ZW50dWFsbHkgT25UaGVzYXVyaVNldDtcclxuICogLSBvdmVycmlkZSBnZXRNb2RlbEZyb21Gb3JtLlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgdGVtcGxhdGU6ICcnLFxyXG59KVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTW9kZWxFZGl0b3JDb21wb25lbnRCYXNlPFQ+IHtcclxuICBwcml2YXRlIF90aGVzYXVyaT86IFRoZXNhdXJpU2V0O1xyXG4gIHByaXZhdGUgX21vZGVsPzogVDtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIHBhcnQncyBpdGVtIElELlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGl0ZW1JZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgcGFydCdzIHJvbGUgSUQuXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgcm9sZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBtb2RlbCBiZWluZyBlZGl0ZWQuXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZ2V0IG1vZGVsKCk6IFQgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuX21vZGVsO1xyXG4gIH1cclxuICBwdWJsaWMgc2V0IG1vZGVsKHZhbHVlOiBUIHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLl9tb2RlbCA9IHZhbHVlO1xyXG4gICAgdGhpcy5vbk1vZGVsU2V0KHZhbHVlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgZWRpdGVkIG1vZGVsIGlzIHNhdmVkLlxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBtb2RlbENoYW5nZTogRXZlbnRFbWl0dGVyPFQ+O1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgb3B0aW9uYWwgdGhlc2F1cmkgdG8gYmUgdXNlZCB3aXRoaW4gdGhpcyBlZGl0b3IuXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZ2V0IHRoZXNhdXJpKCk6IFRoZXNhdXJpU2V0IHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLl90aGVzYXVyaTtcclxuICB9XHJcbiAgcHVibGljIHNldCB0aGVzYXVyaSh2YWx1ZTogVGhlc2F1cmlTZXQgfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuX3RoZXNhdXJpID0gdmFsdWU7XHJcbiAgICB0aGlzLm9uVGhlc2F1cmlTZXQoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRydWUgdG8gZGlzYWJsZSB0aGUgZWRpdG9yLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICBpZiAoIXRoaXMuZm9ybSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgdGhpcy5mb3JtLmRpc2FibGUoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZm9ybS5lbmFibGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgdXNlciByZXF1ZXN0cyB0byBjbG9zZSB0aGUgZWRpdG9yLlxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBlZGl0b3JDbG9zZTogRXZlbnRFbWl0dGVyPGFueT47XHJcblxyXG4gIC8qKlxyXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgZGlydHkgc3RhdGUgb2YgdGhlIGVkaXRlZCBkYXRhIGNoYW5nZXMuXHJcbiAgICovXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGRpcnR5Q2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj47XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSByb290IGZvcm0gb2YgdGhlIGVkaXRvci5cclxuICAgKiBZb3UgTVVTVCBpbnN0YW50aWF0ZSB0aGlzIGZvcm0gaW4gdGhlIGN0b3IuXHJcbiAgICovXHJcbiAgcHVibGljIGZvcm0/OiBGb3JtR3JvdXA7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBjdXJyZW50IHVzZXIuXHJcbiAgICovXHJcbiAgcHVibGljIHVzZXI/OiBVc2VyO1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgdXNlciBhdXRob3JpemF0aW9uIGxldmVsICgwLTQpLlxyXG4gICAqL1xyXG4gIHB1YmxpYyB1c2VyTGV2ZWw6IG51bWJlcjtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfYXV0aFNlcnZpY2U6IEF1dGhKd3RTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLm1vZGVsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxUPigpO1xyXG4gICAgdGhpcy5lZGl0b3JDbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgdGhpcy5kaXJ0eUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuICAgIHRoaXMudXNlckxldmVsID0gdGhpcy5nZXRDdXJyZW50VXNlckxldmVsKCk7XHJcblxyXG4gICAgX2F1dGhTZXJ2aWNlLmN1cnJlbnRVc2VyJC5zdWJzY3JpYmUoKHVzZXI6IFVzZXIgfCBudWxsKSA9PiB7XHJcbiAgICAgIHRoaXMudXBkYXRlVXNlclByb3BlcnRpZXModXNlcik7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgYXV0aG9yaXphdGlvbiBsZXZlbCBvZiB0aGUgY3VycmVudCB1c2VyIGlmIGFueS5cclxuICAgKiBAcmV0dXJucyA0LTEgZm9yIGFkbWluLCBlZGl0b3IsIG9wZXJhdG9yLCB2aXNpdG9yOyBlbHNlIDAuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXRDdXJyZW50VXNlckxldmVsKCk6IG51bWJlciB7XHJcbiAgICBjb25zdCB1c2VyID0gdGhpcy5fYXV0aFNlcnZpY2UuY3VycmVudFVzZXJWYWx1ZTtcclxuICAgIGlmICghdXNlciB8fCAhdXNlci5yb2xlcykge1xyXG4gICAgICByZXR1cm4gMDtcclxuICAgIH1cclxuICAgIGlmICh1c2VyLnJvbGVzLmluZGV4T2YoJ2FkbWluJykgPiAtMSkge1xyXG4gICAgICByZXR1cm4gNDtcclxuICAgIH1cclxuICAgIGlmICh1c2VyLnJvbGVzLmluZGV4T2YoJ2VkaXRvcicpID4gLTEpIHtcclxuICAgICAgcmV0dXJuIDM7XHJcbiAgICB9XHJcbiAgICBpZiAodXNlci5yb2xlcy5pbmRleE9mKCdvcGVyYXRvcicpID4gLTEpIHtcclxuICAgICAgcmV0dXJuIDI7XHJcbiAgICB9XHJcbiAgICBpZiAodXNlci5yb2xlcy5pbmRleE9mKCd2aXNpdG9yJykgPiAtMSkge1xyXG4gICAgICByZXR1cm4gMTtcclxuICAgIH1cclxuICAgIHJldHVybiAwO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVVc2VyUHJvcGVydGllcyh1c2VyOiBVc2VyIHwgbnVsbCk6IHZvaWQge1xyXG4gICAgaWYgKCF1c2VyKSB7XHJcbiAgICAgIHRoaXMudXNlciA9IHVuZGVmaW5lZDtcclxuICAgICAgdGhpcy51c2VyTGV2ZWwgPSAwO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy51c2VyID0gdXNlcjtcclxuICAgICAgdGhpcy51c2VyTGV2ZWwgPSB0aGlzLmdldEN1cnJlbnRVc2VyTGV2ZWwoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemUgdGhlIGVkaXRvci4gWW91IE1VU1QgY2FsbCB0aGlzIGluIHlvdXIgT25Jbml0LlxyXG4gICAqIFRoaXMgaW5pdGlhbGl6ZXMgdGhlIHRoZXNhdXJpIGFuZCBzZXRzIHRoZSBkYXRhIG1vZGVsLlxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBpbml0RWRpdG9yKCk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRoZXNhdXJpU2V0KCk7XHJcbiAgICB0aGlzLm9uTW9kZWxTZXQodGhpcy5tb2RlbCk7XHJcblxyXG4gICAgaWYgKHRoaXMuZm9ybSkge1xyXG4gICAgICBleHRyYWN0UHJpc3RpbmVDaGFuZ2VzKHRoaXMuZm9ybSkuc3Vic2NyaWJlKChwKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kaXJ0eUNoYW5nZS5lbWl0KCFwKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGUgdGhlIG1vZGVsIHByb3BlcnR5IGFuZCBlbWl0IHRoZSBjb3JyZXNwb25kaW5nXHJcbiAgICogbW9kZWxDaGFuZ2UgZXZlbnQuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gbW9kZWwgVGhlIG1vZGVsLlxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCB1cGRhdGVNb2RlbChtb2RlbDogVCk6IHZvaWQge1xyXG4gICAgdGhpcy5tb2RlbCA9IG1vZGVsO1xyXG4gICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KG1vZGVsKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEludm9rZWQgd2hlbmV2ZXIgdGhlIG1vZGVsIHByb3BlcnR5IGlzIHNldCAoPWRhdGEgY29tZXMgZnJvbSBpbnB1dCBtb2RlbFxyXG4gICAqIHByb3BlcnR5KSwgdW5sZXNzIHNldHRpbmcgaXQgdmlhIHVwZGF0ZU1vZGVsLiBJbXBsZW1lbnQgdG8gdXBkYXRlIHRoZSBmb3JtXHJcbiAgICogY29udHJvbHMgdG8gcmVmbGVjdCB0aGUgbmV3IG1vZGVsIGRhdGEuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gbW9kZWwgVGhlIG1vZGVsIHNldCwgb3IgdW5kZWZpbmVkLlxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBvbk1vZGVsU2V0KG1vZGVsPzogVCk6IHZvaWQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIEludm9rZWQgd2hlbmV2ZXIgdGhlIHRoZXNhdXJpIHByb3BlcnR5IGlzIHNldC4gT3ZlcnJpZGUgdG8gdGFrZVxyXG4gICAqIGN1c3RvbSBhY3Rpb25zLCB0eXBpY2FsbHkgdG8gc2V0IHNvbWUgYm91bmQgcHJvcGVydGllcy5cclxuICAgKi9cclxuICBwcm90ZWN0ZWQgb25UaGVzYXVyaVNldCgpOiB2b2lkIHt9XHJcblxyXG4gIC8qKlxyXG4gICAqIEltcGxlbWVudCBpbiBkZXJpdmVkIGNsYXNzZXMgdG8gZ2V0IHRoZSBtb2RlbCBmcm9tIGZvcm0ncyBjb250cm9scy5cclxuICAgKiBUaGlzIGlzIHVzZWQgd2hlbiBzYXZpbmcgKD1kYXRhIGdvZXMgdG8gdGhlIG91dHB1dCBtb2RlbENoYW5nZSBldmVudCkuXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldE1vZGVsRnJvbUZvcm0oKTogVDtcclxuXHJcbiAgLyoqXHJcbiAgICogRW1pdCBhIHJlcXVlc3QgdG8gY2xvc2UgdGhlIGVkaXRvci5cclxuICAgKi9cclxuICBwdWJsaWMgY2xvc2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLmVkaXRvckNsb3NlLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNhdmUgdGhlIGVkaXRlZCBkYXRhIGlmIHZhbGlkLiBUaGlzIGludm9rZXMgZ2V0TW9kZWxGcm9tRm9ybSB0byBnZXRcclxuICAgKiB0aGUgbW9kZWwgZnJvbSB0aGUgZm9ybSdzIGNvbnRyb2xzLCBzZXJpYWxpemVzIGl0IGludG8gSlNPTixcclxuICAgKiB1cGRhdGVzIHRoZSBqc29uIHByb3BlcnR5LCBhbmQgbWFya3MgdGhlIHJvb3QgZm9ybSBhcyBwcmlzdGluZS5cclxuICAgKi9cclxuICBwdWJsaWMgc2F2ZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmZvcm0/LmludmFsaWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcGFydCA9IHRoaXMuZ2V0TW9kZWxGcm9tRm9ybSgpO1xyXG4gICAgdGhpcy51cGRhdGVNb2RlbChwYXJ0KTtcclxuICAgIC8vIHRoZSBmb3JtIGlzIG5vIG1vcmUgZGlydHlcclxuICAgIHRoaXMuZm9ybT8ubWFya0FzUHJpc3RpbmUoKTtcclxuICAgIHRoaXMuZGlydHlDaGFuZ2UuZW1pdChmYWxzZSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
171
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtZWRpdG9yLWNvbXBvbmVudC1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlybWlkb24vY2FkbXVzLXVpL3NyYy9saWIvY29tcG9uZW50cy9tb2RlbC1lZGl0b3ItY29tcG9uZW50LWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU12RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxVQUFVLENBQUM7OztBQUVsRDs7Ozs7Ozs7Ozs7OztHQWFHO0FBSUgsTUFBTSxPQUFnQix3QkFBd0I7SUF5RjVDLFlBQW9CLFlBQTRCO1FBQTVCLGlCQUFZLEdBQVosWUFBWSxDQUFnQjtRQUM5QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksWUFBWSxFQUFLLENBQUM7UUFDekMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQzNDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUMvQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBRTVDLFlBQVksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBaUIsRUFBRSxFQUFFO1lBQ3hELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFsRkQ7O09BRUc7SUFDSCxJQUNXLEtBQUs7UUFDZCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUNELElBQVcsS0FBSyxDQUFDLEtBQW9CO1FBQ25DLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENB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QUFFO1lBQ3RCLE9BQU87U0FDUjtRQUNELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkIsNEJBQTRCO1FBQzVCLElBQUksQ0FBQyxJQUFJLEVBQUUsY0FBYyxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0IsQ0FBQzs7cUhBMU1tQix3QkFBd0I7eUdBQXhCLHdCQUF3QixpUUFGbEMsRUFBRTsyRkFFUSx3QkFBd0I7a0JBSDdDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLEVBQUU7aUJBQ2I7cUdBU1EsTUFBTTtzQkFEWixLQUFLO2dCQU9DLE1BQU07c0JBRFosS0FBSztnQkFPSyxLQUFLO3NCQURmLEtBQUs7Z0JBYUMsV0FBVztzQkFEakIsTUFBTTtnQkFPSSxRQUFRO3NCQURsQixLQUFLO2dCQWFGLFFBQVE7c0JBRFgsS0FBSztnQkFnQkMsV0FBVztzQkFEakIsTUFBTTtnQkFPQSxXQUFXO3NCQURqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBBdXRoSnd0U2VydmljZSwgVXNlciB9IGZyb20gJ0BteXJtaWRvbi9hdXRoLWp3dC1sb2dpbic7XHJcblxyXG5pbXBvcnQgeyBUaGVzYXVyaVNldCB9IGZyb20gJ0BteXJtaWRvbi9jYWRtdXMtY29yZSc7XHJcblxyXG5pbXBvcnQgeyBleHRyYWN0UHJpc3RpbmVDaGFuZ2VzIH0gZnJvbSAnLi4vdXRpbHMnO1xyXG5cclxuLyoqXHJcbiAqIEJhc2UgY2xhc3MgZm9yIHBhcnQvZnJhZ21lbnQgZWRpdG9ycyBkdW1iIGNvbXBvbmVudHMuXHJcbiAqIFRoZSBtb2RlbCB0eXBlIGlzIHRoZSB0ZW1wbGF0ZWQgYXJndW1lbnQgVC5cclxuICogQSBkdW1iIGNvbXBvbmVudCBnZXRzIGFzIGlucHV0IHRoZSBwYXJ0L2ZyYWdtZW50IG1vZGVsLFxyXG4gKiBhbmQgb3B0aW9uYWxseSBhIHNldCBvZiB0aGVzYXVyaS5cclxuICogSXQgb3V0cHV0cyB0aGUgbW9kZWwgKHdoZW4gc2F2ZWQpLCBhIHJlcXVlc3QgdG8gY2xvc2UgdGhlXHJcbiAqIGVkaXRvciwgYW5kIGEgbm90aWZpY2F0aW9uIGFib3V0IHRoZSBkaXJ0eSBzdGF0ZSBvZiB0aGUgZWRpdG9yXHJcbiAqIGl0c2VsZi5cclxuICogV2hlbiBpbXBsZW1lbnRpbmcgeW91ciBtb2RlbCBlZGl0b3IgZXh0ZW5kaW5nIHRoaXMgY2xhc3M6XHJcbiAqIC0gc2V0IHRoZSBmb3JtIHByb3BlcnR5IHRvIHlvdXIgXCJyb290XCIgZm9ybTtcclxuICogLSBjYWxsIGluaXRFZGl0b3IgaW4geW91ciBPbkluaXQ7XHJcbiAqIC0gb3ZlcnJpZGUgb25Nb2RlbFNldCwgYW5kIGV2ZW50dWFsbHkgT25UaGVzYXVyaVNldDtcclxuICogLSBvdmVycmlkZSBnZXRNb2RlbEZyb21Gb3JtLlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgdGVtcGxhdGU6ICcnLFxyXG59KVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTW9kZWxFZGl0b3JDb21wb25lbnRCYXNlPFQ+IHtcclxuICBwcml2YXRlIF90aGVzYXVyaT86IFRoZXNhdXJpU2V0O1xyXG4gIHByaXZhdGUgX21vZGVsPzogVDtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIHBhcnQncyBpdGVtIElELlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGl0ZW1JZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgcGFydCdzIHJvbGUgSUQuXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgcm9sZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBtb2RlbCBiZWluZyBlZGl0ZWQuXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZ2V0IG1vZGVsKCk6IFQgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuX21vZGVsO1xyXG4gIH1cclxuICBwdWJsaWMgc2V0IG1vZGVsKHZhbHVlOiBUIHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLl9tb2RlbCA9IHZhbHVlO1xyXG4gICAgdGhpcy5vbk1vZGVsU2V0KHZhbHVlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgZWRpdGVkIG1vZGVsIGlzIHNhdmVkLlxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBtb2RlbENoYW5nZTogRXZlbnRFbWl0dGVyPFQ+O1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgb3B0aW9uYWwgdGhlc2F1cmkgdG8gYmUgdXNlZCB3aXRoaW4gdGhpcyBlZGl0b3IuXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZ2V0IHRoZXNhdXJpKCk6IFRoZXNhdXJpU2V0IHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLl90aGVzYXVyaTtcclxuICB9XHJcbiAgcHVibGljIHNldCB0aGVzYXVyaSh2YWx1ZTogVGhlc2F1cmlTZXQgfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuX3RoZXNhdXJpID0gdmFsdWU7XHJcbiAgICB0aGlzLm9uVGhlc2F1cmlTZXQoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRydWUgdG8gZGlzYWJsZSB0aGUgZWRpdG9yLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICBpZiAoIXRoaXMuZm9ybSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgdGhpcy5mb3JtLmRpc2FibGUoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZm9ybS5lbmFibGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgdXNlciByZXF1ZXN0cyB0byBjbG9zZSB0aGUgZWRpdG9yLlxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBlZGl0b3JDbG9zZTogRXZlbnRFbWl0dGVyPGFueT47XHJcblxyXG4gIC8qKlxyXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgZGlydHkgc3RhdGUgb2YgdGhlIGVkaXRlZCBkYXRhIGNoYW5nZXMuXHJcbiAgICovXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGRpcnR5Q2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj47XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSByb290IGZvcm0gb2YgdGhlIGVkaXRvci5cclxuICAgKiBZb3UgTVVTVCBpbnN0YW50aWF0ZSB0aGlzIGZvcm0gaW4gdGhlIGN0b3IuXHJcbiAgICovXHJcbiAgcHVibGljIGZvcm0/OiBGb3JtR3JvdXA7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBjdXJyZW50IHVzZXIuXHJcbiAgICovXHJcbiAgcHVibGljIHVzZXI/OiBVc2VyO1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgdXNlciBhdXRob3JpemF0aW9uIGxldmVsICgwLTQpLlxyXG4gICAqL1xyXG4gIHB1YmxpYyB1c2VyTGV2ZWw6IG51bWJlcjtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfYXV0aFNlcnZpY2U6IEF1dGhKd3RTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLm1vZGVsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxUPigpO1xyXG4gICAgdGhpcy5lZGl0b3JDbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgdGhpcy5kaXJ0eUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuICAgIHRoaXMudXNlckxldmVsID0gdGhpcy5nZXRDdXJyZW50VXNlckxldmVsKCk7XHJcblxyXG4gICAgX2F1dGhTZXJ2aWNlLmN1cnJlbnRVc2VyJC5zdWJzY3JpYmUoKHVzZXI6IFVzZXIgfCBudWxsKSA9PiB7XHJcbiAgICAgIHRoaXMudXBkYXRlVXNlclByb3BlcnRpZXModXNlcik7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgYXV0aG9yaXphdGlvbiBsZXZlbCBvZiB0aGUgY3VycmVudCB1c2VyIGlmIGFueS5cclxuICAgKiBAcmV0dXJucyA0LTEgZm9yIGFkbWluLCBlZGl0b3IsIG9wZXJhdG9yLCB2aXNpdG9yOyBlbHNlIDAuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXRDdXJyZW50VXNlckxldmVsKCk6IG51bWJlciB7XHJcbiAgICBjb25zdCB1c2VyID0gdGhpcy5fYXV0aFNlcnZpY2UuY3VycmVudFVzZXJWYWx1ZTtcclxuICAgIGlmICghdXNlciB8fCAhdXNlci5yb2xlcykge1xyXG4gICAgICByZXR1cm4gMDtcclxuICAgIH1cclxuICAgIGlmICh1c2VyLnJvbGVzLmluZGV4T2YoJ2FkbWluJykgPiAtMSkge1xyXG4gICAgICByZXR1cm4gNDtcclxuICAgIH1cclxuICAgIGlmICh1c2VyLnJvbGVzLmluZGV4T2YoJ2VkaXRvcicpID4gLTEpIHtcclxuICAgICAgcmV0dXJuIDM7XHJcbiAgICB9XHJcbiAgICBpZiAodXNlci5yb2xlcy5pbmRleE9mKCdvcGVyYXRvcicpID4gLTEpIHtcclxuICAgICAgcmV0dXJuIDI7XHJcbiAgICB9XHJcbiAgICBpZiAodXNlci5yb2xlcy5pbmRleE9mKCd2aXNpdG9yJykgPiAtMSkge1xyXG4gICAgICByZXR1cm4gMTtcclxuICAgIH1cclxuICAgIHJldHVybiAwO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVVc2VyUHJvcGVydGllcyh1c2VyOiBVc2VyIHwgbnVsbCk6IHZvaWQge1xyXG4gICAgaWYgKCF1c2VyKSB7XHJcbiAgICAgIHRoaXMudXNlciA9IHVuZGVmaW5lZDtcclxuICAgICAgdGhpcy51c2VyTGV2ZWwgPSAwO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy51c2VyID0gdXNlcjtcclxuICAgICAgdGhpcy51c2VyTGV2ZWwgPSB0aGlzLmdldEN1cnJlbnRVc2VyTGV2ZWwoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemUgdGhlIGVkaXRvci4gWW91IE1VU1QgY2FsbCB0aGlzIGluIHlvdXIgT25Jbml0LlxyXG4gICAqIFRoaXMgaW5pdGlhbGl6ZXMgdGhlIHRoZXNhdXJpIGFuZCBzZXRzIHRoZSBkYXRhIG1vZGVsLlxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBpbml0RWRpdG9yKCk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRoZXNhdXJpU2V0KCk7XHJcbiAgICB0aGlzLm9uTW9kZWxTZXQodGhpcy5fbW9kZWwpO1xyXG5cclxuICAgIGlmICh0aGlzLmZvcm0pIHtcclxuICAgICAgZXh0cmFjdFByaXN0aW5lQ2hhbmdlcyh0aGlzLmZvcm0pLnN1YnNjcmliZSgocCkgPT4ge1xyXG4gICAgICAgIHRoaXMuZGlydHlDaGFuZ2UuZW1pdCghcCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIHRoZSBtb2RlbCBwcm9wZXJ0eSBhbmQgZW1pdCB0aGUgY29ycmVzcG9uZGluZ1xyXG4gICAqIG1vZGVsQ2hhbmdlIGV2ZW50LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIG1vZGVsIFRoZSBtb2RlbC5cclxuICAgKi9cclxuICBwcm90ZWN0ZWQgdXBkYXRlTW9kZWwobW9kZWw6IFQpOiB2b2lkIHtcclxuICAgIHRoaXMuX21vZGVsID0gbW9kZWw7XHJcbiAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQobW9kZWwpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW52b2tlZCB3aGVuZXZlciB0aGUgbW9kZWwgcHJvcGVydHkgaXMgc2V0ICg9ZGF0YSBjb21lcyBmcm9tIGlucHV0IG1vZGVsXHJcbiAgICogcHJvcGVydHkpLCB1bmxlc3Mgc2V0dGluZyBpdCB2aWEgdXBkYXRlTW9kZWwuIEltcGxlbWVudCB0byB1cGRhdGUgdGhlIGZvcm1cclxuICAgKiBjb250cm9scyB0byByZWZsZWN0IHRoZSBuZXcgbW9kZWwgZGF0YS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBtb2RlbCBUaGUgbW9kZWwgc2V0LCBvciB1bmRlZmluZWQuXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGFic3RyYWN0IG9uTW9kZWxTZXQobW9kZWw/OiBUKTogdm9pZDtcclxuXHJcbiAgLyoqXHJcbiAgICogSW52b2tlZCB3aGVuZXZlciB0aGUgdGhlc2F1cmkgcHJvcGVydHkgaXMgc2V0LiBPdmVycmlkZSB0byB0YWtlXHJcbiAgICogY3VzdG9tIGFjdGlvbnMsIHR5cGljYWxseSB0byBzZXQgc29tZSBib3VuZCBwcm9wZXJ0aWVzLlxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBvblRoZXNhdXJpU2V0KCk6IHZvaWQge31cclxuXHJcbiAgLyoqXHJcbiAgICogSW1wbGVtZW50IGluIGRlcml2ZWQgY2xhc3NlcyB0byBnZXQgdGhlIG1vZGVsIGZyb20gZm9ybSdzIGNvbnRyb2xzLlxyXG4gICAqIFRoaXMgaXMgdXNlZCB3aGVuIHNhdmluZyAoPWRhdGEgZ29lcyB0byB0aGUgb3V0cHV0IG1vZGVsQ2hhbmdlIGV2ZW50KS5cclxuICAgKi9cclxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0TW9kZWxGcm9tRm9ybSgpOiBUO1xyXG5cclxuICAvKipcclxuICAgKiBFbWl0IGEgcmVxdWVzdCB0byBjbG9zZSB0aGUgZWRpdG9yLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZWRpdG9yQ2xvc2UuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2F2ZSB0aGUgZWRpdGVkIGRhdGEgaWYgdmFsaWQuIFRoaXMgaW52b2tlcyBnZXRNb2RlbEZyb21Gb3JtIHRvIGdldFxyXG4gICAqIHRoZSBtb2RlbCBmcm9tIHRoZSBmb3JtJ3MgY29udHJvbHMsIHVwZGF0ZXMgdGhlIHVuZGVybHlpbmcgbW9kZWwsXHJcbiAgICogbWFya3MgdGhlIHJvb3QgZm9ybSBhcyBwcmlzdGluZSwgYW5kIGVtaXRzIGRpcnR5Q2hhbmdlKGZhbHNlKS5cclxuICAgKi9cclxuICBwdWJsaWMgc2F2ZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmZvcm0/LmludmFsaWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcGFydCA9IHRoaXMuZ2V0TW9kZWxGcm9tRm9ybSgpO1xyXG4gICAgdGhpcy51cGRhdGVNb2RlbChwYXJ0KTtcclxuICAgIC8vIHRoZSBmb3JtIGlzIG5vIG1vcmUgZGlydHlcclxuICAgIHRoaXMuZm9ybT8ubWFya0FzUHJpc3RpbmUoKTtcclxuICAgIHRoaXMuZGlydHlDaGFuZ2UuZW1pdChmYWxzZSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -127,9 +127,9 @@ export class MultiEntrySelectorComponent {
127
127
  this.selectionChange.emit(this.getSelectedIds());
128
128
  }
129
129
  }
130
- MultiEntrySelectorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: MultiEntrySelectorComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
131
- MultiEntrySelectorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: MultiEntrySelectorComponent, selector: "cadmus-multi-entry-selector", inputs: { selectedIds: "selectedIds", entries: "entries", numbering: "numbering", toolbar: "toolbar" }, outputs: { selectionChange: "selectionChange" }, ngImport: i0, template: "<form [formGroup]=\"form\" *ngIf=\"entries?.length\">\r\n <div *ngIf=\"toolbar\">\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Toggle all\"\r\n (click)=\"toggleAll()\"\r\n >\r\n <mat-icon>published_with_changes</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n color=\"primary\"\r\n mat-icon-button\r\n matTooltip=\"Select all\"\r\n (click)=\"selectAll()\"\r\n >\r\n <mat-icon>done_all</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Deselect all\"\r\n color=\"warn\"\r\n (click)=\"deselectAll()\"\r\n >\r\n <mat-icon>remove_done</mat-icon>\r\n </button>\r\n </div>\r\n <div formArrayName=\"entriesArr\" class=\"cols\">\r\n <div *ngFor=\"let item of entriesArr.controls; let i = index\">\r\n <!-- child form -->\r\n <div [formGroupName]=\"i\">\r\n <span class=\"numbering\" *ngIf=\"numbering\">{{ i + 1 }}.</span>\r\n <mat-checkbox formControlName=\"entry\">{{\r\n $any(entries)[i].value\r\n }}</mat-checkbox>\r\n </div>\r\n </div>\r\n </div>\r\n</form>\r\n", styles: [".numbering{color:silver;margin-right:6px;font-size:95%}.cols{column-count:4;column-width:250px;column-rule:1px solid #ddd}\n"], components: [{ type: i2.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: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i6.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
132
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: MultiEntrySelectorComponent, decorators: [{
130
+ MultiEntrySelectorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: MultiEntrySelectorComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
131
+ MultiEntrySelectorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: MultiEntrySelectorComponent, selector: "cadmus-multi-entry-selector", inputs: { selectedIds: "selectedIds", entries: "entries", numbering: "numbering", toolbar: "toolbar" }, outputs: { selectionChange: "selectionChange" }, ngImport: i0, template: "<form [formGroup]=\"form\" *ngIf=\"entries?.length\">\r\n <div *ngIf=\"toolbar\">\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Toggle all\"\r\n (click)=\"toggleAll()\"\r\n >\r\n <mat-icon>published_with_changes</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n color=\"primary\"\r\n mat-icon-button\r\n matTooltip=\"Select all\"\r\n (click)=\"selectAll()\"\r\n >\r\n <mat-icon>done_all</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Deselect all\"\r\n color=\"warn\"\r\n (click)=\"deselectAll()\"\r\n >\r\n <mat-icon>remove_done</mat-icon>\r\n </button>\r\n </div>\r\n <div formArrayName=\"entriesArr\" class=\"cols\">\r\n <div *ngFor=\"let item of entriesArr.controls; let i = index\">\r\n <!-- child form -->\r\n <div [formGroupName]=\"i\">\r\n <span class=\"numbering\" *ngIf=\"numbering\">{{ i + 1 }}.</span>\r\n <mat-checkbox formControlName=\"entry\">{{\r\n $any(entries)[i].value\r\n }}</mat-checkbox>\r\n </div>\r\n </div>\r\n </div>\r\n</form>\r\n", styles: [".numbering{color:silver;margin-right:6px;font-size:95%}.cols{column-count:4;column-width:250px;column-rule:1px solid #ddd}\n"], components: [{ type: i2.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: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i6.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
132
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: MultiEntrySelectorComponent, decorators: [{
133
133
  type: Component,
134
134
  args: [{ selector: 'cadmus-multi-entry-selector', template: "<form [formGroup]=\"form\" *ngIf=\"entries?.length\">\r\n <div *ngIf=\"toolbar\">\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Toggle all\"\r\n (click)=\"toggleAll()\"\r\n >\r\n <mat-icon>published_with_changes</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n color=\"primary\"\r\n mat-icon-button\r\n matTooltip=\"Select all\"\r\n (click)=\"selectAll()\"\r\n >\r\n <mat-icon>done_all</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Deselect all\"\r\n color=\"warn\"\r\n (click)=\"deselectAll()\"\r\n >\r\n <mat-icon>remove_done</mat-icon>\r\n </button>\r\n </div>\r\n <div formArrayName=\"entriesArr\" class=\"cols\">\r\n <div *ngFor=\"let item of entriesArr.controls; let i = index\">\r\n <!-- child form -->\r\n <div [formGroupName]=\"i\">\r\n <span class=\"numbering\" *ngIf=\"numbering\">{{ i + 1 }}.</span>\r\n <mat-checkbox formControlName=\"entry\">{{\r\n $any(entries)[i].value\r\n }}</mat-checkbox>\r\n </div>\r\n </div>\r\n </div>\r\n</form>\r\n", styles: [".numbering{color:silver;margin-right:6px;font-size:95%}.cols{column-count:4;column-width:250px;column-rule:1px solid #ddd}\n"] }]
135
135
  }], ctorParameters: function () { return [{ type: i1.FormBuilder }]; }, propDecorators: { selectedIds: [{
@@ -85,9 +85,9 @@ export class PartBadgeComponent {
85
85
  this.contrastColor = this._colorService.getContrastColor(this.color);
86
86
  }
87
87
  }
88
- PartBadgeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: PartBadgeComponent, deps: [{ token: i1.FacetService }, { token: i2.ColorService }], target: i0.ɵɵFactoryTarget.Component });
89
- PartBadgeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: PartBadgeComponent, selector: "cadmus-part-badge", inputs: { badgeType: "badgeType", typeThesaurus: "typeThesaurus", facetDefinition: "facetDefinition", partTypeIds: "partTypeIds" }, ngImport: i0, template: "<span class=\"part-badge\"\r\n [style.background-color]=\"color\"\r\n [style.color]=\"contrastColor\"\r\n *ngIf=\"badgeType !== 2\"\r\n>\r\n {{ typeName }}\r\n</span>\r\n<span class=\"role-badge\" *ngIf=\"badgeType !== 1 && roleName\">\r\n {{ roleName }}\r\n</span>\r\n", styles: [".part-badge{padding:4px;border-radius:6px}.role-badge{padding:4px;border:1px solid silver;border-radius:6px}\n"], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
90
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: PartBadgeComponent, decorators: [{
88
+ PartBadgeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: PartBadgeComponent, deps: [{ token: i1.FacetService }, { token: i2.ColorService }], target: i0.ɵɵFactoryTarget.Component });
89
+ PartBadgeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: PartBadgeComponent, selector: "cadmus-part-badge", inputs: { badgeType: "badgeType", typeThesaurus: "typeThesaurus", facetDefinition: "facetDefinition", partTypeIds: "partTypeIds" }, ngImport: i0, template: "<span class=\"part-badge\"\r\n [style.background-color]=\"color\"\r\n [style.color]=\"contrastColor\"\r\n *ngIf=\"badgeType !== 2\"\r\n>\r\n {{ typeName }}\r\n</span>\r\n<span class=\"role-badge\" *ngIf=\"badgeType !== 1 && roleName\">\r\n {{ roleName }}\r\n</span>\r\n", styles: [".part-badge{padding:4px;border-radius:6px}.role-badge{padding:4px;border:1px solid silver;border-radius:6px}\n"], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
90
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: PartBadgeComponent, decorators: [{
91
91
  type: Component,
92
92
  args: [{ selector: 'cadmus-part-badge', template: "<span class=\"part-badge\"\r\n [style.background-color]=\"color\"\r\n [style.color]=\"contrastColor\"\r\n *ngIf=\"badgeType !== 2\"\r\n>\r\n {{ typeName }}\r\n</span>\r\n<span class=\"role-badge\" *ngIf=\"badgeType !== 1 && roleName\">\r\n {{ roleName }}\r\n</span>\r\n", styles: [".part-badge{padding:4px;border-radius:6px}.role-badge{padding:4px;border:1px solid silver;border-radius:6px}\n"] }]
93
93
  }], ctorParameters: function () { return [{ type: i1.FacetService }, { type: i2.ColorService }]; }, propDecorators: { badgeType: [{
@@ -203,9 +203,9 @@ export class ThesaurusTreeComponent {
203
203
  return this.foundNodes?.length > 0 && this.foundNodes.indexOf(node) > -1;
204
204
  }
205
205
  }
206
- ThesaurusTreeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ThesaurusTreeComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
207
- ThesaurusTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: ThesaurusTreeComponent, selector: "cadmus-thesaurus-tree", inputs: { entries: "entries", rootLabel: "rootLabel", renderLabel: "renderLabel" }, outputs: { entryChange: "entryChange" }, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"find()\">\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Expand all\"\r\n (click)=\"expandAll()\"\r\n >\r\n <mat-icon>unfold_more</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Collapse all\"\r\n (click)=\"collapseAll()\"\r\n >\r\n <mat-icon>unfold_less</mat-icon>\r\n </button>\r\n <mat-form-field>\r\n <input matInput [formControl]=\"filter\" placeholder=\"find\" />\r\n <button\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n color=\"warn\"\r\n (click)=\"resetFilter()\"\r\n >\r\n <mat-icon>clear</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n <span\r\n *ngIf=\"foundNodes\"\r\n [ngClass]=\"{\r\n 'found-count': foundNodes?.length,\r\n 'not-found-count': foundNodes?.length === 0\r\n }\"\r\n >{{ foundNodes?.length }}</span\r\n >\r\n</form>\r\n<mat-tree\r\n [dataSource]=\"treeDataSource\"\r\n [treeControl]=\"treeControl\"\r\n class=\"th-tree\"\r\n>\r\n <!-- leaf node -->\r\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodeToggle>\r\n <li>\r\n <div class=\"mat-tree-node\">\r\n <a\r\n mat-button\r\n (click)=\"onTreeNodeClick(node)\"\r\n [class.hilite]=\"isFoundNode(node)\"\r\n >\r\n {{ node.label }}\r\n </a>\r\n </div>\r\n </li>\r\n </mat-tree-node>\r\n\r\n <!-- root node -->\r\n <mat-nested-tree-node *matTreeNodeDef=\"let node; when: isRoot\">\r\n <div class=\"mat-tree-node\">\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTreeNodeToggle\r\n [attr.aria-label]=\"'Toggle ' + node.label\"\r\n >\r\n <mat-icon>\r\n {{ treeControl.isExpanded(node) ? \"expand_more\" : \"chevron_right\" }}\r\n </mat-icon>\r\n </button>\r\n {{ node.label }}\r\n </div>\r\n <ul class=\"tree-nested-node\">\r\n <div *ngIf=\"treeControl.isExpanded(node)\">\r\n <ng-container matTreeNodeOutlet></ng-container>\r\n </div>\r\n </ul>\r\n </mat-nested-tree-node>\r\n\r\n <!-- parent node -->\r\n <mat-nested-tree-node *matTreeNodeDef=\"let node; when: hasChildren\">\r\n <li class=\"tree-container\">\r\n <div class=\"mat-tree-node\">\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTreeNodeToggle\r\n [attr.aria-label]=\"'Toggle ' + node.label\"\r\n >\r\n <mat-icon>\r\n {{ treeControl.isExpanded(node) ? \"expand_more\" : \"chevron_right\" }}\r\n </mat-icon>\r\n </button>\r\n <a mat-button (click)=\"onTreeNodeClick(node)\">\r\n {{ node.label }}\r\n </a>\r\n </div>\r\n <ul class=\"tree-nested-node\">\r\n <div *ngIf=\"treeControl.isExpanded(node)\">\r\n <ng-container matTreeNodeOutlet></ng-container>\r\n </div>\r\n </ul>\r\n </li>\r\n </mat-nested-tree-node>\r\n</mat-tree>\r\n", styles: [".th-tree-progress-bar{margin-left:30px}.th-tree-nested-node{padding-left:30px}mat-tree{margin-left:40px}.mat-tree-node{padding:0;background-color:#fff}.mat-nested-tree-node{top:-24px}ul,li{list-style:none;margin:0;padding:0}li.th-tree-container{border-bottom:0}ul{padding-left:40px}li{padding-left:40px;border:1px dotted grey;border-width:0 0 1px 1px;position:relative;top:-24px}li.mat-tree-node,li div{margin:0;position:relative;top:24px}li ul{border-top:1px dotted grey;margin-left:-40px;padding-left:60px}.mat-nested-tree-node:last-child ul{border-left:1px solid white;margin-left:-41px}.mat-icon-button{z-index:100}span.found-count{margin:0 4px;padding:2px 4px;color:#fff;background-color:#0cc078;border-radius:6px}span.not-found-count{margin:0 4px;padding:2px 4px;color:#fff;background-color:#fb6962;border-radius:6px}.hilite{background-color:#fdfd96}\n"], components: [{ type: i2.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: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i5.MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { type: i2.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-icon-button], a[mat-fab], a[mat-mini-fab], a[mat-stroked-button], a[mat-flat-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }], directives: [{ type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i6.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i4.MatSuffix, selector: "[matSuffix]" }, { type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { type: i5.MatTreeNode, selector: "mat-tree-node", inputs: ["role", "disabled", "tabIndex"], exportAs: ["matTreeNode"] }, { type: i5.MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { type: i5.MatNestedTreeNode, selector: "mat-nested-tree-node", inputs: ["role", "disabled", "tabIndex", "matNestedTreeNode"], exportAs: ["matNestedTreeNode"] }, { type: i5.MatTreeNodeOutlet, selector: "[matTreeNodeOutlet]" }] });
208
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ThesaurusTreeComponent, decorators: [{
206
+ ThesaurusTreeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: ThesaurusTreeComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
207
+ ThesaurusTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: ThesaurusTreeComponent, selector: "cadmus-thesaurus-tree", inputs: { entries: "entries", rootLabel: "rootLabel", renderLabel: "renderLabel" }, outputs: { entryChange: "entryChange" }, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"find()\">\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Expand all\"\r\n (click)=\"expandAll()\"\r\n >\r\n <mat-icon>unfold_more</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Collapse all\"\r\n (click)=\"collapseAll()\"\r\n >\r\n <mat-icon>unfold_less</mat-icon>\r\n </button>\r\n <mat-form-field>\r\n <input matInput [formControl]=\"filter\" placeholder=\"find\" />\r\n <button\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n color=\"warn\"\r\n (click)=\"resetFilter()\"\r\n >\r\n <mat-icon>clear</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n <span\r\n *ngIf=\"foundNodes\"\r\n [ngClass]=\"{\r\n 'found-count': foundNodes?.length,\r\n 'not-found-count': foundNodes?.length === 0\r\n }\"\r\n >{{ foundNodes?.length }}</span\r\n >\r\n</form>\r\n<mat-tree\r\n [dataSource]=\"treeDataSource\"\r\n [treeControl]=\"treeControl\"\r\n class=\"th-tree\"\r\n>\r\n <!-- leaf node -->\r\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodeToggle>\r\n <li>\r\n <div class=\"mat-tree-node\">\r\n <a\r\n mat-button\r\n (click)=\"onTreeNodeClick(node)\"\r\n [class.hilite]=\"isFoundNode(node)\"\r\n >\r\n {{ node.label }}\r\n </a>\r\n </div>\r\n </li>\r\n </mat-tree-node>\r\n\r\n <!-- root node -->\r\n <mat-nested-tree-node *matTreeNodeDef=\"let node; when: isRoot\">\r\n <div class=\"mat-tree-node\">\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTreeNodeToggle\r\n [attr.aria-label]=\"'Toggle ' + node.label\"\r\n >\r\n <mat-icon>\r\n {{ treeControl.isExpanded(node) ? \"expand_more\" : \"chevron_right\" }}\r\n </mat-icon>\r\n </button>\r\n {{ node.label }}\r\n </div>\r\n <ul class=\"tree-nested-node\">\r\n <div *ngIf=\"treeControl.isExpanded(node)\">\r\n <ng-container matTreeNodeOutlet></ng-container>\r\n </div>\r\n </ul>\r\n </mat-nested-tree-node>\r\n\r\n <!-- parent node -->\r\n <mat-nested-tree-node *matTreeNodeDef=\"let node; when: hasChildren\">\r\n <li class=\"tree-container\">\r\n <div class=\"mat-tree-node\">\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTreeNodeToggle\r\n [attr.aria-label]=\"'Toggle ' + node.label\"\r\n >\r\n <mat-icon>\r\n {{ treeControl.isExpanded(node) ? \"expand_more\" : \"chevron_right\" }}\r\n </mat-icon>\r\n </button>\r\n <a mat-button (click)=\"onTreeNodeClick(node)\">\r\n {{ node.label }}\r\n </a>\r\n </div>\r\n <ul class=\"tree-nested-node\">\r\n <div *ngIf=\"treeControl.isExpanded(node)\">\r\n <ng-container matTreeNodeOutlet></ng-container>\r\n </div>\r\n </ul>\r\n </li>\r\n </mat-nested-tree-node>\r\n</mat-tree>\r\n", styles: [".th-tree-progress-bar{margin-left:30px}.th-tree-nested-node{padding-left:30px}mat-tree{margin-left:40px}.mat-tree-node{padding:0;background-color:#fff}.mat-nested-tree-node{top:-24px}ul,li{list-style:none;margin:0;padding:0}li.th-tree-container{border-bottom:0}ul{padding-left:40px}li{padding-left:40px;border:1px dotted grey;border-width:0 0 1px 1px;position:relative;top:-24px}li.mat-tree-node,li div{margin:0;position:relative;top:24px}li ul{border-top:1px dotted grey;margin-left:-40px;padding-left:60px}.mat-nested-tree-node:last-child ul{border-left:1px solid white;margin-left:-41px}.mat-icon-button{z-index:100}span.found-count{margin:0 4px;padding:2px 4px;color:#fff;background-color:#0cc078;border-radius:6px}span.not-found-count{margin:0 4px;padding:2px 4px;color:#fff;background-color:#fb6962;border-radius:6px}.hilite{background-color:#fdfd96}\n"], components: [{ type: i2.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: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i5.MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { type: i2.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-icon-button], a[mat-fab], a[mat-mini-fab], a[mat-stroked-button], a[mat-flat-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }], directives: [{ type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i6.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i4.MatSuffix, selector: "[matSuffix]" }, { type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { type: i5.MatTreeNode, selector: "mat-tree-node", inputs: ["role", "disabled", "tabIndex"], exportAs: ["matTreeNode"] }, { type: i5.MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { type: i5.MatNestedTreeNode, selector: "mat-nested-tree-node", inputs: ["role", "disabled", "tabIndex", "matNestedTreeNode"], exportAs: ["matNestedTreeNode"] }, { type: i5.MatTreeNodeOutlet, selector: "[matTreeNodeOutlet]" }] });
208
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: ThesaurusTreeComponent, decorators: [{
209
209
  type: Component,
210
210
  args: [{ selector: 'cadmus-thesaurus-tree', template: "<form [formGroup]=\"form\" (submit)=\"find()\">\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Expand all\"\r\n (click)=\"expandAll()\"\r\n >\r\n <mat-icon>unfold_more</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Collapse all\"\r\n (click)=\"collapseAll()\"\r\n >\r\n <mat-icon>unfold_less</mat-icon>\r\n </button>\r\n <mat-form-field>\r\n <input matInput [formControl]=\"filter\" placeholder=\"find\" />\r\n <button\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n color=\"warn\"\r\n (click)=\"resetFilter()\"\r\n >\r\n <mat-icon>clear</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n <span\r\n *ngIf=\"foundNodes\"\r\n [ngClass]=\"{\r\n 'found-count': foundNodes?.length,\r\n 'not-found-count': foundNodes?.length === 0\r\n }\"\r\n >{{ foundNodes?.length }}</span\r\n >\r\n</form>\r\n<mat-tree\r\n [dataSource]=\"treeDataSource\"\r\n [treeControl]=\"treeControl\"\r\n class=\"th-tree\"\r\n>\r\n <!-- leaf node -->\r\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodeToggle>\r\n <li>\r\n <div class=\"mat-tree-node\">\r\n <a\r\n mat-button\r\n (click)=\"onTreeNodeClick(node)\"\r\n [class.hilite]=\"isFoundNode(node)\"\r\n >\r\n {{ node.label }}\r\n </a>\r\n </div>\r\n </li>\r\n </mat-tree-node>\r\n\r\n <!-- root node -->\r\n <mat-nested-tree-node *matTreeNodeDef=\"let node; when: isRoot\">\r\n <div class=\"mat-tree-node\">\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTreeNodeToggle\r\n [attr.aria-label]=\"'Toggle ' + node.label\"\r\n >\r\n <mat-icon>\r\n {{ treeControl.isExpanded(node) ? \"expand_more\" : \"chevron_right\" }}\r\n </mat-icon>\r\n </button>\r\n {{ node.label }}\r\n </div>\r\n <ul class=\"tree-nested-node\">\r\n <div *ngIf=\"treeControl.isExpanded(node)\">\r\n <ng-container matTreeNodeOutlet></ng-container>\r\n </div>\r\n </ul>\r\n </mat-nested-tree-node>\r\n\r\n <!-- parent node -->\r\n <mat-nested-tree-node *matTreeNodeDef=\"let node; when: hasChildren\">\r\n <li class=\"tree-container\">\r\n <div class=\"mat-tree-node\">\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTreeNodeToggle\r\n [attr.aria-label]=\"'Toggle ' + node.label\"\r\n >\r\n <mat-icon>\r\n {{ treeControl.isExpanded(node) ? \"expand_more\" : \"chevron_right\" }}\r\n </mat-icon>\r\n </button>\r\n <a mat-button (click)=\"onTreeNodeClick(node)\">\r\n {{ node.label }}\r\n </a>\r\n </div>\r\n <ul class=\"tree-nested-node\">\r\n <div *ngIf=\"treeControl.isExpanded(node)\">\r\n <ng-container matTreeNodeOutlet></ng-container>\r\n </div>\r\n </ul>\r\n </li>\r\n </mat-nested-tree-node>\r\n</mat-tree>\r\n", styles: [".th-tree-progress-bar{margin-left:30px}.th-tree-nested-node{padding-left:30px}mat-tree{margin-left:40px}.mat-tree-node{padding:0;background-color:#fff}.mat-nested-tree-node{top:-24px}ul,li{list-style:none;margin:0;padding:0}li.th-tree-container{border-bottom:0}ul{padding-left:40px}li{padding-left:40px;border:1px dotted grey;border-width:0 0 1px 1px;position:relative;top:-24px}li.mat-tree-node,li div{margin:0;position:relative;top:24px}li ul{border-top:1px dotted grey;margin-left:-40px;padding-left:60px}.mat-nested-tree-node:last-child ul{border-left:1px solid white;margin-left:-41px}.mat-icon-button{z-index:100}span.found-count{margin:0 4px;padding:2px 4px;color:#fff;background-color:#0cc078;border-radius:6px}span.not-found-count{margin:0 4px;padding:2px 4px;color:#fff;background-color:#fb6962;border-radius:6px}.hilite{background-color:#fdfd96}\n"] }]
211
211
  }], ctorParameters: function () { return [{ type: i1.FormBuilder }]; }, propDecorators: { entries: [{
@@ -56,9 +56,9 @@ export class ColorService {
56
56
  : 'white';
57
57
  }
58
58
  }
59
- ColorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ColorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
60
- ColorService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ColorService, providedIn: 'root' });
61
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ColorService, decorators: [{
59
+ ColorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: ColorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
60
+ ColorService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: ColorService, providedIn: 'root' });
61
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: ColorService, decorators: [{
62
62
  type: Injectable,
63
63
  args: [{
64
64
  providedIn: 'root',