@valtimo-plugins/freemarker 8.1.0 → 8.1.1-V12

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 (70) hide show
  1. package/README.md +0 -1
  2. package/esm2022/lib/models/freemarker-template.mjs +17 -0
  3. package/esm2022/lib/models/index.mjs +17 -0
  4. package/esm2022/lib/plugins/document-generator/assets/document-generator-plugin-logo.mjs +18 -0
  5. package/esm2022/lib/plugins/document-generator/assets/index.mjs +17 -0
  6. package/esm2022/lib/plugins/document-generator/components/document-generator-configuration/document-generator-configuration.component.mjs +77 -0
  7. package/esm2022/lib/plugins/document-generator/components/document-template-add-edit-modal/document-template-add-edit-modal.component.mjs +117 -0
  8. package/esm2022/lib/plugins/document-generator/components/document-template-delete-modal/document-template-delete-modal.component.mjs +42 -0
  9. package/esm2022/lib/plugins/document-generator/components/document-template-editor/document-template-editor.component.mjs +211 -0
  10. package/esm2022/lib/plugins/document-generator/components/document-template-list/document-template-list.component.mjs +126 -0
  11. package/esm2022/lib/plugins/document-generator/components/generate-csv/generate-csv.component.mjs +94 -0
  12. package/esm2022/lib/plugins/document-generator/components/generate-pdf/generate-pdf.component.mjs +94 -0
  13. package/esm2022/lib/plugins/document-generator/document-generator-management-routing.module.mjs +48 -0
  14. package/esm2022/lib/plugins/document-generator/document-generator-plugin-module.mjs +137 -0
  15. package/esm2022/lib/plugins/document-generator/document-generator-plugin.specification.mjs +74 -0
  16. package/esm2022/lib/plugins/document-generator/models/config.mjs +18 -0
  17. package/esm2022/lib/plugins/document-generator/models/index.mjs +17 -0
  18. package/esm2022/lib/plugins/mail-template/assets/index.mjs +17 -0
  19. package/esm2022/lib/plugins/mail-template/assets/mail-template-plugin-logo.mjs +18 -0
  20. package/esm2022/lib/plugins/mail-template/components/generate-mail-content/generate-mail-content.component.mjs +94 -0
  21. package/esm2022/lib/plugins/mail-template/components/generate-mail-file/generate-mail-file.component.mjs +94 -0
  22. package/esm2022/lib/plugins/mail-template/components/mail-template-add-edit-modal/mail-template-add-edit-modal.component.mjs +92 -0
  23. package/esm2022/lib/plugins/mail-template/components/mail-template-configuration/mail-template-configuration.component.mjs +77 -0
  24. package/esm2022/lib/plugins/mail-template/components/mail-template-delete-modal/mail-template-delete-modal.component.mjs +40 -0
  25. package/esm2022/lib/plugins/mail-template/components/mail-template-editor/mail-template-editor.component.mjs +201 -0
  26. package/esm2022/lib/plugins/mail-template/components/mail-template-list/mail-template-list.component.mjs +124 -0
  27. package/esm2022/lib/plugins/mail-template/mail-template-management-routing.module.mjs +48 -0
  28. package/esm2022/lib/plugins/mail-template/mail-template-plugin-module.mjs +154 -0
  29. package/esm2022/lib/plugins/mail-template/mail-template-plugin.specification.mjs +74 -0
  30. package/esm2022/lib/plugins/mail-template/models/config.mjs +17 -0
  31. package/esm2022/lib/plugins/mail-template/models/index.mjs +17 -0
  32. package/esm2022/lib/plugins/text-template/assets/index.mjs +17 -0
  33. package/esm2022/lib/plugins/text-template/assets/text-template-plugin-logo.mjs +18 -0
  34. package/esm2022/lib/plugins/text-template/components/generate-text-file/generate-text-file.component.mjs +94 -0
  35. package/esm2022/lib/plugins/text-template/components/text-template-add-edit-modal/text-template-add-edit-modal.component.mjs +92 -0
  36. package/esm2022/lib/plugins/text-template/components/text-template-configuration/text-template-configuration.component.mjs +77 -0
  37. package/esm2022/lib/plugins/text-template/components/text-template-delete-modal/text-template-delete-modal.component.mjs +42 -0
  38. package/esm2022/lib/plugins/text-template/components/text-template-editor/text-template-editor.component.mjs +189 -0
  39. package/esm2022/lib/plugins/text-template/components/text-template-list/text-template-list.component.mjs +124 -0
  40. package/esm2022/lib/plugins/text-template/models/config.mjs +17 -0
  41. package/esm2022/lib/plugins/text-template/models/index.mjs +17 -0
  42. package/esm2022/lib/plugins/text-template/text-template-management-routing.module.mjs +48 -0
  43. package/esm2022/lib/plugins/text-template/text-template-plugin-module.mjs +149 -0
  44. package/esm2022/lib/plugins/text-template/text-template-plugin.specification.mjs +66 -0
  45. package/esm2022/lib/services/freemarker-template-management.service.mjs +84 -0
  46. package/esm2022/lib/services/index.mjs +17 -0
  47. package/esm2022/public_api.mjs +54 -0
  48. package/esm2022/valtimo-plugins-freemarker.mjs +5 -0
  49. package/fesm2022/valtimo-plugins-freemarker.mjs +448 -468
  50. package/fesm2022/valtimo-plugins-freemarker.mjs.map +1 -1
  51. package/lib/models/freemarker-template.d.ts +11 -11
  52. package/lib/plugins/document-generator/components/document-template-add-edit-modal/document-template-add-edit-modal.component.d.ts +4 -4
  53. package/lib/plugins/document-generator/components/document-template-editor/document-template-editor.component.d.ts +7 -7
  54. package/lib/plugins/document-generator/components/document-template-list/document-template-list.component.d.ts +4 -7
  55. package/lib/plugins/document-generator/components/generate-csv/generate-csv.component.d.ts +7 -7
  56. package/lib/plugins/document-generator/components/generate-pdf/generate-pdf.component.d.ts +7 -7
  57. package/lib/plugins/document-generator/document-generator-plugin-module.d.ts +1 -1
  58. package/lib/plugins/mail-template/components/generate-mail-content/generate-mail-content.component.d.ts +10 -9
  59. package/lib/plugins/mail-template/components/generate-mail-file/generate-mail-file.component.d.ts +10 -9
  60. package/lib/plugins/mail-template/components/mail-template-add-edit-modal/mail-template-add-edit-modal.component.d.ts +2 -2
  61. package/lib/plugins/mail-template/components/mail-template-editor/mail-template-editor.component.d.ts +6 -6
  62. package/lib/plugins/mail-template/components/mail-template-list/mail-template-list.component.d.ts +3 -6
  63. package/lib/plugins/mail-template/mail-template-plugin-module.d.ts +5 -2
  64. package/lib/plugins/text-template/components/generate-text-file/generate-text-file.component.d.ts +10 -9
  65. package/lib/plugins/text-template/components/text-template-add-edit-modal/text-template-add-edit-modal.component.d.ts +2 -2
  66. package/lib/plugins/text-template/components/text-template-editor/text-template-editor.component.d.ts +6 -6
  67. package/lib/plugins/text-template/components/text-template-list/text-template-list.component.d.ts +3 -6
  68. package/lib/plugins/text-template/text-template-plugin-module.d.ts +5 -1
  69. package/lib/services/freemarker-template-management.service.d.ts +9 -10
  70. package/package.json +3 -1
