@valtimo-plugins/freemarker 5.0.1 → 7.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/fesm2022/valtimo-plugins-freemarker.mjs +1076 -160
  2. package/fesm2022/valtimo-plugins-freemarker.mjs.map +1 -1
  3. package/lib/models/freemarker-template.d.ts +11 -7
  4. package/lib/plugins/mail-template/assets/mail-template-plugin-logo.d.ts +2 -2
  5. package/lib/plugins/mail-template/components/generate-mail-content/generate-mail-content.component.d.ts +1 -2
  6. package/lib/plugins/mail-template/components/generate-mail-file/generate-mail-file.component.d.ts +1 -2
  7. package/lib/plugins/mail-template/components/mail-template-add-edit-modal/mail-template-add-edit-modal.component.d.ts +1 -1
  8. package/lib/plugins/mail-template/components/mail-template-delete-modal/mail-template-delete-modal.component.d.ts +1 -1
  9. package/lib/plugins/mail-template/components/mail-template-editor/mail-template-editor.component.d.ts +6 -3
  10. package/lib/plugins/mail-template/components/mail-template-list/mail-template-list.component.d.ts +7 -4
  11. package/lib/plugins/mail-template/mail-template-plugin-module.d.ts +9 -12
  12. package/lib/plugins/text-template/assets/index.d.ts +1 -0
  13. package/lib/plugins/text-template/assets/text-template-plugin-logo.d.ts +2 -0
  14. package/lib/plugins/text-template/components/generate-text-file/generate-text-file.component.d.ts +32 -0
  15. package/lib/plugins/text-template/components/text-template-add-edit-modal/text-template-add-edit-modal.component.d.ts +29 -0
  16. package/lib/plugins/text-template/components/text-template-configuration/text-template-configuration.component.d.ts +25 -0
  17. package/lib/plugins/text-template/components/text-template-delete-modal/text-template-delete-modal.component.d.ts +11 -0
  18. package/lib/plugins/text-template/components/text-template-editor/text-template-editor.component.d.ts +52 -0
  19. package/lib/plugins/text-template/components/text-template-list/text-template-list.component.d.ts +35 -0
  20. package/lib/plugins/text-template/models/config.d.ts +12 -0
  21. package/lib/plugins/text-template/models/index.d.ts +1 -0
  22. package/lib/plugins/text-template/text-template-management-routing.module.d.ts +8 -0
  23. package/lib/plugins/text-template/text-template-plugin-module.d.ts +15 -0
  24. package/lib/plugins/text-template/text-template-plugin.specification.d.ts +3 -0
  25. package/lib/services/freemarker-template-management.service.d.ts +8 -5
  26. package/package.json +6 -9
  27. package/public_api.d.ts +9 -0
  28. package/esm2022/lib/models/freemarker-template.mjs +0 -17
  29. package/esm2022/lib/models/index.mjs +0 -17
  30. package/esm2022/lib/plugins/mail-template/assets/index.mjs +0 -17
  31. package/esm2022/lib/plugins/mail-template/assets/mail-template-plugin-logo.mjs +0 -18
  32. package/esm2022/lib/plugins/mail-template/components/generate-mail-content/generate-mail-content.component.mjs +0 -94
  33. package/esm2022/lib/plugins/mail-template/components/generate-mail-file/generate-mail-file.component.mjs +0 -94
  34. package/esm2022/lib/plugins/mail-template/components/mail-template-add-edit-modal/mail-template-add-edit-modal.component.mjs +0 -87
  35. package/esm2022/lib/plugins/mail-template/components/mail-template-configuration/mail-template-configuration.component.mjs +0 -77
  36. package/esm2022/lib/plugins/mail-template/components/mail-template-delete-modal/mail-template-delete-modal.component.mjs +0 -39
  37. package/esm2022/lib/plugins/mail-template/components/mail-template-editor/mail-template-editor.component.mjs +0 -168
  38. package/esm2022/lib/plugins/mail-template/components/mail-template-list/mail-template-list.component.mjs +0 -104
  39. package/esm2022/lib/plugins/mail-template/mail-template-management-routing.module.mjs +0 -48
  40. package/esm2022/lib/plugins/mail-template/mail-template-plugin-module.mjs +0 -158
  41. package/esm2022/lib/plugins/mail-template/mail-template-plugin.specification.mjs +0 -74
  42. package/esm2022/lib/plugins/mail-template/models/config.mjs +0 -17
  43. package/esm2022/lib/plugins/mail-template/models/index.mjs +0 -17
  44. package/esm2022/lib/services/freemarker-template-management.service.mjs +0 -68
  45. package/esm2022/lib/services/index.mjs +0 -17
  46. package/esm2022/public_api.mjs +0 -29
  47. package/esm2022/valtimo-plugins-freemarker.mjs +0 -5
@@ -1,168 +0,0 @@
1
- /*
2
- * Copyright 2015-2023 Ritense BV, the Netherlands.
3
- *
4
- * Licensed under EUPL, Version 1.2 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" basis,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- import { ChangeDetectionStrategy, Component } from '@angular/core';
17
- import { BehaviorSubject, combineLatest, filter, map, switchMap, take, tap } from 'rxjs';
18
- import { NotificationService } from 'carbon-components-angular';
19
- import * as i0 from "@angular/core";
20
- import * as i1 from "../../../../services";
21
- import * as i2 from "@angular/router";
22
- import * as i3 from "@valtimo/components";
23
- import * as i4 from "carbon-components-angular";
24
- import * as i5 from "@ngx-translate/core";
25
- import * as i6 from "@angular/common";
26
- import * as i7 from "../mail-template-delete-modal/mail-template-delete-modal.component";
27
- export class MailTemplateEditorComponent {
28
- constructor(templateService, route, pageTitleService, router, notificationService, translateService, breadcrumbService) {
29
- this.templateService = templateService;
30
- this.route = route;
31
- this.pageTitleService = pageTitleService;
32
- this.router = router;
33
- this.notificationService = notificationService;
34
- this.translateService = translateService;
35
- this.breadcrumbService = breadcrumbService;
36
- this.model$ = new BehaviorSubject(null);
37
- this.template$ = new BehaviorSubject(null);
38
- this.saveDisabled$ = new BehaviorSubject(true);
39
- this.editorDisabled$ = new BehaviorSubject(false);
40
- this.moreDisabled$ = new BehaviorSubject(true);
41
- this.showDeleteModal$ = new BehaviorSubject(false);
42
- this.updatedModelValue$ = new BehaviorSubject('');
43
- this._caseDefinitionName$ = this.route.params.pipe(map(params => params?.name), filter(caseDefinitionName => !!caseDefinitionName));
44
- this.templateKey$ = this.route.params.pipe(map(params => params?.key), filter(templateKey => !!templateKey));
45
- }
46
- ngOnInit() {
47
- this.loadTemplate();
48
- }
49
- ngAfterViewInit() {
50
- this.initBreadcrumb();
51
- }
52
- ngOnDestroy() {
53
- this.pageTitleService.enableReset();
54
- this.breadcrumbService.clearThirdBreadcrumb();
55
- }
56
- onValid(valid) {
57
- this.saveDisabled$.next(valid === false);
58
- }
59
- onValueChange(value) {
60
- this.updatedModelValue$.next(value);
61
- }
62
- updateTemplate() {
63
- this.disableEditor();
64
- this.disableSave();
65
- this.disableMore();
66
- combineLatest([this.updatedModelValue$, this._caseDefinitionName$, this.templateKey$]).pipe(switchMap(([updatedModelValue, caseDefinitionName, templateKey]) => this.templateService.updateTemplate({
67
- key: templateKey,
68
- caseDefinitionName,
69
- type: 'mail',
70
- content: updatedModelValue,
71
- })), take(1)).subscribe({
72
- next: result => {
73
- this.enableMore();
74
- this.enableSave();
75
- this.enableEditor();
76
- this.showSuccessMessage(result.key);
77
- this.setModel(result.content);
78
- this.template$.next(result);
79
- },
80
- error: () => {
81
- this.enableMore();
82
- this.enableSave();
83
- this.enableEditor();
84
- },
85
- });
86
- }
87
- onDelete(templates) {
88
- this.disableEditor();
89
- this.disableSave();
90
- this.disableMore();
91
- this._caseDefinitionName$.pipe(take(1)).subscribe(caseDefinitionName => this.templateService.deleteTemplates({ caseDefinitionName, type: 'mail', templates }).pipe(take(1)).subscribe(_ => this.router.navigate([`/dossier-management/dossier/${caseDefinitionName}`])));
92
- }
93
- showDeleteModal() {
94
- this.showDeleteModal$.next(true);
95
- }
96
- loadTemplate() {
97
- combineLatest([this._caseDefinitionName$, this.templateKey$]).pipe(tap(([_, key]) => {
98
- this.pageTitleService.setCustomPageTitle(`Mail template: ${key}`, true);
99
- }), switchMap(([caseDefinitionName, key]) => this.templateService.getMailTemplate(caseDefinitionName, key)), take(1)).subscribe(result => {
100
- this.enableMore();
101
- this.enableSave();
102
- this.enableEditor();
103
- this.setModel(result.content);
104
- this.refreshViewer(result.content);
105
- this.template$.next(result);
106
- });
107
- }
108
- setModel(content) {
109
- this.model$.next({
110
- value: content,
111
- language: 'freemarker2',
112
- });
113
- this.updatedModelValue$.next(content);
114
- }
115
- disableMore() {
116
- this.moreDisabled$.next(true);
117
- }
118
- enableMore() {
119
- this.moreDisabled$.next(false);
120
- }
121
- disableSave() {
122
- this.saveDisabled$.next(true);
123
- }
124
- enableSave() {
125
- this.saveDisabled$.next(false);
126
- }
127
- disableEditor() {
128
- this.editorDisabled$.next(true);
129
- }
130
- enableEditor() {
131
- this.editorDisabled$.next(false);
132
- }
133
- onSelectedTabViewer() {
134
- this.updatedModelValue$.pipe(take(1)).subscribe(html => this.refreshViewer(html));
135
- }
136
- refreshViewer(html) {
137
- setTimeout(() => {
138
- document.getElementById('html-viewer-iframe').srcdoc = html;
139
- });
140
- }
141
- initBreadcrumb() {
142
- this._caseDefinitionName$.subscribe(caseDefinitionName => {
143
- this.breadcrumbService.setThirdBreadcrumb({
144
- route: [`/dossier-management/dossier/${caseDefinitionName}`],
145
- content: caseDefinitionName,
146
- href: `/dossier-management/dossier/${caseDefinitionName}`,
147
- });
148
- });
149
- }
150
- showSuccessMessage(key) {
151
- this.notificationService.showToast({
152
- caption: this.translateService.instant(`${key} was saved successfully`, {
153
- key,
154
- }),
155
- type: 'success',
156
- duration: 4000,
157
- showClose: true,
158
- title: this.translateService.instant('Saved successfully'),
159
- });
160
- }
161
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MailTemplateEditorComponent, deps: [{ token: i1.FreemarkerTemplateManagementService }, { token: i2.ActivatedRoute }, { token: i3.PageTitleService }, { token: i2.Router }, { token: i4.NotificationService }, { token: i5.TranslateService }, { token: i3.BreadcrumbService }], target: i0.ɵɵFactoryTarget.Component }); }
162
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MailTemplateEditorComponent, selector: "ng-component", providers: [NotificationService], ngImport: i0, template: "<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n model: model$ | async,\n updatedModelValue: updatedModelValue$ | async,\n template: template$ | async,\n } as obs\">\n\n <div class=\"template-explanation\">\n Mail templates use <a target=\"_blank\" href=\"https://www.w3schools.com/html/html_intro.asp\">HTML</a> for the mail\n layout. <a target=\"_blank\" href=\"https://freemarker.apache.org/docs/dgui_quickstart_basics.html\">FreeMarker</a>\n can be used to create placeholders inside the HTML. The data-model for FreeMarker is based upon <a\n target=\"_blank\" href=\"https://docs.valtimo.nl/reference/modules/value-resolver\">Valtimo value-resolvers</a>\n with a slightly different notation. For example: $&#123;doc.firstName&#125;. Retrieves\n the `firstName` from the case.\n </div>\n\n <cds-tabs type=\"contained\">\n <cds-tab [active]=\"true\" [heading]=\"'Editor'\">\n <valtimo-editor\n [model]=\"obs.model\"\n [disabled]=\"(editorDisabled$ | async) || obs.template.readOnly\"\n (validEvent)=\"onValid($event)\"\n (valueChangeEvent)=\"onValueChange($event)\"\n [fitPage]=\"true\"\n [fitPageExtraSpace]=\"80\"\n ></valtimo-editor>\n </cds-tab>\n <cds-tab [heading]=\"'Viewer'\" (selected)=\"onSelectedTabViewer()\">\n <iframe title=\"HTML Viewer\" id=\"html-viewer-iframe\">\n </iframe>\n </cds-tab>\n </cds-tabs>\n</ng-container>\n\n<ng-container renderInPageHeader>\n <ng-template>\n <div *ngIf=\"{\n model: model$ | async,\n moreDisabled: moreDisabled$ | async,\n template: template$ | async,\n } as obs\"\n class=\"buttons-container\"\n >\n <cds-overflow-menu class=\"overflow-button\">\n <cds-overflow-menu-option\n [disabled]=\"obs.moreDisabled || obs.template.readOnly\"\n type=\"danger\"\n (selected)=\"showDeleteModal()\"\n >{{ 'interface.delete' | translate }}\n </cds-overflow-menu-option\n >\n </cds-overflow-menu>\n\n <button\n [disabled]=\"(saveDisabled$ | async) || obs.template.readOnly\"\n cdsButton=\"primary\"\n size=\"md\"\n (click)=\"updateTemplate()\"\n >\n {{ 'interface.save' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"save\" size=\"16\"></svg>\n </button>\n </div>\n </ng-template>\n</ng-container>\n\n<ng-container *ngIf=\"{templateKey: templateKey$ | async} as obs\">\n <valtimo-mail-template-delete-modal\n [deleteRowKeys]=\"[obs.templateKey]\"\n [showDeleteModal$]=\"showDeleteModal$\"\n (deleteEvent)=\"onDelete($event)\"\n >\n </valtimo-mail-template-delete-modal>\n</ng-container>\n", styles: ["::ng-deep .cds--tab-content{background:var(--cds-layer)!important}::ng-deep #html-viewer-iframe{width:100%;height:calc(100vh - 219px)}.loading-container{display:flex;width:100%;justify-content:center}.overflow-button{margin-right:16px}.buttons-container{display:flex;flex-direction:row}.template-explanation{margin-top:16px;margin-bottom:24px}\n/*!\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.EditorComponent, selector: "valtimo-editor", inputs: ["editorOptions", "model", "disabled", "formatOnLoad", "widthPx", "heightPx", "heightStyle", "jsonSchema", "fitPage", "fitPageExtraSpace"], outputs: ["validEvent", "valueChangeEvent"] }, { kind: "directive", type: i4.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "component", type: i4.OverflowMenu, selector: "cds-overflow-menu, ibm-overflow-menu", inputs: ["buttonLabel", "flip", "placement", "open", "customTrigger", "offset", "wrapperClass", "triggerClass"], outputs: ["openChange"] }, { kind: "component", type: i4.OverflowMenuOption, selector: "cds-overflow-menu-option, ibm-overflow-menu-option", inputs: ["divider", "type", "disabled", "href", "target", "innerClass"], outputs: ["selected"] }, { kind: "directive", type: i4.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "directive", type: i3.RenderInPageHeaderDirective, selector: "[renderInPageHeader]", inputs: ["fullWidth"] }, { kind: "component", type: i4.Tabs, selector: "cds-tabs, ibm-tabs", inputs: ["position", "cacheActive", "followFocus", "isNavigation", "ariaLabel", "ariaLabelledby", "type", "theme", "skeleton"] }, { kind: "component", type: i4.Tab, selector: "cds-tab, ibm-tab", inputs: ["heading", "title", "context", "active", "disabled", "tabIndex", "id", "cacheActive", "tabContent", "templateContext"], outputs: ["selected"] }, { kind: "component", type: i7.MailTemplateDeleteModalComponent, selector: "valtimo-mail-template-delete-modal", inputs: ["deleteRowKeys", "showDeleteModal$"], outputs: ["deleteEvent"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
163
- }
164
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MailTemplateEditorComponent, decorators: [{
165
- type: Component,
166
- args: [{ changeDetection: ChangeDetectionStrategy.OnPush, providers: [NotificationService], template: "<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n model: model$ | async,\n updatedModelValue: updatedModelValue$ | async,\n template: template$ | async,\n } as obs\">\n\n <div class=\"template-explanation\">\n Mail templates use <a target=\"_blank\" href=\"https://www.w3schools.com/html/html_intro.asp\">HTML</a> for the mail\n layout. <a target=\"_blank\" href=\"https://freemarker.apache.org/docs/dgui_quickstart_basics.html\">FreeMarker</a>\n can be used to create placeholders inside the HTML. The data-model for FreeMarker is based upon <a\n target=\"_blank\" href=\"https://docs.valtimo.nl/reference/modules/value-resolver\">Valtimo value-resolvers</a>\n with a slightly different notation. For example: $&#123;doc.firstName&#125;. Retrieves\n the `firstName` from the case.\n </div>\n\n <cds-tabs type=\"contained\">\n <cds-tab [active]=\"true\" [heading]=\"'Editor'\">\n <valtimo-editor\n [model]=\"obs.model\"\n [disabled]=\"(editorDisabled$ | async) || obs.template.readOnly\"\n (validEvent)=\"onValid($event)\"\n (valueChangeEvent)=\"onValueChange($event)\"\n [fitPage]=\"true\"\n [fitPageExtraSpace]=\"80\"\n ></valtimo-editor>\n </cds-tab>\n <cds-tab [heading]=\"'Viewer'\" (selected)=\"onSelectedTabViewer()\">\n <iframe title=\"HTML Viewer\" id=\"html-viewer-iframe\">\n </iframe>\n </cds-tab>\n </cds-tabs>\n</ng-container>\n\n<ng-container renderInPageHeader>\n <ng-template>\n <div *ngIf=\"{\n model: model$ | async,\n moreDisabled: moreDisabled$ | async,\n template: template$ | async,\n } as obs\"\n class=\"buttons-container\"\n >\n <cds-overflow-menu class=\"overflow-button\">\n <cds-overflow-menu-option\n [disabled]=\"obs.moreDisabled || obs.template.readOnly\"\n type=\"danger\"\n (selected)=\"showDeleteModal()\"\n >{{ 'interface.delete' | translate }}\n </cds-overflow-menu-option\n >\n </cds-overflow-menu>\n\n <button\n [disabled]=\"(saveDisabled$ | async) || obs.template.readOnly\"\n cdsButton=\"primary\"\n size=\"md\"\n (click)=\"updateTemplate()\"\n >\n {{ 'interface.save' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"save\" size=\"16\"></svg>\n </button>\n </div>\n </ng-template>\n</ng-container>\n\n<ng-container *ngIf=\"{templateKey: templateKey$ | async} as obs\">\n <valtimo-mail-template-delete-modal\n [deleteRowKeys]=\"[obs.templateKey]\"\n [showDeleteModal$]=\"showDeleteModal$\"\n (deleteEvent)=\"onDelete($event)\"\n >\n </valtimo-mail-template-delete-modal>\n</ng-container>\n", styles: ["::ng-deep .cds--tab-content{background:var(--cds-layer)!important}::ng-deep #html-viewer-iframe{width:100%;height:calc(100vh - 219px)}.loading-container{display:flex;width:100%;justify-content:center}.overflow-button{margin-right:16px}.buttons-container{display:flex;flex-direction:row}.template-explanation{margin-top:16px;margin-bottom:24px}\n/*!\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
167
- }], ctorParameters: () => [{ type: i1.FreemarkerTemplateManagementService }, { type: i2.ActivatedRoute }, { type: i3.PageTitleService }, { type: i2.Router }, { type: i4.NotificationService }, { type: i5.TranslateService }, { type: i3.BreadcrumbService }] });
168
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbC10ZW1wbGF0ZS1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby1wbHVnaW5zL2ZyZWVtYXJrZXIvc3JjL2xpYi9wbHVnaW5zL21haWwtdGVtcGxhdGUvY29tcG9uZW50cy9tYWlsLXRlbXBsYXRlLWVkaXRvci9tYWlsLXRlbXBsYXRlLWVkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vLXBsdWdpbnMvZnJlZW1hcmtlci9zcmMvbGliL3BsdWdpbnMvbWFpbC10ZW1wbGF0ZS9jb21wb25lbnRzL21haWwtdGVtcGxhdGUtZWRpdG9yL21haWwtdGVtcGxhdGUtZWRpdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFnQix1QkFBdUIsRUFBRSxTQUFTLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBQ25HLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQWMsU0FBUyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFHbkcsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7OztBQVc5RCxNQUFNLE9BQU8sMkJBQTJCO0lBcUJwQyxZQUNxQixlQUFvRCxFQUNwRCxLQUFxQixFQUNyQixnQkFBa0MsRUFDbEMsTUFBYyxFQUNkLG1CQUF3QyxFQUN4QyxnQkFBa0MsRUFDbEMsaUJBQW9DO1FBTnBDLG9CQUFlLEdBQWYsZUFBZSxDQUFxQztRQUNwRCxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCx3QkFB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QUFtQixDQUFDLFNBQVMsQ0FBQztZQUMvQixPQUFPLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcseUJBQXlCLEVBQUU7Z0JBQ3BFLEdBQUc7YUFDTixDQUFDO1lBQ0YsSUFBSSxFQUFFLFNBQVM7WUFDZixRQUFRLEVBQUUsSUFBSTtZQUNkLFNBQVMsRUFBRSxJQUFJO1lBQ2YsS0FBSyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUM7U0FDN0QsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzsrR0F4TFEsMkJBQTJCO21HQUEzQiwyQkFBMkIsdUNBRnpCLENBQUMsbUJBQW1CLENBQUMsMEJDN0JwQyxxckhBMkZBOzs0RkQ1RGEsMkJBQTJCO2tCQU52QyxTQUFTO3NDQUVXLHVCQUF1QixDQUFDLE1BQU0sYUFFcEMsQ0FBQyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDIzIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGZpbHRlciwgbWFwLCBPYnNlcnZhYmxlLCBzd2l0Y2hNYXAsIHRha2UsIHRhcH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlLCBSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge0JyZWFkY3J1bWJTZXJ2aWNlLCBFZGl0b3JNb2RlbCwgUGFnZVRpdGxlU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQge05vdGlmaWNhdGlvblNlcnZpY2V9IGZyb20gJ2NhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXInO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7RnJlZW1hcmtlclRlbXBsYXRlTWFuYWdlbWVudFNlcnZpY2V9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7VGVtcGxhdGVSZXNwb25zZX0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzJztcblxuQENvbXBvbmVudCh7XG4gICAgdGVtcGxhdGVVcmw6ICcuL21haWwtdGVtcGxhdGUtZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzdHlsZVVybHM6IFsnLi9tYWlsLXRlbXBsYXRlLWVkaXRvci5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW05vdGlmaWNhdGlvblNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBNYWlsVGVtcGxhdGVFZGl0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgcHVibGljIHJlYWRvbmx5IG1vZGVsJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RWRpdG9yTW9kZWwgfCBudWxsPihudWxsKTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgdGVtcGxhdGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUZW1wbGF0ZVJlc3BvbnNlIHwgbnVsbD4obnVsbCk7XG4gICAgcHVibGljIHJlYWRvbmx5IHNhdmVEaXNhYmxlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICAgIHB1YmxpYyByZWFkb25seSBlZGl0b3JEaXNhYmxlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgbW9yZURpc2FibGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gICAgcHVibGljIHJlYWRvbmx5IHNob3dEZWxldGVNb2RhbCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgdXBkYXRlZE1vZGVsVmFsdWUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2Nhc2VEZWZpbml0aW9uTmFtZSQ6IE9ic2VydmFibGU8c3RyaW5nPiA9XG4gICAgICAgIHRoaXMucm91dGUucGFyYW1zLnBpcGUoXG4gICAgICAgICAgICBtYXAocGFyYW1zID0+IHBhcmFtcz8ubmFtZSksXG4gICAgICAgICAgICBmaWx0ZXIoY2FzZURlZmluaXRpb25OYW1lID0+ICEhY2FzZURlZmluaXRpb25OYW1lKVxuICAgICAgICApO1xuXG4gICAgcHVibGljIHJlYWRvbmx5IHRlbXBsYXRlS2V5JDogT2JzZXJ2YWJsZTxzdHJpbmc+ID1cbiAgICAgICAgdGhpcy5yb3V0ZS5wYXJhbXMucGlwZShcbiAgICAgICAgICAgIG1hcChwYXJhbXMgPT4gcGFyYW1zPy5rZXkpLFxuICAgICAgICAgICAgZmlsdGVyKHRlbXBsYXRlS2V5ID0+ICEhdGVtcGxhdGVLZXkpXG4gICAgICAgICk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0ZW1wbGF0ZVNlcnZpY2U6IEZyZWVtYXJrZXJUZW1wbGF0ZU1hbmFnZW1lbnRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBwYWdlVGl0bGVTZXJ2aWNlOiBQYWdlVGl0bGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBicmVhZGNydW1iU2VydmljZTogQnJlYWRjcnVtYlNlcnZpY2UsXG4gICAgKSB7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmxvYWRUZW1wbGF0ZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5pdEJyZWFkY3J1bWIoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMucGFnZVRpdGxlU2VydmljZS5lbmFibGVSZXNldCgpO1xuICAgICAgICB0aGlzLmJyZWFkY3J1bWJTZXJ2aWNlLmNsZWFyVGhpcmRCcmVhZGNydW1iKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uVmFsaWQodmFsaWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zYXZlRGlzYWJsZWQkLm5leHQodmFsaWQgPT09IGZhbHNlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25WYWx1ZUNoYW5nZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlZE1vZGVsVmFsdWUkLm5leHQodmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyB1cGRhdGVUZW1wbGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlRWRpdG9yKCk7XG4gICAgICAgIHRoaXMuZGlzYWJsZVNhdmUoKTtcbiAgICAgICAgdGhpcy5kaXNhYmxlTW9yZSgpO1xuXG4gICAgICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMudXBkYXRlZE1vZGVsVmFsdWUkLCB0aGlzLl9jYXNlRGVmaW5pdGlvbk5hbWUkLCB0aGlzLnRlbXBsYXRlS2V5JF0pLnBpcGUoXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKFt1cGRhdGVkTW9kZWxWYWx1ZSwgY2FzZURlZmluaXRpb25OYW1lLCB0ZW1wbGF0ZUtleV0pID0+XG4gICAgICAgICAgICAgICAgdGhpcy50ZW1wbGF0ZVNlcnZpY2UudXBkYXRlVGVtcGxhdGUoXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogdGVtcGxhdGVLZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlRGVmaW5pdGlvbk5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnbWFpbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiB1cGRhdGVkTW9kZWxWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0YWtlKDEpXG4gICAgICAgICkuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIG5leHQ6IHJlc3VsdCA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbmFibGVNb3JlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5lbmFibGVTYXZlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5lbmFibGVFZGl0b3IoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dTdWNjZXNzTWVzc2FnZShyZXN1bHQua2V5KTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldE1vZGVsKHJlc3VsdC5jb250ZW50KTtcbiAgICAgICAgICAgICAgICB0aGlzLnRlbXBsYXRlJC5uZXh0KHJlc3VsdCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmVuYWJsZU1vcmUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmVuYWJsZVNhdmUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmVuYWJsZUVkaXRvcigpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uRGVsZXRlKHRlbXBsYXRlczogQXJyYXk8c3RyaW5nPik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVFZGl0b3IoKTtcbiAgICAgICAgdGhpcy5kaXNhYmxlU2F2ZSgpO1xuICAgICAgICB0aGlzLmRpc2FibGVNb3JlKCk7XG5cbiAgICAgICAgdGhpcy5fY2FzZURlZmluaXRpb25OYW1lJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZShjYXNlRGVmaW5pdGlvbk5hbWUgPT5cbiAgICAgICAgICAgIHRoaXMudGVtcGxhdGVTZXJ2aWNlLmRlbGV0ZVRlbXBsYXRlcyh7Y2FzZURlZmluaXRpb25OYW1lLCB0eXBlOiAnbWFpbCcsIHRlbXBsYXRlc30pLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKF8gPT5cbiAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYC9kb3NzaWVyLW1hbmFnZW1lbnQvZG9zc2llci8ke2Nhc2VEZWZpbml0aW9uTmFtZX1gXSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2hvd0RlbGV0ZU1vZGFsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNob3dEZWxldGVNb2RhbCQubmV4dCh0cnVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGxvYWRUZW1wbGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgY29tYmluZUxhdGVzdChbdGhpcy5fY2FzZURlZmluaXRpb25OYW1lJCwgdGhpcy50ZW1wbGF0ZUtleSRdKS5waXBlKFxuICAgICAgICAgICAgdGFwKChbXywga2V5XSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucGFnZVRpdGxlU2VydmljZS5zZXRDdXN0b21QYWdlVGl0bGUoYE1haWwgdGVtcGxhdGU6ICR7a2V5fWAsIHRydWUpO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKFtjYXNlRGVmaW5pdGlvbk5hbWUsIGtleV0pID0+IHRoaXMudGVtcGxhdGVTZXJ2aWNlLmdldE1haWxUZW1wbGF0ZShjYXNlRGVmaW5pdGlvbk5hbWUsIGtleSkpLFxuICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlTW9yZSgpO1xuICAgICAgICAgICAgdGhpcy5lbmFibGVTYXZlKCk7XG4gICAgICAgICAgICB0aGlzLmVuYWJsZUVkaXRvcigpO1xuICAgICAgICAgICAgdGhpcy5zZXRNb2RlbChyZXN1bHQuY29udGVudCk7XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hWaWV3ZXIocmVzdWx0LmNvbnRlbnQpO1xuICAgICAgICAgICAgdGhpcy50ZW1wbGF0ZSQubmV4dChyZXN1bHQpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldE1vZGVsKGNvbnRlbnQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLm1vZGVsJC5uZXh0KHtcbiAgICAgICAgICAgIHZhbHVlOiBjb250ZW50LFxuICAgICAgICAgICAgbGFuZ3VhZ2U6ICdmcmVlbWFya2VyMicsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnVwZGF0ZWRNb2RlbFZhbHVlJC5uZXh0KGNvbnRlbnQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGlzYWJsZU1vcmUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubW9yZURpc2FibGVkJC5uZXh0KHRydWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZW5hYmxlTW9yZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tb3JlRGlzYWJsZWQkLm5leHQoZmFsc2UpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGlzYWJsZVNhdmUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2F2ZURpc2FibGVkJC5uZXh0KHRydWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZW5hYmxlU2F2ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zYXZlRGlzYWJsZWQkLm5leHQoZmFsc2UpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGlzYWJsZUVkaXRvcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lZGl0b3JEaXNhYmxlZCQubmV4dCh0cnVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGVuYWJsZUVkaXRvcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lZGl0b3JEaXNhYmxlZCQubmV4dChmYWxzZSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uU2VsZWN0ZWRUYWJWaWV3ZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlZE1vZGVsVmFsdWUkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKGh0bWwgPT5cbiAgICAgICAgICAgIHRoaXMucmVmcmVzaFZpZXdlcihodG1sKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVmcmVzaFZpZXdlcihodG1sOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2h0bWwtdmlld2VyLWlmcmFtZScpIGFzIEhUTUxJRnJhbWVFbGVtZW50KS5zcmNkb2MgPSBodG1sO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRCcmVhZGNydW1iKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jYXNlRGVmaW5pdGlvbk5hbWUkLnN1YnNjcmliZShjYXNlRGVmaW5pdGlvbk5hbWUgPT4ge1xuICAgICAgICAgICAgdGhpcy5icmVhZGNydW1iU2VydmljZS5zZXRUaGlyZEJyZWFkY3J1bWIoe1xuICAgICAgICAgICAgICAgIHJvdXRlOiBbYC9kb3NzaWVyLW1hbmFnZW1lbnQvZG9zc2llci8ke2Nhc2VEZWZpbml0aW9uTmFtZX1gXSxcbiAgICAgICAgICAgICAgICBjb250ZW50OiBjYXNlRGVmaW5pdGlvbk5hbWUsXG4gICAgICAgICAgICAgICAgaHJlZjogYC9kb3NzaWVyLW1hbmFnZW1lbnQvZG9zc2llci8ke2Nhc2VEZWZpbml0aW9uTmFtZX1gLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2hvd1N1Y2Nlc3NNZXNzYWdlKGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zaG93VG9hc3Qoe1xuICAgICAgICAgICAgY2FwdGlvbjogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoYCR7a2V5fSB3YXMgc2F2ZWQgc3VjY2Vzc2Z1bGx5YCwge1xuICAgICAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnLFxuICAgICAgICAgICAgZHVyYXRpb246IDQwMDAsXG4gICAgICAgICAgICBzaG93Q2xvc2U6IHRydWUsXG4gICAgICAgICAgICB0aXRsZTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ1NhdmVkIHN1Y2Nlc3NmdWxseScpLFxuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyMyBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjxuZy1jb250YWluZXJcbiAgICAgICAgKm5nSWY9XCJ7XG4gICAgbW9kZWw6IG1vZGVsJCB8IGFzeW5jLFxuICAgIHVwZGF0ZWRNb2RlbFZhbHVlOiB1cGRhdGVkTW9kZWxWYWx1ZSQgfCBhc3luYyxcbiAgICB0ZW1wbGF0ZTogdGVtcGxhdGUkIHwgYXN5bmMsXG4gIH0gYXMgb2JzXCI+XG5cbiAgICA8ZGl2IGNsYXNzPVwidGVtcGxhdGUtZXhwbGFuYXRpb25cIj5cbiAgICAgICAgTWFpbCB0ZW1wbGF0ZXMgdXNlIDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwczovL3d3dy53M3NjaG9vbHMuY29tL2h0bWwvaHRtbF9pbnRyby5hc3BcIj5IVE1MPC9hPiBmb3IgdGhlIG1haWxcbiAgICAgICAgbGF5b3V0LiA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cHM6Ly9mcmVlbWFya2VyLmFwYWNoZS5vcmcvZG9jcy9kZ3VpX3F1aWNrc3RhcnRfYmFzaWNzLmh0bWxcIj5GcmVlTWFya2VyPC9hPlxuICAgICAgICBjYW4gYmUgdXNlZCB0byBjcmVhdGUgcGxhY2Vob2xkZXJzIGluc2lkZSB0aGUgSFRNTC4gVGhlIGRhdGEtbW9kZWwgZm9yIEZyZWVNYXJrZXIgaXMgYmFzZWQgdXBvbiA8YVxuICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHBzOi8vZG9jcy52YWx0aW1vLm5sL3JlZmVyZW5jZS9tb2R1bGVzL3ZhbHVlLXJlc29sdmVyXCI+VmFsdGltbyB2YWx1ZS1yZXNvbHZlcnM8L2E+XG4gICAgICAgIHdpdGggYSBzbGlnaHRseSBkaWZmZXJlbnQgbm90YXRpb24uIEZvciBleGFtcGxlOiAkJiMxMjM7ZG9jLmZpcnN0TmFtZSYjMTI1Oy4gUmV0cmlldmVzXG4gICAgICAgIHRoZSBgZmlyc3ROYW1lYCBmcm9tIHRoZSBjYXNlLlxuICAgIDwvZGl2PlxuXG4gICAgPGNkcy10YWJzIHR5cGU9XCJjb250YWluZWRcIj5cbiAgICAgICAgPGNkcy10YWIgW2FjdGl2ZV09XCJ0cnVlXCIgW2hlYWRpbmddPVwiJ0VkaXRvcidcIj5cbiAgICAgICAgICAgIDx2YWx0aW1vLWVkaXRvclxuICAgICAgICAgICAgICAgICAgICBbbW9kZWxdPVwib2JzLm1vZGVsXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIihlZGl0b3JEaXNhYmxlZCQgfCBhc3luYykgfHwgb2JzLnRlbXBsYXRlLnJlYWRPbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgKHZhbGlkRXZlbnQpPVwib25WYWxpZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlRXZlbnQpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW2ZpdFBhZ2VdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtmaXRQYWdlRXh0cmFTcGFjZV09XCI4MFwiXG4gICAgICAgICAgICA+PC92YWx0aW1vLWVkaXRvcj5cbiAgICAgICAgPC9jZHMtdGFiPlxuICAgICAgICA8Y2RzLXRhYiBbaGVhZGluZ109XCInVmlld2VyJ1wiIChzZWxlY3RlZCk9XCJvblNlbGVjdGVkVGFiVmlld2VyKClcIj5cbiAgICAgICAgICAgIDxpZnJhbWUgdGl0bGU9XCJIVE1MIFZpZXdlclwiIGlkPVwiaHRtbC12aWV3ZXItaWZyYW1lXCI+XG4gICAgICAgICAgICA8L2lmcmFtZT5cbiAgICAgICAgPC9jZHMtdGFiPlxuICAgIDwvY2RzLXRhYnM+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLWNvbnRhaW5lciByZW5kZXJJblBhZ2VIZWFkZXI+XG4gICAgPG5nLXRlbXBsYXRlPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwie1xuICAgICAgICAgICAgICAgIG1vZGVsOiBtb2RlbCQgfCBhc3luYyxcbiAgICAgICAgICAgICAgICBtb3JlRGlzYWJsZWQ6IG1vcmVEaXNhYmxlZCQgfCBhc3luYyxcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZTogdGVtcGxhdGUkIHwgYXN5bmMsXG4gICAgICAgICAgICAgfSBhcyBvYnNcIlxuICAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9ucy1jb250YWluZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8Y2RzLW92ZXJmbG93LW1lbnUgY2xhc3M9XCJvdmVyZmxvdy1idXR0b25cIj5cbiAgICAgICAgICAgICAgICA8Y2RzLW92ZXJmbG93LW1lbnUtb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwib2JzLm1vcmVEaXNhYmxlZCB8fCBvYnMudGVtcGxhdGUucmVhZE9ubHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImRhbmdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWQpPVwic2hvd0RlbGV0ZU1vZGFsKClcIlxuICAgICAgICAgICAgICAgID57eyAnaW50ZXJmYWNlLmRlbGV0ZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L2Nkcy1vdmVyZmxvdy1tZW51LW9wdGlvblxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvY2RzLW92ZXJmbG93LW1lbnU+XG5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIihzYXZlRGlzYWJsZWQkIHwgYXN5bmMpIHx8IG9icy50ZW1wbGF0ZS5yZWFkT25seVwiXG4gICAgICAgICAgICAgICAgICAgIGNkc0J1dHRvbj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICBzaXplPVwibWRcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidXBkYXRlVGVtcGxhdGUoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgJ2ludGVyZmFjZS5zYXZlJyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImNkcy0tYnRuX19pY29uXCIgY2RzSWNvbj1cInNhdmVcIiBzaXplPVwiMTZcIj48L3N2Zz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJ7dGVtcGxhdGVLZXk6IHRlbXBsYXRlS2V5JCB8IGFzeW5jfSBhcyBvYnNcIj5cbiAgICA8dmFsdGltby1tYWlsLXRlbXBsYXRlLWRlbGV0ZS1tb2RhbFxuICAgICAgICAgICAgW2RlbGV0ZVJvd0tleXNdPVwiW29icy50ZW1wbGF0ZUtleV1cIlxuICAgICAgICAgICAgW3Nob3dEZWxldGVNb2RhbCRdPVwic2hvd0RlbGV0ZU1vZGFsJFwiXG4gICAgICAgICAgICAoZGVsZXRlRXZlbnQpPVwib25EZWxldGUoJGV2ZW50KVwiXG4gICAgPlxuICAgIDwvdmFsdGltby1tYWlsLXRlbXBsYXRlLWRlbGV0ZS1tb2RhbD5cbjwvbmctY29udGFpbmVyPlxuIl19
@@ -1,104 +0,0 @@
1
- /*
2
- * Copyright 2015-2024 Ritense BV, the Netherlands.
3
- *
4
- * Licensed under EUPL, Version 1.2 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" basis,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- import { ChangeDetectionStrategy, Component, ViewChild, } from '@angular/core';
17
- import { BehaviorSubject, filter, map, switchMap, take } from 'rxjs';
18
- import { CarbonListComponent, ViewType } from '@valtimo/components';
19
- import * as i0 from "@angular/core";
20
- import * as i1 from "../../../../services";
21
- import * as i2 from "@angular/router";
22
- import * as i3 from "@angular/common";
23
- import * as i4 from "@valtimo/components";
24
- import * as i5 from "carbon-components-angular";
25
- import * as i6 from "../mail-template-add-edit-modal/mail-template-add-edit-modal.component";
26
- import * as i7 from "../mail-template-delete-modal/mail-template-delete-modal.component";
27
- import * as i8 from "@ngx-translate/core";
28
- export class MailTemplateListComponent {
29
- constructor(templateService, router, route) {
30
- this.templateService = templateService;
31
- this.router = router;
32
- this.route = route;
33
- this.fields = [
34
- {
35
- viewType: ViewType.TEXT,
36
- key: 'key',
37
- label: 'Key',
38
- },
39
- {
40
- viewType: ViewType.BOOLEAN,
41
- key: 'readOnly',
42
- label: 'Read only',
43
- },
44
- ];
45
- this._caseDefinitionName$ = this.route.params.pipe(map(params => params?.name), filter(caseDefinitionName => !!caseDefinitionName));
46
- this.templates$ = new BehaviorSubject(null);
47
- this.showAddModal$ = new BehaviorSubject(false);
48
- this.showDeleteModal$ = new BehaviorSubject(false);
49
- this.selectedRowKeys$ = new BehaviorSubject([]);
50
- this.loading$ = new BehaviorSubject(true);
51
- }
52
- ngOnInit() {
53
- this.reloadTemplateList();
54
- }
55
- openAddModal() {
56
- this.showAddModal$.next(true);
57
- }
58
- onAdd(data) {
59
- if (!data) {
60
- this.showAddModal$.next(false);
61
- return;
62
- }
63
- this._caseDefinitionName$.pipe(take(1), switchMap(caseDefinitionName => this.templateService.addTemplate({ caseDefinitionName, type: 'mail', ...data }))).subscribe(template => {
64
- this.showAddModal$.next(false);
65
- this.gotoMailTemplateEditor(template.caseDefinitionName, template.key);
66
- });
67
- }
68
- showDeleteModal() {
69
- this.setSelectedTemplateKeys();
70
- this.showDeleteModal$.next(true);
71
- }
72
- onDelete(templates) {
73
- this.loading$.next(true);
74
- this._caseDefinitionName$.pipe(take(1), switchMap(caseDefinitionName => this.templateService.deleteTemplates({ caseDefinitionName, type: 'mail', templates }))).subscribe(_ => {
75
- this.reloadTemplateList();
76
- });
77
- }
78
- onRowClick(template) {
79
- this._caseDefinitionName$.pipe(take(1)).subscribe(caseDefinitionName => this.gotoMailTemplateEditor(caseDefinitionName, template.key));
80
- }
81
- gotoMailTemplateEditor(caseDefinitionName, key) {
82
- this.router.navigate([`/dossier-management/dossier/${caseDefinitionName}/mail-template/${key}`]);
83
- }
84
- reloadTemplateList() {
85
- this.loading$.next(true);
86
- this._caseDefinitionName$.pipe(switchMap(caseDefinitionName => this.templateService.getAllMailTemplates(caseDefinitionName)), map(templatePage => templatePage.content), take(1)).subscribe(templateListItems => {
87
- this.templates$.next(templateListItems);
88
- this.loading$.next(false);
89
- });
90
- }
91
- setSelectedTemplateKeys() {
92
- this.selectedRowKeys$.next(this.carbonList.selectedItems.map((template) => template.key));
93
- }
94
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MailTemplateListComponent, deps: [{ token: i1.FreemarkerTemplateManagementService }, { token: i2.Router }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
95
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MailTemplateListComponent, selector: "ng-component", viewQueries: [{ propertyName: "carbonList", first: true, predicate: CarbonListComponent, descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-carbon-list\n [header]=\"false\"\n [items]=\"templates$ | async\"\n [fields]=\"fields\"\n [loading]=\"loading$ | async\"\n [showSelectionColumn]=\"true\"\n (rowClicked)=\"onRowClick($event)\"\n>\n <ng-container header> {{ 'Title' }} </ng-container>\n\n <div carbonToolbarContent>\n <ng-container [ngTemplateOutlet]=\"addTemplateButton\"></ng-container>\n </div>\n\n <ng-container carbonToolbarActions>\n <button cdsButton=\"primary\" (click)=\"showDeleteModal()\">\n {{ 'interface.delete' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </ng-container>\n\n <valtimo-no-results\n [action]=\"addTemplateButton\"\n description=\"{{ 'Come back later.' }}\"\n title=\"{{ 'No templates found' }}\"\n ></valtimo-no-results>\n</valtimo-carbon-list>\n\n<valtimo-mail-template-add-edit-modal\n [open]=\"showAddModal$ | async\"\n (closeEvent)=\"onAdd($event)\"\n></valtimo-mail-template-add-edit-modal>\n\n<ng-container *ngIf=\"{selectedRowKeys: selectedRowKeys$ | async} as obs\">\n <valtimo-mail-template-delete-modal\n [deleteRowKeys]=\"obs.selectedRowKeys\"\n [showDeleteModal$]=\"showDeleteModal$\"\n (deleteEvent)=\"onDelete($event)\"\n >\n </valtimo-mail-template-delete-modal>\n</ng-container>\n\n<ng-template #addTemplateButton>\n <button cdsButton=\"primary\" (click)=\"openAddModal()\">\n {{ 'Add' }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "actions", "actionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i4.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "directive", type: i5.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i5.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: i6.MailTemplateAddEditModalComponent, selector: "valtimo-mail-template-add-edit-modal", inputs: ["open", "type", "defaultKeyValue"], outputs: ["closeEvent"] }, { kind: "component", type: i7.MailTemplateDeleteModalComponent, selector: "valtimo-mail-template-delete-modal", inputs: ["deleteRowKeys", "showDeleteModal$"], outputs: ["deleteEvent"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
96
- }
97
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MailTemplateListComponent, decorators: [{
98
- type: Component,
99
- args: [{ changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-carbon-list\n [header]=\"false\"\n [items]=\"templates$ | async\"\n [fields]=\"fields\"\n [loading]=\"loading$ | async\"\n [showSelectionColumn]=\"true\"\n (rowClicked)=\"onRowClick($event)\"\n>\n <ng-container header> {{ 'Title' }} </ng-container>\n\n <div carbonToolbarContent>\n <ng-container [ngTemplateOutlet]=\"addTemplateButton\"></ng-container>\n </div>\n\n <ng-container carbonToolbarActions>\n <button cdsButton=\"primary\" (click)=\"showDeleteModal()\">\n {{ 'interface.delete' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </ng-container>\n\n <valtimo-no-results\n [action]=\"addTemplateButton\"\n description=\"{{ 'Come back later.' }}\"\n title=\"{{ 'No templates found' }}\"\n ></valtimo-no-results>\n</valtimo-carbon-list>\n\n<valtimo-mail-template-add-edit-modal\n [open]=\"showAddModal$ | async\"\n (closeEvent)=\"onAdd($event)\"\n></valtimo-mail-template-add-edit-modal>\n\n<ng-container *ngIf=\"{selectedRowKeys: selectedRowKeys$ | async} as obs\">\n <valtimo-mail-template-delete-modal\n [deleteRowKeys]=\"obs.selectedRowKeys\"\n [showDeleteModal$]=\"showDeleteModal$\"\n (deleteEvent)=\"onDelete($event)\"\n >\n </valtimo-mail-template-delete-modal>\n</ng-container>\n\n<ng-template #addTemplateButton>\n <button cdsButton=\"primary\" (click)=\"openAddModal()\">\n {{ 'Add' }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\n" }]
100
- }], ctorParameters: () => [{ type: i1.FreemarkerTemplateManagementService }, { type: i2.Router }, { type: i2.ActivatedRoute }], propDecorators: { carbonList: [{
101
- type: ViewChild,
102
- args: [CarbonListComponent]
103
- }] } });
104
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbC10ZW1wbGF0ZS1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8tcGx1Z2lucy9mcmVlbWFya2VyL3NyYy9saWIvcGx1Z2lucy9tYWlsLXRlbXBsYXRlL2NvbXBvbmVudHMvbWFpbC10ZW1wbGF0ZS1saXN0L21haWwtdGVtcGxhdGUtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vLXBsdWdpbnMvZnJlZW1hcmtlci9zcmMvbGliL3BsdWdpbnMvbWFpbC10ZW1wbGF0ZS9jb21wb25lbnRzL21haWwtdGVtcGxhdGUtbGlzdC9tYWlsLXRlbXBsYXRlLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFVLFNBQVMsR0FBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRixPQUFPLEVBQUMsZUFBZSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQWMsU0FBUyxFQUFFLElBQUksRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUUvRSxPQUFPLEVBQUMsbUJBQW1CLEVBQWdCLFFBQVEsRUFBQyxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7Ozs7O0FBUWhGLE1BQU0sT0FBTyx5QkFBeUI7SUEyQmxDLFlBQ3FCLGVBQW9ELEVBQ3BELE1BQWMsRUFDZCxLQUFxQjtRQUZyQixvQkFBZSxHQUFmLGVBQWUsQ0FBcUM7UUFDcEQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBM0JuQyxXQUFNLEdBQW1CO1lBQzVCO2dCQUNJLFFBQVEsRUFBRSxRQUFRLENBQUMsSUFBSTtnQkFDdkIsR0FBRyxFQUFFLEtBQUs7Z0JBQ1YsS0FBSyxFQUFFLEtBQUs7YUFDZjtZQUNEO2dCQUNJLFFBQVEsRUFBRSxRQUFRLENBQUMsT0FBTztnQkFDMUIsR0FBRyxFQUFFLFVBQVU7Z0JBQ2YsS0FBSyxFQUFFLFdBQVc7YUFDckI7U0FDSixDQUFDO1FBRWUseUJBQW9CLEdBQXVCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDOUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxFQUMzQixNQUFNLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUNyRCxDQUFDO1FBRWMsZUFBVSxHQUFHLElBQUksZUFBZSxDQUE0QixJQUFJLENBQUMsQ0FBQztRQUNsRSxrQkFBYSxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3BELHFCQUFnQixHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3ZELHFCQUFnQixHQUFHLElBQUksZUFBZSxDQUFnQixFQUFFLENBQUMsQ0FBQztRQUMxRCxhQUFRLEdBQUcsSUFBSSxlQUFlLENBQVUsSUFBSSxDQUFDLENBQUM7SUFPOUQsQ0FBQztJQUVNLFFBQVE7UUFDWCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRU0sWUFBWTtRQUNmLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFTSxLQUFLLENBQUMsSUFBVTtRQUNuQixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDUixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMvQixPQUFPO1FBQ1gsQ0FBQztRQUVELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQzFCLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxTQUFTLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLEVBQUMsa0JBQWtCLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksRUFBQyxDQUFDLENBQUMsQ0FDakgsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDbkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDL0IsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0UsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sZUFBZTtRQUNsQixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFTSxRQUFRLENBQUMsU0FBd0I7UUFDcEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FDMUIsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsRUFBQyxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBQyxDQUFDLENBQUMsQ0FDdkgsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDWixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxVQUFVLENBQUMsUUFBMEI7UUFDeEMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUNuRSxJQUFJLENBQUMsc0JBQXNCLENBQUMsa0JBQWtCLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUNoRSxDQUFDO0lBQ04sQ0FBQztJQUVPLHNCQUFzQixDQUFDLGtCQUEwQixFQUFFLEdBQVc7UUFDbEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQywrQkFBK0Isa0JBQWtCLGtCQUFrQixHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDcEcsQ0FBQztJQUVPLGtCQUFrQjtRQUN0QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUMxQixTQUFTLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsbUJBQW1CLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxFQUM3RixHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEVBQ3pDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FDVixDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO1lBQzVCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDeEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sdUJBQXVCO1FBQzNCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBMEIsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDaEgsQ0FBQzsrR0FoR1EseUJBQXlCO21HQUF6Qix5QkFBeUIsZ0dBQ3ZCLG1CQUFtQixnREM1QmxDLGl5RUFrRUE7OzRGRHZDYSx5QkFBeUI7a0JBSnJDLFNBQVM7c0NBRVcsdUJBQXVCLENBQUMsTUFBTTswSkFHZixVQUFVO3NCQUF6QyxTQUFTO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBmaWx0ZXIsIG1hcCwgT2JzZXJ2YWJsZSwgc3dpdGNoTWFwLCB0YWtlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIFJvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7Q2FyYm9uTGlzdENvbXBvbmVudCwgQ29sdW1uQ29uZmlnLCBWaWV3VHlwZX0gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQge0ZyZWVtYXJrZXJUZW1wbGF0ZU1hbmFnZW1lbnRTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQge1RlbXBsYXRlTGlzdEl0ZW19IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHRlbXBsYXRlVXJsOiAnLi9tYWlsLXRlbXBsYXRlLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBNYWlsVGVtcGxhdGVMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBAVmlld0NoaWxkKENhcmJvbkxpc3RDb21wb25lbnQpIGNhcmJvbkxpc3Q6IENhcmJvbkxpc3RDb21wb25lbnQ7XG5cbiAgICBwdWJsaWMgZmllbGRzOiBDb2x1bW5Db25maWdbXSA9IFtcbiAgICAgICAge1xuICAgICAgICAgICAgdmlld1R5cGU6IFZpZXdUeXBlLlRFWFQsXG4gICAgICAgICAgICBrZXk6ICdrZXknLFxuICAgICAgICAgICAgbGFiZWw6ICdLZXknLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICB2aWV3VHlwZTogVmlld1R5cGUuQk9PTEVBTixcbiAgICAgICAgICAgIGtleTogJ3JlYWRPbmx5JyxcbiAgICAgICAgICAgIGxhYmVsOiAnUmVhZCBvbmx5JyxcbiAgICAgICAgfSxcbiAgICBdO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBfY2FzZURlZmluaXRpb25OYW1lJDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gdGhpcy5yb3V0ZS5wYXJhbXMucGlwZShcbiAgICAgICAgbWFwKHBhcmFtcyA9PiBwYXJhbXM/Lm5hbWUpLFxuICAgICAgICBmaWx0ZXIoY2FzZURlZmluaXRpb25OYW1lID0+ICEhY2FzZURlZmluaXRpb25OYW1lKSxcbiAgICApO1xuXG4gICAgcHVibGljIHJlYWRvbmx5IHRlbXBsYXRlcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRlbXBsYXRlTGlzdEl0ZW1bXSB8IG51bGw+KG51bGwpO1xuICAgIHB1YmxpYyByZWFkb25seSBzaG93QWRkTW9kYWwkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgcHVibGljIHJlYWRvbmx5IHNob3dEZWxldGVNb2RhbCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0ZWRSb3dLZXlzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXJyYXk8c3RyaW5nPj4oW10pO1xuICAgIHB1YmxpYyByZWFkb25seSBsb2FkaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0ZW1wbGF0ZVNlcnZpY2U6IEZyZWVtYXJrZXJUZW1wbGF0ZU1hbmFnZW1lbnRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVxuICAgICkge1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZWxvYWRUZW1wbGF0ZUxpc3QoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3BlbkFkZE1vZGFsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNob3dBZGRNb2RhbCQubmV4dCh0cnVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25BZGQoZGF0YT86IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAoIWRhdGEpIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd0FkZE1vZGFsJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2Nhc2VEZWZpbml0aW9uTmFtZSQucGlwZShcbiAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICBzd2l0Y2hNYXAoY2FzZURlZmluaXRpb25OYW1lID0+IHRoaXMudGVtcGxhdGVTZXJ2aWNlLmFkZFRlbXBsYXRlKHtjYXNlRGVmaW5pdGlvbk5hbWUsIHR5cGU6ICdtYWlsJywgLi4uZGF0YX0pKVxuICAgICAgICApLnN1YnNjcmliZSh0ZW1wbGF0ZSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNob3dBZGRNb2RhbCQubmV4dChmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLmdvdG9NYWlsVGVtcGxhdGVFZGl0b3IodGVtcGxhdGUuY2FzZURlZmluaXRpb25OYW1lLCB0ZW1wbGF0ZS5rZXkpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2hvd0RlbGV0ZU1vZGFsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNldFNlbGVjdGVkVGVtcGxhdGVLZXlzKCk7XG4gICAgICAgIHRoaXMuc2hvd0RlbGV0ZU1vZGFsJC5uZXh0KHRydWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkRlbGV0ZSh0ZW1wbGF0ZXM6IEFycmF5PHN0cmluZz4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5sb2FkaW5nJC5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLl9jYXNlRGVmaW5pdGlvbk5hbWUkLnBpcGUoXG4gICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgc3dpdGNoTWFwKGNhc2VEZWZpbml0aW9uTmFtZSA9PiB0aGlzLnRlbXBsYXRlU2VydmljZS5kZWxldGVUZW1wbGF0ZXMoe2Nhc2VEZWZpbml0aW9uTmFtZSwgdHlwZTogJ21haWwnLCB0ZW1wbGF0ZXN9KSksXG4gICAgICAgICkuc3Vic2NyaWJlKF8gPT4ge1xuICAgICAgICAgICAgdGhpcy5yZWxvYWRUZW1wbGF0ZUxpc3QoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uUm93Q2xpY2sodGVtcGxhdGU6IFRlbXBsYXRlTGlzdEl0ZW0pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2FzZURlZmluaXRpb25OYW1lJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZShjYXNlRGVmaW5pdGlvbk5hbWUgPT5cbiAgICAgICAgICAgIHRoaXMuZ290b01haWxUZW1wbGF0ZUVkaXRvcihjYXNlRGVmaW5pdGlvbk5hbWUsIHRlbXBsYXRlLmtleSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdvdG9NYWlsVGVtcGxhdGVFZGl0b3IoY2FzZURlZmluaXRpb25OYW1lOiBzdHJpbmcsIGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtgL2Rvc3NpZXItbWFuYWdlbWVudC9kb3NzaWVyLyR7Y2FzZURlZmluaXRpb25OYW1lfS9tYWlsLXRlbXBsYXRlLyR7a2V5fWBdKVxuICAgIH1cblxuICAgIHByaXZhdGUgcmVsb2FkVGVtcGxhdGVMaXN0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmxvYWRpbmckLm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMuX2Nhc2VEZWZpbml0aW9uTmFtZSQucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcChjYXNlRGVmaW5pdGlvbk5hbWUgPT4gdGhpcy50ZW1wbGF0ZVNlcnZpY2UuZ2V0QWxsTWFpbFRlbXBsYXRlcyhjYXNlRGVmaW5pdGlvbk5hbWUpKSxcbiAgICAgICAgICAgIG1hcCh0ZW1wbGF0ZVBhZ2UgPT4gdGVtcGxhdGVQYWdlLmNvbnRlbnQpLFxuICAgICAgICAgICAgdGFrZSgxKVxuICAgICAgICApLnN1YnNjcmliZSh0ZW1wbGF0ZUxpc3RJdGVtcyA9PiB7XG4gICAgICAgICAgICB0aGlzLnRlbXBsYXRlcyQubmV4dCh0ZW1wbGF0ZUxpc3RJdGVtcyk7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmckLm5leHQoZmFsc2UpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFNlbGVjdGVkVGVtcGxhdGVLZXlzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdGVkUm93S2V5cyQubmV4dCh0aGlzLmNhcmJvbkxpc3Quc2VsZWN0ZWRJdGVtcy5tYXAoKHRlbXBsYXRlOiBUZW1wbGF0ZUxpc3RJdGVtKSA9PiB0ZW1wbGF0ZS5rZXkpKTtcbiAgICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyMyBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjx2YWx0aW1vLWNhcmJvbi1saXN0XG4gICAgICAgIFtoZWFkZXJdPVwiZmFsc2VcIlxuICAgICAgICBbaXRlbXNdPVwidGVtcGxhdGVzJCB8IGFzeW5jXCJcbiAgICAgICAgW2ZpZWxkc109XCJmaWVsZHNcIlxuICAgICAgICBbbG9hZGluZ109XCJsb2FkaW5nJCB8IGFzeW5jXCJcbiAgICAgICAgW3Nob3dTZWxlY3Rpb25Db2x1bW5dPVwidHJ1ZVwiXG4gICAgICAgIChyb3dDbGlja2VkKT1cIm9uUm93Q2xpY2soJGV2ZW50KVwiXG4+XG4gICAgPG5nLWNvbnRhaW5lciBoZWFkZXI+IHt7ICdUaXRsZScgfX0gPC9uZy1jb250YWluZXI+XG5cbiAgICA8ZGl2IGNhcmJvblRvb2xiYXJDb250ZW50PlxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImFkZFRlbXBsYXRlQnV0dG9uXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8bmctY29udGFpbmVyIGNhcmJvblRvb2xiYXJBY3Rpb25zPlxuICAgICAgICA8YnV0dG9uIGNkc0J1dHRvbj1cInByaW1hcnlcIiAoY2xpY2spPVwic2hvd0RlbGV0ZU1vZGFsKClcIj5cbiAgICAgICAgICAgIHt7ICdpbnRlcmZhY2UuZGVsZXRlJyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgICAgICAgICA8c3ZnIGNsYXNzPVwiY2RzLS1idG5fX2ljb25cIiBjZHNJY29uPVwidHJhc2gtY2FuXCIgc2l6ZT1cIjE2XCI+PC9zdmc+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPHZhbHRpbW8tbm8tcmVzdWx0c1xuICAgICAgICAgICAgW2FjdGlvbl09XCJhZGRUZW1wbGF0ZUJ1dHRvblwiXG4gICAgICAgICAgICBkZXNjcmlwdGlvbj1cInt7ICdDb21lIGJhY2sgbGF0ZXIuJyB9fVwiXG4gICAgICAgICAgICB0aXRsZT1cInt7ICdObyB0ZW1wbGF0ZXMgZm91bmQnIH19XCJcbiAgICA+PC92YWx0aW1vLW5vLXJlc3VsdHM+XG48L3ZhbHRpbW8tY2FyYm9uLWxpc3Q+XG5cbjx2YWx0aW1vLW1haWwtdGVtcGxhdGUtYWRkLWVkaXQtbW9kYWxcbiAgICAgICAgW29wZW5dPVwic2hvd0FkZE1vZGFsJCB8IGFzeW5jXCJcbiAgICAgICAgKGNsb3NlRXZlbnQpPVwib25BZGQoJGV2ZW50KVwiXG4+PC92YWx0aW1vLW1haWwtdGVtcGxhdGUtYWRkLWVkaXQtbW9kYWw+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJ7c2VsZWN0ZWRSb3dLZXlzOiBzZWxlY3RlZFJvd0tleXMkIHwgYXN5bmN9IGFzIG9ic1wiPlxuICAgIDx2YWx0aW1vLW1haWwtdGVtcGxhdGUtZGVsZXRlLW1vZGFsXG4gICAgICAgICAgICBbZGVsZXRlUm93S2V5c109XCJvYnMuc2VsZWN0ZWRSb3dLZXlzXCJcbiAgICAgICAgICAgIFtzaG93RGVsZXRlTW9kYWwkXT1cInNob3dEZWxldGVNb2RhbCRcIlxuICAgICAgICAgICAgKGRlbGV0ZUV2ZW50KT1cIm9uRGVsZXRlKCRldmVudClcIlxuICAgID5cbiAgICA8L3ZhbHRpbW8tbWFpbC10ZW1wbGF0ZS1kZWxldGUtbW9kYWw+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNhZGRUZW1wbGF0ZUJ1dHRvbj5cbiAgICA8YnV0dG9uIGNkc0J1dHRvbj1cInByaW1hcnlcIiAoY2xpY2spPVwib3BlbkFkZE1vZGFsKClcIj5cbiAgICAgICAge3sgJ0FkZCcgfX1cblxuICAgICAgICA8c3ZnIGNsYXNzPVwiY2RzLS1idG5fX2ljb25cIiBjZHNJY29uPVwiYWRkXCIgc2l6ZT1cIjE2XCI+PC9zdmc+XG4gICAgPC9idXR0b24+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -1,48 +0,0 @@
1
- /*
2
- * Copyright 2015-2023 Ritense BV, the Netherlands.
3
- *
4
- * Licensed under EUPL, Version 1.2 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" basis,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- import { CommonModule } from '@angular/common';
17
- import { NgModule } from '@angular/core';
18
- import { RouterModule } from '@angular/router';
19
- import { ROLE_ADMIN } from '@valtimo/config';
20
- import { AuthGuardService } from '@valtimo/security';
21
- import { MailTemplateEditorComponent } from './components/mail-template-editor/mail-template-editor.component';
22
- import * as i0 from "@angular/core";
23
- import * as i1 from "@angular/router";
24
- const routes = [
25
- {
26
- path: 'dossier-management/dossier/:name/mail-template/:key',
27
- component: MailTemplateEditorComponent,
28
- canActivate: [AuthGuardService],
29
- data: {
30
- title: 'Mail Template Editor',
31
- templates: [ROLE_ADMIN],
32
- customPageTitle: true,
33
- },
34
- },
35
- ];
36
- export class TemplateManagementRoutingModule {
37
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TemplateManagementRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
38
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: TemplateManagementRoutingModule, imports: [CommonModule, i1.RouterModule], exports: [RouterModule] }); }
39
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TemplateManagementRoutingModule, imports: [CommonModule, RouterModule.forChild(routes), RouterModule] }); }
40
- }
41
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TemplateManagementRoutingModule, decorators: [{
42
- type: NgModule,
43
- args: [{
44
- imports: [CommonModule, RouterModule.forChild(routes)],
45
- exports: [RouterModule],
46
- }]
47
- }] });
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbC10ZW1wbGF0ZS1tYW5hZ2VtZW50LXJvdXRpbmcubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby1wbHVnaW5zL2ZyZWVtYXJrZXIvc3JjL2xpYi9wbHVnaW5zL21haWwtdGVtcGxhdGUvbWFpbC10ZW1wbGF0ZS1tYW5hZ2VtZW50LXJvdXRpbmcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLFlBQVksRUFBUyxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSxrRUFBa0UsQ0FBQzs7O0FBRTdHLE1BQU0sTUFBTSxHQUFXO0lBQ3JCO1FBQ0UsSUFBSSxFQUFFLHFEQUFxRDtRQUMzRCxTQUFTLEVBQUUsMkJBQTJCO1FBQ3RDLFdBQVcsRUFBRSxDQUFDLGdCQUFnQixDQUFDO1FBQy9CLElBQUksRUFBRTtZQUNKLEtBQUssRUFBRSxzQkFBc0I7WUFDN0IsU0FBUyxFQUFFLENBQUMsVUFBVSxDQUFDO1lBQ3ZCLGVBQWUsRUFBRSxJQUFJO1NBQ3RCO0tBQ0Y7Q0FDRixDQUFDO0FBTUYsTUFBTSxPQUFPLCtCQUErQjsrR0FBL0IsK0JBQStCO2dIQUEvQiwrQkFBK0IsWUFIaEMsWUFBWSw4QkFDWixZQUFZO2dIQUVYLCtCQUErQixZQUhoQyxZQUFZLEVBQUUsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFDM0MsWUFBWTs7NEZBRVgsK0JBQStCO2tCQUozQyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUN0RCxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7aUJBQ3hCIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjMgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1JvdXRlck1vZHVsZSwgUm91dGVzfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtST0xFX0FETUlOfSBmcm9tICdAdmFsdGltby9jb25maWcnO1xuaW1wb3J0IHtBdXRoR3VhcmRTZXJ2aWNlfSBmcm9tICdAdmFsdGltby9zZWN1cml0eSc7XG5pbXBvcnQge01haWxUZW1wbGF0ZUVkaXRvckNvbXBvbmVudH0gZnJvbSAnLi9jb21wb25lbnRzL21haWwtdGVtcGxhdGUtZWRpdG9yL21haWwtdGVtcGxhdGUtZWRpdG9yLmNvbXBvbmVudCc7XG5cbmNvbnN0IHJvdXRlczogUm91dGVzID0gW1xuICB7XG4gICAgcGF0aDogJ2Rvc3NpZXItbWFuYWdlbWVudC9kb3NzaWVyLzpuYW1lL21haWwtdGVtcGxhdGUvOmtleScsXG4gICAgY29tcG9uZW50OiBNYWlsVGVtcGxhdGVFZGl0b3JDb21wb25lbnQsXG4gICAgY2FuQWN0aXZhdGU6IFtBdXRoR3VhcmRTZXJ2aWNlXSxcbiAgICBkYXRhOiB7XG4gICAgICB0aXRsZTogJ01haWwgVGVtcGxhdGUgRWRpdG9yJyxcbiAgICAgIHRlbXBsYXRlczogW1JPTEVfQURNSU5dLFxuICAgICAgY3VzdG9tUGFnZVRpdGxlOiB0cnVlLFxuICAgIH0sXG4gIH0sXG5dO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSb3V0ZXJNb2R1bGUuZm9yQ2hpbGQocm91dGVzKV0sXG4gIGV4cG9ydHM6IFtSb3V0ZXJNb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZU1hbmFnZW1lbnRSb3V0aW5nTW9kdWxlIHt9XG4iXX0=
@@ -1,158 +0,0 @@
1
- /*
2
- * Copyright 2015-2022 Ritense BV, the Netherlands.
3
- *
4
- * Licensed under EUPL, Version 1.2 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" basis,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- import { NgModule } from '@angular/core';
17
- import { MailTemplateConfigurationComponent } from './components/mail-template-configuration/mail-template-configuration.component';
18
- import { CommonModule } from '@angular/common';
19
- import { PluginTranslatePipeModule } from '@valtimo/plugin';
20
- import { CarbonListModule, ConfirmationModalModule, EditorModule, FormModule, InputModule as ValtimoInputModule, ParagraphModule, RenderInPageHeaderDirectiveModule, SelectModule, } from '@valtimo/components';
21
- import { GenerateMailContentComponent } from './components/generate-mail-content/generate-mail-content.component';
22
- import { GenerateMailFileComponent } from './components/generate-mail-file/generate-mail-file.component';
23
- import { ButtonModule, DialogModule, DropdownModule, IconModule, InputModule, LoadingModule, ModalModule, NotificationModule, TabsModule, } from 'carbon-components-angular';
24
- import { CASE_MANAGEMENT_TAB_TOKEN } from '@valtimo/config';
25
- import { MailTemplateListComponent } from './components/mail-template-list/mail-template-list.component';
26
- import { MailTemplateAddEditModalComponent } from './components/mail-template-add-edit-modal/mail-template-add-edit-modal.component';
27
- import { MailTemplateEditorComponent } from './components/mail-template-editor/mail-template-editor.component';
28
- import { MailTemplateDeleteModalComponent } from './components/mail-template-delete-modal/mail-template-delete-modal.component';
29
- import { TranslateModule } from '@ngx-translate/core';
30
- import { ReactiveFormsModule } from '@angular/forms';
31
- import { TemplateManagementRoutingModule } from './mail-template-management-routing.module';
32
- import * as i0 from "@angular/core";
33
- export class MailTemplatePluginModule {
34
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MailTemplatePluginModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
35
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: MailTemplatePluginModule, declarations: [MailTemplateConfigurationComponent,
36
- GenerateMailFileComponent,
37
- GenerateMailContentComponent,
38
- MailTemplateAddEditModalComponent,
39
- MailTemplateEditorComponent,
40
- MailTemplateDeleteModalComponent,
41
- MailTemplateListComponent], imports: [CommonModule,
42
- PluginTranslatePipeModule,
43
- TemplateManagementRoutingModule,
44
- FormModule,
45
- ParagraphModule,
46
- SelectModule,
47
- ConfirmationModalModule,
48
- TranslateModule,
49
- ReactiveFormsModule,
50
- CarbonListModule,
51
- EditorModule,
52
- ValtimoInputModule,
53
- ButtonModule,
54
- DialogModule,
55
- DropdownModule,
56
- IconModule,
57
- InputModule,
58
- LoadingModule,
59
- ModalModule,
60
- NotificationModule,
61
- RenderInPageHeaderDirectiveModule,
62
- TabsModule], exports: [MailTemplateConfigurationComponent,
63
- GenerateMailFileComponent,
64
- GenerateMailContentComponent,
65
- MailTemplateAddEditModalComponent,
66
- MailTemplateEditorComponent,
67
- MailTemplateDeleteModalComponent,
68
- MailTemplateListComponent] }); }
69
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MailTemplatePluginModule, providers: [
70
- {
71
- provide: CASE_MANAGEMENT_TAB_TOKEN,
72
- useValue: {
73
- translationKey: 'Mail templates',
74
- component: MailTemplateListComponent,
75
- },
76
- multi: true,
77
- }
78
- ], imports: [CommonModule,
79
- PluginTranslatePipeModule,
80
- TemplateManagementRoutingModule,
81
- FormModule,
82
- ParagraphModule,
83
- SelectModule,
84
- ConfirmationModalModule,
85
- TranslateModule,
86
- ReactiveFormsModule,
87
- CarbonListModule,
88
- EditorModule,
89
- ValtimoInputModule,
90
- ButtonModule,
91
- DialogModule,
92
- DropdownModule,
93
- IconModule,
94
- InputModule,
95
- LoadingModule,
96
- ModalModule,
97
- NotificationModule,
98
- RenderInPageHeaderDirectiveModule,
99
- TabsModule] }); }
100
- }
101
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MailTemplatePluginModule, decorators: [{
102
- type: NgModule,
103
- args: [{
104
- declarations: [
105
- MailTemplateConfigurationComponent,
106
- GenerateMailFileComponent,
107
- GenerateMailContentComponent,
108
- MailTemplateAddEditModalComponent,
109
- MailTemplateEditorComponent,
110
- MailTemplateDeleteModalComponent,
111
- MailTemplateListComponent,
112
- ],
113
- imports: [
114
- CommonModule,
115
- PluginTranslatePipeModule,
116
- TemplateManagementRoutingModule,
117
- FormModule,
118
- ParagraphModule,
119
- SelectModule,
120
- ConfirmationModalModule,
121
- TranslateModule,
122
- ReactiveFormsModule,
123
- CarbonListModule,
124
- EditorModule,
125
- ValtimoInputModule,
126
- ButtonModule,
127
- DialogModule,
128
- DropdownModule,
129
- IconModule,
130
- InputModule,
131
- LoadingModule,
132
- ModalModule,
133
- NotificationModule,
134
- RenderInPageHeaderDirectiveModule,
135
- TabsModule,
136
- ],
137
- exports: [
138
- MailTemplateConfigurationComponent,
139
- GenerateMailFileComponent,
140
- GenerateMailContentComponent,
141
- MailTemplateAddEditModalComponent,
142
- MailTemplateEditorComponent,
143
- MailTemplateDeleteModalComponent,
144
- MailTemplateListComponent,
145
- ],
146
- providers: [
147
- {
148
- provide: CASE_MANAGEMENT_TAB_TOKEN,
149
- useValue: {
150
- translationKey: 'Mail templates',
151
- component: MailTemplateListComponent,
152
- },
153
- multi: true,
154
- }
155
- ]
156
- }]
157
- }] });
158
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbC10ZW1wbGF0ZS1wbHVnaW4tbW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby1wbHVnaW5zL2ZyZWVtYXJrZXIvc3JjL2xpYi9wbHVnaW5zL21haWwtdGVtcGxhdGUvbWFpbC10ZW1wbGF0ZS1wbHVnaW4tbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsa0NBQWtDLEVBQUMsTUFBTSxnRkFBZ0YsQ0FBQztBQUNsSSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDMUQsT0FBTyxFQUNILGdCQUFnQixFQUNoQix1QkFBdUIsRUFDdkIsWUFBWSxFQUNaLFVBQVUsRUFDVixXQUFXLElBQUksa0JBQWtCLEVBQ2pDLGVBQWUsRUFBRSxpQ0FBaUMsRUFDbEQsWUFBWSxHQUNmLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFDLDRCQUE0QixFQUFDLE1BQU0sb0VBQW9FLENBQUM7QUFDaEgsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sOERBQThELENBQUM7QUFDdkcsT0FBTyxFQUNILFlBQVksRUFDWixZQUFZLEVBQ1osY0FBYyxFQUNkLFVBQVUsRUFDVixXQUFXLEVBQ1gsYUFBYSxFQUNiLFdBQVcsRUFDWCxrQkFBa0IsRUFBRSxVQUFVLEdBQ2pDLE1BQU0sMkJBQTJCLENBQUM7QUFBQSxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RixPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSw4REFBOEQsQ0FBQztBQUN2RyxPQUFPLEVBQUMsaUNBQWlDLEVBQUMsTUFBTSxrRkFBa0Ys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QUk7eUJBQ2Q7cUJBQ0o7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMiBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge05nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TWFpbFRlbXBsYXRlQ29uZmlndXJhdGlvbkNvbXBvbmVudH0gZnJvbSAnLi9jb21wb25lbnRzL21haWwtdGVtcGxhdGUtY29uZmlndXJhdGlvbi9tYWlsLXRlbXBsYXRlLWNvbmZpZ3VyYXRpb24uY29tcG9uZW50JztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtQbHVnaW5UcmFuc2xhdGVQaXBlTW9kdWxlfSBmcm9tICdAdmFsdGltby9wbHVnaW4nO1xuaW1wb3J0IHtcbiAgICBDYXJib25MaXN0TW9kdWxlLFxuICAgIENvbmZpcm1hdGlvbk1vZGFsTW9kdWxlLFxuICAgIEVkaXRvck1vZHVsZSxcbiAgICBGb3JtTW9kdWxlLFxuICAgIElucHV0TW9kdWxlIGFzIFZhbHRpbW9JbnB1dE1vZHVsZSxcbiAgICBQYXJhZ3JhcGhNb2R1bGUsIFJlbmRlckluUGFnZUhlYWRlckRpcmVjdGl2ZU1vZHVsZSxcbiAgICBTZWxlY3RNb2R1bGUsXG59IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtHZW5lcmF0ZU1haWxDb250ZW50Q29tcG9uZW50fSBmcm9tICcuL2NvbXBvbmVudHMvZ2VuZXJhdGUtbWFpbC1jb250ZW50L2dlbmVyYXRlLW1haWwtY29udGVudC5jb21wb25lbnQnO1xuaW1wb3J0IHtHZW5lcmF0ZU1haWxGaWxlQ29tcG9uZW50fSBmcm9tICcuL2NvbXBvbmVudHMvZ2VuZXJhdGUtbWFpbC1maWxlL2dlbmVyYXRlLW1haWwtZmlsZS5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgICBCdXR0b25Nb2R1bGUsXG4gICAgRGlhbG9nTW9kdWxlLFxuICAgIERyb3Bkb3duTW9kdWxlLFxuICAgIEljb25Nb2R1bGUsXG4gICAgSW5wdXRNb2R1bGUsXG4gICAgTG9hZGluZ01vZHVsZSxcbiAgICBNb2RhbE1vZHVsZSxcbiAgICBOb3RpZmljYXRpb25Nb2R1bGUsIFRhYnNNb2R1bGUsXG59IGZyb20gJ2NhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXInO2ltcG9ydCB7Q0FTRV9NQU5BR0VNRU5UX1RBQl9UT0tFTn0gZnJvbSAnQHZhbHRpbW8vY29uZmlnJztcbmltcG9ydCB7TWFpbFRlbXBsYXRlTGlzdENvbXBvbmVudH0gZnJvbSAnLi9jb21wb25lbnRzL21haWwtdGVtcGxhdGUtbGlzdC9tYWlsLXRlbXBsYXRlLWxpc3QuY29tcG9uZW50JztcbmltcG9ydCB7TWFpbFRlbXBsYXRlQWRkRWRpdE1vZGFsQ29tcG9uZW50fSBmcm9tICcuL2NvbXBvbmVudHMvbWFpbC10ZW1wbGF0ZS1hZGQtZWRpdC1tb2RhbC9tYWlsLXRlbXBsYXRlLWFkZC1lZGl0LW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQge01haWxUZW1wbGF0ZUVkaXRvckNvbXBvbmVudH0gZnJvbSAnLi9jb21wb25lbnRzL21haWwtdGVtcGxhdGUtZWRpdG9yL21haWwtdGVtcGxhdGUtZWRpdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQge01haWxUZW1wbGF0ZURlbGV0ZU1vZGFsQ29tcG9uZW50fSBmcm9tICcuL2NvbXBvbmVudHMvbWFpbC10ZW1wbGF0ZS1kZWxldGUtbW9kYWwvbWFpbC10ZW1wbGF0ZS1kZWxldGUtbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7UmVhY3RpdmVGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtUZW1wbGF0ZU1hbmFnZW1lbnRSb3V0aW5nTW9kdWxlfSBmcm9tICcuL21haWwtdGVtcGxhdGUtbWFuYWdlbWVudC1yb3V0aW5nLm1vZHVsZSc7XG5cbkBOZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbXG4gICAgICAgIE1haWxUZW1wbGF0ZUNvbmZpZ3VyYXRpb25Db21wb25lbnQsXG4gICAgICAgIEdlbmVyYXRlTWFpbEZpbGVDb21wb25lbnQsXG4gICAgICAgIEdlbmVyYXRlTWFpbENvbnRlbnRDb21wb25lbnQsXG4gICAgICAgIE1haWxUZW1wbGF0ZUFkZEVkaXRNb2RhbENvbXBvbmVudCxcbiAgICAgICAgTWFpbFRlbXBsYXRlRWRpdG9yQ29tcG9uZW50LFxuICAgICAgICBNYWlsVGVtcGxhdGVEZWxldGVNb2RhbENvbXBvbmVudCxcbiAgICAgICAgTWFpbFRlbXBsYXRlTGlzdENvbXBvbmVudCxcbiAgICBdLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBQbHVnaW5UcmFuc2xhdGVQaXBlTW9kdWxlLFxuICAgICAgICBUZW1wbGF0ZU1hbmFnZW1lbnRSb3V0aW5nTW9kdWxlLFxuICAgICAgICBGb3JtTW9kdWxlLFxuICAgICAgICBQYXJhZ3JhcGhNb2R1bGUsXG4gICAgICAgIFNlbGVjdE1vZHVsZSxcbiAgICAgICAgQ29uZmlybWF0aW9uTW9kYWxNb2R1bGUsXG4gICAgICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgQ2FyYm9uTGlzdE1vZHVsZSxcbiAgICAgICAgRWRpdG9yTW9kdWxlLFxuICAgICAgICBWYWx0aW1vSW5wdXRNb2R1bGUsXG4gICAgICAgIEJ1dHRvbk1vZHVsZSxcbiAgICAgICAgRGlhbG9nTW9kdWxlLFxuICAgICAgICBEcm9wZG93bk1vZHVsZSxcbiAgICAgICAgSWNvbk1vZHVsZSxcbiAgICAgICAgSW5wdXRNb2R1bGUsXG4gICAgICAgIExvYWRpbmdNb2R1bGUsXG4gICAgICAgIE1vZGFsTW9kdWxlLFxuICAgICAgICBOb3RpZmljYXRpb25Nb2R1bGUsXG4gICAgICAgIFJlbmRlckluUGFnZUhlYWRlckRpcmVjdGl2ZU1vZHVsZSxcbiAgICAgICAgVGFic01vZHVsZSxcbiAgICBdLFxuICAgIGV4cG9ydHM6IFtcbiAgICAgICAgTWFpbFRlbXBsYXRlQ29uZmlndXJhdGlvbkNvbXBvbmVudCxcbiAgICAgICAgR2VuZXJhdGVNYWlsRmlsZUNvbXBvbmVudCxcbiAgICAgICAgR2VuZXJhdGVNYWlsQ29udGVudENvbXBvbmVudCxcbiAgICAgICAgTWFpbFRlbXBsYXRlQWRkRWRpdE1vZGFsQ29tcG9uZW50LFxuICAgICAgICBNYWlsVGVtcGxhdGVFZGl0b3JDb21wb25lbnQsXG4gICAgICAgIE1haWxUZW1wbGF0ZURlbGV0ZU1vZGFsQ29tcG9uZW50LFxuICAgICAgICBNYWlsVGVtcGxhdGVMaXN0Q29tcG9uZW50LFxuICAgIF0sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IENBU0VfTUFOQUdFTUVOVF9UQUJfVE9LRU4sXG4gICAgICAgICAgICB1c2VWYWx1ZToge1xuICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uS2V5OiAnTWFpbCB0ZW1wbGF0ZXMnLFxuICAgICAgICAgICAgICAgIGNvbXBvbmVudDogTWFpbFRlbXBsYXRlTGlzdENvbXBvbmVudCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgTWFpbFRlbXBsYXRlUGx1Z2luTW9kdWxlIHtcbn1cbiJdfQ==