@@ -0,0 +1,92 @@
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, EventEmitter, Input, Output, } from '@angular/core';
17
+ import { ReactiveFormsModule, Validators } from '@angular/forms';
18
+ import { CARBON_CONSTANTS } from '@valtimo/components';
19
+ import { CommonModule } from '@angular/common';
20
+ import { ButtonModule, InputModule, ModalModule } from 'carbon-components-angular';
21
+ import { TranslateModule } from '@ngx-translate/core';
22
+ import * as i0 from "@angular/core";
23
+ import * as i1 from "@angular/forms";
24
+ import * as i2 from "@valtimo/components";
25
+ import * as i3 from "@angular/common";
26
+ import * as i4 from "carbon-components-angular";
27
+ import * as i5 from "@ngx-translate/core";
28
+ export class TextTemplateAddEditModalComponent {
29
+ set defaultKeyValue(value) {
30
+ this._defaultKeyValue = value;
31
+ this.setDefaultKeyValue(value);
32
+ }
33
+ get key() {
34
+ return this.form?.get('key');
35
+ }
36
+ constructor(fb, keyGeneratorService) {
37
+ this.fb = fb;
38
+ this.keyGeneratorService = keyGeneratorService;
39
+ this.open = false;
40
+ this.type = 'add';
41
+ this.closeEvent = new EventEmitter();
42
+ this.form = this.fb.group({
43
+ key: this.fb.control('', Validators.required),
44
+ });
45
+ }
46
+ ngOnInit() {
47
+ }
48
+ onCancel() {
49
+ this.closeEvent.emit(null);
50
+ this.resetForm();
51
+ }
52
+ onConfirm() {
53
+ if (!this.key) {
54
+ return;
55
+ }
56
+ this.closeEvent.emit({ key: this.keyGeneratorService.getUniqueKey(this.key.value, []) });
57
+ this.resetForm();
58
+ }
59
+ setDefaultKeyValue(value) {
60
+ this.key.setValue(value);
61
+ }
62
+ resetForm() {
63
+ setTimeout(() => {
64
+ this.form.reset();
65
+ if (this.type === 'edit') {
66
+ this.setDefaultKeyValue(this._defaultKeyValue);
67
+ }
68
+ }, CARBON_CONSTANTS.modalAnimationMs);
69
+ }
70
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TextTemplateAddEditModalComponent, deps: [{ token: i1.FormBuilder }, { token: i2.KeyGeneratorService }], target: i0.ɵɵFactoryTarget.Component }); }
71
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TextTemplateAddEditModalComponent, isStandalone: true, selector: "valtimo-text-template-add-edit-modal", inputs: { open: "open", type: "type", defaultKeyValue: "defaultKeyValue" }, outputs: { closeEvent: "closeEvent" }, 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<cds-modal\n *ngIf=\"{\n isAdd: type === 'add'\n } as vars\"\n [open]=\"open\"\n showFooter=\"true\"\n [title]=\"vars.title\"\n valtimoCdsModal\n>\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCancel()\">\n <h3 cdsModalHeaderHeading>\n {{\n vars.isAdd\n ? 'Add'\n : 'Edit'\n }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent>\n <form [formGroup]=\"form\">\n <cds-label [invalid]=\"key.dirty && key.invalid\">\n {{ 'Key' }}\n\n <input\n formControlName=\"key\"\n cdsText\n placeholder=\"{{ 'key' }}\"\n [attr.modal-primary-focus]=\"true\"\n [invalid]=\"key.dirty && key.invalid\"\n />\n </cds-label>\n </form>\n </section>\n\n <cds-modal-footer>\n <button cdsButton=\"ghost\" (click)=\"onCancel()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button [disabled]=\"this.form.invalid\" (click)=\"onConfirm()\" cdsButton=\"primary\">\n {{ vars.isAdd ? ('interface.create' | translate) : ('interface.save' | translate) }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i4.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ModalModule }, { kind: "component", type: i4.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i4.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i4.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i4.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i4.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", 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]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: InputModule }, { kind: "component", type: i4.Label, selector: "cds-label, ibm-label", inputs: ["labelInputID", "disabled", "skeleton", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i4.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
72
+ }
73
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TextTemplateAddEditModalComponent, decorators: [{
74
+ type: Component,
75
+ args: [{ standalone: true, selector: 'valtimo-text-template-add-edit-modal', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
76
+ CommonModule,
77
+ ButtonModule,
78
+ TranslateModule,
79
+ ModalModule,
80
+ ReactiveFormsModule,
81
+ InputModule
82
+ ], 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<cds-modal\n *ngIf=\"{\n isAdd: type === 'add'\n } as vars\"\n [open]=\"open\"\n showFooter=\"true\"\n [title]=\"vars.title\"\n valtimoCdsModal\n>\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCancel()\">\n <h3 cdsModalHeaderHeading>\n {{\n vars.isAdd\n ? 'Add'\n : 'Edit'\n }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent>\n <form [formGroup]=\"form\">\n <cds-label [invalid]=\"key.dirty && key.invalid\">\n {{ 'Key' }}\n\n <input\n formControlName=\"key\"\n cdsText\n placeholder=\"{{ 'key' }}\"\n [attr.modal-primary-focus]=\"true\"\n [invalid]=\"key.dirty && key.invalid\"\n />\n </cds-label>\n </form>\n </section>\n\n <cds-modal-footer>\n <button cdsButton=\"ghost\" (click)=\"onCancel()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button [disabled]=\"this.form.invalid\" (click)=\"onConfirm()\" cdsButton=\"primary\">\n {{ vars.isAdd ? ('interface.create' | translate) : ('interface.save' | translate) }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n" }]
83
+ }], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.KeyGeneratorService }], propDecorators: { open: [{
84
+ type: Input
85
+ }], type: [{
86
+ type: Input
87
+ }], defaultKeyValue: [{
88
+ type: Input
89
+ }], closeEvent: [{
90
+ type: Output
91
+ }] } });
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC10ZW1wbGF0ZS1hZGQtZWRpdC1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vLXBsdWdpbnMvZnJlZW1hcmtlci9zcmMvbGliL3BsdWdpbnMvdGV4dC10ZW1wbGF0ZS9jb21wb25lbnRzL3RleHQtdGVtcGxhdGUtYWRkLWVkaXQtbW9kYWwvdGV4dC10ZW1wbGF0ZS1hZGQtZWRpdC1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vLXBsdWdpbnMvZnJlZW1hcmtlci9zcmMvbGliL3BsdWdpbnMvdGV4dC10ZW1wbGF0ZS9jb21wb25lbnRzL3RleHQtdGVtcGxhdGUtYWRkLWVkaXQtbW9kYWwvdGV4dC10ZW1wbGF0ZS1hZGQtZWRpdC1tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEdBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkcsT0FBTyxFQUFjLG1CQUFtQixFQUFFLFVBQVUsRUFBa0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3RixPQUFPLEVBQUMsZ0JBQWdCLEVBQXNCLE1BQU0scUJBQXFCLENBQUM7QUFDMUUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ2pGLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7OztBQWdCcEQsTUFBTSxPQUFPLGlDQUFpQztJQUkxQyxJQUFhLGVBQWUsQ0FBQyxLQUFhO1FBQ3RDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFVRCxJQUFXLEdBQUc7UUFDVixPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxZQUNxQixFQUFlLEVBQ2YsbUJBQXdDO1FBRHhDLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDZix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBdEJwRCxTQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ2IsU0FBSSxHQUEwQixLQUFLLENBQUM7UUFPbkMsZUFBVSxHQUFHLElBQUksWUFBWSxFQUEwQyxDQUFDO1FBRTNFLFNBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUN4QixHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7U0FDaEQsQ0FBQyxDQUFDO0lBWUgsQ0FBQztJQUVNLFFBQVE7SUFDZixDQUFDO0lBRU0sUUFBUTtRQUNYLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRU0sU0FBUztRQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDWixPQUFPO1FBQ1gsQ0FBQztRQUVELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDO1FBQ3ZGLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRU8sa0JBQWtCLENBQUMsS0FBYTtRQUNwQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRU8sU0FBUztRQUNiLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2xCLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ25ELENBQUM7UUFDTCxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUMxQyxDQUFDOytHQXZEUSxpQ0FBaUM7bUdBQWpDLGlDQUFpQyxtTkN0QzlDLG15REE2REEsMkNEL0JRLFlBQVksa0lBQ1osWUFBWSxnTUFDWixlQUFlLDJGQUNmLFdBQVcsK3NCQUNYLG1CQUFtQiw0OEJBQ25CLFdBQVc7OzRGQUdOLGlDQUFpQztrQkFkN0MsU0FBUztpQ0FDTSxJQUFJLFlBQ04sc0NBQXNDLG1CQUUvQix1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDO3dCQUNMLFlBQVk7d0JBQ1osWUFBWTt3QkFDWixlQUFlO3dCQUNmLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixXQUFXO3FCQUNkO2tIQUdRLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRU8sZUFBZTtzQkFBM0IsS0FBSztnQkFLSSxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjMgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3JtQnVpbGRlciwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVmFsaWRhdG9ycywgQWJzdHJhY3RDb250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1RlbXBsYXRlTWV0YWRhdGFNb2RhbH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7Q0FSQk9OX0NPTlNUQU5UUywgS2V5R2VuZXJhdG9yU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7QnV0dG9uTW9kdWxlLCBJbnB1dE1vZHVsZSwgTW9kYWxNb2R1bGV9IGZyb20gJ2NhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXInO1xuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGV9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAndmFsdGltby10ZXh0LXRlbXBsYXRlLWFkZC1lZGl0LW1vZGFsJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGV4dC10ZW1wbGF0ZS1hZGQtZWRpdC1tb2RhbC5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEJ1dHRvbk1vZHVsZSxcbiAgICAgICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgICAgICBNb2RhbE1vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgSW5wdXRNb2R1bGVcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFRleHRUZW1wbGF0ZUFkZEVkaXRNb2RhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KCkgb3BlbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHR5cGU6IFRlbXBsYXRlTWV0YWRhdGFNb2RhbCA9ICdhZGQnO1xuXG4gICAgQElucHV0KCkgc2V0IGRlZmF1bHRLZXlWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2RlZmF1bHRLZXlWYWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLnNldERlZmF1bHRLZXlWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgQE91dHB1dCgpIGNsb3NlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHsga2V5OiBzdHJpbmc7IG1ldGFkYXRhPzogYW55IH0gfCBudWxsPigpO1xuXG4gICAgcHVibGljIGZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAga2V5OiB0aGlzLmZiLmNvbnRyb2woJycsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgIH0pO1xuXG4gICAgcHJpdmF0ZSBfZGVmYXVsdEtleVZhbHVlITogc3RyaW5nO1xuXG4gICAgcHVibGljIGdldCBrZXkoKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybT8uZ2V0KCdrZXknKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkga2V5R2VuZXJhdG9yU2VydmljZTogS2V5R2VuZXJhdG9yU2VydmljZSxcbiAgICApIHtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2FuY2VsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNsb3NlRXZlbnQuZW1pdChudWxsKTtcbiAgICAgICAgdGhpcy5yZXNldEZvcm0oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25Db25maXJtKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMua2V5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNsb3NlRXZlbnQuZW1pdCh7a2V5OiB0aGlzLmtleUdlbmVyYXRvclNlcnZpY2UuZ2V0VW5pcXVlS2V5KHRoaXMua2V5LnZhbHVlLCBbXSl9KTtcbiAgICAgICAgdGhpcy5yZXNldEZvcm0oKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldERlZmF1bHRLZXlWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMua2V5LnNldFZhbHVlKHZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc2V0Rm9ybSgpOiB2b2lkIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZvcm0ucmVzZXQoKTtcbiAgICAgICAgICAgIGlmICh0aGlzLnR5cGUgPT09ICdlZGl0Jykge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0RGVmYXVsdEtleVZhbHVlKHRoaXMuX2RlZmF1bHRLZXlWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIENBUkJPTl9DT05TVEFOVFMubW9kYWxBbmltYXRpb25Ncyk7XG4gICAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjMgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuXG48Y2RzLW1vZGFsXG4gICpuZ0lmPVwie1xuICAgIGlzQWRkOiB0eXBlID09PSAnYWRkJ1xuICB9IGFzIHZhcnNcIlxuICBbb3Blbl09XCJvcGVuXCJcbiAgc2hvd0Zvb3Rlcj1cInRydWVcIlxuICBbdGl0bGVdPVwidmFycy50aXRsZVwiXG4gIHZhbHRpbW9DZHNNb2RhbFxuPlxuICA8Y2RzLW1vZGFsLWhlYWRlciBbc2hvd0Nsb3NlQnV0dG9uXT1cInRydWVcIiAoY2xvc2VTZWxlY3QpPVwib25DYW5jZWwoKVwiPlxuICAgIDxoMyBjZHNNb2RhbEhlYWRlckhlYWRpbmc+XG4gICAgICB7e1xuICAgICAgICB2YXJzLmlzQWRkXG4gICAgICAgICAgPyAnQWRkJ1xuICAgICAgICAgIDogJ0VkaXQnXG4gICAgICB9fVxuICAgIDwvaDM+XG4gIDwvY2RzLW1vZGFsLWhlYWRlcj5cblxuICA8c2VjdGlvbiBjZHNNb2RhbENvbnRlbnQ+XG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gICAgICA8Y2RzLWxhYmVsIFtpbnZhbGlkXT1cImtleS5kaXJ0eSAmJiBrZXkuaW52YWxpZFwiPlxuICAgICAgICB7eyAnS2V5JyB9fVxuXG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImtleVwiXG4gICAgICAgICAgY2RzVGV4dFxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2tleScgfX1cIlxuICAgICAgICAgIFthdHRyLm1vZGFsLXByaW1hcnktZm9jdXNdPVwidHJ1ZVwiXG4gICAgICAgICAgW2ludmFsaWRdPVwia2V5LmRpcnR5ICYmIGtleS5pbnZhbGlkXCJcbiAgICAgICAgLz5cbiAgICAgIDwvY2RzLWxhYmVsPlxuICAgIDwvZm9ybT5cbiAgPC9zZWN0aW9uPlxuXG4gIDxjZHMtbW9kYWwtZm9vdGVyPlxuICAgIDxidXR0b24gY2RzQnV0dG9uPVwiZ2hvc3RcIiAoY2xpY2spPVwib25DYW5jZWwoKVwiPlxuICAgICAge3sgJ2ludGVyZmFjZS5jYW5jZWwnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCJ0aGlzLmZvcm0uaW52YWxpZFwiIChjbGljayk9XCJvbkNvbmZpcm0oKVwiIGNkc0J1dHRvbj1cInByaW1hcnlcIj5cbiAgICAgIHt7IHZhcnMuaXNBZGQgPyAoJ2ludGVyZmFjZS5jcmVhdGUnIHwgdHJhbnNsYXRlKSA6ICgnaW50ZXJmYWNlLnNhdmUnIHwgdHJhbnNsYXRlKSB9fVxuICAgIDwvYnV0dG9uPlxuICA8L2Nkcy1tb2RhbC1mb290ZXI+XG48L2Nkcy1tb2RhbD5cbiJdfQ==
@@ -0,0 +1,77 @@
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 { Component, EventEmitter, Input, Output } from '@angular/core';
17
+ import { BehaviorSubject, combineLatest, take } from 'rxjs';
18
+ import * as i0 from "@angular/core";
19
+ import * as i1 from "@angular/common";
20
+ import * as i2 from "@valtimo/components";
21
+ import * as i3 from "@valtimo/plugin";
22
+ export class TextTemplateConfigurationComponent {
23
+ constructor() {
24
+ this.valid = new EventEmitter();
25
+ this.configuration = new EventEmitter();
26
+ this.formValue$ = new BehaviorSubject(null);
27
+ this.valid$ = new BehaviorSubject(false);
28
+ }
29
+ ngOnInit() {
30
+ this.openSaveSubscription();
31
+ }
32
+ ngOnDestroy() {
33
+ this.saveSubscription?.unsubscribe();
34
+ }
35
+ formValueChange(formValue) {
36
+ this.formValue$.next(formValue);
37
+ this.handleValid(formValue);
38
+ }
39
+ handleValid(formValue) {
40
+ const valid = !!(formValue.configurationTitle);
41
+ this.valid$.next(valid);
42
+ this.valid.emit(valid);
43
+ }
44
+ openSaveSubscription() {
45
+ this.saveSubscription = this.save$?.subscribe(_ => {
46
+ combineLatest([this.formValue$, this.valid$])
47
+ .pipe(take(1))
48
+ .subscribe(([formValue, valid]) => {
49
+ if (valid) {
50
+ this.configuration.emit(formValue);
51
+ this.injectCaseTab();
52
+ }
53
+ });
54
+ });
55
+ }
56
+ injectCaseTab() {
57
+ }
58
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TextTemplateConfigurationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
59
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TextTemplateConfigurationComponent, selector: "valtimo-text-template-configuration", inputs: { save$: "save$", disabled$: "disabled$", pluginId: "pluginId", prefillConfiguration$: "prefillConfiguration$" }, outputs: { valid: "valid", configuration: "configuration" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2022 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<v-form\n (valueChange)=\"formValueChange($event)\"\n *ngIf=\"{\n disabled: disabled$ | async,\n prefill: prefillConfiguration$ ? (prefillConfiguration$ | async) : null\n } as obs\"\n>\n <v-input\n name=\"configurationTitle\"\n [title]=\"'configurationTitle' | pluginTranslate: pluginId | async\"\n [margin]=\"true\"\n [disabled]=\"obs.disabled\"\n [defaultValue]=\"obs.prefill?.configurationTitle\"\n [required]=\"true\"\n [tooltip]=\"'configurationTitleTooltip' | pluginTranslate: pluginId | async\"\n [widthPx]=\"350\"\n placeholder=\"Text Template Plugin\"\n >\n </v-input>\n</v-form>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.FormComponent, selector: "v-form", inputs: ["className"], outputs: ["valueChange"] }, { kind: "component", type: i2.InputComponent, selector: "v-input", inputs: ["name", "type", "title", "titleTranslationKey", "defaultValue", "widthPx", "fullWidth", "margin", "smallMargin", "disabled", "step", "min", "maxLength", "tooltip", "required", "hideNumberSpinBox", "smallLabel", "rows", "clear$", "carbonTheme", "placeholder", "dataTestId", "trim"], outputs: ["valueChange"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.PluginTranslatePipe, name: "pluginTranslate" }] }); }
60
+ }
61
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TextTemplateConfigurationComponent, decorators: [{
62
+ type: Component,
63
+ args: [{ selector: 'valtimo-text-template-configuration', template: "<!--\n ~ Copyright 2015-2022 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<v-form\n (valueChange)=\"formValueChange($event)\"\n *ngIf=\"{\n disabled: disabled$ | async,\n prefill: prefillConfiguration$ ? (prefillConfiguration$ | async) : null\n } as obs\"\n>\n <v-input\n name=\"configurationTitle\"\n [title]=\"'configurationTitle' | pluginTranslate: pluginId | async\"\n [margin]=\"true\"\n [disabled]=\"obs.disabled\"\n [defaultValue]=\"obs.prefill?.configurationTitle\"\n [required]=\"true\"\n [tooltip]=\"'configurationTitleTooltip' | pluginTranslate: pluginId | async\"\n [widthPx]=\"350\"\n placeholder=\"Text Template Plugin\"\n >\n </v-input>\n</v-form>\n" }]
64
+ }], ctorParameters: () => [], propDecorators: { save$: [{
65
+ type: Input
66
+ }], disabled$: [{
67
+ type: Input
68
+ }], pluginId: [{
69
+ type: Input
70
+ }], prefillConfiguration$: [{
71
+ type: Input
72
+ }], valid: [{
73
+ type: Output
74
+ }], configuration: [{
75
+ type: Output
76
+ }] } });
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC10ZW1wbGF0ZS1jb25maWd1cmF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8tcGx1Z2lucy9mcmVlbWFya2VyL3NyYy9saWIvcGx1Z2lucy90ZXh0LXRlbXBsYXRlL2NvbXBvbmVudHMvdGV4dC10ZW1wbGF0ZS1jb25maWd1cmF0aW9uL3RleHQtdGVtcGxhdGUtY29uZmlndXJhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vLXBsdWdpbnMvZnJlZW1hcmtlci9zcmMvbGliL3BsdWdpbnMvdGV4dC10ZW1wbGF0ZS9jb21wb25lbnRzL3RleHQtdGVtcGxhdGUtY29uZmlndXJhdGlvbi90ZXh0LXRlbXBsYXRlLWNvbmZpZ3VyYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV4RixPQUFPLEVBQUMsZUFBZSxFQUFFLGFBQWEsRUFBaUMsSUFBSSxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7OztBQU96RixNQUFNLE9BQU8sa0NBQWtDO0lBVTdDO1FBSFUsVUFBSyxHQUEwQixJQUFJLFlBQVksRUFBVyxDQUFDO1FBQzNELGtCQUFhLEdBQTBDLElBQUksWUFBWSxFQUEyQixDQUFDO1FBTTVGLGVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBNEIsSUFBSSxDQUFDLENBQUM7UUFDbEUsV0FBTSxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBSjNELENBQUM7SUFNSixRQUFRO1FBQ04sSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVELGVBQWUsQ0FBQyxTQUE2QjtRQUMzQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFTyxXQUFXLENBQUMsU0FBNkI7UUFDL0MsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFFL0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVPLG9CQUFvQjtRQUMxQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDaEQsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7aUJBQzFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ2IsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtnQkFDaEMsSUFBSSxLQUFLLEVBQUUsQ0FBQztvQkFDVixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFVLENBQUMsQ0FBQztvQkFDcEMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUN2QixDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxhQUFhO0lBQ3JCLENBQUM7K0dBbkRVLGtDQUFrQzttR0FBbEMsa0NBQWtDLGtRQ3pCL0MsdXdDQW9DQTs7NEZEWGEsa0NBQWtDO2tCQUo5QyxTQUFTOytCQUNFLHFDQUFxQzt3REFNdEMsS0FBSztzQkFBYixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0ksS0FBSztzQkFBZCxNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMiBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1BsdWdpbkNvbmZpZ3VyYXRpb25Db21wb25lbnQsIFBsdWdpbkNvbmZpZ3VyYXRpb25EYXRhfSBmcm9tICdAdmFsdGltby9wbHVnaW4nO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG1hcCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCB0YWtlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7VGV4dFRlbXBsYXRlQ29uZmlnfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLXRleHQtdGVtcGxhdGUtY29uZmlndXJhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi90ZXh0LXRlbXBsYXRlLWNvbmZpZ3VyYXRpb24uY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBUZXh0VGVtcGxhdGVDb25maWd1cmF0aW9uQ29tcG9uZW50XG4gIGltcGxlbWVudHMgUGx1Z2luQ29uZmlndXJhdGlvbkNvbXBvbmVudCwgT25Jbml0LCBPbkRlc3Ryb3lcbntcbiAgQElucHV0KCkgc2F2ZSQhOiBPYnNlcnZhYmxlPHZvaWQ+O1xuICBASW5wdXQoKSBkaXNhYmxlZCQhOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBASW5wdXQoKSBwbHVnaW5JZCE6IHN0cmluZztcbiAgQElucHV0KCkgcHJlZmlsbENvbmZpZ3VyYXRpb24kITogT2JzZXJ2YWJsZTxUZXh0VGVtcGxhdGVDb25maWc+O1xuICBAT3V0cHV0KCkgdmFsaWQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIGNvbmZpZ3VyYXRpb246IEV2ZW50RW1pdHRlcjxQbHVnaW5Db25maWd1cmF0aW9uRGF0YT4gPSBuZXcgRXZlbnRFbWl0dGVyPFBsdWdpbkNvbmZpZ3VyYXRpb25EYXRhPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICApIHt9XG5cbiAgcHJpdmF0ZSBzYXZlU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIHJlYWRvbmx5IGZvcm1WYWx1ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRleHRUZW1wbGF0ZUNvbmZpZyB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIHJlYWRvbmx5IHZhbGlkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMub3BlblNhdmVTdWJzY3JpcHRpb24oKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc2F2ZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGZvcm1WYWx1ZUNoYW5nZShmb3JtVmFsdWU6IFRleHRUZW1wbGF0ZUNvbmZpZyk6IHZvaWQge1xuICAgIHRoaXMuZm9ybVZhbHVlJC5uZXh0KGZvcm1WYWx1ZSk7XG4gICAgdGhpcy5oYW5kbGVWYWxpZChmb3JtVmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVWYWxpZChmb3JtVmFsdWU6IFRleHRUZW1wbGF0ZUNvbmZpZyk6IHZvaWQge1xuICAgIGNvbnN0IHZhbGlkID0gISEoZm9ybVZhbHVlLmNvbmZpZ3VyYXRpb25UaXRsZSk7XG5cbiAgICB0aGlzLnZhbGlkJC5uZXh0KHZhbGlkKTtcbiAgICB0aGlzLnZhbGlkLmVtaXQodmFsaWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuU2F2ZVN1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLnNhdmVTdWJzY3JpcHRpb24gPSB0aGlzLnNhdmUkPy5zdWJzY3JpYmUoXyA9PiB7XG4gICAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLmZvcm1WYWx1ZSQsIHRoaXMudmFsaWQkXSlcbiAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgLnN1YnNjcmliZSgoW2Zvcm1WYWx1ZSwgdmFsaWRdKSA9PiB7XG4gICAgICAgICAgaWYgKHZhbGlkKSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24uZW1pdChmb3JtVmFsdWUhKTtcbiAgICAgICAgICAgIHRoaXMuaW5qZWN0Q2FzZVRhYigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGluamVjdENhc2VUYWIoKSB7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDIyIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPHYtZm9ybVxuICAodmFsdWVDaGFuZ2UpPVwiZm9ybVZhbHVlQ2hhbmdlKCRldmVudClcIlxuICAqbmdJZj1cIntcbiAgICBkaXNhYmxlZDogZGlzYWJsZWQkIHwgYXN5bmMsXG4gICAgcHJlZmlsbDogcHJlZmlsbENvbmZpZ3VyYXRpb24kID8gKHByZWZpbGxDb25maWd1cmF0aW9uJCB8IGFzeW5jKSA6IG51bGxcbiAgfSBhcyBvYnNcIlxuPlxuICA8di1pbnB1dFxuICAgIG5hbWU9XCJjb25maWd1cmF0aW9uVGl0bGVcIlxuICAgIFt0aXRsZV09XCInY29uZmlndXJhdGlvblRpdGxlJyB8IHBsdWdpblRyYW5zbGF0ZTogcGx1Z2luSWQgfCBhc3luY1wiXG4gICAgW21hcmdpbl09XCJ0cnVlXCJcbiAgICBbZGlzYWJsZWRdPVwib2JzLmRpc2FibGVkXCJcbiAgICBbZGVmYXVsdFZhbHVlXT1cIm9icy5wcmVmaWxsPy5jb25maWd1cmF0aW9uVGl0bGVcIlxuICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICBbdG9vbHRpcF09XCInY29uZmlndXJhdGlvblRpdGxlVG9vbHRpcCcgfCBwbHVnaW5UcmFuc2xhdGU6IHBsdWdpbklkIHwgYXN5bmNcIlxuICAgIFt3aWR0aFB4XT1cIjM1MFwiXG4gICAgcGxhY2Vob2xkZXI9XCJUZXh0IFRlbXBsYXRlIFBsdWdpblwiXG4gID5cbiAgPC92LWlucHV0PlxuPC92LWZvcm0+XG4iXX0=
@@ -0,0 +1,42 @@
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, EventEmitter, Input, Output } from '@angular/core';
17
+ import { ConfirmationModalModule } from '@valtimo/components';
18
+ import * as i0 from "@angular/core";
19
+ import * as i1 from "@valtimo/components";
20
+ export class TextTemplateDeleteModalComponent {
21
+ constructor() {
22
+ this.deleteEvent = new EventEmitter();
23
+ }
24
+ onDelete(templates) {
25
+ this.deleteEvent.emit(templates);
26
+ }
27
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TextTemplateDeleteModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
28
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TextTemplateDeleteModalComponent, isStandalone: true, selector: "valtimo-text-template-delete-modal", inputs: { deleteRowKeys: "deleteRowKeys", showDeleteModal$: "showDeleteModal$" }, outputs: { deleteEvent: "deleteEvent" }, 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-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"template.deleteModalContent\"\n [outputOnConfirm]=\"deleteRowKeys\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"interface.delete\"\n (confirmEvent)=\"onDelete($event)\"\n></valtimo-confirmation-modal>\n", dependencies: [{ kind: "ngmodule", type: ConfirmationModalModule }, { kind: "component", type: i1.ConfirmationModalComponent, selector: "valtimo-confirmation-modal", inputs: ["titleTranslationKey", "title", "content", "contentTranslationKey", "confirmButtonText", "confirmButtonTextTranslationKey", "confirmButtonType", "showOptionalButton", "optionalButtonText", "optionalButtonTextTranslationKey", "optionalButtonType", "cancelButtonText", "cancelButtonTextTranslationKey", "cancelButtonType", "showModalSubject$", "outputOnConfirm", "outputOnOptional", "spacerAfterCancelButton"], outputs: ["confirmEvent", "optionalEvent", "cancelEvent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
29
+ }
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TextTemplateDeleteModalComponent, decorators: [{
31
+ type: Component,
32
+ args: [{ standalone: true, selector: 'valtimo-text-template-delete-modal', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
33
+ ConfirmationModalModule
34
+ ], 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-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"template.deleteModalContent\"\n [outputOnConfirm]=\"deleteRowKeys\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"interface.delete\"\n (confirmEvent)=\"onDelete($event)\"\n></valtimo-confirmation-modal>\n" }]
35
+ }], propDecorators: { deleteRowKeys: [{
36
+ type: Input
37
+ }], showDeleteModal$: [{
38
+ type: Input
39
+ }], deleteEvent: [{
40
+ type: Output
41
+ }] } });
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC10ZW1wbGF0ZS1kZWxldGUtbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby1wbHVnaW5zL2ZyZWVtYXJrZXIvc3JjL2xpYi9wbHVnaW5zL3RleHQtdGVtcGxhdGUvY29tcG9uZW50cy90ZXh0LXRlbXBsYXRlLWRlbGV0ZS1tb2RhbC90ZXh0LXRlbXBsYXRlLWRlbGV0ZS1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vLXBsdWdpbnMvZnJlZW1hcmtlci9zcmMvbGliL3BsdWdpbnMvdGV4dC10ZW1wbGF0ZS9jb21wb25lbnRzL3RleHQtdGVtcGxhdGUtZGVsZXRlLW1vZGFsL3RleHQtdGVtcGxhdGUtZGVsZXRlLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUU5RixPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBVzVELE1BQU0sT0FBTyxnQ0FBZ0M7SUFUN0M7UUFZYyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFpQixDQUFDO0tBSzdEO0lBSFUsUUFBUSxDQUFDLFNBQXFCO1FBQ2pDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7K0dBUFEsZ0NBQWdDO21HQUFoQyxnQ0FBZ0MseU5DN0I3QyxzZ0NBeUJBLDJDRENRLHVCQUF1Qjs7NEZBR2xCLGdDQUFnQztrQkFUNUMsU0FBUztpQ0FDTSxJQUFJLFlBQ04sb0NBQW9DLG1CQUU3Qix1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDO3dCQUNMLHVCQUF1QjtxQkFDMUI7OEJBR1EsYUFBYTtzQkFBckIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDIzIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0NvbmZpcm1hdGlvbk1vZGFsTW9kdWxlfSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ3ZhbHRpbW8tdGV4dC10ZW1wbGF0ZS1kZWxldGUtbW9kYWwnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90ZXh0LXRlbXBsYXRlLWRlbGV0ZS1tb2RhbC5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb25maXJtYXRpb25Nb2RhbE1vZHVsZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgVGV4dFRlbXBsYXRlRGVsZXRlTW9kYWxDb21wb25lbnQge1xuICAgIEBJbnB1dCgpIGRlbGV0ZVJvd0tleXM6IEFycmF5PHN0cmluZz47XG4gICAgQElucHV0KCkgc2hvd0RlbGV0ZU1vZGFsJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICBAT3V0cHV0KCkgZGVsZXRlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPEFycmF5PHN0cmluZz4+KCk7XG5cbiAgICBwdWJsaWMgb25EZWxldGUodGVtcGxhdGVzOiBBcnJheTxhbnk+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVsZXRlRXZlbnQuZW1pdCh0ZW1wbGF0ZXMpO1xuICAgIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDIzIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPHZhbHRpbW8tY29uZmlybWF0aW9uLW1vZGFsXG4gIGNvbmZpcm1CdXR0b25UZXh0VHJhbnNsYXRpb25LZXk9XCJpbnRlcmZhY2UuZGVsZXRlXCJcbiAgY29uZmlybUJ1dHRvblR5cGU9XCJkYW5nZXJcIlxuICBjb250ZW50VHJhbnNsYXRpb25LZXk9XCJ0ZW1wbGF0ZS5kZWxldGVNb2RhbENvbnRlbnRcIlxuICBbb3V0cHV0T25Db25maXJtXT1cImRlbGV0ZVJvd0tleXNcIlxuICBbc2hvd01vZGFsU3ViamVjdCRdPVwic2hvd0RlbGV0ZU1vZGFsJFwiXG4gIHRpdGxlVHJhbnNsYXRpb25LZXk9XCJpbnRlcmZhY2UuZGVsZXRlXCJcbiAgKGNvbmZpcm1FdmVudCk9XCJvbkRlbGV0ZSgkZXZlbnQpXCJcbj48L3ZhbHRpbW8tY29uZmlybWF0aW9uLW1vZGFsPlxuIl19
@@ -0,0 +1,189 @@
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 { CarbonListModule, EditorModule, RenderInPageHeaderDirectiveModule } from '@valtimo/components';
19
+ import { ButtonModule, DialogModule, IconModule, NotificationService, TabsModule } from 'carbon-components-angular';
20
+ import { TranslateModule } from '@ngx-translate/core';
21
+ import { CommonModule } from '@angular/common';
22
+ import { TextTemplateDeleteModalComponent } from '../text-template-delete-modal/text-template-delete-modal.component';
23
+ import * as i0 from "@angular/core";
24
+ import * as i1 from "../../../../services";
25
+ import * as i2 from "@angular/router";
26
+ import * as i3 from "@valtimo/components";
27
+ import * as i4 from "carbon-components-angular";
28
+ import * as i5 from "@ngx-translate/core";
29
+ import * as i6 from "@angular/common";
30
+ export class TextTemplateEditorComponent {
31
+ constructor(templateService, route, pageTitleService, router, notificationService, translateService, breadcrumbService) {
32
+ this.templateService = templateService;
33
+ this.route = route;
34
+ this.pageTitleService = pageTitleService;
35
+ this.router = router;
36
+ this.notificationService = notificationService;
37
+ this.translateService = translateService;
38
+ this.breadcrumbService = breadcrumbService;
39
+ this.model$ = new BehaviorSubject(null);
40
+ this.template$ = new BehaviorSubject(null);
41
+ this.saveDisabled$ = new BehaviorSubject(true);
42
+ this.editorDisabled$ = new BehaviorSubject(false);
43
+ this.moreDisabled$ = new BehaviorSubject(true);
44
+ this.showDeleteModal$ = new BehaviorSubject(false);
45
+ this.updatedModelValue$ = new BehaviorSubject('');
46
+ this.initialModelValue$ = new BehaviorSubject('');
47
+ this.isValid$ = new BehaviorSubject(true);
48
+ this._caseDefinitionName$ = this.route.params.pipe(map(params => params?.name), filter(caseDefinitionName => !!caseDefinitionName));
49
+ this.templateKey$ = this.route.params.pipe(map(params => params?.key), filter(templateKey => !!templateKey));
50
+ }
51
+ ngOnInit() {
52
+ this.loadTemplate();
53
+ this.initSaveButtonLogic();
54
+ }
55
+ ngAfterViewInit() {
56
+ this.initBreadcrumb();
57
+ }
58
+ ngOnDestroy() {
59
+ this.pageTitleService.enableReset();
60
+ this.breadcrumbService.clearThirdBreadcrumb();
61
+ }
62
+ onValid(valid) {
63
+ if (typeof valid === 'boolean') {
64
+ this.isValid$.next(valid);
65
+ }
66
+ }
67
+ onValueChange(value) {
68
+ this.updatedModelValue$.next(value);
69
+ }
70
+ updateTemplate() {
71
+ this.disableEditor();
72
+ this.disableSave();
73
+ this.disableMore();
74
+ combineLatest([this.updatedModelValue$, this._caseDefinitionName$, this.templateKey$]).pipe(switchMap(([updatedModelValue, caseDefinitionName, templateKey]) => this.templateService.updateTemplate({
75
+ key: templateKey,
76
+ caseDefinitionName,
77
+ type: 'text',
78
+ content: updatedModelValue,
79
+ })), take(1)).subscribe({
80
+ next: result => {
81
+ this.enableMore();
82
+ this.enableSave();
83
+ this.enableEditor();
84
+ this.showSuccessMessage(result.key);
85
+ this.setModel(result.content);
86
+ this.initialModelValue$.next(result.content);
87
+ this.template$.next(result);
88
+ },
89
+ error: () => {
90
+ this.enableMore();
91
+ this.enableSave();
92
+ this.enableEditor();
93
+ },
94
+ });
95
+ }
96
+ onDelete(templates) {
97
+ this.disableEditor();
98
+ this.disableSave();
99
+ this.disableMore();
100
+ this._caseDefinitionName$.pipe(take(1)).subscribe(caseDefinitionName => this.templateService.deleteTemplates({
101
+ caseDefinitionName,
102
+ type: 'text',
103
+ templates
104
+ }).pipe(take(1)).subscribe(_ => this.router.navigate([`/dossier-management/dossier/${caseDefinitionName}`])));
105
+ }
106
+ showDeleteModal() {
107
+ this.showDeleteModal$.next(true);
108
+ }
109
+ loadTemplate() {
110
+ combineLatest([this._caseDefinitionName$, this.templateKey$]).pipe(tap(([_, key]) => {
111
+ this.pageTitleService.setCustomPageTitle(`Text Template: ${key}`, true);
112
+ }), switchMap(([caseDefinitionName, key]) => this.templateService.getTextTemplate(caseDefinitionName, key)), take(1)).subscribe(result => {
113
+ this.enableMore();
114
+ this.enableSave();
115
+ this.enableEditor();
116
+ this.setModel(result.content);
117
+ this.initialModelValue$.next(result.content);
118
+ this.template$.next(result);
119
+ });
120
+ }
121
+ initSaveButtonLogic() {
122
+ combineLatest([this.updatedModelValue$, this.initialModelValue$, this.isValid$]).subscribe(([updatedValue, initialValue, isValid]) => {
123
+ this.saveDisabled$.next(!isValid || updatedValue === initialValue);
124
+ });
125
+ }
126
+ setModel(content) {
127
+ this.model$.next({
128
+ value: content,
129
+ language: 'freemarker2',
130
+ });
131
+ this.updatedModelValue$.next(content);
132
+ }
133
+ disableMore() {
134
+ this.moreDisabled$.next(true);
135
+ }
136
+ enableMore() {
137
+ this.moreDisabled$.next(false);
138
+ }
139
+ disableSave() {
140
+ this.saveDisabled$.next(true);
141
+ }
142
+ enableSave() {
143
+ this.saveDisabled$.next(false);
144
+ }
145
+ disableEditor() {
146
+ this.editorDisabled$.next(true);
147
+ }
148
+ enableEditor() {
149
+ this.editorDisabled$.next(false);
150
+ }
151
+ initBreadcrumb() {
152
+ this._caseDefinitionName$.subscribe(caseDefinitionName => {
153
+ this.breadcrumbService.setThirdBreadcrumb({
154
+ route: [`/dossier-management/dossier/${caseDefinitionName}`],
155
+ content: caseDefinitionName,
156
+ href: `/dossier-management/dossier/${caseDefinitionName}`,
157
+ });
158
+ });
159
+ }
160
+ showSuccessMessage(key) {
161
+ this.notificationService.showToast({
162
+ caption: this.translateService.instant(`${key} was saved successfully`, {
163
+ key,
164
+ }),
165
+ type: 'success',
166
+ duration: 4000,
167
+ showClose: true,
168
+ title: this.translateService.instant('Saved successfully'),
169
+ });
170
+ }
171
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TextTemplateEditorComponent, 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 }); }
172
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TextTemplateEditorComponent, isStandalone: true, 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 Text Templates use <a target=\"_blank\" href=\"https://freemarker.apache.org/docs/dgui_quickstart_basics.html\">FreeMarker</a>\n to create placeholders inside the text. The data-model for FreeMarker is based upon nested <a\n target=\"_blank\" href=\"https://docs.valtimo.nl/features/value-resolvers\">Valtimo value-resolvers</a>\n with a slightly different notation. For example: $&#123;doc.firstName&#125;. Retrieves\n the `firstName` from the case.\n\n Text Templates can be used as value resolvers. For example: $&#123;template.my-text-template&#125; or\n `template:my-text-template`.\n </div>\n\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</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-text-template-delete-modal\n [deleteRowKeys]=\"[{key: obs.templateKey, type: 'text'}]\"\n [showDeleteModal$]=\"showDeleteModal$\"\n (deleteEvent)=\"onDelete($event)\"\n >\n </valtimo-text-template-delete-modal>\n</ng-container>\n", styles: [".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: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: TabsModule }, { kind: "ngmodule", type: DialogModule }, { 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: "component", type: TextTemplateDeleteModalComponent, selector: "valtimo-text-template-delete-modal", inputs: ["deleteRowKeys", "showDeleteModal$"], outputs: ["deleteEvent"] }, { kind: "ngmodule", type: CarbonListModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i4.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: EditorModule }, { kind: "component", type: i3.EditorComponent, selector: "valtimo-editor", inputs: ["editorOptions", "model", "disabled", "formatOnLoad", "widthPx", "heightPx", "heightStyle", "jsonSchema", "fitPage", "fitPageExtraSpace"], outputs: ["validEvent", "valueChangeEvent"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i4.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "ngmodule", type: RenderInPageHeaderDirectiveModule }, { kind: "directive", type: i3.RenderInPageHeaderDirective, selector: "[renderInPageHeader]", inputs: ["fullWidth"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
173
+ }
174
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TextTemplateEditorComponent, decorators: [{
175
+ type: Component,
176
+ args: [{ standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, providers: [NotificationService], imports: [
177
+ CommonModule,
178
+ TranslateModule,
179
+ TabsModule,
180
+ DialogModule,
181
+ TextTemplateDeleteModalComponent,
182
+ CarbonListModule,
183
+ ButtonModule,
184
+ EditorModule,
185
+ IconModule,
186
+ RenderInPageHeaderDirectiveModule,
187
+ ], 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 Text Templates use <a target=\"_blank\" href=\"https://freemarker.apache.org/docs/dgui_quickstart_basics.html\">FreeMarker</a>\n to create placeholders inside the text. The data-model for FreeMarker is based upon nested <a\n target=\"_blank\" href=\"https://docs.valtimo.nl/features/value-resolvers\">Valtimo value-resolvers</a>\n with a slightly different notation. For example: $&#123;doc.firstName&#125;. Retrieves\n the `firstName` from the case.\n\n Text Templates can be used as value resolvers. For example: $&#123;template.my-text-template&#125; or\n `template:my-text-template`.\n </div>\n\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</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-text-template-delete-modal\n [deleteRowKeys]=\"[{key: obs.templateKey, type: 'text'}]\"\n [showDeleteModal$]=\"showDeleteModal$\"\n (deleteEvent)=\"onDelete($event)\"\n >\n </valtimo-text-template-delete-modal>\n</ng-container>\n", styles: [".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"] }]
188
+ }], ctorParameters: () => [{ type: i1.FreemarkerTemplateManagementService }, { type: i2.ActivatedRoute }, { type: i3.PageTitleService }, { type: i2.Router }, { type: i4.NotificationService }, { type: i5.TranslateService }, { type: i3.BreadcrumbService }] });
189
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC10ZW1wbGF0ZS1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby1wbHVnaW5zL2ZyZWVtYXJrZXIvc3JjL2xpYi9wbHVnaW5zL3RleHQtdGVtcGxhdGUvY29tcG9uZW50cy90ZXh0LXRlbXBsYXRlLWVkaXRvci90ZXh0LXRlbXBsYXRlLWVkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vLXBsdWdpbnMvZnJlZW1hcmtlci9zcmMvbGliL3BsdWdpbnMvdGV4dC10ZW1wbGF0ZS9jb21wb25lbnRzL3RleHQtdGVtcGxhdGUtZWRpdG9yL3RleHQtdGVtcGxhdGUtZWRpdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFnQix1QkFBdUIsRUFBRSxTQUFTLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBQ25HLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQWMsU0FBUyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFbkcsT0FBTyxFQUVILGdCQUFnQixFQUVoQixZQUFZLEVBRVosaUNBQWlDLEVBQ3BDLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ2xILE9BQU8sRUFBQyxlQUFlLEVBQW1CLE1BQU0scUJBQXFCLENBQUM7QUFHdEUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxnQ0FBZ0MsRUFBQyxNQUFNLG9FQUFvRSxDQUFDOzs7Ozs7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QUFpQzs7NEZBRzVCLDJCQUEyQjtrQkFuQnZDLFNBQVM7aUNBQ00sSUFBSSxtQkFFQyx1QkFBdUIsQ0FBQyxNQUFNLGFBRXBDLENBQUMsbUJBQW1CLENBQUMsV0FDdkI7d0JBQ0wsWUFBWTt3QkFDWixlQUFlO3dCQUNmLFVBQVU7d0JBQ1YsWUFBWTt3QkFDWixnQ0FBZ0M7d0JBQ2hDLGdCQUFnQjt3QkFDaEIsWUFBWTt3QkFDWixZQUFZO3dCQUNaLFVBQVU7d0JBQ1YsaUNBQWlDO3FCQUNwQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDIzIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGZpbHRlciwgbWFwLCBPYnNlcnZhYmxlLCBzd2l0Y2hNYXAsIHRha2UsIHRhcH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlLCBSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1xuICAgIEJyZWFkY3J1bWJTZXJ2aWNlLFxuICAgIENhcmJvbkxpc3RNb2R1bGUsXG4gICAgRWRpdG9yTW9kZWwsXG4gICAgRWRpdG9yTW9kdWxlLFxuICAgIFBhZ2VUaXRsZVNlcnZpY2UsXG4gICAgUmVuZGVySW5QYWdlSGVhZGVyRGlyZWN0aXZlTW9kdWxlXG59IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtCdXR0b25Nb2R1bGUsIERpYWxvZ01vZHVsZSwgSWNvbk1vZHVsZSwgTm90aWZpY2F0aW9uU2VydmljZSwgVGFic01vZHVsZX0gZnJvbSAnY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhcic7XG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge0ZyZWVtYXJrZXJUZW1wbGF0ZU1hbmFnZW1lbnRTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQge1RlbXBsYXRlUmVzcG9uc2V9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscyc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7VGV4dFRlbXBsYXRlRGVsZXRlTW9kYWxDb21wb25lbnR9IGZyb20gJy4uL3RleHQtdGVtcGxhdGUtZGVsZXRlLW1vZGFsL3RleHQtdGVtcGxhdGUtZGVsZXRlLW1vZGFsLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RleHQtdGVtcGxhdGUtZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzdHlsZVVybHM6IFsnLi90ZXh0LXRlbXBsYXRlLWVkaXRvci5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW05vdGlmaWNhdGlvblNlcnZpY2VdLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgICAgIFRhYnNNb2R1bGUsXG4gICAgICAgIERpYWxvZ01vZHVsZSxcbiAgICAgICAgVGV4dFRlbXBsYXRlRGVsZXRlTW9kYWxDb21wb25lbnQsXG4gICAgICAgIENhcmJvbkxpc3RNb2R1bGUsXG4gICAgICAgIEJ1dHRvbk1vZHVsZSxcbiAgICAgICAgRWRpdG9yTW9kdWxlLFxuICAgICAgICBJY29uTW9kdWxlLFxuICAgICAgICBSZW5kZXJJblBhZ2VIZWFkZXJEaXJlY3RpdmVNb2R1bGUsXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBUZXh0VGVtcGxhdGVFZGl0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgcHVibGljIHJlYWRvbmx5IG1vZGVsJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RWRpdG9yTW9kZWwgfCBudWxsPihudWxsKTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgdGVtcGxhdGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUZW1wbGF0ZVJlc3BvbnNlIHwgbnVsbD4obnVsbCk7XG4gICAgcHVibGljIHJlYWRvbmx5IHNhdmVEaXNhYmxlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICAgIHB1YmxpYyByZWFkb25seSBlZGl0b3JEaXNhYmxlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgbW9yZURpc2FibGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gICAgcHVibGljIHJlYWRvbmx5IHNob3dEZWxldGVNb2RhbCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgdXBkYXRlZE1vZGVsVmFsdWUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgaW5pdGlhbE1vZGVsVmFsdWUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgaXNWYWxpZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBfY2FzZURlZmluaXRpb25OYW1lJDogT2JzZXJ2YWJsZTxzdHJpbmc+ID1cbiAgICAgICAgdGhpcy5yb3V0ZS5wYXJhbXMucGlwZShcbiAgICAgICAgICAgIG1hcChwYXJhbXMgPT4gcGFyYW1zPy5uYW1lKSxcbiAgICAgICAgICAgIGZpbHRlcihjYXNlRGVmaW5pdGlvbk5hbWUgPT4gISFjYXNlRGVmaW5pdGlvbk5hbWUpXG4gICAgICAgICk7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgdGVtcGxhdGVLZXkkOiBPYnNlcnZhYmxlPHN0cmluZz4gPVxuICAgICAgICB0aGlzLnJvdXRlLnBhcmFtcy5waXBlKFxuICAgICAgICAgICAgbWFwKHBhcmFtcyA9PiBwYXJhbXM/LmtleSksXG4gICAgICAgICAgICBmaWx0ZXIodGVtcGxhdGVLZXkgPT4gISF0ZW1wbGF0ZUtleSlcbiAgICAgICAgKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRlbXBsYXRlU2VydmljZTogRnJlZW1hcmtlclRlbXBsYXRlTWFuYWdlbWVudFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHBhZ2VUaXRsZVNlcnZpY2U6IFBhZ2VUaXRsZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGJyZWFkY3J1bWJTZXJ2aWNlOiBCcmVhZGNydW1iU2VydmljZVxuICAgICkge1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5sb2FkVGVtcGxhdGUoKTtcbiAgICAgICAgdGhpcy5pbml0U2F2ZUJ1dHRvbkxvZ2ljKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbml0QnJlYWRjcnVtYigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wYWdlVGl0bGVTZXJ2aWNlLmVuYWJsZVJlc2V0KCk7XG4gICAgICAgIHRoaXMuYnJlYWRjcnVtYlNlcnZpY2UuY2xlYXJUaGlyZEJyZWFkY3J1bWIoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25WYWxpZCh2YWxpZDogYW55KTogdm9pZCB7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsaWQgPT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgdGhpcy5pc1ZhbGlkJC5uZXh0KHZhbGlkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvblZhbHVlQ2hhbmdlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVkTW9kZWxWYWx1ZSQubmV4dCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZVRlbXBsYXRlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVFZGl0b3IoKTtcbiAgICAgICAgdGhpcy5kaXNhYmxlU2F2ZSgpO1xuICAgICAgICB0aGlzLmRpc2FibGVNb3JlKCk7XG5cbiAgICAgICAgY29tYmluZUxhdGVzdChbdGhpcy51cGRhdGVkTW9kZWxWYWx1ZSQsIHRoaXMuX2Nhc2VEZWZpbml0aW9uTmFtZSQsIHRoaXMudGVtcGxhdGVLZXkkXSkucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoW3VwZGF0ZWRNb2RlbFZhbHVlLCBjYXNlRGVmaW5pdGlvbk5hbWUsIHRlbXBsYXRlS2V5XSkgPT5cbiAgICAgICAgICAgICAgICB0aGlzLnRlbXBsYXRlU2VydmljZS51cGRhdGVUZW1wbGF0ZShcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiB0ZW1wbGF0ZUtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2VEZWZpbml0aW9uTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHVwZGF0ZWRNb2RlbFZhbHVlLFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRha2UoMSlcbiAgICAgICAgKS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgbmV4dDogcmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmVuYWJsZU1vcmUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmVuYWJsZVNhdmUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmVuYWJsZUVkaXRvcigpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2hvd1N1Y2Nlc3NNZXNzYWdlKHJlc3VsdC5rZXkpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0TW9kZWwocmVzdWx0LmNvbnRlbnQpO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5pdGlhbE1vZGVsVmFsdWUkLm5leHQocmVzdWx0LmNvbnRlbnQpO1xuICAgICAgICAgICAgICAgIHRoaXMudGVtcGxhdGUkLm5leHQocmVzdWx0KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZW5hYmxlTW9yZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuZW5hYmxlU2F2ZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuZW5hYmxlRWRpdG9yKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25EZWxldGUodGVtcGxhdGVzOiBBcnJheTxhbnk+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZUVkaXRvcigpO1xuICAgICAgICB0aGlzLmRpc2FibGVTYXZlKCk7XG4gICAgICAgIHRoaXMuZGlzYWJsZU1vcmUoKTtcblxuICAgICAgICB0aGlzLl9jYXNlRGVmaW5pdGlvbk5hbWUkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKGNhc2VEZWZpbml0aW9uTmFtZSA9PlxuICAgICAgICAgICAgdGhpcy50ZW1wbGF0ZVNlcnZpY2UuZGVsZXRlVGVtcGxhdGVzKHtcbiAgICAgICAgICAgICAgICBjYXNlRGVmaW5pdGlvbk5hbWUsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIHRlbXBsYXRlc1xuICAgICAgICAgICAgfSkucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoXyA9PlxuICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtgL2Rvc3NpZXItbWFuYWdlbWVudC9kb3NzaWVyLyR7Y2FzZURlZmluaXRpb25OYW1lfWBdKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBzaG93RGVsZXRlTW9kYWwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2hvd0RlbGV0ZU1vZGFsJC5uZXh0KHRydWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgbG9hZFRlbXBsYXRlKCk6IHZvaWQge1xuICAgICAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLl9jYXNlRGVmaW5pdGlvbk5hbWUkLCB0aGlzLnRlbXBsYXRlS2V5JF0pLnBpcGUoXG4gICAgICAgICAgICB0YXAoKFtfLCBrZXldKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wYWdlVGl0bGVTZXJ2aWNlLnNldEN1c3RvbVBhZ2VUaXRsZShgVGV4dCBUZW1wbGF0ZTogJHtrZXl9YCwgdHJ1ZSk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoW2Nhc2VEZWZpbml0aW9uTmFtZSwga2V5XSkgPT4gdGhpcy50ZW1wbGF0ZVNlcnZpY2UuZ2V0VGV4dFRlbXBsYXRlKGNhc2VEZWZpbml0aW9uTmFtZSwga2V5KSksXG4gICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICApLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgICAgICAgdGhpcy5lbmFibGVNb3JlKCk7XG4gICAgICAgICAgICB0aGlzLmVuYWJsZVNhdmUoKTtcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlRWRpdG9yKCk7XG4gICAgICAgICAgICB0aGlzLnNldE1vZGVsKHJlc3VsdC5jb250ZW50KTtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbE1vZGVsVmFsdWUkLm5leHQocmVzdWx0LmNvbnRlbnQpO1xuICAgICAgICAgICAgdGhpcy50ZW1wbGF0ZSQubmV4dChyZXN1bHQpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRTYXZlQnV0dG9uTG9naWMoKTogdm9pZCB7XG4gICAgICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMudXBkYXRlZE1vZGVsVmFsdWUkLCB0aGlzLmluaXRpYWxNb2RlbFZhbHVlJCwgdGhpcy5pc1ZhbGlkJF0pLnN1YnNjcmliZShcbiAgICAgICAgICAgIChbdXBkYXRlZFZhbHVlLCBpbml0aWFsVmFsdWUsIGlzVmFsaWRdKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zYXZlRGlzYWJsZWQkLm5leHQoIWlzVmFsaWQgfHwgdXBkYXRlZFZhbHVlID09PSBpbml0aWFsVmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0TW9kZWwoY29udGVudDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMubW9kZWwkLm5leHQoe1xuICAgICAgICAgICAgdmFsdWU6IGNvbnRlbnQsXG4gICAgICAgICAgICBsYW5ndWFnZTogJ2ZyZWVtYXJrZXIyJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMudXBkYXRlZE1vZGVsVmFsdWUkLm5leHQoY29udGVudCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkaXNhYmxlTW9yZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tb3JlRGlzYWJsZWQkLm5leHQodHJ1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBlbmFibGVNb3JlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1vcmVEaXNhYmxlZCQubmV4dChmYWxzZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkaXNhYmxlU2F2ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zYXZlRGlzYWJsZWQkLm5leHQodHJ1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBlbmFibGVTYXZlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNhdmVEaXNhYmxlZCQubmV4dChmYWxzZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkaXNhYmxlRWRpdG9yKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVkaXRvckRpc2FibGVkJC5uZXh0KHRydWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZW5hYmxlRWRpdG9yKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVkaXRvckRpc2FibGVkJC5uZXh0KGZhbHNlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRCcmVhZGNydW1iKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jYXNlRGVmaW5pdGlvbk5hbWUkLnN1YnNjcmliZShjYXNlRGVmaW5pdGlvbk5hbWUgPT4ge1xuICAgICAgICAgICAgdGhpcy5icmVhZGNydW1iU2VydmljZS5zZXRUaGlyZEJyZWFkY3J1bWIoe1xuICAgICAgICAgICAgICAgIHJvdXRlOiBbYC9kb3NzaWVyLW1hbmFnZW1lbnQvZG9zc2llci8ke2Nhc2VEZWZpbml0aW9uTmFtZX1gXSxcbiAgICAgICAgICAgICAgICBjb250ZW50OiBjYXNlRGVmaW5pdGlvbk5hbWUsXG4gICAgICAgICAgICAgICAgaHJlZjogYC9kb3NzaWVyLW1hbmFnZW1lbnQvZG9zc2llci8ke2Nhc2VEZWZpbml0aW9uTmFtZX1gLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2hvd1N1Y2Nlc3NNZXNzYWdlKGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zaG93VG9hc3Qoe1xuICAgICAgICAgICAgY2FwdGlvbjogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoYCR7a2V5fSB3YXMgc2F2ZWQgc3VjY2Vzc2Z1bGx5YCwge1xuICAgICAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnLFxuICAgICAgICAgICAgZHVyYXRpb246IDQwMDAsXG4gICAgICAgICAgICBzaG93Q2xvc2U6IHRydWUsXG4gICAgICAgICAgICB0aXRsZTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ1NhdmVkIHN1Y2Nlc3NmdWxseScpLFxuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyMyBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjxuZy1jb250YWluZXJcbiAgICAgICAgKm5nSWY9XCJ7XG4gICAgbW9kZWw6IG1vZGVsJCB8IGFzeW5jLFxuICAgIHVwZGF0ZWRNb2RlbFZhbHVlOiB1cGRhdGVkTW9kZWxWYWx1ZSQgfCBhc3luYyxcbiAgICB0ZW1wbGF0ZTogdGVtcGxhdGUkIHwgYXN5bmMsXG4gIH0gYXMgb2JzXCI+XG5cbiAgICA8ZGl2IGNsYXNzPVwidGVtcGxhdGUtZXhwbGFuYXRpb25cIj5cbiAgICAgICAgVGV4dCBUZW1wbGF0ZXMgdXNlIDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwczovL2ZyZWVtYXJrZXIuYXBhY2hlLm9yZy9kb2NzL2RndWlfcXVpY2tzdGFydF9iYXNpY3MuaHRtbFwiPkZyZWVNYXJrZXI8L2E+XG4gICAgICAgIHRvIGNyZWF0ZSBwbGFjZWhvbGRlcnMgaW5zaWRlIHRoZSB0ZXh0LiBUaGUgZGF0YS1tb2RlbCBmb3IgRnJlZU1hcmtlciBpcyBiYXNlZCB1cG9uIG5lc3RlZCA8YVxuICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHBzOi8vZG9jcy52YWx0aW1vLm5sL2ZlYXR1cmVzL3ZhbHVlLXJlc29sdmVyc1wiPlZhbHRpbW8gdmFsdWUtcmVzb2x2ZXJzPC9hPlxuICAgICAgICB3aXRoIGEgc2xpZ2h0bHkgZGlmZmVyZW50IG5vdGF0aW9uLiBGb3IgZXhhbXBsZTogJCYjMTIzO2RvYy5maXJzdE5hbWUmIzEyNTsuIFJldHJpZXZlc1xuICAgICAgICB0aGUgYGZpcnN0TmFtZWAgZnJvbSB0aGUgY2FzZS5cblxuICAgICAgICBUZXh0IFRlbXBsYXRlcyBjYW4gYmUgdXNlZCBhcyB2YWx1ZSByZXNvbHZlcnMuIEZvciBleGFtcGxlOiAkJiMxMjM7dGVtcGxhdGUubXktdGV4dC10ZW1wbGF0ZSYjMTI1OyBvclxuICAgICAgICBgdGVtcGxhdGU6bXktdGV4dC10ZW1wbGF0ZWAuXG4gICAgPC9kaXY+XG5cbiAgICA8dmFsdGltby1lZGl0b3JcbiAgICAgICAgICAgIFttb2RlbF09XCJvYnMubW9kZWxcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIihlZGl0b3JEaXNhYmxlZCQgfCBhc3luYykgfHwgb2JzLnRlbXBsYXRlPy5yZWFkT25seVwiXG4gICAgICAgICAgICAodmFsaWRFdmVudCk9XCJvblZhbGlkKCRldmVudClcIlxuICAgICAgICAgICAgKHZhbHVlQ2hhbmdlRXZlbnQpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIFtmaXRQYWdlXT1cInRydWVcIlxuICAgICAgICAgICAgW2ZpdFBhZ2VFeHRyYVNwYWNlXT1cIjgwXCJcbiAgICA+PC92YWx0aW1vLWVkaXRvcj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctY29udGFpbmVyIHJlbmRlckluUGFnZUhlYWRlcj5cbiAgICA8bmctdGVtcGxhdGU+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJ7XG4gICAgICAgICAgICAgICAgbW9kZWw6IG1vZGVsJCB8IGFzeW5jLFxuICAgICAgICAgICAgICAgIG1vcmVEaXNhYmxlZDogbW9yZURpc2FibGVkJCB8IGFzeW5jLFxuICAgICAgICAgICAgICAgIHRlbXBsYXRlOiB0ZW1wbGF0ZSQgfCBhc3luYyxcbiAgICAgICAgICAgICB9IGFzIG9ic1wiXG4gICAgICAgICAgICAgY2xhc3M9XCJidXR0b25zLWNvbnRhaW5lclwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxjZHMtb3ZlcmZsb3ctbWVudSBjbGFzcz1cIm92ZXJmbG93LWJ1dHRvblwiPlxuICAgICAgICAgICAgICAgIDxjZHMtb3ZlcmZsb3ctbWVudS1vcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJvYnMubW9yZURpc2FibGVkIHx8IG9icy50ZW1wbGF0ZT8ucmVhZE9ubHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImRhbmdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWQpPVwic2hvd0RlbGV0ZU1vZGFsKClcIlxuICAgICAgICAgICAgICAgID57eyAnaW50ZXJmYWNlLmRlbGV0ZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L2Nkcy1vdmVyZmxvdy1tZW51LW9wdGlvblxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvY2RzLW92ZXJmbG93LW1lbnU+XG5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIihzYXZlRGlzYWJsZWQkIHwgYXN5bmMpIHx8IG9icy50ZW1wbGF0ZT8ucmVhZE9ubHlcIlxuICAgICAgICAgICAgICAgICAgICBjZHNCdXR0b249XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgc2l6ZT1cIm1kXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInVwZGF0ZVRlbXBsYXRlKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7ICdpbnRlcmZhY2Uuc2F2ZScgfCB0cmFuc2xhdGUgfX1cblxuICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJjZHMtLWJ0bl9faWNvblwiIGNkc0ljb249XCJzYXZlXCIgc2l6ZT1cIjE2XCI+PC9zdmc+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctY29udGFpbmVyPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwie3RlbXBsYXRlS2V5OiB0ZW1wbGF0ZUtleSQgfCBhc3luY30gYXMgb2JzXCI+XG4gICAgPHZhbHRpbW8tdGV4dC10ZW1wbGF0ZS1kZWxldGUtbW9kYWxcbiAgICAgICAgICAgIFtkZWxldGVSb3dLZXlzXT1cIlt7a2V5OiBvYnMudGVtcGxhdGVLZXksIHR5cGU6ICd0ZXh0J31dXCJcbiAgICAgICAgICAgIFtzaG93RGVsZXRlTW9kYWwkXT1cInNob3dEZWxldGVNb2RhbCRcIlxuICAgICAgICAgICAgKGRlbGV0ZUV2ZW50KT1cIm9uRGVsZXRlKCRldmVudClcIlxuICAgID5cbiAgICA8L3ZhbHRpbW8tdGV4dC10ZW1wbGF0ZS1kZWxldGUtbW9kYWw+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==