@valtimo-plugins/freemarker 8.2.0 → 8.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (18) hide show
  1. package/fesm2022/valtimo-plugins-freemarker.mjs +699 -405
  2. package/fesm2022/valtimo-plugins-freemarker.mjs.map +1 -1
  3. package/lib/models/freemarker-template.d.ts +10 -0
  4. package/lib/plugins/document-generator/components/document-template-editor/document-template-editor.component.d.ts +4 -0
  5. package/lib/plugins/document-generator/components/document-template-list/document-template-list.component.d.ts +2 -0
  6. package/lib/plugins/document-generator/components/generate-csv/generate-csv.component.d.ts +7 -3
  7. package/lib/plugins/document-generator/components/generate-pdf/generate-pdf.component.d.ts +7 -3
  8. package/lib/plugins/mail-template/components/generate-mail-content/generate-mail-content.component.d.ts +5 -1
  9. package/lib/plugins/mail-template/components/generate-mail-file/generate-mail-file.component.d.ts +5 -1
  10. package/lib/plugins/mail-template/components/mail-template-editor/mail-template-editor.component.d.ts +4 -0
  11. package/lib/plugins/mail-template/components/mail-template-list/mail-template-list.component.d.ts +2 -0
  12. package/lib/plugins/mail-template/mail-template-plugin.specification.d.ts +1 -1
  13. package/lib/plugins/text-template/components/generate-text-file/generate-text-file.component.d.ts +5 -1
  14. package/lib/plugins/text-template/components/text-template-editor/text-template-editor.component.d.ts +4 -0
  15. package/lib/plugins/text-template/components/text-template-list/text-template-list.component.d.ts +2 -0
  16. package/lib/services/freemarker-template-management.service.d.ts +10 -10
  17. package/lib/services/index.d.ts +1 -1
  18. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"valtimo-plugins-freemarker.mjs","sources":["../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/document-generator/models/config.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/document-generator/models/index.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/document-generator/components/document-generator-configuration/document-generator-configuration.component.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/document-generator/components/document-generator-configuration/document-generator-configuration.component.html","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/document-generator/components/document-template-delete-modal/document-template-delete-modal.component.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/document-generator/components/document-template-delete-modal/document-template-delete-modal.component.html","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/document-generator/components/document-template-add-edit-modal/document-template-add-edit-modal.component.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/document-generator/components/document-template-add-edit-modal/document-template-add-edit-modal.component.html","../../../../projects/valtimo-plugins/freemarker/src/lib/services/freemarker-template-management.service.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/services/index.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/document-generator/components/document-template-list/document-template-list.component.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/document-generator/components/document-template-list/document-template-list.component.html","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/document-generator/components/document-template-editor/document-template-editor.component.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/document-generator/components/document-template-editor/document-template-editor.component.html","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/document-generator/document-generator-management-routing.module.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/document-generator/components/generate-csv/generate-csv.component.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/document-generator/components/generate-csv/generate-csv.component.html","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/document-generator/components/generate-pdf/generate-pdf.component.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/document-generator/components/generate-pdf/generate-pdf.component.html","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/document-generator/document-generator-plugin-module.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/document-generator/assets/document-generator-plugin-logo.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/document-generator/assets/index.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/document-generator/document-generator-plugin.specification.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/mail-template/models/config.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/mail-template/models/index.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/mail-template/components/mail-template-configuration/mail-template-configuration.component.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/mail-template/components/mail-template-configuration/mail-template-configuration.component.html","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/mail-template/components/generate-mail-content/generate-mail-content.component.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/mail-template/components/generate-mail-content/generate-mail-content.component.html","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/mail-template/components/generate-mail-file/generate-mail-file.component.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/mail-template/components/generate-mail-file/generate-mail-file.component.html","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/mail-template/components/mail-template-delete-modal/mail-template-delete-modal.component.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/mail-template/components/mail-template-delete-modal/mail-template-delete-modal.component.html","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/mail-template/components/mail-template-add-edit-modal/mail-template-add-edit-modal.component.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/mail-template/components/mail-template-add-edit-modal/mail-template-add-edit-modal.component.html","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/mail-template/components/mail-template-list/mail-template-list.component.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/mail-template/components/mail-template-list/mail-template-list.component.html","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/mail-template/components/mail-template-editor/mail-template-editor.component.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/mail-template/components/mail-template-editor/mail-template-editor.component.html","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/mail-template/mail-template-management-routing.module.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/mail-template/mail-template-plugin-module.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/mail-template/assets/mail-template-plugin-logo.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/mail-template/assets/index.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/mail-template/mail-template-plugin.specification.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/text-template/models/config.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/text-template/models/index.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/text-template/components/text-template-configuration/text-template-configuration.component.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/text-template/components/text-template-configuration/text-template-configuration.component.html","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/text-template/components/text-template-delete-modal/text-template-delete-modal.component.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/text-template/components/text-template-delete-modal/text-template-delete-modal.component.html","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/text-template/components/text-template-add-edit-modal/text-template-add-edit-modal.component.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/text-template/components/text-template-add-edit-modal/text-template-add-edit-modal.component.html","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/text-template/components/text-template-list/text-template-list.component.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/text-template/components/text-template-list/text-template-list.component.html","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/text-template/components/text-template-editor/text-template-editor.component.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/text-template/components/text-template-editor/text-template-editor.component.html","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/text-template/text-template-management-routing.module.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/text-template/components/generate-text-file/generate-text-file.component.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/text-template/components/generate-text-file/generate-text-file.component.html","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/text-template/text-template-plugin-module.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/text-template/assets/text-template-plugin-logo.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/text-template/assets/index.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/text-template/text-template-plugin.specification.ts","../../../../projects/valtimo-plugins/freemarker/src/public_api.ts","../../../../projects/valtimo-plugins/freemarker/src/valtimo-plugins-freemarker.ts"],"sourcesContent":["/*\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\nimport {PluginConfigurationData} from '@valtimo/plugin';\n\ninterface DocumentTemplateConfig extends PluginConfigurationData {\n}\n\ninterface GeneratePdfFileConfig {\n templateKey: string;\n processVariableName: string;\n}\n\ninterface GenerateCsvFileConfig {\n templateKey: string;\n processVariableName: string;\n}\n\nconst DOCUMENT_TYPES: Array<string> = ['csv', 'pdf'];\n\nexport {DocumentTemplateConfig, GeneratePdfFileConfig, GenerateCsvFileConfig, DOCUMENT_TYPES};\n","/*\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\nexport * from './config';\n","/*\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\nimport {Component, EventEmitter, Input, OnDestroy, OnInit, Output} from '@angular/core';\nimport {PluginConfigurationComponent, PluginConfigurationData} from '@valtimo/plugin';\nimport {BehaviorSubject, combineLatest, Observable, Subscription, take} from 'rxjs';\nimport {DocumentTemplateConfig} from '../../models';\n\n@Component({\n standalone: false,\n selector: 'valtimo-document-template-configuration',\n templateUrl: './document-generator-configuration.component.html',\n})\nexport class DocumentGeneratorConfigurationComponent\n implements PluginConfigurationComponent, OnInit, OnDestroy\n{\n @Input() save$!: Observable<void>;\n @Input() disabled$!: Observable<boolean>;\n @Input() pluginId!: string;\n @Input() prefillConfiguration$!: Observable<DocumentTemplateConfig>;\n @Output() valid: EventEmitter<boolean> = new EventEmitter<boolean>();\n @Output() configuration: EventEmitter<PluginConfigurationData> = new EventEmitter<PluginConfigurationData>();\n\n constructor(\n ) {}\n\n private saveSubscription!: Subscription;\n private readonly formValue$ = new BehaviorSubject<DocumentTemplateConfig | null>(null);\n private readonly valid$ = new BehaviorSubject<boolean>(false);\n\n ngOnInit(): void {\n this.openSaveSubscription();\n }\n\n ngOnDestroy() {\n this.saveSubscription?.unsubscribe();\n }\n\n formValueChange(formValue: DocumentTemplateConfig): void {\n this.formValue$.next(formValue);\n this.handleValid(formValue);\n }\n\n private handleValid(formValue: DocumentTemplateConfig): void {\n const valid = !!(formValue.configurationTitle);\n\n this.valid$.next(valid);\n this.valid.emit(valid);\n }\n\n private openSaveSubscription(): void {\n this.saveSubscription = this.save$?.subscribe(_ => {\n combineLatest([this.formValue$, this.valid$])\n .pipe(take(1))\n .subscribe(([formValue, valid]) => {\n if (valid) {\n this.configuration.emit(formValue!);\n this.injectCaseTab();\n }\n });\n });\n }\n\n private injectCaseTab() {\n }\n}\n","<!--\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=\"Document Generator Plugin\"\n >\n </v-input>\n</v-form>\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\nimport {ChangeDetectionStrategy, Component, EventEmitter, Input, Output} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {ConfirmationModalModule} from '@valtimo/components';\n\n@Component({\n standalone: true,\n selector: 'valtimo-document-template-delete-modal',\n templateUrl: './document-template-delete-modal.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ConfirmationModalModule\n ]\n})\nexport class DocumentTemplateDeleteModalComponent {\n @Input() deleteRowKeys: Array<string>;\n @Input() showDeleteModal$: Observable<boolean>;\n @Output() deleteEvent = new EventEmitter<Array<any>>();\n\n public onDelete(templates: Array<any>): void {\n this.deleteEvent.emit(templates);\n }\n}\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\n<valtimo-confirmation-modal\n confirmButtonDocumentTranslationKey=\"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","/*\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\nimport {ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output,} from '@angular/core';\nimport {AbstractControl, FormBuilder, ReactiveFormsModule, Validators} from '@angular/forms';\nimport {TemplateMetadataModal} from '../../../../models';\nimport {CARBON_CONSTANTS, KeyGeneratorService, ValtimoCdsModalDirective} from '@valtimo/components';\nimport {CommonModule} from '@angular/common';\nimport {ButtonModule, ComboBoxModule, InputModule, ListItem, ModalModule} from 'carbon-components-angular';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {DOCUMENT_TYPES} from '../../models';\n\n@Component({\n standalone: true,\n selector: 'valtimo-document-template-add-edit-modal',\n templateUrl: './document-template-add-edit-modal.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n ButtonModule,\n TranslateModule,\n ModalModule,\n ReactiveFormsModule,\n InputModule,\n ComboBoxModule,\n ValtimoCdsModalDirective,\n ]\n})\nexport class DocumentTemplateAddEditModalComponent implements OnInit {\n @Input() open = false;\n @Input() modalType: TemplateMetadataModal = 'add';\n\n @Input() set defaultKeyValue(value: string) {\n this._defaultKeyValue = value;\n this.setDefaultKeyValue(value);\n }\n\n @Input() set defaultTypeValue(value: string) {\n this._defaultTypeValue = value;\n this.setDefaultTypeValue(value);\n }\n\n @Output() closeEvent = new EventEmitter<{ key: string; type: string } | null>();\n\n public form = this.fb.group({\n key: this.fb.control('', Validators.required),\n type: this.fb.control(undefined, Validators.required),\n });\n\n private _defaultKeyValue!: string;\n private _defaultTypeValue!: string;\n\n public get key(): AbstractControl<string> {\n const key = this.form?.get('key');\n if (!key?.value) {\n return key;\n }\n key.setValue(this.keyGeneratorService.getUniqueKey(key.value, []));\n return key;\n }\n\n public get type(): AbstractControl<string> {\n return this.form?.get('type');\n }\n\n public readonly documentTypeSelectItems: Array<ListItem> = DOCUMENT_TYPES.map(item => ({\n id: item,\n content: item,\n selected: false,\n }));\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly keyGeneratorService: KeyGeneratorService,\n ) {\n }\n\n public ngOnInit(): void {\n }\n\n public onCancel(): void {\n this.closeEvent.emit(null);\n this.resetForm();\n }\n\n public onConfirm(): void {\n if (!this.key || !this.type) {\n return;\n }\n\n this.closeEvent.emit({key: this.key.value, type: this.type.value});\n this.resetForm();\n }\n\n private setDefaultKeyValue(value: string) {\n this.key.setValue(value);\n }\n\n private setDefaultTypeValue(value: string) {\n this.type.setValue(value);\n }\n\n private resetForm(): void {\n setTimeout(() => {\n this.form.reset();\n if (this.modalType === 'edit') {\n this.setDefaultKeyValue(this._defaultKeyValue);\n this.setDefaultTypeValue(this._defaultTypeValue);\n }\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n}\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\n<cds-modal\n *ngIf=\"{\n isAdd: modalType === '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 />\n </cds-label>\n <cds-combo-box\n formControlName=\"type\"\n [label]=\"'Document type'\"\n [dropUp]=\"false\"\n [items]=\"documentTypeSelectItems\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\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","/*\n * Copyright 2015-2024 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\nimport {Injectable} from '@angular/core';\nimport {HttpClient, HttpHeaders} from '@angular/common/http';\nimport {map, Observable} from 'rxjs';\nimport {\n DeleteTemplatesRequest,\n Template,\n TemplateListItem,\n TemplatePreviewRequest,\n TemplateResponse,\n TemplateType,\n UpdateTemplateRequest,\n} from '../models';\nimport {ConfigService, InterceptorSkip, Page} from '@valtimo/shared';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FreemarkerTemplateManagementService {\n\n private readonly valtimoEndpointUri: string;\n\n constructor(\n private readonly configService: ConfigService,\n private readonly http: HttpClient\n ) {\n this.valtimoEndpointUri = `${this.configService.config.valtimoApi.endpointUri}management/`;\n }\n\n public getAllMailTemplates(caseDefinitionKey?: string, caseDefinitionVersionTag?: string): Observable<Page<TemplateListItem>> {\n return this.getTemplates(caseDefinitionKey, caseDefinitionVersionTag, 'mail', undefined, undefined, 0, 10000);\n }\n\n public getAllTextTemplates(caseDefinitionKey?: string, caseDefinitionVersionTag?: string): Observable<Page<TemplateListItem>> {\n return this.getTemplates(caseDefinitionKey, caseDefinitionVersionTag, 'text', undefined, undefined, 0, 10000);\n }\n\n public getAllDocumentTemplates(caseDefinitionKey?: string, caseDefinitionVersionTag?: string): Observable<Page<TemplateListItem>> {\n return this.getTemplates(caseDefinitionKey, caseDefinitionVersionTag, undefined, ['csv', 'pdf'], undefined, 0, 10000);\n }\n\n public getAllTemplates(caseDefinitionKey?: string, caseDefinitionVersionTag?: string, templateType?: TemplateType): Observable<Page<TemplateListItem>> {\n return this.getTemplates(caseDefinitionKey, caseDefinitionVersionTag, templateType, undefined, undefined, 0, 10000);\n }\n\n public getTemplates(\n caseDefinitionKey?: string,\n caseDefinitionVersionTag?: string,\n templateType?: TemplateType,\n templateTypes?: TemplateType[],\n templateKey?: string,\n page?: number,\n pageSize?: number,\n ): Observable<Page<TemplateListItem>> {\n const params = {\n caseDefinitionKey,\n caseDefinitionVersionTag,\n templateType,\n templateTypes,\n templateKey,\n page,\n size: pageSize\n };\n Object.keys(params).forEach(key => {\n if (params[key] == undefined) {\n delete params[key];\n }\n });\n return this.http.get<Page<TemplateListItem>>(\n `${this.valtimoEndpointUri}v1/template`,\n {params}\n );\n }\n\n public getMailTemplate(caseDefinitionKey: string, caseDefinitionVersionTag: string, key: string): Observable<TemplateResponse> {\n return this.getTemplate(caseDefinitionKey, caseDefinitionVersionTag, 'mail', key);\n }\n\n public getTextTemplate(caseDefinitionKey: string, caseDefinitionVersionTag: string, key: string): Observable<TemplateResponse> {\n return this.getTemplate(caseDefinitionKey, caseDefinitionVersionTag, 'text', key);\n }\n\n public getTemplate(caseDefinitionKey: string, caseDefinitionVersionTag: string, templateType: TemplateType, key: string): Observable<TemplateResponse> {\n return this.http.get<TemplateResponse>(\n `${this.valtimoEndpointUri}v1/case-definition/${caseDefinitionKey}/version/${caseDefinitionVersionTag}/template-type/${templateType}/template/${key}`\n );\n }\n\n public addTemplate(template: Template): Observable<TemplateResponse> {\n return this.http.post<TemplateResponse>(`${this.valtimoEndpointUri}v1/template`, template);\n }\n\n public deleteTemplates(request: DeleteTemplatesRequest): Observable<null> {\n return this.http.delete<null>(`${this.valtimoEndpointUri}v1/template`, {body: request});\n }\n\n public updateTemplate(template: UpdateTemplateRequest): Observable<TemplateResponse> {\n return this.http.put<TemplateResponse>(`${this.valtimoEndpointUri}v1/template`, template);\n }\n\n public previewTemplate(template: TemplatePreviewRequest): Observable<Blob> {\n return this.http.post(`${this.valtimoEndpointUri}v1/template/preview`, template, {responseType: 'blob'});\n }\n\n public isFinal(\n caseDefinitionKey: string,\n caseDefinitionVersionTag: string\n ): Observable<boolean> {\n return this.http\n .get<any>(\n `${this.valtimoEndpointUri}v1/case-definition/${caseDefinitionKey}/version/${caseDefinitionVersionTag}`,\n {\n headers: new HttpHeaders().set(InterceptorSkip, '403'),\n }\n )\n .pipe(map(caseDefinition => caseDefinition.final));\n }\n}\n","/*\n * Copyright 2015-2024 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\nexport * from './freemarker-template-management.service';\n\n","/*\n * Copyright 2015-2024 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\nimport {ChangeDetectionStrategy, Component, OnInit, ViewChild,} from '@angular/core';\nimport {BehaviorSubject, combineLatest, filter, map, Observable, startWith, switchMap, take} from 'rxjs';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {CarbonListComponent, CarbonListModule, ColumnConfig, ViewType} from '@valtimo/components';\nimport {FreemarkerTemplateManagementService} from '../../../../services';\nimport {TemplateListItem} from '../../../../models';\nimport {CaseManagementParams, EnvironmentService, getCaseManagementRouteParams} from '@valtimo/shared';\nimport {CommonModule} from '@angular/common';\nimport {ButtonModule} from 'carbon-components-angular';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {DocumentTemplateDeleteModalComponent} from '../document-template-delete-modal/document-template-delete-modal.component';\nimport {DocumentTemplateAddEditModalComponent} from '../document-template-add-edit-modal/document-template-add-edit-modal.component';\n\n@Component({\n standalone: true,\n templateUrl: './document-template-list.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n CarbonListModule,\n ButtonModule,\n TranslateModule,\n DocumentTemplateDeleteModalComponent,\n DocumentTemplateAddEditModalComponent\n ]\n})\nexport class DocumentTemplateListComponent implements OnInit {\n @ViewChild(CarbonListComponent) carbonList: CarbonListComponent;\n\n public fields: ColumnConfig[] = [\n {\n viewType: ViewType.TEXT,\n key: 'key',\n label: 'Key',\n },\n {\n viewType: ViewType.TEXT,\n key: 'type',\n label: 'Document type',\n },\n ];\n\n private readonly _caseDefinitionId$: Observable<CaseManagementParams> = getCaseManagementRouteParams(this.route).pipe(\n filter((params: CaseManagementParams | undefined) => !!params?.caseDefinitionKey),\n );\n\n public readonly readOnly$: Observable<boolean> = this._caseDefinitionId$.pipe(\n switchMap(caseDefinitionId => combineLatest([\n this.environmentService.canUpdateGlobalConfiguration(),\n this.templateService.isFinal(caseDefinitionId.caseDefinitionKey, caseDefinitionId.caseDefinitionVersionTag)\n ]).pipe(\n map(([canUpdateGlobal, isFinalCase]) => !canUpdateGlobal || isFinalCase),\n startWith(true)\n )\n )\n );\n\n public readonly templates$ = new BehaviorSubject<TemplateListItem[] | null>(null);\n public readonly showAddModal$ = new BehaviorSubject<boolean>(false);\n public readonly showDeleteModal$ = new BehaviorSubject<boolean>(false);\n public readonly selectedRowKeys$ = new BehaviorSubject<Array<any>>([]);\n public readonly loading$ = new BehaviorSubject<boolean>(true);\n\n constructor(\n private readonly templateService: FreemarkerTemplateManagementService,\n private readonly router: Router,\n private readonly route: ActivatedRoute,\n private readonly environmentService: EnvironmentService,\n ) {\n }\n\n public ngOnInit(): void {\n this.reloadTemplateList();\n }\n\n public openAddModal(): void {\n this.showAddModal$.next(true);\n }\n\n public onAdd(data?: any): void {\n if (!data) {\n this.showAddModal$.next(false);\n return;\n }\n\n this._caseDefinitionId$.pipe(\n take(1),\n switchMap(caseDefinitionId => this.templateService.addTemplate({\n caseDefinitionKey: caseDefinitionId.caseDefinitionKey,\n caseDefinitionVersionTag: caseDefinitionId.caseDefinitionVersionTag,\n key: data.key,\n type: data.type.id,\n content: ''\n }))\n ).subscribe(template => {\n this.showAddModal$.next(false);\n this.gotoDocumentTemplateEditor(template.caseDefinitionKey, template.caseDefinitionVersionTag, template.key, template.type);\n });\n }\n\n public showDeleteModal(): void {\n this.setSelectedTemplateKeys();\n this.showDeleteModal$.next(true);\n }\n\n public onDelete(templates: Array<string>): void {\n console.log(templates)\n this.loading$.next(true);\n this._caseDefinitionId$.pipe(\n take(1),\n switchMap(caseDefinitionId => this.templateService.deleteTemplates({\n caseDefinitionKey: caseDefinitionId.caseDefinitionKey,\n caseDefinitionVersionTag: caseDefinitionId.caseDefinitionVersionTag,\n templates\n })),\n ).subscribe(_ => {\n this.reloadTemplateList();\n });\n }\n\n public onRowClick(template: TemplateListItem): void {\n this._caseDefinitionId$.pipe(take(1)).subscribe(caseDefinitionId =>\n this.gotoDocumentTemplateEditor(caseDefinitionId.caseDefinitionKey, caseDefinitionId.caseDefinitionVersionTag, template.key, template.type)\n );\n }\n\n private gotoDocumentTemplateEditor(caseDefinitionKey: string, caseDefinitionVersionTag: string, key: string, type: string): void {\n this.router.navigate([`/case-management/case/${caseDefinitionKey}/version/${caseDefinitionVersionTag}/document-template/${key}/${type}`]);\n }\n\n private reloadTemplateList(): void {\n this.loading$.next(true);\n this._caseDefinitionId$.pipe(\n switchMap(caseDefinitionId => this.templateService.getAllDocumentTemplates(caseDefinitionId.caseDefinitionKey, caseDefinitionId.caseDefinitionVersionTag)),\n map(templatePage => templatePage.content),\n take(1)\n ).subscribe(templateListItems => {\n this.templates$.next(templateListItems);\n this.loading$.next(false);\n });\n }\n\n private setSelectedTemplateKeys(): void {\n this.selectedRowKeys$.next(this.carbonList.selectedItems.map((template: TemplateListItem) => ({key: template.key, type: template.type})));\n }\n}\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\n<valtimo-carbon-list\n [header]=\"false\"\n [items]=\"templates$ | async\"\n [fields]=\"fields\"\n [loading]=\"loading$ | async\"\n [showSelectionColumn]=\"!(readOnly$ | async)\"\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-document-template-add-edit-modal\n [open]=\"showAddModal$ | async\"\n (closeEvent)=\"onAdd($event)\"\n></valtimo-document-template-add-edit-modal>\n\n<ng-container *ngIf=\"{selectedRowKeys: selectedRowKeys$ | async} as obs\">\n <valtimo-document-template-delete-modal\n [deleteRowKeys]=\"obs.selectedRowKeys\"\n [showDeleteModal$]=\"showDeleteModal$\"\n (deleteEvent)=\"onDelete($event)\"\n >\n </valtimo-document-template-delete-modal>\n</ng-container>\n\n<ng-template #addTemplateButton>\n <button cdsButton=\"primary\"\n [disabled]=\"readOnly$ | async\"\n (click)=\"openAddModal()\">\n {{ 'Add' }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\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\nimport {AfterViewInit, ChangeDetectionStrategy, Component, OnDestroy, OnInit} from '@angular/core';\nimport {BehaviorSubject, combineLatest, filter, map, Observable, of, startWith, switchMap, take, tap} from 'rxjs';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {\n BreadcrumbService,\n CarbonListModule,\n EditorModel,\n EditorModule,\n PageTitleService,\n RenderInPageHeaderDirective\n} from '@valtimo/components';\nimport {ButtonModule, DialogModule, NotificationService, TabsModule} from 'carbon-components-angular';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {FreemarkerTemplateManagementService} from '../../../../services';\nimport {TemplateResponse, TemplateType} from '../../../../models';\nimport {CaseManagementParams, EnvironmentService, getCaseManagementRouteParams} from '@valtimo/shared';\nimport {CommonModule} from '@angular/common';\nimport {DocumentTemplateDeleteModalComponent} from '../document-template-delete-modal/document-template-delete-modal.component';\n\n@Component({\n standalone: true,\n templateUrl: './document-template-editor.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['./document-template-editor.component.scss'],\n providers: [NotificationService],\n imports: [\n CommonModule,\n TranslateModule,\n TabsModule,\n DialogModule,\n DocumentTemplateDeleteModalComponent,\n CarbonListModule,\n ButtonModule,\n EditorModule,\n RenderInPageHeaderDirective,\n ]\n})\nexport class DocumentTemplateEditorComponent implements OnInit, AfterViewInit, OnDestroy {\n public readonly model$ = new BehaviorSubject<EditorModel | null>(null);\n public readonly template$ = new BehaviorSubject<TemplateResponse | null>(null);\n public readonly saveDisabled$ = new BehaviorSubject<boolean>(true);\n public readonly editorDisabled$ = new BehaviorSubject<boolean>(false);\n public readonly moreDisabled$ = new BehaviorSubject<boolean>(true);\n public readonly showDeleteModal$ = new BehaviorSubject<boolean>(false);\n public readonly updatedModelValue$ = new BehaviorSubject<string>('');\n\n private readonly _caseDefinitionId$: Observable<CaseManagementParams> = getCaseManagementRouteParams(this.route).pipe(\n filter((params: CaseManagementParams | undefined) => !!params?.caseDefinitionKey),\n );\n\n public readonly templateKey$: Observable<string> = combineLatest([this.route.params, this.route.parent.params]).pipe(\n map(([params, parentParams]) => params?.templateKey || parentParams?.templateKey),\n filter(templateKey => !!templateKey)\n );\n\n public readonly templateType$: Observable<TemplateType> = combineLatest([this.route.params, this.route.parent.params]).pipe(\n map(([params, parentParams]) => params?.templateType || parentParams?.templateType),\n filter(templateType => !!templateType)\n );\n\n public readonly readOnly$: Observable<boolean> = this._caseDefinitionId$.pipe(\n switchMap(caseDefinitionId => combineLatest([\n this.environmentService.canUpdateGlobalConfiguration(),\n this.templateService.isFinal(caseDefinitionId.caseDefinitionKey, caseDefinitionId.caseDefinitionVersionTag)\n ]).pipe(\n map(([canUpdateGlobal, isFinalCase]) => !canUpdateGlobal || isFinalCase),\n startWith(true)\n )\n )\n );\n\n constructor(\n private readonly templateService: FreemarkerTemplateManagementService,\n private readonly route: ActivatedRoute,\n private readonly pageTitleService: PageTitleService,\n private readonly router: Router,\n private readonly notificationService: NotificationService,\n private readonly translateService: TranslateService,\n private readonly breadcrumbService: BreadcrumbService,\n private readonly environmentService: EnvironmentService,\n ) {\n }\n\n public ngOnInit(): void {\n this.loadTemplate();\n }\n\n public ngAfterViewInit(): void {\n this.initBreadcrumb();\n }\n\n public ngOnDestroy(): void {\n this.pageTitleService.enableReset();\n this.breadcrumbService.clearThirdBreadcrumb();\n this.breadcrumbService.clearFourthBreadcrumb();\n }\n\n public onValid(valid: boolean): void {\n this.saveDisabled$.next(valid === false);\n }\n\n public onValueChange(value: string): void {\n this.updatedModelValue$.next(value);\n }\n\n public updateTemplate(): void {\n this.disableEditor();\n this.disableSave();\n this.disableMore();\n\n combineLatest([this.updatedModelValue$, this._caseDefinitionId$, this.templateKey$, this.templateType$]).pipe(\n switchMap(([updatedModelValue, caseDefinitionId, templateKey, templateType]) =>\n this.templateService.updateTemplate(\n {\n key: templateKey,\n caseDefinitionKey: caseDefinitionId.caseDefinitionKey,\n caseDefinitionVersionTag: caseDefinitionId.caseDefinitionVersionTag,\n type: templateType,\n content: updatedModelValue,\n }\n )\n ),\n take(1)\n ).subscribe({\n next: result => {\n this.enableMore();\n this.enableSave();\n this.enableEditor();\n this.showSuccessMessage(result.key);\n this.setModel(result.content);\n this.template$.next(result);\n },\n error: () => {\n this.enableMore();\n this.enableSave();\n this.enableEditor();\n },\n });\n }\n\n public onDelete(templates: Array<any>): void {\n console.log(templates);\n this.disableEditor();\n this.disableSave();\n this.disableMore();\n\n this._caseDefinitionId$.pipe(take(1)).subscribe(caseDefinitionId =>\n this.templateService.deleteTemplates({\n caseDefinitionKey: caseDefinitionId.caseDefinitionKey,\n caseDefinitionVersionTag: caseDefinitionId.caseDefinitionVersionTag,\n templates\n }).pipe(take(1)).subscribe(_ =>\n this.router.navigate([`/case-management/case/${caseDefinitionId.caseDefinitionKey}/version/${caseDefinitionId.caseDefinitionVersionTag}/document-template`])\n )\n );\n }\n\n public showDeleteModal(): void {\n this.showDeleteModal$.next(true);\n }\n\n private loadTemplate(): void {\n combineLatest([this._caseDefinitionId$, this.templateKey$, this.templateType$]).pipe(\n tap(([_, key, type]) => {\n this.pageTitleService.setCustomPageTitle(`Document: ${key}.${type}`, true);\n }),\n switchMap(([caseDefinitionId, key, type]) => this.templateService.getTemplate(caseDefinitionId.caseDefinitionKey, caseDefinitionId.caseDefinitionVersionTag, type, key)),\n take(1),\n ).subscribe(result => {\n this.enableMore();\n this.enableSave();\n this.enableEditor();\n this.setModel(result.content);\n this.template$.next(result);\n });\n }\n\n private setModel(content: string): void {\n this.model$.next({\n value: content,\n language: 'freemarker2',\n });\n this.updatedModelValue$.next(content);\n }\n\n private disableMore(): void {\n this.moreDisabled$.next(true);\n }\n\n private enableMore(): void {\n this.moreDisabled$.next(false);\n }\n\n private disableSave(): void {\n this.saveDisabled$.next(true);\n }\n\n private enableSave(): void {\n this.saveDisabled$.next(false);\n }\n\n private disableEditor(): void {\n this.editorDisabled$.next(true);\n }\n\n private enableEditor(): void {\n this.editorDisabled$.next(false);\n }\n\n public onSelectedTabPreview(): void {\n setTimeout(() => {\n const preview = document.getElementById('preview-iframe') as HTMLIFrameElement;\n if (preview) {\n preview.src = window.URL.createObjectURL(new Blob([\"\"], { type: \"text/plain\" }));\n combineLatest([this.updatedModelValue$, this.template$]).pipe(\n take(1),\n switchMap(([updatedModelValue, template]) =>\n combineLatest([this.templateService.previewTemplate(\n {\n fileName: `${template.key}.${template.type}`,\n content: updatedModelValue,\n }\n ), of(`${template.key}.${template.type}`)])\n )\n ).subscribe({\n next: ([blob, filename]) => {\n preview.src = URL.createObjectURL(blob);\n },\n error: (err) => {\n console.error(\"Preview failed:\", err);\n\n const errorBlob = new Blob(\n [`<html><body><h2>Error loading preview</h2><p>See logs for more information</p></body></html>`],\n { type: 'text/html' }\n );\n preview.src = URL.createObjectURL(errorBlob);\n }\n });\n }\n }, 100);\n }\n\n private initBreadcrumb(): void {\n this._caseDefinitionId$.subscribe(caseDefinitionId => {\n this.breadcrumbService.setThirdBreadcrumb({\n route: [`/case-management/case/${caseDefinitionId.caseDefinitionKey}/version/${caseDefinitionId.caseDefinitionVersionTag}`],\n content: `${caseDefinitionId.caseDefinitionKey}:${caseDefinitionId.caseDefinitionVersionTag}`,\n href: `/case-management/case/${caseDefinitionId.caseDefinitionKey}/version/${caseDefinitionId.caseDefinitionVersionTag}`,\n });\n this.breadcrumbService.setFourthBreadcrumb({\n route: [`/case-management/case/${caseDefinitionId.caseDefinitionKey}/version/${caseDefinitionId.caseDefinitionVersionTag}/document-template`],\n content: 'Document template',\n href: `/case-management/case/${caseDefinitionId.caseDefinitionKey}/version/${caseDefinitionId.caseDefinitionVersionTag}/document-template`,\n });\n });\n }\n\n private showSuccessMessage(key: string): void {\n this.notificationService.showToast({\n caption: this.translateService.instant(`${key} was saved successfully`, {\n key,\n }),\n type: 'success',\n duration: 4000,\n showClose: true,\n title: this.translateService.instant('Saved successfully'),\n });\n }\n}\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\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 @if (obs?.template?.type === 'pdf') {\n <p>\n <strong>PDF Templates</strong> use HTML in combination with\n <a href=\"https://freemarker.apache.org/docs/dgui_quickstart_basics.html\" target=\"_blank\"\n rel=\"noopener noreferrer\">\n FreeMarker\n </a>\n to define placeholders within the HTML structure. The FreeMarker data model is based on nested\n <a href=\"https://docs.valtimo.nl/features/value-resolvers\" target=\"_blank\" rel=\"noopener noreferrer\">\n Valtimo value resolvers\n </a>,\n but uses a slightly different syntax.\n </p>\n <p>\n For example, <code>$&#123;doc.firstName&#125;</code> retrieves the\n <code>firstName</code> value from the case.\n </p>\n <p>\n The notation <code>&lt;#list docs as doc&gt;...&lt;/#list&gt;</code> streams all documents in the\n current case.\n </p>\n } @else {\n <p>\n <strong>CSV Templates</strong> use a semicolon (<code>;</code>) as a separator.\n <a href=\"https://freemarker.apache.org/docs/dgui_quickstart_basics.html\" target=\"_blank\"\n rel=\"noopener noreferrer\">\n FreeMarker\n </a>\n is used to define placeholders within the CSV content. The FreeMarker data model is based on nested\n <a href=\"https://docs.valtimo.nl/features/value-resolvers\" target=\"_blank\" rel=\"noopener noreferrer\">\n Valtimo value resolvers\n </a>,\n but uses a slightly different syntax.\n </p>\n <p>\n For example, <code>$&#123;doc.firstName&#125;</code> retrieves the\n <code>firstName</code> value from the case.\n </p>\n <p>\n The notation <code>&lt;#list docs as doc&gt;...&lt;/#list&gt;</code> streams all documents in the\n current case.\n </p>\n }\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) || (readOnly$ | async)\"\n (validEvent)=\"onValid($event)\"\n (valueChangeEvent)=\"onValueChange($event)\"\n [fitPage]=\"true\"\n [fitPageExtraSpace]=\"80\"\n ></valtimo-editor>\n </cds-tab>\n <cds-tab [heading]=\"'Preview'\" (selected)=\"onSelectedTabPreview()\">\n <iframe title=\"Preview\" id=\"preview-iframe\">\n </iframe>\n </cds-tab>\n </cds-tabs>\n\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 || (readOnly$ | async)\"\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) || (readOnly$ | async)\"\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, templateType: templateType$ | async} as obs\">\n <valtimo-document-template-delete-modal\n [deleteRowKeys]=\"[{key: obs.templateKey, type: obs.templateType}]\"\n [showDeleteModal$]=\"showDeleteModal$\"\n (deleteEvent)=\"onDelete($event)\"\n >\n </valtimo-document-template-delete-modal>\n</ng-container>\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 */\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {ROLE_ADMIN} from '@valtimo/shared';\nimport {AuthGuardService} from '@valtimo/security';\nimport {DocumentTemplateEditorComponent} from './components/document-template-editor/document-template-editor.component';\n\nconst routes: Routes = [\n {\n path: 'case-management/case/:caseDefinitionKey/version/:caseDefinitionVersionTag/document-template/:templateKey/:templateType',\n component: DocumentTemplateEditorComponent,\n canActivate: [AuthGuardService],\n data: {\n title: 'Document Template Editor',\n templates: [ROLE_ADMIN],\n customPageTitle: true,\n },\n },\n];\n\n@NgModule({\n imports: [CommonModule, RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class TemplateManagementRoutingModule {}\n","/*\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\nimport {Component, EventEmitter, Input, OnDestroy, OnInit, Output} from '@angular/core';\nimport {FunctionConfigurationComponent, FunctionConfigurationData} from '@valtimo/plugin';\nimport {BehaviorSubject, combineLatest, map, Observable, Subscription, switchMap, take} from 'rxjs';\nimport {GenerateCsvFileConfig} from '../../models';\nimport {FreemarkerTemplateManagementService} from '../../../../services';\nimport {CaseManagementParams, ManagementContext} from '@valtimo/shared';\nimport {SelectItem} from '@valtimo/components';\n\n@Component({\n standalone: false,\n selector: 'valtimo-generate-csv-configuration',\n templateUrl: './generate-csv.component.html',\n})\nexport class GenerateCsvComponent\n implements FunctionConfigurationComponent, OnInit, OnDestroy {\n @Input() save$!: Observable<void>;\n @Input() disabled$!: Observable<boolean>;\n @Input() pluginId!: string;\n @Input() prefillConfiguration$!: Observable<GenerateCsvFileConfig>;\n @Input() context$: Observable<[ManagementContext, CaseManagementParams]>;\n @Output() valid: EventEmitter<boolean> = new EventEmitter<boolean>();\n @Output() configuration: EventEmitter<FunctionConfigurationData> = new EventEmitter<FunctionConfigurationData>();\n\n private saveSubscription!: Subscription;\n private readonly formValue$ = new BehaviorSubject<GenerateCsvFileConfig | null>(null);\n private readonly valid$ = new BehaviorSubject<boolean>(false);\n\n readonly loading$ = new BehaviorSubject<boolean>(true);\n\n readonly templateListItems$ = new BehaviorSubject<Array<SelectItem>>(undefined);\n\n constructor(\n private readonly templateService: FreemarkerTemplateManagementService\n ) {\n }\n\n ngOnInit(): void {\n this.loadTemplateListItems();\n this.openSaveSubscription();\n }\n\n ngOnDestroy(): void {\n this.saveSubscription?.unsubscribe();\n }\n\n formValueChange(formValue: GenerateCsvFileConfig): void {\n this.formValue$.next(formValue);\n this.handleValid(formValue);\n }\n\n private loadTemplateListItems() {\n this.context$.pipe(\n switchMap(([_, params]) => this.templateService.getAllTemplates(\n params.caseDefinitionKey,\n params.caseDefinitionVersionTag,\n 'csv'\n )),\n map(results => results.content.map(template => ({\n id: template.key,\n text: template.key,\n })))\n ).subscribe(templateListItems => {\n this.templateListItems$.next(templateListItems);\n this.loading$.next(false);\n }\n );\n }\n\n private handleValid(formValue: GenerateCsvFileConfig): void {\n const valid = !!(formValue.templateKey && formValue.processVariableName);\n\n this.valid$.next(valid);\n this.valid.emit(valid);\n }\n\n private openSaveSubscription(): void {\n this.saveSubscription = this.save$?.subscribe(save => {\n combineLatest([this.formValue$, this.valid$])\n .pipe(take(1))\n .subscribe(([formValue, valid]) => {\n if (valid) {\n this.configuration.emit(formValue!);\n }\n });\n });\n }\n}\n","<!--\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<ng-container *ngIf=\"{\n disabled: disabled$ | async,\n prefill: prefillConfiguration$ ? (prefillConfiguration$ | async) : null,\n templateListItems: templateListItems$ | async,\n loading: loading$ | async,\n } as obs\"\n>\n <ng-container *ngIf=\"obs.loading === false; else loading\">\n <v-paragraph [margin]=\"true\" [italic]=\"true\">\n {{ 'generateDocumentFileDescription' | pluginTranslate: pluginId | async }}\n </v-paragraph>\n <v-form (valueChange)=\"formValueChange($event)\">\n <v-select\n [items]=\"obs.templateListItems\"\n [margin]=\"true\"\n [widthInPx]=\"350\"\n name=\"templateKey\"\n [title]=\"'csvTemplateKey' | pluginTranslate: pluginId | async\"\n [disabled]=\"obs.disabled\"\n [defaultSelectionId]=\"obs.prefill?.templateKey\"\n [required]=\"true\"\n [loading]=\"!obs.templateListItems\"\n [tooltip]=\"'templateKeyTooltip' | pluginTranslate: pluginId | async\"\n ></v-select>\n <v-input\n name=\"processVariableName\"\n [title]=\"'processVariableName' | pluginTranslate: pluginId | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.prefill?.processVariableName || 'contentId'\"\n [disabled]=\"obs.disabled\"\n [tooltip]=\"'processVariableNameTooltip' | pluginTranslate: pluginId | async\"\n ></v-input>\n </v-form>\n </ng-container>\n</ng-container>\n\n<ng-template #loading>\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n</ng-template>\n","/*\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\nimport {Component, EventEmitter, Input, OnDestroy, OnInit, Output} from '@angular/core';\nimport {FunctionConfigurationComponent, FunctionConfigurationData} from '@valtimo/plugin';\nimport {BehaviorSubject, combineLatest, map, Observable, Subscription, switchMap, take} from 'rxjs';\nimport {GeneratePdfFileConfig} from '../../models';\nimport {FreemarkerTemplateManagementService} from '../../../../services';\nimport {CaseManagementParams, ManagementContext} from '@valtimo/shared';\nimport {SelectItem} from '@valtimo/components';\n\n@Component({\n standalone: false,\n selector: 'valtimo-generate-pdf-configuration',\n templateUrl: './generate-pdf.component.html',\n})\nexport class GeneratePdfComponent\n implements FunctionConfigurationComponent, OnInit, OnDestroy {\n @Input() save$!: Observable<void>;\n @Input() disabled$!: Observable<boolean>;\n @Input() pluginId!: string;\n @Input() prefillConfiguration$!: Observable<GeneratePdfFileConfig>;\n @Input() context$: Observable<[ManagementContext, CaseManagementParams]>;\n @Output() valid: EventEmitter<boolean> = new EventEmitter<boolean>();\n @Output() configuration: EventEmitter<FunctionConfigurationData> = new EventEmitter<FunctionConfigurationData>();\n\n private saveSubscription!: Subscription;\n private readonly formValue$ = new BehaviorSubject<GeneratePdfFileConfig | null>(null);\n private readonly valid$ = new BehaviorSubject<boolean>(false);\n\n readonly loading$ = new BehaviorSubject<boolean>(true);\n\n readonly templateListItems$ = new BehaviorSubject<Array<SelectItem>>(undefined);\n\n constructor(\n private readonly templateService: FreemarkerTemplateManagementService\n ) {\n }\n\n ngOnInit(): void {\n this.loadTemplateListItems();\n this.openSaveSubscription();\n }\n\n ngOnDestroy(): void {\n this.saveSubscription?.unsubscribe();\n }\n\n formValueChange(formValue: GeneratePdfFileConfig): void {\n this.formValue$.next(formValue);\n this.handleValid(formValue);\n }\n\n private loadTemplateListItems() {\n this.context$.pipe(\n switchMap(([_, params]) => this.templateService.getAllTemplates(\n params.caseDefinitionKey,\n params.caseDefinitionVersionTag,\n 'pdf'\n )),\n map(results => results.content.map(template => ({\n id: template.key,\n text: template.key,\n })))\n ).subscribe(templateListItems => {\n this.templateListItems$.next(templateListItems);\n this.loading$.next(false);\n }\n );\n }\n\n private handleValid(formValue: GeneratePdfFileConfig): void {\n const valid = !!(formValue.templateKey && formValue.processVariableName);\n\n this.valid$.next(valid);\n this.valid.emit(valid);\n }\n\n private openSaveSubscription(): void {\n this.saveSubscription = this.save$?.subscribe(save => {\n combineLatest([this.formValue$, this.valid$])\n .pipe(take(1))\n .subscribe(([formValue, valid]) => {\n if (valid) {\n this.configuration.emit(formValue!);\n }\n });\n });\n }\n}\n","<!--\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<ng-container *ngIf=\"{\n disabled: disabled$ | async,\n prefill: prefillConfiguration$ ? (prefillConfiguration$ | async) : null,\n templateListItems: templateListItems$ | async,\n loading: loading$ | async,\n } as obs\"\n>\n <ng-container *ngIf=\"obs.loading === false; else loading\">\n <v-paragraph [margin]=\"true\" [italic]=\"true\">\n {{ 'generateDocumentFileDescription' | pluginTranslate: pluginId | async }}\n </v-paragraph>\n <v-form (valueChange)=\"formValueChange($event)\">\n <v-select\n [items]=\"obs.templateListItems\"\n [margin]=\"true\"\n [widthInPx]=\"350\"\n name=\"templateKey\"\n [title]=\"'pdfTemplateKey' | pluginTranslate: pluginId | async\"\n [disabled]=\"obs.disabled\"\n [defaultSelectionId]=\"obs.prefill?.templateKey\"\n [required]=\"true\"\n [loading]=\"!obs.templateListItems\"\n [tooltip]=\"'templateKeyTooltip' | pluginTranslate: pluginId | async\"\n ></v-select>\n <v-input\n name=\"processVariableName\"\n [title]=\"'processVariableName' | pluginTranslate: pluginId | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.prefill?.processVariableName || 'contentId'\"\n [disabled]=\"obs.disabled\"\n [tooltip]=\"'processVariableNameTooltip' | pluginTranslate: pluginId | async\"\n ></v-input>\n </v-form>\n </ng-container>\n</ng-container>\n\n<ng-template #loading>\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n</ng-template>\n","/*\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\nimport {NgModule} from '@angular/core';\nimport {DocumentGeneratorConfigurationComponent} from './components/document-generator-configuration/document-generator-configuration.component';\nimport {CommonModule} from '@angular/common';\nimport {PluginTranslatePipeModule} from '@valtimo/plugin';\nimport {\n CarbonListModule,\n ConfirmationModalModule,\n EditorModule,\n FormModule,\n InputModule as ValtimoInputModule,\n ParagraphModule,\n RenderInPageHeaderDirective,\n SelectModule,\n} from '@valtimo/components';\nimport {\n ButtonModule,\n DialogModule,\n DropdownModule,\n IconModule,\n InputModule,\n LoadingModule,\n ModalModule,\n NotificationModule,\n TabsModule,\n} from 'carbon-components-angular';\nimport {CASE_MANAGEMENT_TAB_TOKEN} from '@valtimo/shared';\nimport {DocumentTemplateListComponent} from './components/document-template-list/document-template-list.component';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {TemplateManagementRoutingModule} from './document-generator-management-routing.module';\nimport {GenerateCsvComponent} from './components/generate-csv/generate-csv.component';\nimport {GeneratePdfComponent} from './components/generate-pdf/generate-pdf.component';\n\n@NgModule({\n declarations: [\n GenerateCsvComponent,\n GeneratePdfComponent,\n DocumentGeneratorConfigurationComponent,\n ],\n imports: [\n CommonModule,\n PluginTranslatePipeModule,\n TemplateManagementRoutingModule,\n FormModule,\n ParagraphModule,\n SelectModule,\n ConfirmationModalModule,\n TranslateModule,\n ReactiveFormsModule,\n CarbonListModule,\n EditorModule,\n ValtimoInputModule,\n ButtonModule,\n DialogModule,\n DropdownModule,\n IconModule,\n InputModule,\n LoadingModule,\n ModalModule,\n NotificationModule,\n RenderInPageHeaderDirective,\n TabsModule,\n ],\n exports: [\n GenerateCsvComponent,\n GeneratePdfComponent,\n ],\n providers: [\n {\n provide: CASE_MANAGEMENT_TAB_TOKEN,\n useValue: {\n translationKey: 'document-template',\n component: DocumentTemplateListComponent,\n },\n multi: true,\n }\n ]\n})\nexport class DocumentGeneratorPluginModule {\n}\n","/*\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\nconst DOCUMENT_GENERATOR_PLUGIN_LOGO_BASE64 =\n 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjcuNTggMzAuODk0NyAzNzYuNjYxIDEzNS40NjU3IiB3aWR0aD0iMzc2LjY2MXB4IiBoZWlnaHQ9IjEzNS40NjU3cHgiPgogIDxwYXRoIGQ9Ik0gMzI3LjExNiAxNDUuODk4IEwgMzQwLjMwNCAxNjUuODkyIEwgMzg0LjI0MSA5OS4yNDYgTCAzNDAuMzA0IDMyLjYwMSBMIDMyNy4xMTYgNTIuNTk1IEwgMzU3Ljg4OCA5OS4yNDYgTCAzMjcuMTE2IDE0NS44OTggWiIgc3R5bGU9ImZpbGw6IHJnYigwLCA4MCwgMTc4KTsiIHRyYW5zZm9ybT0ibWF0cml4KDEsIDAsIDAsIDEsIDEuNDIxMDg1NDcxNTIwMjAwNGUtMTQsIDcuMTA1NDI3MzU3NjAxMDAyZS0xNSkiLz4KICA8cGF0aCBkPSJNIDY0LjcwMyA1Mi41OTUgTCA1MS41MTggMzIuNjAxIEwgNy41OCA5OS4yNDYgTCA1MS41MTggMTY1Ljg5MiBMIDY0LjcwMyAxNDUuODk4IEwgMzMuOTMzIDk5LjI0NiBMIDY0LjcwMyA1Mi41OTUgWiIgc3R5bGU9ImZpbGw6IHJnYigwLCA4MCwgMTc4KTsiIHRyYW5zZm9ybT0ibWF0cml4KDEsIDAsIDAsIDEsIDEuNDIxMDg1NDcxNTIwMjAwNGUtMTQsIDcuMTA1NDI3MzU3NjAxMDAyZS0xNSkiLz4KICA8cGF0aCBkPSJNIDExMi44NiAzMi42MDEgTCAxMzkuNTE4IDMyLjYwMSBMIDEzNC44MTUgNTkuMjYgTCAxNjEuNDc0IDU5LjI2IEwgMTY2LjE3NiAzMi42MDEgTCAxOTIuODM0IDMyLjYwMSBMIDE4OC4xMyA1OS4yNiBMIDIxNC43ODggNTkuMjYgTCAyMTAuMDc3IDg1LjkxNyBMIDE4My40MTggODUuOTE3IEwgMTc4LjcyMyAxMTIuNTc1IEwgMjA1LjM4MiAxMTIuNTc1IEwgMjAwLjY3OCAxMzkuMjMzIEwgMTc0LjAyMSAxMzkuMjMzIEwgMTY5LjMzNiAxNjUuODkyIEwgMTQyLjY3OSAxNjUuODkyIEwgMTQ3LjM3MyAxMzkuMjMzIEwgMTIwLjcxNSAxMzkuMjMzIEwgMTE2LjA5NyAxNjUuODkyIEwgODkuMzYyIDE2NS44OTIgTCA5NC4wNTYgMTM5LjIzMyBMIDY3LjM5OCAxMzkuMjMzIEwgNzIuMTAyIDExMi41NzUgTCA5OC43NiAxMTIuNTc1IEwgMTAzLjQ1NCA4NS45ODUgTCA3Ni43OTYgODUuOTg1IEwgODEuNDk4IDU5LjI2IEwgMTA4LjE1NyA1OS4yNiBMIDExMi44NiAzMi42MDEgWiBNIDEyNS40MTcgMTEyLjU3NSBMIDE1Mi4wNzYgMTEyLjU3NSBMIDE1Ni43NzkgODUuOTE3IEwgMTMwLjEyMSA4NS45MTcgTCAxMjUuNDE3IDExMi41NzUgWiIgc3R5bGU9ImZpbGw6IHJnYigwLCA4MCwgMTc4KTsiIHRyYW5zZm9ybT0ibWF0cml4KDEsIDAsIDAsIDEsIDEuNDIxMDg1NDcxNTIwMjAwNGUtMTQsIDcuMTA1NDI3MzU3NjAxMDAyZS0xNSkiLz4KICA8ZyBpZD0iQ2FwYV8xIiBzdHlsZT0iIiB0cmFuc2Zvcm09Im1hdHJpeCgwLjI0NTk0Mjk5NDk1MjIwMTg0LCAwLCAwLCAwLjI0NTk0Mjk5NDk1MjIwMTg0LCAxODcuNDA1ODUzMjcxNDg0MzgsIDU2LjI1NzYzNzAyMzkyNTc4KSI+CiAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxLCAwLCAwLCAxLCA1OS40ODYxMTEsIC0xMDMuMTI1Mjc1KSI+CiAgICAgIDxwYXRoIGQ9Ik0xNjAuMzgxLDI4Mi4yMjVjMC0xNC44MzItMTAuMjk5LTIzLjY4NC0yOC40NzQtMjMuNjg0Yy03LjQxNCwwLTEyLjQzNywwLjcxNS0xNS4wNzEsMS40MzJWMzA3LjYgYzMuMTE0LDAuNzA3LDYuOTQyLDAuOTQ5LDEyLjE5MiwwLjk0OUMxNDguNDE5LDMwOC41NDksMTYwLjM4MSwyOTguNzQsMTYwLjM4MSwyODIuMjI1eiIvPgogICAgICA8cGF0aCBkPSJNMjcyLjg3NSwyNTkuMDE5Yy04LjE0NSwwLTEzLjM5NywwLjcxNy0xNi41MTksMS40MzV2MTA1LjUyM2MzLjExNiwwLjcyOSw4LjE0MiwwLjcyOSwxMi42OSwwLjcyOSBjMzMuMDE3LDAuMjMxLDU0LjU1NC0xNy45NDYsNTQuNTU0LTU2LjQ3NEMzMjMuODQyLDI3Ni43MTksMzA0LjIxNSwyNTkuMDE5LDI3Mi44NzUsMjU5LjAxOXoiLz4KICAgICAgPHBhdGggZD0iTTQ4OC40MjYsMTk3LjAxOUg0NzUuMnYtNjMuODE2YzAtMC4zOTgtMC4wNjMtMC43OTktMC4xMTYtMS4yMDJjLTAuMDIxLTIuNTM0LTAuODI3LTUuMDIzLTIuNTYyLTYuOTk1TDM2Ni4zMjUsMy42OTQgYy0wLjAzMi0wLjAzMS0wLjA2My0wLjA0Mi0wLjA4NS0wLjA3NmMtMC42MzMtMC43MDctMS4zNzEtMS4yOTUtMi4xNTEtMS44MDRjLTAuMjMxLTAuMTU1LTAuNDY0LTAuMjg1LTAuNzA2LTAuNDE5IGMtMC42NzYtMC4zNjktMS4zOTMtMC42NzUtMi4xMzEtMC44OTZjLTAuMi0wLjA1Ni0wLjM4LTAuMTM4LTAuNTgtMC4xOUMzNTkuODcsMC4xMTksMzU5LjAzNywwLDM1OC4xOTMsMEg5Ny4yIGMtMTEuOTE4LDAtMjEuNiw5LjY5My0yMS42LDIxLjYwMXYxNzUuNDEzSDYyLjM3N2MtMTcuMDQ5LDAtMzAuODczLDEzLjgxOC0zMC44NzMsMzAuODczdjE2MC41NDUgYzAsMTcuMDQzLDEzLjgyNCwzMC44NywzMC44NzMsMzAuODdoMTMuMjI0VjUyOS4yYzAsMTEuOTA3LDkuNjgyLDIxLjYwMSwyMS42LDIxLjYwMWgzNTYuNGMxMS45MDcsMCwyMS42LTkuNjkzLDIxLjYtMjEuNjAxIFY0MTkuMzAyaDEzLjIyNmMxNy4wNDQsMCwzMC44NzEtMTMuODI3LDMwLjg3MS0zMC44N3YtMTYwLjU0QzUxOS4yOTcsMjEwLjgzOCw1MDUuNDcsMTk3LjAxOSw0ODguNDI2LDE5Ny4wMTl6IE05Ny4yLDIxLjYwNSBoMjUwLjE5M3YxMTAuNTEzYzAsNS45NjcsNC44NDEsMTAuOCwxMC44LDEwLjhoOTUuNDA3djU0LjEwOEg5Ny4yVjIxLjYwNXogTTM2Mi4zNTksMzA5LjAyM2MwLDMwLjg3Ni0xMS4yNDMsNTIuMTY1LTI2LjgyLDY1LjMzMyBjLTE2Ljk3MSwxNC4xMTctNDIuODIsMjAuODE0LTc0LjM5NiwyMC44MTRjLTE4LjksMC0zMi4yOTctMS4xOTctNDEuNDAxLTIuMzg5VjIzNC4zNjVjMTMuMzk5LTIuMTQ5LDMwLjg3OC0zLjM0Niw0OS4zMDQtMy4zNDYgYzMwLjYxMiwwLDUwLjQ3OCw1LjUwOCw2Ni4wMzksMTcuMjI2QzM1MS44MjgsMjYwLjY5LDM2Mi4zNTksMjgwLjU0NywzNjIuMzU5LDMwOS4wMjN6IE04MC43LDM5My40OTlWMjM0LjM2NSBjMTEuMjQxLTEuOTA0LDI3LjA0Mi0zLjM0Niw0OS4yOTYtMy4zNDZjMjIuNDkxLDAsMzguNTI3LDQuMzA4LDQ5LjI5MSwxMi45MjhjMTAuMjkyLDguMTMxLDE3LjIxNSwyMS41MzQsMTcuMjE1LDM3LjMyOCBjMCwxNS43OTktNS4yNSwyOS4xOTgtMTQuODI5LDM4LjI4NWMtMTIuNDQyLDExLjcyOC0zMC44NjUsMTYuOTk2LTUyLjQwNywxNi45OTZjLTQuNzc4LDAtOS4xLTAuMjQzLTEyLjQzNS0wLjcyM3Y1Ny42N0g4MC43IFYzOTMuNDk5eiBNNDUzLjYwMSw1MjMuMzUzSDk3LjJWNDE5LjMwMmgzNTYuNFY1MjMuMzUzeiBNNDg0Ljg5OCwyNjIuMTI3aC02MS45ODl2MzYuODUxaDU3LjkxM3YyOS42NzRoLTU3LjkxM3Y2NC44NDhoLTM2LjU5MyBWMjMyLjIxNmg5OC41ODJWMjYyLjEyN3oiLz4KICAgIDwvZz4KICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDEsIDAsIDAsIDEsIDU5LjQ4NjExMSwgLTEwMy4xMjUyNzUpIi8+CiAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxLCAwLCAwLCAxLCA1OS40ODYxMTEsIC0xMDMuMTI1Mjc1KSIvPgogICAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMSwgMCwgMCwgMSwgNTkuNDg2MTExLCAtMTAzLjEyNTI3NSkiLz4KICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDEsIDAsIDAsIDEsIDU5LjQ4NjExMSwgLTEwMy4xMjUyNzUpIi8+CiAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxLCAwLCAwLCAxLCA1OS40ODYxMTEsIC0xMDMuMTI1Mjc1KSIvPgogICAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMSwgMCwgMCwgMSwgNTkuNDg2MTExLCAtMTAzLjEyNTI3NSkiLz4KICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDEsIDAsIDAsIDEsIDU5LjQ4NjExMSwgLTEwMy4xMjUyNzUpIi8+CiAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxLCAwLCAwLCAxLCA1OS40ODYxMTEsIC0xMDMuMTI1Mjc1KSIvPgogICAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMSwgMCwgMCwgMSwgNTkuNDg2MTExLCAtMTAzLjEyNTI3NSkiLz4KICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDEsIDAsIDAsIDEsIDU5LjQ4NjExMSwgLTEwMy4xMjUyNzUpIi8+CiAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxLCAwLCAwLCAxLCA1OS40ODYxMTEsIC0xMDMuMTI1Mjc1KSIvPgogICAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMSwgMCwgMCwgMSwgNTkuNDg2MTExLCAtMTAzLjEyNTI3NSkiLz4KICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDEsIDAsIDAsIDEsIDU5LjQ4NjExMSwgLTEwMy4xMjUyNzUpIi8+CiAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxLCAwLCAwLCAxLCA1OS40ODYxMTEsIC0xMDMuMTI1Mjc1KSIvPgogICAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMSwgMCwgMCwgMSwgNTkuNDg2MTExLCAtMTAzLjEyNTI3NSkiLz4KICA8L2c+Cjwvc3ZnPg==';\n\nexport {DOCUMENT_GENERATOR_PLUGIN_LOGO_BASE64};\n","/*\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\nexport * from './document-generator-plugin-logo';\n","/*\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\nimport {PluginSpecification} from '@valtimo/plugin';\nimport {DocumentGeneratorConfigurationComponent} from './components/document-generator-configuration/document-generator-configuration.component';\nimport {DOCUMENT_GENERATOR_PLUGIN_LOGO_BASE64} from './assets';\nimport {GeneratePdfComponent} from './components/generate-pdf/generate-pdf.component';\nimport {GenerateCsvComponent} from './components/generate-csv/generate-csv.component';\n\nconst documentGeneratorPluginSpecification: PluginSpecification = {\n pluginId: 'document-generator',\n pluginConfigurationComponent: DocumentGeneratorConfigurationComponent,\n pluginLogoBase64: DOCUMENT_GENERATOR_PLUGIN_LOGO_BASE64,\n functionConfigurationComponents: {\n 'generate-csv': GenerateCsvComponent,\n 'generate-pdf': GeneratePdfComponent,\n },\n pluginTranslations: {\n nl: {\n title: 'Document generator',\n 'generate-csv': 'Genereer CSV-bestand',\n 'generate-pdf': 'Genereer PDF-bestand',\n description: 'Genereer PDF of CSV bestanden met Freemarker-sjablonen.',\n configurationTitle: 'Configuratienaam',\n configurationTitleTooltip:\n 'De naam van de huidige plug-inconfiguratie. Onder deze naam is de configuratie beschikbaar in de rest van de applicatie.',\n generateDocumentFileDescription:\n 'Deze actie genereert een bestand op basis van een Freemarker-sjabloon en slaat het resultaat op in een tijdelijk bestand. Het bestand-ID wordt opgeslagen in een procesvariabele.',\n csvTemplateKey: 'CSV-sjabloon',\n pdfTemplateKey: 'PDF-sjabloon',\n templateKeyTooltip: 'Dit bestand wordt gegenereerd op basis van dit Freemarker-sjabloon.',\n processVariableName: 'Procesvariabelenaam',\n processVariableNameTooltip: 'Het gegenereerde bestand wordt opgeslagen in een procesvariabele met deze naam.',\n },\n en: {\n title: 'Document generator',\n 'generate-csv': 'Generate CSV File',\n 'generate-pdf': 'Generate PDF File',\n description: 'Generate PDF or CSV files using Freemarker templates.',\n configurationTitle: 'Configuration Name',\n configurationTitleTooltip:\n 'The name of the current plug-in configuration. This name is used to reference the configuration throughout the application.',\n generateDocumentFileDescription:\n 'This action generates a file based on a Freemarker template and stores the result in a temporary file. The file ID is saved in a process variable.',\n csvTemplateKey: 'CSV Template',\n pdfTemplateKey: 'PDF Template',\n templateKeyTooltip: 'The file will be generated based on this Freemarker template.',\n processVariableName: 'Process Variable Name',\n processVariableNameTooltip: 'The generated file will be stored in a process variable with this name.',\n },\n de: {\n title: 'Document generator',\n 'generate-csv': 'CSV-Datei generieren',\n 'generate-pdf': 'PDF-Datei generieren',\n description: 'PDF oder CSV Dateien mit Freemarker-Vorlagen generieren.',\n configurationTitle: 'Konfigurationsname',\n configurationTitleTooltip:\n 'Der Name der aktuellen Plug-in-Konfiguration. Diese Konfiguration kann unter diesem Namen in der gesamten Anwendung verwendet werden.',\n generateDocumentFileDescription:\n 'Diese Aktion erstellt eine Datei basierend auf einer Freemarker-Vorlage und speichert das Ergebnis in einer temporären Datei. Die Datei-ID wird in einer Prozessvariablen gespeichert.',\n csvTemplateKey: 'CSV-Vorlage',\n pdfTemplateKey: 'PDF-Vorlage',\n templateKeyTooltip: 'Die Datei wird basierend auf dieser Freemarker-Vorlage generiert.',\n processVariableName: 'Prozessvariablenname',\n processVariableNameTooltip: 'Die generierte Datei wird in einer Prozessvariablen mit diesem Namen gespeichert.',\n },\n },\n};\n\nexport {documentGeneratorPluginSpecification};\n","/*\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\nimport {PluginConfigurationData} from '@valtimo/plugin';\n\ninterface MailTemplateConfig extends PluginConfigurationData {\n}\n\ninterface GenerateMailContentConfig {\n mailTemplateKey: string;\n processVariableName: string;\n}\n\ninterface GenerateMailFileConfig {\n mailTemplateKey: string;\n processVariableName: string;\n}\n\nexport {MailTemplateConfig, GenerateMailContentConfig, GenerateMailFileConfig};\n","/*\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\nexport * from './config';\n","/*\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\nimport {Component, EventEmitter, Input, OnDestroy, OnInit, Output} from '@angular/core';\nimport {PluginConfigurationComponent, PluginConfigurationData} from '@valtimo/plugin';\nimport {BehaviorSubject, combineLatest, map, Observable, Subscription, take} from 'rxjs';\nimport {MailTemplateConfig} from '../../models';\n\n@Component({\n standalone: false,\n selector: 'valtimo-mail-template-configuration',\n templateUrl: './mail-template-configuration.component.html',\n})\nexport class MailTemplateConfigurationComponent\n implements PluginConfigurationComponent, OnInit, OnDestroy\n{\n @Input() save$!: Observable<void>;\n @Input() disabled$!: Observable<boolean>;\n @Input() pluginId!: string;\n @Input() prefillConfiguration$!: Observable<MailTemplateConfig>;\n @Output() valid: EventEmitter<boolean> = new EventEmitter<boolean>();\n @Output() configuration: EventEmitter<PluginConfigurationData> = new EventEmitter<PluginConfigurationData>();\n\n constructor(\n ) {}\n\n private saveSubscription!: Subscription;\n private readonly formValue$ = new BehaviorSubject<MailTemplateConfig | null>(null);\n private readonly valid$ = new BehaviorSubject<boolean>(false);\n\n ngOnInit(): void {\n this.openSaveSubscription();\n }\n\n ngOnDestroy() {\n this.saveSubscription?.unsubscribe();\n }\n\n formValueChange(formValue: MailTemplateConfig): void {\n this.formValue$.next(formValue);\n this.handleValid(formValue);\n }\n\n private handleValid(formValue: MailTemplateConfig): void {\n const valid = !!(formValue.configurationTitle);\n\n this.valid$.next(valid);\n this.valid.emit(valid);\n }\n\n private openSaveSubscription(): void {\n this.saveSubscription = this.save$?.subscribe(_ => {\n combineLatest([this.formValue$, this.valid$])\n .pipe(take(1))\n .subscribe(([formValue, valid]) => {\n if (valid) {\n this.configuration.emit(formValue!);\n this.injectCaseTab();\n }\n });\n });\n }\n\n private injectCaseTab() {\n }\n}\n","<!--\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=\"Mail Template Plugin\"\n >\n </v-input>\n</v-form>\n","/*\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\nimport {Component, EventEmitter, Input, OnDestroy, OnInit, Output} from '@angular/core';\n\nimport {FunctionConfigurationComponent, FunctionConfigurationData} from '@valtimo/plugin';\nimport {BehaviorSubject, combineLatest, map, Observable, of, Subscription, switchMap, take, tap,} from 'rxjs';\nimport {GenerateMailContentConfig} from '../../models';\nimport {SelectItem} from '@valtimo/components';\nimport {FreemarkerTemplateManagementService} from '../../../../services';\nimport {CaseManagementParams, ManagementContext} from '@valtimo/shared';\n\n@Component({\n standalone: false,\n selector: 'valtimo-generate-mail-content-configuration',\n templateUrl: './generate-mail-content.component.html',\n})\nexport class GenerateMailContentComponent\n implements FunctionConfigurationComponent, OnInit, OnDestroy {\n @Input() save$!: Observable<void>;\n @Input() disabled$!: Observable<boolean>;\n @Input() pluginId!: string;\n @Input() context$: Observable<[ManagementContext, CaseManagementParams]>;\n @Input() prefillConfiguration$!: Observable<GenerateMailContentConfig>;\n @Output() valid: EventEmitter<boolean> = new EventEmitter<boolean>();\n @Output() configuration: EventEmitter<FunctionConfigurationData> = new EventEmitter<FunctionConfigurationData>();\n\n private readonly formValue$ = new BehaviorSubject<GenerateMailContentConfig | null>(null);\n private readonly valid$ = new BehaviorSubject<boolean>(false);\n private _subscriptions = new Subscription();\n\n readonly loading$ = new BehaviorSubject<boolean>(true);\n\n readonly mailTemplateItems$ = new BehaviorSubject<Array<SelectItem>>([]);\n\n constructor(\n private readonly templateService: FreemarkerTemplateManagementService\n ) {\n }\n\n ngOnInit(): void {\n this.openSaveSubscription();\n this.initContextHandling();\n }\n\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n formValueChange(formValue: GenerateMailContentConfig): void {\n this.formValue$.next(formValue);\n this.handleValid(formValue);\n }\n\n private handleValid(formValue: GenerateMailContentConfig): void {\n const valid = !!(formValue.mailTemplateKey && formValue.processVariableName);\n\n this.valid$.next(valid);\n this.valid.emit(valid);\n }\n\n private openSaveSubscription(): void {\n const saveSubscription = this.save$?.subscribe(save => {\n combineLatest([this.formValue$, this.valid$])\n .pipe(take(1))\n .subscribe(([formValue, valid]) => {\n if (valid) {\n this.configuration.emit(formValue!);\n }\n });\n });\n this._subscriptions.add(saveSubscription);\n }\n\n private initContextHandling(): void {\n if (!this.context$) {\n return;\n }\n\n const contextSub = this.context$.pipe(\n switchMap(([managementContext, caseDefinitionId]) => {\n if (managementContext == 'case') {\n return this.templateService.getAllMailTemplates(\n caseDefinitionId?.caseDefinitionKey,\n caseDefinitionId?.caseDefinitionVersionTag,\n );\n } else {\n console.error('Freemarker plugin does not support global templates')\n return of(null);\n }\n }\n ),\n map(results =>\n results?.content.map(template => ({\n id: template.key,\n text: template.key,\n })) || []\n ),\n tap(() => this.loading$.next(false))\n )\n .subscribe(results => this.mailTemplateItems$.next(results));\n\n this._subscriptions.add(contextSub);\n }\n\n}\n","<!--\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<ng-container *ngIf=\"{\n disabled: disabled$ | async,\n prefill: prefillConfiguration$ ? (prefillConfiguration$ | async) : null,\n mailTemplateItems: mailTemplateItems$ | async,\n loading: loading$ | async,\n } as obs\"\n>\n <ng-container *ngIf=\"obs.loading === false; else loading\">\n <v-paragraph [margin]=\"true\" [italic]=\"true\">\n {{ 'generateMailContentDescription' | pluginTranslate: pluginId | async }}\n </v-paragraph>\n <v-form (valueChange)=\"formValueChange($event)\">\n <v-select\n [items]=\"obs.mailTemplateItems\"\n [margin]=\"true\"\n [widthInPx]=\"350\"\n name=\"mailTemplateKey\"\n [title]=\"'mailTemplateKey' | pluginTranslate: pluginId | async\"\n [disabled]=\"obs.disabled\"\n [defaultSelectionId]=\"obs.prefill?.mailTemplateKey\"\n [required]=\"true\"\n [loading]=\"!obs.mailTemplateItems\"\n [tooltip]=\"'mailTemplateKeyTooltip' | pluginTranslate: pluginId | async\"\n ></v-select>\n <v-input\n name=\"processVariableName\"\n [title]=\"'processVariableName' | pluginTranslate: pluginId | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.prefill?.processVariableName || 'content'\"\n [disabled]=\"obs.disabled\"\n [tooltip]=\"'processVariableNameTooltip' | pluginTranslate: pluginId | async\"\n ></v-input>\n </v-form>\n </ng-container>\n</ng-container>\n\n<ng-template #loading>\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n</ng-template>\n","/*\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\nimport {Component, EventEmitter, Input, OnDestroy, OnInit, Output} from '@angular/core';\nimport {FunctionConfigurationComponent, FunctionConfigurationData} from '@valtimo/plugin';\nimport {BehaviorSubject, combineLatest, map, Observable, of, Subscription, switchMap, take, tap} from 'rxjs';\nimport {GenerateMailFileConfig} from '../../models';\nimport {SelectItem} from '@valtimo/components';\nimport {FreemarkerTemplateManagementService} from '../../../../services';\nimport {CaseManagementParams, ManagementContext} from '@valtimo/shared';\n\n@Component({\n standalone: false,\n selector: 'valtimo-generate-mail-file-configuration',\n templateUrl: './generate-mail-file.component.html',\n})\nexport class GenerateMailFileComponent\n implements FunctionConfigurationComponent, OnInit, OnDestroy {\n @Input() save$!: Observable<void>;\n @Input() disabled$!: Observable<boolean>;\n @Input() pluginId!: string;\n @Input() context$: Observable<[ManagementContext, CaseManagementParams]>;\n @Input() prefillConfiguration$!: Observable<GenerateMailFileConfig>;\n @Output() valid: EventEmitter<boolean> = new EventEmitter<boolean>();\n @Output() configuration: EventEmitter<FunctionConfigurationData> = new EventEmitter<FunctionConfigurationData>();\n\n private readonly formValue$ = new BehaviorSubject<GenerateMailFileConfig | null>(null);\n private readonly valid$ = new BehaviorSubject<boolean>(false);\n private _subscriptions = new Subscription();\n\n readonly loading$ = new BehaviorSubject<boolean>(true);\n\n readonly mailTemplateItems$ = new BehaviorSubject<Array<SelectItem>>([]);\n\n constructor(\n private readonly templateService: FreemarkerTemplateManagementService\n ) {\n }\n\n ngOnInit(): void {\n this.openSaveSubscription();\n this.initContextHandling();\n }\n\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n formValueChange(formValue: GenerateMailFileConfig): void {\n this.formValue$.next(formValue);\n this.handleValid(formValue);\n }\n\n private handleValid(formValue: GenerateMailFileConfig): void {\n const valid = !!(formValue.mailTemplateKey && formValue.processVariableName);\n\n this.valid$.next(valid);\n this.valid.emit(valid);\n }\n\n private openSaveSubscription(): void {\n const saveSubscription = this.save$?.subscribe(save => {\n combineLatest([this.formValue$, this.valid$])\n .pipe(take(1))\n .subscribe(([formValue, valid]) => {\n if (valid) {\n this.configuration.emit(formValue!);\n }\n });\n });\n this._subscriptions.add(saveSubscription);\n }\n\n private initContextHandling(): void {\n if (!this.context$) {\n return;\n }\n\n const contextSub = this.context$.pipe(\n switchMap(([managementContext, caseDefinitionId]) => {\n if (managementContext == 'case') {\n return this.templateService.getAllMailTemplates(\n caseDefinitionId?.caseDefinitionKey,\n caseDefinitionId?.caseDefinitionVersionTag,\n );\n } else {\n console.error('Freemarker plugin does not support global templates')\n return of(null);\n }\n }\n ),\n map(results =>\n results?.content.map(template => ({\n id: template.key,\n text: template.key,\n })) || []\n ),\n tap(() => this.loading$.next(false))\n )\n .subscribe(results => this.mailTemplateItems$.next(results));\n\n this._subscriptions.add(contextSub);\n }\n\n}\n","<!--\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<ng-container *ngIf=\"{\n disabled: disabled$ | async,\n prefill: prefillConfiguration$ ? (prefillConfiguration$ | async) : null,\n mailTemplateItems: mailTemplateItems$ | async,\n loading: loading$ | async,\n } as obs\"\n>\n <ng-container *ngIf=\"obs.loading === false; else loading\">\n <v-paragraph [margin]=\"true\" [italic]=\"true\">\n {{ 'generateMailFileDescription' | pluginTranslate: pluginId | async }}\n </v-paragraph>\n <v-form (valueChange)=\"formValueChange($event)\">\n <v-select\n [items]=\"obs.mailTemplateItems\"\n [margin]=\"true\"\n [widthInPx]=\"350\"\n name=\"mailTemplateKey\"\n [title]=\"'mailTemplateKey' | pluginTranslate: pluginId | async\"\n [disabled]=\"obs.disabled\"\n [defaultSelectionId]=\"obs.prefill?.mailTemplateKey\"\n [required]=\"true\"\n [loading]=\"!obs.mailTemplateItems\"\n [tooltip]=\"'mailTemplateKeyTooltip' | pluginTranslate: pluginId | async\"\n ></v-select>\n <v-input\n name=\"processVariableName\"\n [title]=\"'processVariableName' | pluginTranslate: pluginId | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.prefill?.processVariableName || 'contentId'\"\n [disabled]=\"obs.disabled\"\n [tooltip]=\"'processVariableNameTooltip' | pluginTranslate: pluginId | async\"\n ></v-input>\n </v-form>\n </ng-container>\n</ng-container>\n\n<ng-template #loading>\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n</ng-template>\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\nimport {ChangeDetectionStrategy, Component, EventEmitter, Input, Output} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {ConfirmationModalModule} from '@valtimo/components';\n\n@Component({\n standalone: true,\n selector: 'valtimo-mail-template-delete-modal',\n templateUrl: './mail-template-delete-modal.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ConfirmationModalModule\n ]\n})\nexport class MailTemplateDeleteModalComponent {\n @Input() deleteRowKeys: Array<string>;\n @Input() showDeleteModal$: Observable<boolean>;\n @Output() deleteEvent = new EventEmitter<Array<string>>();\n\n public onDelete(templates: Array<any>): void {\n this.deleteEvent.emit(templates);\n }\n}\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\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","/*\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\nimport {ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output,} from '@angular/core';\nimport {FormBuilder, ReactiveFormsModule, Validators} from '@angular/forms';\nimport {TemplateMetadataModal} from '../../../../models';\nimport {CARBON_CONSTANTS, KeyGeneratorService} from '@valtimo/components';\nimport {ButtonModule, InputModule, ModalModule} from 'carbon-components-angular';\nimport {CommonModule} from '@angular/common';\nimport {TranslateModule} from '@ngx-translate/core';\n\n@Component({\n standalone: true,\n selector: 'valtimo-mail-template-add-edit-modal',\n templateUrl: './mail-template-add-edit-modal.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n ButtonModule,\n TranslateModule,\n ModalModule,\n ReactiveFormsModule,\n InputModule\n ]\n})\nexport class MailTemplateAddEditModalComponent implements OnInit {\n @Input() open = false;\n @Input() type: TemplateMetadataModal = 'add';\n\n @Input() set defaultKeyValue(value: string) {\n this._defaultKeyValue = value;\n this.setDefaultKeyValue(value);\n }\n\n @Output() closeEvent = new EventEmitter<{ key: string; metadata?: any } | null>();\n\n public form = this.fb.group({\n key: this.fb.control('', Validators.required),\n });\n\n private _defaultKeyValue!: string;\n\n public get key() {\n const key = this.form?.get('key');\n if (!key?.value) {\n return key;\n }\n key.setValue(this.keyGeneratorService.getUniqueKey(key.value, []));\n return key;\n }\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly keyGeneratorService: KeyGeneratorService,\n ) {\n }\n\n public ngOnInit(): void {\n }\n\n public onCancel(): void {\n this.closeEvent.emit(null);\n this.resetForm();\n }\n\n public onConfirm(): void {\n if (!this.key) {\n return;\n }\n\n this.closeEvent.emit({key: this.key.value});\n this.resetForm();\n }\n\n private setDefaultKeyValue(value: string) {\n this.key.setValue(value);\n }\n\n private resetForm(): void {\n setTimeout(() => {\n this.form.reset();\n if (this.type === 'edit') {\n this.setDefaultKeyValue(this._defaultKeyValue);\n }\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n}\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\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","/*\n * Copyright 2015-2024 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\nimport {ChangeDetectionStrategy, Component, OnInit, ViewChild,} from '@angular/core';\nimport {BehaviorSubject, combineLatest, filter, map, Observable, startWith, switchMap, take, tap} from 'rxjs';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {CarbonListComponent, CarbonListModule, ColumnConfig, ViewType} from '@valtimo/components';\nimport {FreemarkerTemplateManagementService} from '../../../../services';\nimport {TemplateListItem} from '../../../../models';\nimport {CommonModule} from '@angular/common';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {MailTemplateDeleteModalComponent} from '../mail-template-delete-modal/mail-template-delete-modal.component';\nimport {MailTemplateAddEditModalComponent} from '../mail-template-add-edit-modal/mail-template-add-edit-modal.component';\nimport {CaseManagementParams, EnvironmentService, getCaseManagementRouteParams} from '@valtimo/shared';\nimport {ButtonModule} from 'carbon-components-angular';\n\n@Component({\n standalone: true,\n templateUrl: './mail-template-list.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n CarbonListModule,\n ButtonModule,\n TranslateModule,\n MailTemplateDeleteModalComponent,\n MailTemplateAddEditModalComponent\n ]\n})\nexport class MailTemplateListComponent implements OnInit {\n @ViewChild(CarbonListComponent) carbonList: CarbonListComponent;\n\n public fields: ColumnConfig[] = [\n {\n viewType: ViewType.TEXT,\n key: 'key',\n label: 'Key',\n },\n ];\n\n private readonly _caseDefinitionId$: Observable<CaseManagementParams> = getCaseManagementRouteParams(this.route).pipe(\n filter((params: CaseManagementParams | undefined) => !!params?.caseDefinitionKey),\n );\n\n public readonly readOnly$: Observable<boolean> = this._caseDefinitionId$.pipe(\n switchMap(caseDefinitionId => combineLatest([\n this.environmentService.canUpdateGlobalConfiguration(),\n this.templateService.isFinal(caseDefinitionId.caseDefinitionKey, caseDefinitionId.caseDefinitionVersionTag)\n ]).pipe(\n map(([canUpdateGlobal, isFinalCase]) => !canUpdateGlobal || isFinalCase),\n startWith(true)\n )\n )\n );\n\n public readonly templates$ = new BehaviorSubject<TemplateListItem[] | null>(null);\n public readonly showAddModal$ = new BehaviorSubject<boolean>(false);\n public readonly showDeleteModal$ = new BehaviorSubject<boolean>(false);\n public readonly selectedRowKeys$ = new BehaviorSubject<Array<any>>([]);\n public readonly loading$ = new BehaviorSubject<boolean>(true);\n\n constructor(\n private readonly templateService: FreemarkerTemplateManagementService,\n private readonly router: Router,\n private readonly route: ActivatedRoute,\n private readonly environmentService: EnvironmentService,\n ) {\n }\n\n public ngOnInit(): void {\n this.reloadTemplateList();\n }\n\n public openAddModal(): void {\n this.showAddModal$.next(true);\n }\n\n public onAdd(data?: any): void {\n if (!data) {\n this.showAddModal$.next(false);\n return;\n }\n\n this._caseDefinitionId$.pipe(\n take(1),\n switchMap(caseDefinitionId => this.templateService.addTemplate({\n caseDefinitionKey: caseDefinitionId.caseDefinitionKey,\n caseDefinitionVersionTag: caseDefinitionId.caseDefinitionVersionTag,\n type: 'mail', ...data\n }))\n ).subscribe(template => {\n this.showAddModal$.next(false);\n this.gotoMailTemplateEditor(template.caseDefinitionKey, template.caseDefinitionVersionTag, template.key);\n });\n }\n\n public showDeleteModal(): void {\n this.setSelectedTemplateKeys();\n this.showDeleteModal$.next(true);\n }\n\n public onDelete(templates: Array<any>): void {\n this.loading$.next(true);\n this._caseDefinitionId$.pipe(\n take(1),\n switchMap(caseDefinitionId => this.templateService.deleteTemplates({\n caseDefinitionKey: caseDefinitionId.caseDefinitionKey,\n caseDefinitionVersionTag: caseDefinitionId.caseDefinitionVersionTag,\n templates\n })),\n ).subscribe(_ => {\n this.reloadTemplateList();\n });\n }\n\n public onRowClick(template: TemplateListItem): void {\n this._caseDefinitionId$.pipe(take(1)).subscribe(caseDefinitionId =>\n this.gotoMailTemplateEditor(caseDefinitionId.caseDefinitionKey, caseDefinitionId.caseDefinitionVersionTag, template.key)\n );\n }\n\n private gotoMailTemplateEditor(caseDefinitionKey: string, caseDefinitionVersionTag: string, key: string): void {\n this.router.navigate([`/case-management/case/${caseDefinitionKey}/version/${caseDefinitionVersionTag}/mail-template/${key}`]);\n }\n\n private reloadTemplateList(): void {\n this.loading$.next(true);\n this._caseDefinitionId$.pipe(\n switchMap((caseDefinitionId) => this.templateService.getAllMailTemplates(caseDefinitionId.caseDefinitionKey, caseDefinitionId.caseDefinitionVersionTag)),\n map(templatePage => templatePage.content),\n take(1)\n ).subscribe(templateListItems => {\n this.templates$.next(templateListItems);\n this.loading$.next(false);\n });\n }\n\n private setSelectedTemplateKeys(): void {\n this.selectedRowKeys$.next(this.carbonList.selectedItems.map((template: TemplateListItem) => ({key: template.key, type: template.type})));\n }\n}\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\n<valtimo-carbon-list\n [header]=\"false\"\n [items]=\"templates$ | async\"\n [fields]=\"fields\"\n [loading]=\"loading$ | async\"\n [showSelectionColumn]=\"!(readOnly$ | async)\"\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\"\n [disabled]=\"readOnly$ | async\"\n (click)=\"openAddModal()\">\n {{ 'Add' }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\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\nimport {AfterViewInit, ChangeDetectionStrategy, Component, OnDestroy, OnInit} from '@angular/core';\nimport {BehaviorSubject, combineLatest, filter, map, Observable, startWith, switchMap, take, tap} from 'rxjs';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {\n BreadcrumbService,\n CarbonListModule,\n EditorModel,\n EditorModule,\n PageTitleService,\n RenderInPageHeaderDirective,\n} from '@valtimo/components';\nimport {ButtonModule, DialogModule, IconModule, NotificationService, TabsModule} from 'carbon-components-angular';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {FreemarkerTemplateManagementService} from '../../../../services';\nimport {TemplateResponse} from '../../../../models';\nimport {CaseManagementParams, EnvironmentService, getCaseManagementRouteParams} from '@valtimo/shared';\nimport {CommonModule} from '@angular/common';\nimport {MailTemplateDeleteModalComponent} from '../mail-template-delete-modal/mail-template-delete-modal.component';\n\n@Component({\n standalone: true,\n templateUrl: './mail-template-editor.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['./mail-template-editor.component.scss'],\n providers: [NotificationService],\n imports: [\n CommonModule,\n TranslateModule,\n TabsModule,\n DialogModule,\n MailTemplateDeleteModalComponent,\n CarbonListModule,\n ButtonModule,\n EditorModule,\n RenderInPageHeaderDirective,\n IconModule,\n ]\n})\nexport class MailTemplateEditorComponent implements OnInit, AfterViewInit, OnDestroy {\n public readonly model$ = new BehaviorSubject<EditorModel | null>(null);\n public readonly template$ = new BehaviorSubject<TemplateResponse | null>(null);\n public readonly saveDisabled$ = new BehaviorSubject<boolean>(true);\n public readonly editorDisabled$ = new BehaviorSubject<boolean>(false);\n public readonly moreDisabled$ = new BehaviorSubject<boolean>(true);\n public readonly showDeleteModal$ = new BehaviorSubject<boolean>(false);\n public readonly updatedModelValue$ = new BehaviorSubject<string>('');\n\n private readonly _caseDefinitionId$: Observable<CaseManagementParams> = getCaseManagementRouteParams(this.route).pipe(\n filter((params: CaseManagementParams | undefined) => !!params?.caseDefinitionKey),\n );\n\n public readonly templateKey$: Observable<string> = combineLatest([this.route.params, this.route.parent.params]).pipe(\n map(([params, parentParams]) => params?.templateKey || parentParams?.templateKey),\n filter(templateKey => !!templateKey)\n );\n\n public readonly readOnly$: Observable<boolean> = this._caseDefinitionId$.pipe(\n switchMap(caseDefinitionId => combineLatest([\n this.environmentService.canUpdateGlobalConfiguration(),\n this.templateService.isFinal(caseDefinitionId.caseDefinitionKey, caseDefinitionId.caseDefinitionVersionTag)\n ]).pipe(\n map(([canUpdateGlobal, isFinalCase]) => !canUpdateGlobal || isFinalCase),\n startWith(true)\n )\n )\n );\n\n constructor(\n private readonly templateService: FreemarkerTemplateManagementService,\n private readonly route: ActivatedRoute,\n private readonly pageTitleService: PageTitleService,\n private readonly router: Router,\n private readonly notificationService: NotificationService,\n private readonly translateService: TranslateService,\n private readonly breadcrumbService: BreadcrumbService,\n private readonly environmentService: EnvironmentService,\n ) {\n }\n\n public ngOnInit(): void {\n this.loadTemplate();\n }\n\n public ngAfterViewInit(): void {\n this.initBreadcrumb();\n }\n\n public ngOnDestroy(): void {\n this.pageTitleService.enableReset();\n this.breadcrumbService.clearThirdBreadcrumb();\n this.breadcrumbService.clearFourthBreadcrumb();\n }\n\n public onValid(valid: boolean): void {\n this.saveDisabled$.next(valid === false);\n }\n\n public onValueChange(value: string): void {\n this.updatedModelValue$.next(value);\n }\n\n public updateTemplate(): void {\n this.disableEditor();\n this.disableSave();\n this.disableMore();\n\n combineLatest([this.updatedModelValue$, this._caseDefinitionId$, this.templateKey$]).pipe(\n switchMap(([updatedModelValue, caseDefinitionId, templateKey]) =>\n this.templateService.updateTemplate(\n {\n key: templateKey,\n caseDefinitionKey: caseDefinitionId.caseDefinitionKey,\n caseDefinitionVersionTag: caseDefinitionId.caseDefinitionVersionTag,\n type: 'mail',\n content: updatedModelValue,\n }\n )\n ),\n take(1)\n ).subscribe({\n next: result => {\n this.enableMore();\n this.enableSave();\n this.enableEditor();\n this.showSuccessMessage(result.key);\n this.setModel(result.content);\n this.template$.next(result);\n },\n error: () => {\n this.enableMore();\n this.enableSave();\n this.enableEditor();\n },\n });\n }\n\n public onDelete(templates: Array<any>): void {\n this.disableEditor();\n this.disableSave();\n this.disableMore();\n\n this._caseDefinitionId$.pipe(take(1)).subscribe(caseDefinitionId =>\n this.templateService.deleteTemplates({\n caseDefinitionKey: caseDefinitionId.caseDefinitionKey,\n caseDefinitionVersionTag: caseDefinitionId.caseDefinitionVersionTag,\n templates\n }).pipe(take(1)).subscribe(_ =>\n this.router.navigate([`/case-management/case/${caseDefinitionId.caseDefinitionKey}/version/${caseDefinitionId.caseDefinitionVersionTag}/mail-template`])\n )\n );\n }\n\n public showDeleteModal(): void {\n this.showDeleteModal$.next(true);\n }\n\n private loadTemplate(): void {\n combineLatest([this._caseDefinitionId$, this.templateKey$]).pipe(\n tap(([_, key]) => {\n this.pageTitleService.setCustomPageTitle(`Mail template: ${key}`, true);\n }),\n switchMap(([caseDefinitionId, key]) => this.templateService.getMailTemplate(caseDefinitionId.caseDefinitionKey, caseDefinitionId.caseDefinitionVersionTag, key)),\n take(1),\n ).subscribe(result => {\n this.enableMore();\n this.enableSave();\n this.enableEditor();\n this.setModel(result.content);\n this.refreshViewer(result.content);\n this.template$.next(result);\n });\n }\n\n private setModel(content: string): void {\n this.model$.next({\n value: content,\n language: 'freemarker2',\n });\n this.updatedModelValue$.next(content);\n }\n\n private disableMore(): void {\n this.moreDisabled$.next(true);\n }\n\n private enableMore(): void {\n this.moreDisabled$.next(false);\n }\n\n private disableSave(): void {\n this.saveDisabled$.next(true);\n }\n\n private enableSave(): void {\n this.saveDisabled$.next(false);\n }\n\n private disableEditor(): void {\n this.editorDisabled$.next(true);\n }\n\n private enableEditor(): void {\n this.editorDisabled$.next(false);\n }\n\n public onSelectedTabViewer(): void {\n this.updatedModelValue$.pipe(take(1)).subscribe(html =>\n this.refreshViewer(html)\n );\n }\n\n private refreshViewer(html: string): void {\n setTimeout(() => {\n const htmlViewer = document.getElementById('html-viewer-iframe') as HTMLIFrameElement;\n if (htmlViewer) {\n htmlViewer.srcdoc = html;\n }\n }, 100);\n }\n\n private initBreadcrumb(): void {\n this._caseDefinitionId$.subscribe(caseDefinitionId => {\n this.breadcrumbService.setThirdBreadcrumb({\n route: [`/case-management/case/${caseDefinitionId.caseDefinitionKey}/version/${caseDefinitionId.caseDefinitionVersionTag}`],\n content: `${caseDefinitionId.caseDefinitionKey}:${caseDefinitionId.caseDefinitionVersionTag}`,\n href: `/case-management/case/${caseDefinitionId.caseDefinitionKey}/version/${caseDefinitionId.caseDefinitionVersionTag}`,\n });\n this.breadcrumbService.setFourthBreadcrumb({\n route: [`/case-management/case/${caseDefinitionId.caseDefinitionKey}/version/${caseDefinitionId.caseDefinitionVersionTag}/mail-template`],\n content: 'Mail template',\n href: `/case-management/case/${caseDefinitionId.caseDefinitionKey}/version/${caseDefinitionId.caseDefinitionVersionTag}/mail-template`,\n });\n });\n }\n\n private showSuccessMessage(key: string): void {\n this.notificationService.showToast({\n caption: this.translateService.instant(`${key} was saved successfully`, {\n key,\n }),\n type: 'success',\n duration: 4000,\n showClose: true,\n title: this.translateService.instant('Saved successfully'),\n });\n }\n}\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\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/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 </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) || (readOnly$ | async)\"\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 || (readOnly$ | async)\"\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) || (readOnly$ | async)\"\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]=\"[{key: obs.templateKey, type: 'mail'}]\"\n [showDeleteModal$]=\"showDeleteModal$\"\n (deleteEvent)=\"onDelete($event)\"\n >\n </valtimo-mail-template-delete-modal>\n</ng-container>\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 */\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {ROLE_ADMIN} from '@valtimo/shared';\nimport {AuthGuardService} from '@valtimo/security';\nimport {MailTemplateEditorComponent} from './components/mail-template-editor/mail-template-editor.component';\n\nconst routes: Routes = [\n {\n path: 'case-management/case/:caseDefinitionKey/version/:caseDefinitionVersionTag/mail-template/:templateKey',\n component: MailTemplateEditorComponent,\n canActivate: [AuthGuardService],\n data: {\n title: 'Mail Template Editor',\n templates: [ROLE_ADMIN],\n customPageTitle: true,\n },\n },\n];\n\n@NgModule({\n imports: [CommonModule, RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class TemplateManagementRoutingModule {}\n","/*\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\nimport {NgModule} from '@angular/core';\nimport {MailTemplateConfigurationComponent} from './components/mail-template-configuration/mail-template-configuration.component';\nimport {CommonModule} from '@angular/common';\nimport {PluginTranslatePipeModule} from '@valtimo/plugin';\nimport {\n CarbonListModule,\n ConfirmationModalModule,\n EditorModule,\n FormModule,\n InputModule as ValtimoInputModule,\n ParagraphModule,\n RenderInPageHeaderDirective,\n SelectModule,\n} from '@valtimo/components';\nimport {GenerateMailContentComponent} from './components/generate-mail-content/generate-mail-content.component';\nimport {GenerateMailFileComponent} from './components/generate-mail-file/generate-mail-file.component';\nimport {\n ButtonModule,\n DialogModule,\n DropdownModule,\n IconModule,\n InputModule,\n LoadingModule,\n ModalModule,\n NotificationModule, TabsModule,\n}\nfrom 'carbon-components-angular';\nimport {CASE_MANAGEMENT_TAB_TOKEN} from '@valtimo/shared';\nimport {MailTemplateListComponent} from './components/mail-template-list/mail-template-list.component';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {TemplateManagementRoutingModule} from './mail-template-management-routing.module';\nimport {MailTemplateDeleteModalComponent} from './components/mail-template-delete-modal/mail-template-delete-modal.component';\n\n@NgModule({\n declarations: [\n MailTemplateConfigurationComponent,\n GenerateMailFileComponent,\n GenerateMailContentComponent,\n ],\n imports: [\n CommonModule,\n PluginTranslatePipeModule,\n TemplateManagementRoutingModule,\n FormModule,\n ParagraphModule,\n SelectModule,\n ConfirmationModalModule,\n TranslateModule,\n ReactiveFormsModule,\n CarbonListModule,\n EditorModule,\n ValtimoInputModule,\n ButtonModule,\n DialogModule,\n DropdownModule,\n IconModule,\n InputModule,\n LoadingModule,\n ModalModule,\n NotificationModule,\n RenderInPageHeaderDirective,\n TabsModule,\n MailTemplateDeleteModalComponent,\n ],\n exports: [\n MailTemplateConfigurationComponent,\n GenerateMailFileComponent,\n GenerateMailContentComponent,\n ],\n providers: [\n {\n provide: CASE_MANAGEMENT_TAB_TOKEN,\n useValue: {\n translationKey: 'mail-template',\n component: MailTemplateListComponent,\n },\n multi: true,\n }\n ]\n})\nexport class MailTemplatePluginModule {\n}\n","/*\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\nconst MAIL_TEMPLATE_PLUGIN_LOGO_BASE64 =\n 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyBpZD0ic3ZnMiIgdmlld0JveD0iMCAwIDQwMCAyMDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgPHBhdGggZD0iTSAzNDAuMzM3IDEzNS4zMjQgTCAzNTAuNTU1IDE1MC44MTUgTCAzODQuNiA5OS4xNzYgTCAzNTAuNTU1IDQ3LjUzNSBMIDM0MC4zMzcgNjMuMDI4IEwgMzY0LjE4MSA5OS4xNzYgTCAzNDAuMzM3IDEzNS4zMjQgWiIgc3R5bGU9ImZpbGw6IHJnYigwLCA4MCwgMTc4KTsiLz4KICA8cGF0aCBkPSJNIDU1LjQwNiA2My4wMjggTCA0NS4xODggNDcuNTM1IEwgMTEuMTQzIDk5LjE3NiBMIDQ1LjE4OCAxNTAuODE1IEwgNTUuNDA2IDEzNS4zMjQgTCAzMS41NjMgOTkuMTc2IEwgNTUuNDA2IDYzLjAyOCBaIiBzdHlsZT0iZmlsbDogcmdiKDAsIDgwLCAxNzgpOyIvPgogIDxwYXRoIGQ9Ik0gOTIuNzIxIDQ3LjUzNSBMIDExMy4zNzYgNDcuNTM1IEwgMTA5LjczMiA2OC4xOTEgTCAxMzAuMzg5IDY4LjE5MSBMIDEzNC4wMzIgNDcuNTM1IEwgMTU0LjY4OSA0Ny41MzUgTCAxNTEuMDQ1IDY4LjE5MSBMIDE3MS43MDEgNjguMTkxIEwgMTY4LjA0OSA4OC44NDggTCAxNDcuMzkzIDg4Ljg0OCBMIDE0My43NTYgMTA5LjUwNCBMIDE2NC40MTIgMTA5LjUwNCBMIDE2MC43NjcgMTMwLjE2IEwgMTQwLjExMSAxMzAuMTYgTCAxMzYuNDgyIDE1MC44MTUgTCAxMTUuODI2IDE1MC44MTUgTCAxMTkuNDYzIDEzMC4xNiBMIDk4LjgwNiAxMzAuMTYgTCA5NS4yMjkgMTUwLjgxNSBMIDc0LjUxMyAxNTAuODE1IEwgNzguMTUgMTMwLjE2IEwgNTcuNDk0IDEzMC4xNiBMIDYxLjEzOCAxMDkuNTA0IEwgODEuNzk1IDEwOS41MDQgTCA4NS40MzIgODguODk5IEwgNjQuNzc1IDg4Ljg5OSBMIDY4LjQyIDY4LjE5MSBMIDg5LjA3NiA2OC4xOTEgTCA5Mi43MjEgNDcuNTM1IFogTSAxMDIuNDUxIDEwOS41MDQgTCAxMjMuMTA3IDEwOS41MDQgTCAxMjYuNzUyIDg4Ljg0OCBMIDEwNi4wOTUgODguODQ4IEwgMTAyLjQ1MSAxMDkuNTA0IFoiIHN0eWxlPSJmaWxsOiByZ2IoMCwgODAsIDE3OCk7Ii8+CiAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMi4wMjgxNjQsIDAsIDAsIDIuMDI4MTY0LCAxNzkuMDc4MTg2LCAyNi4zMjE2NjcpIiBzdHlsZT0iIj4KICAgIDxwYXRoIGQ9Ik0gNjYuMDk3IDExLjUyOCBMIDkuMTk3IDExLjUyOCBDIDQuMTI2IDExLjUyOCAwIDE1LjY1NCAwIDIwLjcyNSBMIDAgNTMuNDQ3IEMgMCA1OC41MTggNC4xMjYgNjIuNjQ0IDkuMTk3IDYyLjY0NCBMIDY2LjA5NyA2Mi42NDQgQyA3MS4xNjggNjIuNjQ0IDc1LjI5NCA1OC41MTggNzUuMjk0IDUzLjQ0NyBMIDc1LjI5NCAyMC43MjYgQyA3NS4yOTUgMTUuNjU0IDcxLjE2OSAxMS41MjggNjYuMDk3IDExLjUyOCBaIE0gNjEuNjAzIDE3LjUyOCBMIDM3LjY0NyAzMi45NjIgTCAxMy42OTEgMTcuNTI4IEwgNjEuNjAzIDE3LjUyOCBaIE0gNjYuMDk3IDU2LjY0NSBMIDkuMTk3IDU2LjY0NSBDIDcuNDM0IDU2LjY0NSA2IDU1LjIxIDYgNTMuNDQ4IEwgNiAyMC44OTYgTCAzNS43OTYgNDAuMDU2IEMgMzUuODM2IDQwLjA4MSAzNS44NzkgNDAuMDk4IDM1LjkyIDQwLjEyMSBDIDM1Ljk2MyA0MC4xNDUgMzYuMDA3IDQwLjE2OCAzNi4wNTEgNDAuMTkgQyAzNi4yODIgNDAuMzA5IDM2LjUyIDQwLjQwNSAzNi43NjMgNDAuNDY4IEMgMzYuNzg4IDQwLjQ3NSAzNi44MTMgNDAuNDc4IDM2LjgzOCA0MC40ODQgQyAzNy4xMDUgNDAuNTQ3IDM3LjM3NSA0MC41ODYgMzcuNjQ1IDQwLjU4NiBDIDM3LjY0NiA0MC41ODYgMzcuNjQ3IDQwLjU4NiAzNy42NDcgNDAuNTg2IEMgMzcuNjQ5IDQwLjU4NiAzNy42NSA0MC41ODYgMzcuNjUxIDQwLjU4NiBDIDM3LjkyMSA0MC41ODYgMzguMTkxIDQwLjU0OCAzOC40NTggNDAuNDg0IEMgMzguNDgzIDQwLjQ3OCAzOC41MDggNDAuNDc1IDM4LjUzMyA0MC40NjggQyAzOC43NzYgNDAuNDA1IDM5LjAxMyA0MC4zMDkgMzkuMjQ1IDQwLjE5IEMgMzkuMjg5IDQwLjE2OCAzOS4zMzMgNDAuMTQ1IDM5LjM3NiA0MC4xMjEgQyAzOS40MTcgNDAuMDk4IDM5LjQ2IDQwLjA4MSAzOS41IDQwLjA1NiBMIDY5LjI5NiAyMC44OTYgTCA2OS4yOTYgNTMuNDQ3IEMgNjkuMjk1IDU1LjIxIDY3Ljg2IDU2LjY0NSA2Ni4wOTcgNTYuNjQ1IFoiLz4KICA8L2c+Cjwvc3ZnPg==';\n\nexport {MAIL_TEMPLATE_PLUGIN_LOGO_BASE64};\n","/*\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\nexport * from './mail-template-plugin-logo';\n","/*\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\nimport {PluginSpecification} from '@valtimo/plugin';\nimport {MailTemplateConfigurationComponent} from './components/mail-template-configuration/mail-template-configuration.component';\nimport {MAIL_TEMPLATE_PLUGIN_LOGO_BASE64} from './assets';\nimport {GenerateMailContentComponent} from './components/generate-mail-content/generate-mail-content.component';\nimport {GenerateMailFileComponent} from './components/generate-mail-file/generate-mail-file.component';\n\nconst mailTemplatePluginSpecification: PluginSpecification = {\n pluginId: 'mail-template',\n pluginConfigurationComponent: MailTemplateConfigurationComponent,\n pluginLogoBase64: MAIL_TEMPLATE_PLUGIN_LOGO_BASE64,\n functionConfigurationComponents: {\n 'generate-mail-file': GenerateMailFileComponent,\n 'generate-mail-content': GenerateMailContentComponent,\n },\n pluginTranslations: {\n nl: {\n title: 'Mail sjablonen',\n 'generate-mail-file': 'Genereer Mailbestand',\n 'generate-mail-content': 'Genereer Mailinhoud',\n description: 'Maak Mail sjablonen met Freemarker.',\n configurationTitle: 'Configuratienaam',\n configurationTitleTooltip:\n 'De naam van de huidige plug-in configuratie. Onder deze naam kan de configuratie worden gevonden in de rest van de applicatie.',\n generateMailContentDescription:\n 'Deze actie genereert de inhoud van een mail op basis van een sjabloon. De mail tekst wordt opgeslagen in een Proces Variabele.',\n generateMailFileDescription:\n 'Deze actie genereert de inhoud van een mail en slaat het resultaat op in een tijdelijk bestand. Het ID van het bestand wordt opgeslagen in een Proces Variabele.',\n mailTemplateKey: 'Mail sjabloon',\n mailTemplateKeyTooltip: 'Op bases van deze sjabloon wordt de mail gegenereerd',\n processVariableName: 'Procesvariabelenaam',\n processVariableNameTooltip: 'Het resultaat wordt opgeslagen in een procesvariabele met deze naam',\n },\n en: {\n title: 'Mail Templates',\n 'generate-mail-file': 'Generate Mail File',\n 'generate-mail-content': 'Generate Mail Content (deprecated)',\n description: 'Create mail templates with Freemarker.',\n configurationTitle: 'Configuration Name',\n configurationTitleTooltip:\n 'The name of the current plug-in configuration. The configuration can be found under this name in the rest of the application.',\n generateMailContentDescription:\n 'This action generates the content of an mail based on a template. The mail text is then stored in a Process Variable. This action is deprecated because the mail text can be bigger than a Process Variable can store. Please use action \"Generate Mail File\" instead',\n generateMailFileDescription:\n 'This action generates the content of an mail and saves the result in a temporary file. The file ID is then stored in a Process Variable.',\n mailTemplateKey: 'Mail Template',\n mailTemplateKeyTooltip: 'The mail will be generated based on this template.',\n processVariableName: 'Process Variable Name',\n processVariableNameTooltip: 'The result will be stored in a process variable with this name.',\n },\n de: {\n title: 'Mail-Vorlagen',\n 'generate-mail-file': 'Mail-Datei generieren',\n 'generate-mail-content': 'Mail-Inhalt generieren',\n description: 'Erstellen Sie Mail-Vorlagen mit Freemarker.',\n configurationTitle: 'Konfigurationsname',\n configurationTitleTooltip:\n 'Der Name der aktuellen Plug-in-Konfiguration. Unter diesem Namen kann die Konfiguration im Rest der Anwendung gefunden werden.',\n generateMailContentDescription:\n 'Diese Aktion generiert den Inhalt einer Mail basierend auf einer Vorlage. Der Mail-Text wird in einer Prozessvariablen gespeichert.',\n generateMailFileDescription:\n 'Diese Aktion generiert den Inhalt einer Mail und speichert das Ergebnis in einer temporären Datei. Die Datei-ID wird in einer Prozessvariablen gespeichert.',\n mailTemplateKey: 'Mail-Vorlage',\n mailTemplateKeyTooltip: 'Die Mail wird basierend auf dieser Vorlage generiert.',\n processVariableName: 'Prozessvariablenname',\n processVariableNameTooltip: 'Das Ergebnis wird in einer Prozessvariablen mit diesem Namen gespeichert.',\n },\n },\n};\n\nexport {mailTemplatePluginSpecification};\n","/*\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\nimport {PluginConfigurationData} from '@valtimo/plugin';\n\ninterface TextTemplateConfig extends PluginConfigurationData {\n}\n\ninterface GenerateTextContentConfig {\n textTemplateKey: string;\n processVariableName: string;\n}\n\ninterface GenerateTextFileConfig {\n textTemplateKey: string;\n processVariableName: string;\n}\n\nexport {TextTemplateConfig, GenerateTextContentConfig, GenerateTextFileConfig};\n","/*\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\nexport * from './config';\n","/*\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\nimport {Component, EventEmitter, Input, OnDestroy, OnInit, Output} from '@angular/core';\nimport {PluginConfigurationComponent, PluginConfigurationData} from '@valtimo/plugin';\nimport {BehaviorSubject, combineLatest, map, Observable, Subscription, take} from 'rxjs';\nimport {TextTemplateConfig} from '../../models';\n\n@Component({\n standalone: false,\n selector: 'valtimo-text-template-configuration',\n templateUrl: './text-template-configuration.component.html',\n})\nexport class TextTemplateConfigurationComponent\n implements PluginConfigurationComponent, OnInit, OnDestroy\n{\n @Input() save$!: Observable<void>;\n @Input() disabled$!: Observable<boolean>;\n @Input() pluginId!: string;\n @Input() prefillConfiguration$!: Observable<TextTemplateConfig>;\n @Output() valid: EventEmitter<boolean> = new EventEmitter<boolean>();\n @Output() configuration: EventEmitter<PluginConfigurationData> = new EventEmitter<PluginConfigurationData>();\n\n constructor(\n ) {}\n\n private saveSubscription!: Subscription;\n private readonly formValue$ = new BehaviorSubject<TextTemplateConfig | null>(null);\n private readonly valid$ = new BehaviorSubject<boolean>(false);\n\n ngOnInit(): void {\n this.openSaveSubscription();\n }\n\n ngOnDestroy() {\n this.saveSubscription?.unsubscribe();\n }\n\n formValueChange(formValue: TextTemplateConfig): void {\n this.formValue$.next(formValue);\n this.handleValid(formValue);\n }\n\n private handleValid(formValue: TextTemplateConfig): void {\n const valid = !!(formValue.configurationTitle);\n\n this.valid$.next(valid);\n this.valid.emit(valid);\n }\n\n private openSaveSubscription(): void {\n this.saveSubscription = this.save$?.subscribe(_ => {\n combineLatest([this.formValue$, this.valid$])\n .pipe(take(1))\n .subscribe(([formValue, valid]) => {\n if (valid) {\n this.configuration.emit(formValue!);\n this.injectCaseTab();\n }\n });\n });\n }\n\n private injectCaseTab() {\n }\n}\n","<!--\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","/*\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\nimport {ChangeDetectionStrategy, Component, EventEmitter, Input, Output} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {ConfirmationModalModule} from '@valtimo/components';\n\n@Component({\n standalone: true,\n selector: 'valtimo-text-template-delete-modal',\n templateUrl: './text-template-delete-modal.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ConfirmationModalModule\n ]\n})\nexport class TextTemplateDeleteModalComponent {\n @Input() deleteRowKeys: Array<string>;\n @Input() showDeleteModal$: Observable<boolean>;\n @Output() deleteEvent = new EventEmitter<Array<string>>();\n\n public onDelete(templates: Array<any>): void {\n this.deleteEvent.emit(templates);\n }\n}\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\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","/*\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\nimport {ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output,} from '@angular/core';\nimport {FormBuilder, ReactiveFormsModule, Validators} from '@angular/forms';\nimport {TemplateMetadataModal} from '../../../../models';\nimport {CARBON_CONSTANTS, KeyGeneratorService} from '@valtimo/components';\nimport {CommonModule} from '@angular/common';\nimport {ButtonModule, InputModule, ModalModule} from 'carbon-components-angular';\nimport {TranslateModule} from '@ngx-translate/core';\n\n@Component({\n standalone: true,\n selector: 'valtimo-text-template-add-edit-modal',\n templateUrl: './text-template-add-edit-modal.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n ButtonModule,\n TranslateModule,\n ModalModule,\n ReactiveFormsModule,\n InputModule\n ]\n})\nexport class TextTemplateAddEditModalComponent implements OnInit {\n @Input() open = false;\n @Input() type: TemplateMetadataModal = 'add';\n\n @Input() set defaultKeyValue(value: string) {\n this._defaultKeyValue = value;\n this.setDefaultKeyValue(value);\n }\n\n @Output() closeEvent = new EventEmitter<{ key: string; metadata?: any } | null>();\n\n public form = this.fb.group({\n key: this.fb.control('', Validators.required),\n });\n\n private _defaultKeyValue!: string;\n\n public get key() {\n const key = this.form?.get('key');\n if (!key?.value) {\n return key;\n }\n key.setValue(this.keyGeneratorService.getUniqueKey(key.value, []));\n return key;\n }\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly keyGeneratorService: KeyGeneratorService,\n ) {\n }\n\n public ngOnInit(): void {\n }\n\n public onCancel(): void {\n this.closeEvent.emit(null);\n this.resetForm();\n }\n\n public onConfirm(): void {\n if (!this.key) {\n return;\n }\n\n this.closeEvent.emit({key: this.key.value});\n this.resetForm();\n }\n\n private setDefaultKeyValue(value: string) {\n this.key.setValue(value);\n }\n\n private resetForm(): void {\n setTimeout(() => {\n this.form.reset();\n if (this.type === 'edit') {\n this.setDefaultKeyValue(this._defaultKeyValue);\n }\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n}\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\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","/*\n * Copyright 2015-2024 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\nimport {ChangeDetectionStrategy, Component, OnInit, ViewChild,} from '@angular/core';\nimport {BehaviorSubject, combineLatest, filter, map, Observable, startWith, switchMap, take} from 'rxjs';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {CarbonListComponent, CarbonListModule, ColumnConfig, ViewType} from '@valtimo/components';\nimport {FreemarkerTemplateManagementService} from '../../../../services';\nimport {TemplateListItem} from '../../../../models';\nimport {CaseManagementParams, EnvironmentService, getCaseManagementRouteParams} from '@valtimo/shared';\nimport {CommonModule} from '@angular/common';\nimport {ButtonModule} from 'carbon-components-angular';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {TextTemplateDeleteModalComponent} from '../text-template-delete-modal/text-template-delete-modal.component';\nimport {TextTemplateAddEditModalComponent} from '../text-template-add-edit-modal/text-template-add-edit-modal.component';\n\n@Component({\n standalone: true,\n templateUrl: './text-template-list.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n CarbonListModule,\n ButtonModule,\n TranslateModule,\n TextTemplateDeleteModalComponent,\n TextTemplateAddEditModalComponent\n ]\n})\nexport class TextTemplateListComponent implements OnInit {\n @ViewChild(CarbonListComponent) carbonList: CarbonListComponent;\n\n public fields: ColumnConfig[] = [\n {\n viewType: ViewType.TEXT,\n key: 'key',\n label: 'Key',\n },\n {\n viewType: ViewType.BOOLEAN,\n key: 'readOnly',\n label: 'Read only',\n },\n ];\n\n private readonly _caseDefinitionId$: Observable<CaseManagementParams> = getCaseManagementRouteParams(this.route).pipe(\n filter((params: CaseManagementParams | undefined) => !!params?.caseDefinitionKey),\n );\n\n public readonly readOnly$: Observable<boolean> = this._caseDefinitionId$.pipe(\n switchMap(caseDefinitionId => combineLatest([\n this.environmentService.canUpdateGlobalConfiguration(),\n this.templateService.isFinal(caseDefinitionId.caseDefinitionKey, caseDefinitionId.caseDefinitionVersionTag)\n ]).pipe(\n map(([canUpdateGlobal, isFinalCase]) => !canUpdateGlobal || isFinalCase),\n startWith(true)\n )\n )\n );\n\n public readonly templates$ = new BehaviorSubject<TemplateListItem[] | null>(null);\n public readonly showAddModal$ = new BehaviorSubject<boolean>(false);\n public readonly showDeleteModal$ = new BehaviorSubject<boolean>(false);\n public readonly selectedRowKeys$ = new BehaviorSubject<Array<any>>([]);\n public readonly loading$ = new BehaviorSubject<boolean>(true);\n\n constructor(\n private readonly templateService: FreemarkerTemplateManagementService,\n private readonly router: Router,\n private readonly route: ActivatedRoute,\n private readonly environmentService: EnvironmentService,\n ) {\n }\n\n public ngOnInit(): void {\n this.reloadTemplateList();\n }\n\n public openAddModal(): void {\n this.showAddModal$.next(true);\n }\n\n public onAdd(data?: any): void {\n if (!data) {\n this.showAddModal$.next(false);\n return;\n }\n\n this._caseDefinitionId$.pipe(\n take(1),\n switchMap(caseDefinitionId => this.templateService.addTemplate({\n caseDefinitionKey: caseDefinitionId.caseDefinitionKey,\n caseDefinitionVersionTag: caseDefinitionId.caseDefinitionVersionTag,\n type: 'text', ...data\n }))\n ).subscribe(template => {\n this.showAddModal$.next(false);\n this.gotoTextTemplateEditor(template.caseDefinitionKey, template.caseDefinitionVersionTag, template.key);\n });\n }\n\n public showDeleteModal(): void {\n this.setSelectedTemplateKeys();\n this.showDeleteModal$.next(true);\n }\n\n public onDelete(templates: Array<any>): void {\n this.loading$.next(true);\n this._caseDefinitionId$.pipe(\n take(1),\n switchMap(caseDefinitionId => this.templateService.deleteTemplates({\n caseDefinitionKey: caseDefinitionId.caseDefinitionKey,\n caseDefinitionVersionTag: caseDefinitionId.caseDefinitionVersionTag,\n templates\n })),\n ).subscribe(_ => {\n this.reloadTemplateList();\n });\n }\n\n public onRowClick(template: TemplateListItem): void {\n this._caseDefinitionId$.pipe(take(1)).subscribe(caseDefinitionId =>\n this.gotoTextTemplateEditor(caseDefinitionId.caseDefinitionKey, caseDefinitionId.caseDefinitionVersionTag, template.key)\n );\n }\n\n private gotoTextTemplateEditor(caseDefinitionKey: string, caseDefinitionVersionTag: string, key: string): void {\n this.router.navigate([`/case-management/case/${caseDefinitionKey}/version/${caseDefinitionVersionTag}/text-template/${key}`]);\n }\n\n private reloadTemplateList(): void {\n this.loading$.next(true);\n this._caseDefinitionId$.pipe(\n switchMap(caseDefinitionId => this.templateService.getAllTextTemplates(caseDefinitionId.caseDefinitionKey, caseDefinitionId.caseDefinitionVersionTag)),\n map(templatePage => templatePage.content),\n take(1)\n ).subscribe(templateListItems => {\n this.templates$.next(templateListItems);\n this.loading$.next(false);\n });\n }\n\n private setSelectedTemplateKeys(): void {\n this.selectedRowKeys$.next(this.carbonList.selectedItems.map((template: TemplateListItem) => ({key: template.key, type: template.type})));\n }\n}\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\n<valtimo-carbon-list\n [header]=\"false\"\n [items]=\"templates$ | async\"\n [fields]=\"fields\"\n [loading]=\"loading$ | async\"\n [showSelectionColumn]=\"!(readOnly$ | async)\"\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-text-template-add-edit-modal\n [open]=\"showAddModal$ | async\"\n (closeEvent)=\"onAdd($event)\"\n></valtimo-text-template-add-edit-modal>\n\n<ng-container *ngIf=\"{selectedRowKeys: selectedRowKeys$ | async} as obs\">\n <valtimo-text-template-delete-modal\n [deleteRowKeys]=\"obs.selectedRowKeys\"\n [showDeleteModal$]=\"showDeleteModal$\"\n (deleteEvent)=\"onDelete($event)\"\n >\n </valtimo-text-template-delete-modal>\n</ng-container>\n\n<ng-template #addTemplateButton>\n <button cdsButton=\"primary\"\n [disabled]=\"readOnly$ | async\"\n (click)=\"openAddModal()\">\n {{ 'Add' }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\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\nimport {AfterViewInit, ChangeDetectionStrategy, Component, OnDestroy, OnInit} from '@angular/core';\nimport {BehaviorSubject, combineLatest, filter, map, Observable, startWith, switchMap, take, tap} from 'rxjs';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {\n BreadcrumbService,\n CarbonListModule,\n EditorModel, EditorModule,\n PageTitleService,\n RenderInPageHeaderDirective\n} from '@valtimo/components';\nimport {ButtonModule, DialogModule, IconModule, NotificationService, TabsModule} from 'carbon-components-angular';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {FreemarkerTemplateManagementService} from '../../../../services';\nimport {TemplateResponse} from '../../../../models';\nimport {CaseManagementParams, EnvironmentService, getCaseManagementRouteParams} from '@valtimo/shared';\nimport {CommonModule} from '@angular/common';\nimport {TextTemplateDeleteModalComponent} from '../text-template-delete-modal/text-template-delete-modal.component';\n\n@Component({\n standalone: true,\n templateUrl: './text-template-editor.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['./text-template-editor.component.scss'],\n providers: [NotificationService],\n imports: [\n CommonModule,\n TranslateModule,\n TabsModule,\n DialogModule,\n TextTemplateDeleteModalComponent,\n CarbonListModule,\n ButtonModule,\n EditorModule,\n RenderInPageHeaderDirective,\n IconModule,\n ]\n})\nexport class TextTemplateEditorComponent implements OnInit, AfterViewInit, OnDestroy {\n public readonly model$ = new BehaviorSubject<EditorModel | null>(null);\n public readonly template$ = new BehaviorSubject<TemplateResponse | null>(null);\n public readonly saveDisabled$ = new BehaviorSubject<boolean>(true);\n public readonly editorDisabled$ = new BehaviorSubject<boolean>(false);\n public readonly moreDisabled$ = new BehaviorSubject<boolean>(true);\n public readonly showDeleteModal$ = new BehaviorSubject<boolean>(false);\n public readonly updatedModelValue$ = new BehaviorSubject<string>('');\n\n private readonly _caseDefinitionId$: Observable<CaseManagementParams> = getCaseManagementRouteParams(this.route).pipe(\n filter((params: CaseManagementParams | undefined) => !!params?.caseDefinitionKey),\n );\n\n public readonly templateKey$: Observable<string> = combineLatest([this.route.params, this.route.parent.params]).pipe(\n map(([params, parentParams]) => params?.templateKey || parentParams?.templateKey),\n filter(templateKey => !!templateKey)\n );\n\n public readonly readOnly$: Observable<boolean> = this._caseDefinitionId$.pipe(\n switchMap(caseDefinitionId => combineLatest([\n this.environmentService.canUpdateGlobalConfiguration(),\n this.templateService.isFinal(caseDefinitionId.caseDefinitionKey, caseDefinitionId.caseDefinitionVersionTag)\n ]).pipe(\n map(([canUpdateGlobal, isFinalCase]) => !canUpdateGlobal || isFinalCase),\n startWith(true)\n )\n )\n );\n\n constructor(\n private readonly templateService: FreemarkerTemplateManagementService,\n private readonly route: ActivatedRoute,\n private readonly pageTitleService: PageTitleService,\n private readonly router: Router,\n private readonly notificationService: NotificationService,\n private readonly translateService: TranslateService,\n private readonly breadcrumbService: BreadcrumbService,\n private readonly environmentService: EnvironmentService,\n ) {\n }\n\n public ngOnInit(): void {\n this.loadTemplate();\n }\n\n public ngAfterViewInit(): void {\n this.initBreadcrumb();\n }\n\n public ngOnDestroy(): void {\n this.pageTitleService.enableReset();\n this.breadcrumbService.clearThirdBreadcrumb();\n this.breadcrumbService.clearFourthBreadcrumb();\n }\n\n public onValid(valid: boolean): void {\n this.saveDisabled$.next(valid === false);\n }\n\n public onValueChange(value: string): void {\n this.updatedModelValue$.next(value);\n }\n\n public updateTemplate(): void {\n this.disableEditor();\n this.disableSave();\n this.disableMore();\n\n combineLatest([this.updatedModelValue$, this._caseDefinitionId$, this.templateKey$]).pipe(\n switchMap(([updatedModelValue, caseDefinitionId, templateKey]) =>\n this.templateService.updateTemplate(\n {\n key: templateKey,\n caseDefinitionKey: caseDefinitionId.caseDefinitionKey,\n caseDefinitionVersionTag: caseDefinitionId.caseDefinitionVersionTag,\n type: 'text',\n content: updatedModelValue,\n }\n )\n ),\n take(1)\n ).subscribe({\n next: result => {\n this.enableMore();\n this.enableSave();\n this.enableEditor();\n this.showSuccessMessage(result.key);\n this.setModel(result.content);\n this.template$.next(result);\n },\n error: () => {\n this.enableMore();\n this.enableSave();\n this.enableEditor();\n },\n });\n }\n\n public onDelete(templates: Array<any>): void {\n this.disableEditor();\n this.disableSave();\n this.disableMore();\n\n this._caseDefinitionId$.pipe(take(1)).subscribe(caseDefinitionId =>\n this.templateService.deleteTemplates({\n caseDefinitionKey: caseDefinitionId.caseDefinitionKey,\n caseDefinitionVersionTag: caseDefinitionId.caseDefinitionVersionTag,\n templates\n }).pipe(take(1)).subscribe(_ =>\n this.router.navigate([`/case-management/case/${caseDefinitionId.caseDefinitionKey}/version/${caseDefinitionId.caseDefinitionVersionTag}/text-template`])\n )\n );\n }\n\n public showDeleteModal(): void {\n this.showDeleteModal$.next(true);\n }\n\n private loadTemplate(): void {\n combineLatest([this._caseDefinitionId$, this.templateKey$]).pipe(\n tap(([_, key]) => {\n this.pageTitleService.setCustomPageTitle(`Text template: ${key}`, true);\n }),\n switchMap(([caseDefinitionId, key]) => this.templateService.getTextTemplate(caseDefinitionId.caseDefinitionKey, caseDefinitionId.caseDefinitionVersionTag, key)),\n take(1),\n ).subscribe(result => {\n this.enableMore();\n this.enableSave();\n this.enableEditor();\n this.setModel(result.content);\n this.template$.next(result);\n });\n }\n\n private setModel(content: string): void {\n this.model$.next({\n value: content,\n language: 'freemarker2',\n });\n this.updatedModelValue$.next(content);\n }\n\n private disableMore(): void {\n this.moreDisabled$.next(true);\n }\n\n private enableMore(): void {\n this.moreDisabled$.next(false);\n }\n\n private disableSave(): void {\n this.saveDisabled$.next(true);\n }\n\n private enableSave(): void {\n this.saveDisabled$.next(false);\n }\n\n private disableEditor(): void {\n this.editorDisabled$.next(true);\n }\n\n private enableEditor(): void {\n this.editorDisabled$.next(false);\n }\n\n private initBreadcrumb(): void {\n this._caseDefinitionId$.subscribe(caseDefinitionId => {\n this.breadcrumbService.setThirdBreadcrumb({\n route: [`/case-management/case/${caseDefinitionId.caseDefinitionKey}/version/${caseDefinitionId.caseDefinitionVersionTag}`],\n content: `${caseDefinitionId.caseDefinitionKey}:${caseDefinitionId.caseDefinitionVersionTag}`,\n href: `/case-management/case/${caseDefinitionId.caseDefinitionKey}/version/${caseDefinitionId.caseDefinitionVersionTag}`,\n });\n this.breadcrumbService.setFourthBreadcrumb({\n route: [`/case-management/case/${caseDefinitionId.caseDefinitionKey}/version/${caseDefinitionId.caseDefinitionVersionTag}/text-template`],\n content: 'Text template',\n href: `/case-management/case/${caseDefinitionId.caseDefinitionKey}/version/${caseDefinitionId.caseDefinitionVersionTag}/text-template`,\n });\n });\n }\n\n private showSuccessMessage(key: string): void {\n this.notificationService.showToast({\n caption: this.translateService.instant(`${key} was saved successfully`, {\n key,\n }),\n type: 'success',\n duration: 4000,\n showClose: true,\n title: this.translateService.instant('Saved successfully'),\n });\n }\n}\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\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) || (readOnly$ | async)\"\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 || (readOnly$ | async)\"\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) || (readOnly$ | async)\"\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","/*\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 */\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {ROLE_ADMIN} from '@valtimo/shared';\nimport {AuthGuardService} from '@valtimo/security';\nimport {TextTemplateEditorComponent} from './components/text-template-editor/text-template-editor.component';\n\nconst routes: Routes = [\n {\n path: 'case-management/case/:caseDefinitionKey/version/:caseDefinitionVersionTag/text-template/:templateKey',\n component: TextTemplateEditorComponent,\n canActivate: [AuthGuardService],\n data: {\n title: 'Text Template Editor',\n templates: [ROLE_ADMIN],\n customPageTitle: true,\n },\n },\n];\n\n@NgModule({\n imports: [CommonModule, RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class TemplateManagementRoutingModule {}\n","/*\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\nimport {Component, EventEmitter, Input, OnDestroy, OnInit, Output} from '@angular/core';\nimport {FunctionConfigurationComponent, FunctionConfigurationData} from '@valtimo/plugin';\nimport {BehaviorSubject, combineLatest, map, Observable, of, Subscription, switchMap, take, tap} from 'rxjs';\nimport {GenerateTextFileConfig} from '../../models';\nimport {SelectItem} from '@valtimo/components';\nimport {FreemarkerTemplateManagementService} from '../../../../services';\nimport {CaseManagementParams, ManagementContext} from '@valtimo/shared';\n\n@Component({\n standalone: false,\n selector: 'valtimo-generate-text-file-configuration',\n templateUrl: './generate-text-file.component.html',\n})\nexport class GenerateTextFileComponent\n implements FunctionConfigurationComponent, OnInit, OnDestroy {\n @Input() save$!: Observable<void>;\n @Input() disabled$!: Observable<boolean>;\n @Input() pluginId!: string;\n @Input() context$: Observable<[ManagementContext, CaseManagementParams]>;\n @Input() prefillConfiguration$!: Observable<GenerateTextFileConfig>;\n @Output() valid: EventEmitter<boolean> = new EventEmitter<boolean>();\n @Output() configuration: EventEmitter<FunctionConfigurationData> = new EventEmitter<FunctionConfigurationData>();\n\n private readonly formValue$ = new BehaviorSubject<GenerateTextFileConfig | null>(null);\n private readonly valid$ = new BehaviorSubject<boolean>(false);\n private _subscriptions = new Subscription();\n\n readonly loading$ = new BehaviorSubject<boolean>(true);\n\n readonly textTemplateItems$ = new BehaviorSubject<Array<SelectItem>>([]);\n\n constructor(\n private readonly templateService: FreemarkerTemplateManagementService\n ) {\n }\n\n ngOnInit(): void {\n this.openSaveSubscription();\n this.initContextHandling();\n }\n\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n formValueChange(formValue: GenerateTextFileConfig): void {\n this.formValue$.next(formValue);\n this.handleValid(formValue);\n }\n\n private handleValid(formValue: GenerateTextFileConfig): void {\n const valid = !!(formValue.textTemplateKey && formValue.processVariableName);\n\n this.valid$.next(valid);\n this.valid.emit(valid);\n }\n\n private openSaveSubscription(): void {\n const saveSubscription = this.save$?.subscribe(save => {\n combineLatest([this.formValue$, this.valid$])\n .pipe(take(1))\n .subscribe(([formValue, valid]) => {\n if (valid) {\n this.configuration.emit(formValue!);\n }\n });\n });\n this._subscriptions.add(saveSubscription);\n }\n\n\n private initContextHandling(): void {\n if (!this.context$) {\n return;\n }\n\n const contextSub = this.context$.pipe(\n switchMap(([managementContext, caseDefinitionId]) => {\n if (managementContext == 'case') {\n return this.templateService.getAllTextTemplates(\n caseDefinitionId?.caseDefinitionKey,\n caseDefinitionId?.caseDefinitionVersionTag,\n );\n } else {\n console.error('Freemarker plugin does not support global templates')\n return of(null);\n }\n }\n ),\n map(results =>\n results?.content.map(template => ({\n id: template.key,\n text: template.key,\n })) || []\n ),\n tap(() => this.loading$.next(false))\n )\n .subscribe(results => this.textTemplateItems$.next(results));\n\n this._subscriptions.add(contextSub);\n }\n\n}\n","<!--\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<ng-container *ngIf=\"{\n disabled: disabled$ | async,\n prefill: prefillConfiguration$ ? (prefillConfiguration$ | async) : null,\n textTemplateItems: textTemplateItems$ | async,\n loading: loading$ | async,\n } as obs\"\n>\n <ng-container *ngIf=\"obs.loading === false; else loading\">\n <v-paragraph [margin]=\"true\" [italic]=\"true\">\n {{ 'generateTextFileDescription' | pluginTranslate: pluginId | async }}\n </v-paragraph>\n <v-form (valueChange)=\"formValueChange($event)\">\n <v-select\n [items]=\"obs.textTemplateItems\"\n [margin]=\"true\"\n [widthInPx]=\"350\"\n name=\"textTemplateKey\"\n [title]=\"'textTemplateKey' | pluginTranslate: pluginId | async\"\n [disabled]=\"obs.disabled\"\n [defaultSelectionId]=\"obs.prefill?.textTemplateKey\"\n [required]=\"true\"\n [loading]=\"!obs.textTemplateItems\"\n [tooltip]=\"'textTemplateKeyTooltip' | pluginTranslate: pluginId | async\"\n ></v-select>\n <v-input\n name=\"processVariableName\"\n [title]=\"'processVariableName' | pluginTranslate: pluginId | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.prefill?.processVariableName || 'contentId'\"\n [disabled]=\"obs.disabled\"\n [tooltip]=\"'processVariableNameTooltip' | pluginTranslate: pluginId | async\"\n ></v-input>\n </v-form>\n </ng-container>\n</ng-container>\n\n<ng-template #loading>\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n</ng-template>\n","/*\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\nimport {NgModule} from '@angular/core';\nimport {TextTemplateConfigurationComponent} from './components/text-template-configuration/text-template-configuration.component';\nimport {CommonModule} from '@angular/common';\nimport {PluginTranslatePipeModule} from '@valtimo/plugin';\nimport {\n CarbonListModule,\n ConfirmationModalModule,\n EditorModule,\n FormModule,\n InputModule as ValtimoInputModule,\n ParagraphModule,\n RenderInPageHeaderDirective,\n SelectModule,\n} from '@valtimo/components';\nimport {\n ButtonModule,\n DialogModule,\n DropdownModule,\n IconModule,\n InputModule,\n LoadingModule,\n ModalModule,\n NotificationModule,\n TabsModule,\n} from 'carbon-components-angular';\nimport {CASE_MANAGEMENT_TAB_TOKEN} from '@valtimo/shared';\nimport {TextTemplateListComponent} from './components/text-template-list/text-template-list.component';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {TemplateManagementRoutingModule} from './text-template-management-routing.module';\nimport {GenerateTextFileComponent} from './components/generate-text-file/generate-text-file.component';\n\n@NgModule({\n declarations: [\n GenerateTextFileComponent,\n TextTemplateConfigurationComponent,\n ],\n imports: [\n CommonModule,\n PluginTranslatePipeModule,\n TemplateManagementRoutingModule,\n FormModule,\n ParagraphModule,\n SelectModule,\n ConfirmationModalModule,\n TranslateModule,\n ReactiveFormsModule,\n CarbonListModule,\n EditorModule,\n ValtimoInputModule,\n ButtonModule,\n DialogModule,\n DropdownModule,\n IconModule,\n InputModule,\n LoadingModule,\n ModalModule,\n NotificationModule,\n RenderInPageHeaderDirective,\n TabsModule,\n ],\n exports: [\n GenerateTextFileComponent,\n ],\n providers: [\n {\n provide: CASE_MANAGEMENT_TAB_TOKEN,\n useValue: {\n translationKey: 'text-template',\n component: TextTemplateListComponent,\n },\n multi: true,\n }\n ]\n})\nexport class TextTemplatePluginModule {\n}\n","/*\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\nconst TEXT_TEMPLATE_PLUGIN_LOGO_BASE64 =\n 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyBpZD0ic3ZnMiIgdmlld0JveD0iMCAwIDQwMCAyMDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgPHBhdGggZD0iTSAzMjcuMTE2IDE0NS44OTggTCAzNDAuMzA0IDE2NS44OTIgTCAzODQuMjQxIDk5LjI0NiBMIDM0MC4zMDQgMzIuNjAxIEwgMzI3LjExNiA1Mi41OTUgTCAzNTcuODg4IDk5LjI0NiBMIDMyNy4xMTYgMTQ1Ljg5OCBaIiBzdHlsZT0iZmlsbDogcmdiKDAsIDgwLCAxNzgpOyIgdHJhbnNmb3JtPSJtYXRyaXgoMSwgMCwgMCwgMSwgLTUuNjg0MzQxODg2MDgwODAyZS0xNCwgMCkiLz4KICA8cGF0aCBkPSJNIDY0LjcwMyA1Mi41OTUgTCA1MS41MTggMzIuNjAxIEwgNy41OCA5OS4yNDYgTCA1MS41MTggMTY1Ljg5MiBMIDY0LjcwMyAxNDUuODk4IEwgMzMuOTMzIDk5LjI0NiBMIDY0LjcwMyA1Mi41OTUgWiIgc3R5bGU9ImZpbGw6IHJnYigwLCA4MCwgMTc4KTsiIHRyYW5zZm9ybT0ibWF0cml4KDEsIDAsIDAsIDEsIC01LjY4NDM0MTg4NjA4MDgwMmUtMTQsIDApIi8+CiAgPHBhdGggZD0iTSAxMTIuODYgMzIuNjAxIEwgMTM5LjUxOCAzMi42MDEgTCAxMzQuODE1IDU5LjI2IEwgMTYxLjQ3NCA1OS4yNiBMIDE2Ni4xNzYgMzIuNjAxIEwgMTkyLjgzNCAzMi42MDEgTCAxODguMTMgNTkuMjYgTCAyMTQuNzg4IDU5LjI2IEwgMjEwLjA3NyA4NS45MTcgTCAxODMuNDE4IDg1LjkxNyBMIDE3OC43MjMgMTEyLjU3NSBMIDIwNS4zODIgMTEyLjU3NSBMIDIwMC42NzggMTM5LjIzMyBMIDE3NC4wMjEgMTM5LjIzMyBMIDE2OS4zMzYgMTY1Ljg5MiBMIDE0Mi42NzkgMTY1Ljg5MiBMIDE0Ny4zNzMgMTM5LjIzMyBMIDEyMC43MTUgMTM5LjIzMyBMIDExNi4wOTcgMTY1Ljg5MiBMIDg5LjM2MiAxNjUuODkyIEwgOTQuMDU2IDEzOS4yMzMgTCA2Ny4zOTggMTM5LjIzMyBMIDcyLjEwMiAxMTIuNTc1IEwgOTguNzYgMTEyLjU3NSBMIDEwMy40NTQgODUuOTg1IEwgNzYuNzk2IDg1Ljk4NSBMIDgxLjQ5OCA1OS4yNiBMIDEwOC4xNTcgNTkuMjYgTCAxMTIuODYgMzIuNjAxIFogTSAxMjUuNDE3IDExMi41NzUgTCAxNTIuMDc2IDExMi41NzUgTCAxNTYuNzc5IDg1LjkxNyBMIDEzMC4xMjEgODUuOTE3IEwgMTI1LjQxNyAxMTIuNTc1IFoiIHN0eWxlPSJmaWxsOiByZ2IoMCwgODAsIDE3OCk7IiB0cmFuc2Zvcm09Im1hdHJpeCgxLCAwLCAwLCAxLCAtNS42ODQzNDE4ODYwODA4MDJlLTE0LCAwKSIvPgogIDxnIHRyYW5zZm9ybT0ibWF0cml4KDAuMjQ2MjE5MDA5MTYwOTk1NDgsIDAsIDAsIDAuMjQ2MjE5MDA5MTYwOTk1NDgsIDIwNC4yOTI0MTk0MzM1OTM3LCAzMi4xNjgzNjkyOTMyMTI4OSkiIHN0eWxlPSIiPgogICAgPHBhdGggZD0iTTQ4Ni4yMDEsMTk2LjEyNGgtMTMuMTY2VjEzMi41OWMwLTAuMzk2LTAuMDYyLTAuNzk1LTAuMTE1LTEuMTk2Yy0wLjAyMS0yLjUyMy0wLjgyNS01LTIuNTUyLTYuOTYzTDM2NC42NTcsMy42NzcmIzEwOyYjOTsmIzk7Yy0wLjAzMy0wLjAzMS0wLjA2NC0wLjA0Mi0wLjA4NS0wLjA3NWMtMC42My0wLjcwNC0xLjM2NC0xLjI5LTIuMTQzLTEuNzk2Yy0wLjIyOS0wLjE1NC0wLjQ2MS0wLjI4My0wLjcwMi0wLjQxOCYjMTA7JiM5OyYjOTtjLTAuNjcyLTAuMzY2LTEuMzg3LTAuNjcxLTIuMTIxLTAuODkyYy0wLjItMC4wNTUtMC4zNzktMC4xMzQtMC41NzctMC4xODhDMzU4LjIzLDAuMTE4LDM1Ny40MDEsMCwzNTYuNTYyLDBIOTYuNzU3JiMxMDsmIzk7JiM5O0M4NC44OTQsMCw3NS4yNTYsOS42NDksNzUuMjU2LDIxLjUwMnYxNzQuNjE2SDYyLjA5Yy0xNi45NjgsMC0zMC43MjksMTMuNzUzLTMwLjcyOSwzMC43M3YxNTkuODEyJiMxMDsmIzk7JiM5O2MwLDE2Ljk2MSwxMy43NjEsMzAuNzMxLDMwLjcyOSwzMC43MzFoMTMuMTY2VjUyNi43OWMwLDExLjg1NCw5LjYzOCwyMS41MDEsMjEuNTAxLDIxLjUwMWgzNTQuNzc2JiMxMDsmIzk7JiM5O2MxMS44NTMsMCwyMS41MDEtOS42NDcsMjEuNTAxLTIxLjUwMVY0MTcuMzkyaDEzLjE2NmMxNi45NjYsMCwzMC43MjktMTMuNzY0LDMwLjcyOS0zMC43MzFWMjI2Ljg1NCYjMTA7JiM5OyYjOTtDNTE2LjkzLDIwOS44NzIsNTAzLjE2NywxOTYuMTI0LDQ4Ni4yMDEsMTk2LjEyNHogTTk2Ljc1NywyMS41MDJoMjQ5LjA1NHYxMTAuMDA2YzAsNS45NDMsNC44MTcsMTAuNzUxLDEwLjc1MSwxMC43NTFoOTQuOTcyJiMxMDsmIzk7JiM5O3Y1My44NjRIOTYuNzU3VjIxLjUwMnogTTIwMi44MTQsMjI1LjA0Mmg0MS42OGwxNC4wNjMsMjkuM2M0Ljc1Niw5Ljc1Niw4LjMzNiwxNy42MjIsMTIuMTQ3LDI2LjY3NmgwLjQ4JiMxMDsmIzk7JiM5O2MzLjc5OC0xMC4yNDIsNi45LTE3LjM5MiwxMC45NS0yNi42NzZsMTMuNTg3LTI5LjNoNDEuNDQ5bC00NS4yNjEsNzguMzYzbDQ3LjYzOCw4Mi4xODVoLTQxLjkyN2wtMTQuNTI1LTI5LjA2JiMxMDsmIzk7JiM5O2MtNS45NTYtMTEuMTk3LTkuNzcxLTE5LjUyOC0xNC4yOTktMjguODI1aC0wLjQ3OGMtMy4zMzQsOS4yOTctNy4zODEsMTcuNjI4LTEyLjM4MSwyOC44MjVsLTEzLjMzNiwyOS4wNmgtNDEuNDU1bDQ2LjQ1NS04MS4yMjQmIzEwOyYjOTsmIzk7TDIwMi44MTQsMjI1LjA0MnogTTY2LjA4LDI1NS41MzJ2LTMwLjQ4OWgxMjMuMzgydjMwLjQ4OWgtNDMuODI4djEzMC4wNDloLTM2LjQzNFYyNTUuNTMySDY2LjA4eiBNNDUxLjUzNCw1MjAuOTYySDk2Ljc1N3YtMTAzLjU3JiMxMDsmIzk7JiM5O2gzNTQuNzc2VjUyMC45NjJ6IE00NzEuNzY0LDI1NS41MzJoLTQzLjgzMXYxMzAuMDQ5aC0zNi40NDJWMjU1LjUzMmgtNDMuMTE5di0zMC40ODloMTIzLjM5M1YyNTUuNTMyeiIvPgogIDwvZz4KPC9zdmc+';\n\nexport {TEXT_TEMPLATE_PLUGIN_LOGO_BASE64};\n","/*\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\nexport * from './text-template-plugin-logo';\n","/*\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\nimport {PluginSpecification} from '@valtimo/plugin';\nimport {TextTemplateConfigurationComponent} from './components/text-template-configuration/text-template-configuration.component';\nimport {TEXT_TEMPLATE_PLUGIN_LOGO_BASE64} from './assets';\nimport {GenerateTextFileComponent} from './components/generate-text-file/generate-text-file.component';\n\nconst textTemplatePluginSpecification: PluginSpecification = {\n pluginId: 'text-template',\n pluginConfigurationComponent: TextTemplateConfigurationComponent,\n pluginLogoBase64: TEXT_TEMPLATE_PLUGIN_LOGO_BASE64,\n functionConfigurationComponents: {\n 'generate-text-file': GenerateTextFileComponent,\n },\n pluginTranslations: {\n nl: {\n title: 'Text sjablonen',\n 'generate-text-file': 'Genereer Textbestand',\n description: 'Maak Text sjablonen met Freemarker.',\n configurationTitle: 'Configuratienaam',\n configurationTitleTooltip:\n 'De naam van de huidige plug-in configuratie. Onder deze naam kan de configuratie worden gevonden in de rest van de applicatie.',\n generateTextFileDescription:\n 'Deze actie genereert de inhoud van een text-template en slaat het resultaat op in een tijdelijk bestand. Het ID van het bestand wordt opgeslagen in een Proces Variabele.',\n textTemplateKey: 'Text sjabloon',\n textTemplateKeyTooltip: 'Op bases van deze sjabloon wordt de text-template gegenereerd',\n processVariableName: 'Procesvariabelenaam',\n processVariableNameTooltip: 'Het resultaat wordt opgeslagen in een procesvariabele met deze naam',\n },\n en: {\n title: 'Text Templates',\n 'generate-text-file': 'Generate Text File',\n description: 'Create text-template templates with Freemarker.',\n configurationTitle: 'Configuration Name',\n configurationTitleTooltip:\n 'The name of the current plug-in configuration. The configuration can be found under this name in the rest of the application.',\n generateTextFileDescription:\n 'This action generates the content of an text-template and saves the result in a temporary file. The file ID is stored in a Process Variable.',\n textTemplateKey: 'Text Template',\n textTemplateKeyTooltip: 'The text-template will be generated based on this template.',\n processVariableName: 'Process Variable Name',\n processVariableNameTooltip: 'The result will be stored in a process variable with this name.',\n },\n de: {\n title: 'Text-Vorlagen',\n 'generate-text-file': 'Text-Datei generieren',\n description: 'Erstellen Sie Text-Vorlagen mit Freemarker.',\n configurationTitle: 'Konfigurationsname',\n configurationTitleTooltip:\n 'Der Name der aktuellen Plug-in-Konfiguration. Unter diesem Namen kann die Konfiguration im Rest der Anwendung gefunden werden.',\n generateTextFileDescription:\n 'Diese Aktion generiert den Inhalt einer Text und speichert das Ergebnis in einer temporären Datei. Die Datei-ID wird in einer Prozessvariablen gespeichert.',\n textTemplateKey: 'Text-Vorlage',\n textTemplateKeyTooltip: 'Die Text wird basierend auf dieser Vorlage generiert.',\n processVariableName: 'Prozessvariablenname',\n processVariableNameTooltip: 'Das Ergebnis wird in einer Prozessvariablen mit diesem Namen gespeichert.',\n },\n },\n};\n\nexport {textTemplatePluginSpecification};\n","/*\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/*\n * Public API Surface of document-generator\n */\n\nexport * from './lib/plugins/document-generator/models';\nexport * from './lib/plugins/document-generator/document-generator-plugin-module';\nexport * from './lib/plugins/document-generator/document-generator-plugin.specification';\nexport * from './lib/plugins/document-generator/components/generate-csv/generate-csv.component';\nexport * from './lib/plugins/document-generator/components/generate-pdf/generate-pdf.component';\nexport * from './lib/plugins/document-generator/components/document-template-add-edit-modal/document-template-add-edit-modal.component';\nexport * from './lib/plugins/document-generator/components/document-generator-configuration/document-generator-configuration.component';\nexport * from './lib/plugins/document-generator/components/document-template-delete-modal/document-template-delete-modal.component';\nexport * from './lib/plugins/document-generator/components/document-template-editor/document-template-editor.component';\nexport * from './lib/plugins/document-generator/components/document-template-list/document-template-list.component';\n\n/*\n * Public API Surface of mail-template\n */\n\nexport * from './lib/plugins/mail-template/models';\nexport * from './lib/plugins/mail-template/mail-template-plugin-module';\nexport * from './lib/plugins/mail-template/mail-template-plugin.specification';\nexport * from './lib/plugins/mail-template/components/generate-mail-content/generate-mail-content.component';\nexport * from './lib/plugins/mail-template/components/generate-mail-file/generate-mail-file.component';\nexport * from './lib/plugins/mail-template/components/mail-template-add-edit-modal/mail-template-add-edit-modal.component';\nexport * from './lib/plugins/mail-template/components/mail-template-configuration/mail-template-configuration.component';\nexport * from './lib/plugins/mail-template/components/mail-template-delete-modal/mail-template-delete-modal.component';\nexport * from './lib/plugins/mail-template/components/mail-template-editor/mail-template-editor.component';\nexport * from './lib/plugins/mail-template/components/mail-template-list/mail-template-list.component';\n\n/*\n * Public API Surface of text-template\n */\n\nexport * from './lib/plugins/text-template/models';\nexport * from './lib/plugins/text-template/text-template-plugin-module';\nexport * from './lib/plugins/text-template/text-template-plugin.specification';\nexport * from './lib/plugins/text-template/components/generate-text-file/generate-text-file.component';\nexport * from './lib/plugins/text-template/components/text-template-add-edit-modal/text-template-add-edit-modal.component';\nexport * from './lib/plugins/text-template/components/text-template-configuration/text-template-configuration.component';\nexport * from './lib/plugins/text-template/components/text-template-delete-modal/text-template-delete-modal.component';\nexport * from './lib/plugins/text-template/components/text-template-editor/text-template-editor.component';\nexport * from './lib/plugins/text-template/components/text-template-list/text-template-list.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i2","i3","i5","i1.FreemarkerTemplateManagementService","i4","i6","i7","routes","TemplateManagementRoutingModule","ValtimoInputModule"],"mappings":"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"}
1
+ {"version":3,"file":"valtimo-plugins-freemarker.mjs","sources":["../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/document-generator/models/config.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/document-generator/models/index.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/document-generator/components/document-generator-configuration/document-generator-configuration.component.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/document-generator/components/document-generator-configuration/document-generator-configuration.component.html","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/document-generator/components/document-template-delete-modal/document-template-delete-modal.component.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/document-generator/components/document-template-delete-modal/document-template-delete-modal.component.html","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/document-generator/components/document-template-add-edit-modal/document-template-add-edit-modal.component.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/document-generator/components/document-template-add-edit-modal/document-template-add-edit-modal.component.html","../../../../projects/valtimo-plugins/freemarker/src/lib/services/freemarker-template-management.service.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/services/index.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/document-generator/components/document-template-list/document-template-list.component.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/document-generator/components/document-template-list/document-template-list.component.html","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/document-generator/components/document-template-editor/document-template-editor.component.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/document-generator/components/document-template-editor/document-template-editor.component.html","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/document-generator/document-generator-management-routing.module.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/document-generator/components/generate-csv/generate-csv.component.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/document-generator/components/generate-csv/generate-csv.component.html","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/document-generator/components/generate-pdf/generate-pdf.component.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/document-generator/components/generate-pdf/generate-pdf.component.html","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/document-generator/document-generator-plugin-module.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/document-generator/assets/document-generator-plugin-logo.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/document-generator/assets/index.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/document-generator/document-generator-plugin.specification.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/mail-template/models/config.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/mail-template/models/index.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/mail-template/components/mail-template-configuration/mail-template-configuration.component.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/mail-template/components/mail-template-configuration/mail-template-configuration.component.html","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/mail-template/components/generate-mail-content/generate-mail-content.component.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/mail-template/components/generate-mail-content/generate-mail-content.component.html","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/mail-template/components/generate-mail-file/generate-mail-file.component.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/mail-template/components/generate-mail-file/generate-mail-file.component.html","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/mail-template/components/mail-template-delete-modal/mail-template-delete-modal.component.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/mail-template/components/mail-template-delete-modal/mail-template-delete-modal.component.html","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/mail-template/components/mail-template-add-edit-modal/mail-template-add-edit-modal.component.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/mail-template/components/mail-template-add-edit-modal/mail-template-add-edit-modal.component.html","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/mail-template/components/mail-template-list/mail-template-list.component.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/mail-template/components/mail-template-list/mail-template-list.component.html","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/mail-template/components/mail-template-editor/mail-template-editor.component.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/mail-template/components/mail-template-editor/mail-template-editor.component.html","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/mail-template/mail-template-management-routing.module.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/mail-template/mail-template-plugin-module.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/mail-template/assets/mail-template-plugin-logo.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/mail-template/assets/index.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/mail-template/mail-template-plugin.specification.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/text-template/models/config.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/text-template/models/index.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/text-template/components/text-template-configuration/text-template-configuration.component.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/text-template/components/text-template-configuration/text-template-configuration.component.html","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/text-template/components/text-template-delete-modal/text-template-delete-modal.component.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/text-template/components/text-template-delete-modal/text-template-delete-modal.component.html","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/text-template/components/text-template-add-edit-modal/text-template-add-edit-modal.component.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/text-template/components/text-template-add-edit-modal/text-template-add-edit-modal.component.html","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/text-template/components/text-template-list/text-template-list.component.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/text-template/components/text-template-list/text-template-list.component.html","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/text-template/components/text-template-editor/text-template-editor.component.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/text-template/components/text-template-editor/text-template-editor.component.html","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/text-template/text-template-management-routing.module.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/text-template/components/generate-text-file/generate-text-file.component.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/text-template/components/generate-text-file/generate-text-file.component.html","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/text-template/text-template-plugin-module.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/text-template/assets/text-template-plugin-logo.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/text-template/assets/index.ts","../../../../projects/valtimo-plugins/freemarker/src/lib/plugins/text-template/text-template-plugin.specification.ts","../../../../projects/valtimo-plugins/freemarker/src/public_api.ts","../../../../projects/valtimo-plugins/freemarker/src/valtimo-plugins-freemarker.ts"],"sourcesContent":["/*\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\nimport {PluginConfigurationData} from '@valtimo/plugin';\n\ninterface DocumentTemplateConfig extends PluginConfigurationData {\n}\n\ninterface GeneratePdfFileConfig {\n templateKey: string;\n processVariableName: string;\n}\n\ninterface GenerateCsvFileConfig {\n templateKey: string;\n processVariableName: string;\n}\n\nconst DOCUMENT_TYPES: Array<string> = ['csv', 'pdf'];\n\nexport {DocumentTemplateConfig, GeneratePdfFileConfig, GenerateCsvFileConfig, DOCUMENT_TYPES};\n","/*\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\nexport * from './config';\n","/*\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\nimport {Component, EventEmitter, Input, OnDestroy, OnInit, Output} from '@angular/core';\nimport {PluginConfigurationComponent, PluginConfigurationData} from '@valtimo/plugin';\nimport {BehaviorSubject, combineLatest, Observable, Subscription, take} from 'rxjs';\nimport {DocumentTemplateConfig} from '../../models';\n\n@Component({\n standalone: false,\n selector: 'valtimo-document-template-configuration',\n templateUrl: './document-generator-configuration.component.html',\n})\nexport class DocumentGeneratorConfigurationComponent\n implements PluginConfigurationComponent, OnInit, OnDestroy\n{\n @Input() save$!: Observable<void>;\n @Input() disabled$!: Observable<boolean>;\n @Input() pluginId!: string;\n @Input() prefillConfiguration$!: Observable<DocumentTemplateConfig>;\n @Output() valid: EventEmitter<boolean> = new EventEmitter<boolean>();\n @Output() configuration: EventEmitter<PluginConfigurationData> = new EventEmitter<PluginConfigurationData>();\n\n constructor(\n ) {}\n\n private saveSubscription!: Subscription;\n private readonly formValue$ = new BehaviorSubject<DocumentTemplateConfig | null>(null);\n private readonly valid$ = new BehaviorSubject<boolean>(false);\n\n ngOnInit(): void {\n this.openSaveSubscription();\n }\n\n ngOnDestroy() {\n this.saveSubscription?.unsubscribe();\n }\n\n formValueChange(formValue: DocumentTemplateConfig): void {\n this.formValue$.next(formValue);\n this.handleValid(formValue);\n }\n\n private handleValid(formValue: DocumentTemplateConfig): void {\n const valid = !!(formValue.configurationTitle);\n\n this.valid$.next(valid);\n this.valid.emit(valid);\n }\n\n private openSaveSubscription(): void {\n this.saveSubscription = this.save$?.subscribe(_ => {\n combineLatest([this.formValue$, this.valid$])\n .pipe(take(1))\n .subscribe(([formValue, valid]) => {\n if (valid) {\n this.configuration.emit(formValue!);\n this.injectCaseTab();\n }\n });\n });\n }\n\n private injectCaseTab() {\n }\n}\n","<!--\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=\"Document Generator Plugin\"\n >\n </v-input>\n</v-form>\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\nimport {ChangeDetectionStrategy, Component, EventEmitter, Input, Output} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {ConfirmationModalModule} from '@valtimo/components';\n\n@Component({\n standalone: true,\n selector: 'valtimo-document-template-delete-modal',\n templateUrl: './document-template-delete-modal.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ConfirmationModalModule\n ]\n})\nexport class DocumentTemplateDeleteModalComponent {\n @Input() deleteRowKeys: Array<string>;\n @Input() showDeleteModal$: Observable<boolean>;\n @Output() deleteEvent = new EventEmitter<Array<any>>();\n\n public onDelete(templates: Array<any>): void {\n this.deleteEvent.emit(templates);\n }\n}\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\n<valtimo-confirmation-modal\n confirmButtonDocumentTranslationKey=\"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","/*\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\nimport {ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output,} from '@angular/core';\nimport {AbstractControl, FormBuilder, ReactiveFormsModule, Validators} from '@angular/forms';\nimport {TemplateMetadataModal} from '../../../../models';\nimport {CARBON_CONSTANTS, KeyGeneratorService, ValtimoCdsModalDirective} from '@valtimo/components';\nimport {CommonModule} from '@angular/common';\nimport {ButtonModule, ComboBoxModule, InputModule, ListItem, ModalModule} from 'carbon-components-angular';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {DOCUMENT_TYPES} from '../../models';\n\n@Component({\n standalone: true,\n selector: 'valtimo-document-template-add-edit-modal',\n templateUrl: './document-template-add-edit-modal.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n ButtonModule,\n TranslateModule,\n ModalModule,\n ReactiveFormsModule,\n InputModule,\n ComboBoxModule,\n ValtimoCdsModalDirective,\n ]\n})\nexport class DocumentTemplateAddEditModalComponent implements OnInit {\n @Input() open = false;\n @Input() modalType: TemplateMetadataModal = 'add';\n\n @Input() set defaultKeyValue(value: string) {\n this._defaultKeyValue = value;\n this.setDefaultKeyValue(value);\n }\n\n @Input() set defaultTypeValue(value: string) {\n this._defaultTypeValue = value;\n this.setDefaultTypeValue(value);\n }\n\n @Output() closeEvent = new EventEmitter<{ key: string; type: string } | null>();\n\n public form = this.fb.group({\n key: this.fb.control('', Validators.required),\n type: this.fb.control(undefined, Validators.required),\n });\n\n private _defaultKeyValue!: string;\n private _defaultTypeValue!: string;\n\n public get key(): AbstractControl<string> {\n const key = this.form?.get('key');\n if (!key?.value) {\n return key;\n }\n key.setValue(this.keyGeneratorService.getUniqueKey(key.value, []));\n return key;\n }\n\n public get type(): AbstractControl<string> {\n return this.form?.get('type');\n }\n\n public readonly documentTypeSelectItems: Array<ListItem> = DOCUMENT_TYPES.map(item => ({\n id: item,\n content: item,\n selected: false,\n }));\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly keyGeneratorService: KeyGeneratorService,\n ) {\n }\n\n public ngOnInit(): void {\n }\n\n public onCancel(): void {\n this.closeEvent.emit(null);\n this.resetForm();\n }\n\n public onConfirm(): void {\n if (!this.key || !this.type) {\n return;\n }\n\n this.closeEvent.emit({key: this.key.value, type: this.type.value});\n this.resetForm();\n }\n\n private setDefaultKeyValue(value: string) {\n this.key.setValue(value);\n }\n\n private setDefaultTypeValue(value: string) {\n this.type.setValue(value);\n }\n\n private resetForm(): void {\n setTimeout(() => {\n this.form.reset();\n if (this.modalType === 'edit') {\n this.setDefaultKeyValue(this._defaultKeyValue);\n this.setDefaultTypeValue(this._defaultTypeValue);\n }\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n}\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\n<cds-modal\n *ngIf=\"{\n isAdd: modalType === '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 />\n </cds-label>\n <cds-combo-box\n formControlName=\"type\"\n [label]=\"'Document type'\"\n [dropUp]=\"true\"\n [items]=\"documentTypeSelectItems\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\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","/*\n * Copyright 2015-2024 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\nimport {Injectable} from '@angular/core';\nimport {HttpClient, HttpHeaders} from '@angular/common/http';\nimport {map, Observable} from 'rxjs';\nimport {\n DeleteTemplatesRequest,\n Template,\n TemplateListItem,\n TemplatePreviewRequest,\n TemplateResponse,\n TemplateType,\n UpdateTemplateRequest,\n} from '../models';\nimport {BuildingBlockManagementParams, CaseManagementParams, ConfigService, InterceptorSkip, Page} from '@valtimo/shared';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FreemarkerTemplateManagementService {\n\n private readonly valtimoEndpointUri: string;\n\n constructor(\n private readonly configService: ConfigService,\n private readonly http: HttpClient\n ) {\n this.valtimoEndpointUri = `${this.configService.config.valtimoApi.endpointUri}management/`;\n }\n\n public getAllMailTemplates(caseParam: CaseManagementParams = null, buildingBlock: BuildingBlockManagementParams = null): Observable<Page<TemplateListItem>> {\n return this.getTemplates(caseParam, buildingBlock, 'mail', undefined, undefined, 0, 10000);\n }\n\n public getAllTextTemplates(caseParam: CaseManagementParams = null, buildingBlock: BuildingBlockManagementParams = null): Observable<Page<TemplateListItem>> {\n return this.getTemplates(caseParam, buildingBlock, 'text', undefined, undefined, 0, 10000);\n }\n\n public getAllDocumentTemplates(caseParam: CaseManagementParams = null, buildingBlock: BuildingBlockManagementParams = null): Observable<Page<TemplateListItem>> {\n return this.getTemplates(caseParam, buildingBlock, undefined, ['csv', 'pdf'], undefined, 0, 10000);\n }\n\n public getAllTemplates(caseParam: CaseManagementParams = null, buildingBlock: BuildingBlockManagementParams = null, templateType?: TemplateType): Observable<Page<TemplateListItem>> {\n return this.getTemplates(caseParam, buildingBlock, templateType, undefined, undefined, 0, 10000);\n }\n\n public getTemplates(\n caseParam: CaseManagementParams,\n buildingBlock: BuildingBlockManagementParams,\n templateType?: TemplateType,\n templateTypes?: TemplateType[],\n templateKey?: string,\n page?: number,\n pageSize?: number,\n ): Observable<Page<TemplateListItem>> {\n const params = {\n caseDefinitionKey: caseParam?.caseDefinitionKey,\n caseDefinitionVersionTag: caseParam?.caseDefinitionVersionTag,\n buildingBlockDefinitionKey: buildingBlock?.buildingBlockDefinitionKey,\n buildingBlockDefinitionVersionTag: buildingBlock?.buildingBlockDefinitionVersionTag,\n templateType,\n templateTypes,\n templateKey,\n page,\n size: pageSize\n };\n Object.keys(params).forEach(key => {\n if (params[key] == undefined) {\n delete params[key];\n }\n });\n return this.http.get<Page<TemplateListItem>>(\n `${this.valtimoEndpointUri}v1/template`,\n {params}\n );\n }\n\n public getMailTemplate(caseParam: CaseManagementParams, buildingBlock: BuildingBlockManagementParams, key: string): Observable<TemplateResponse> {\n return this.getTemplate(caseParam, buildingBlock, 'mail', key);\n }\n\n public getTextTemplate(caseParam: CaseManagementParams, buildingBlock: BuildingBlockManagementParams, key: string): Observable<TemplateResponse> {\n return this.getTemplate(caseParam, buildingBlock, 'text', key);\n }\n\n public getTemplate(caseParam: CaseManagementParams, buildingBlock: BuildingBlockManagementParams, templateType: TemplateType, key: string): Observable<TemplateResponse> {\n const params = {\n caseDefinitionKey: caseParam?.caseDefinitionKey,\n caseDefinitionVersionTag: caseParam?.caseDefinitionVersionTag,\n buildingBlockDefinitionKey: buildingBlock?.buildingBlockDefinitionKey,\n buildingBlockDefinitionVersionTag: buildingBlock?.buildingBlockDefinitionVersionTag,\n templateType,\n key\n };\n Object.keys(params).forEach(key => {\n if (params[key] == undefined) {\n delete params[key];\n }\n });\n return this.http.get<TemplateResponse>(\n `${this.valtimoEndpointUri}v1/template-type/${templateType}/template/${key}`,\n {params}\n );\n }\n\n public addTemplate(template: Template): Observable<TemplateResponse> {\n return this.http.post<TemplateResponse>(`${this.valtimoEndpointUri}v1/template`, template);\n }\n\n public deleteTemplates(request: DeleteTemplatesRequest): Observable<null> {\n return this.http.delete<null>(`${this.valtimoEndpointUri}v1/template`, {body: request});\n }\n\n public updateTemplate(template: UpdateTemplateRequest): Observable<TemplateResponse> {\n return this.http.put<TemplateResponse>(`${this.valtimoEndpointUri}v1/template`, template);\n }\n\n public previewTemplate(template: TemplatePreviewRequest): Observable<Blob> {\n return this.http.post(`${this.valtimoEndpointUri}v1/template/preview`, template, {responseType: 'blob'});\n }\n\n public isFinal(caseParam: CaseManagementParams = null, buildingBlock: BuildingBlockManagementParams = null): Observable<boolean> {\n if (caseParam?.caseDefinitionKey) {\n return this.http\n .get<any>(\n `${this.valtimoEndpointUri}v1/case-definition/${caseParam.caseDefinitionKey}/version/${caseParam.caseDefinitionVersionTag}`,\n {\n headers: new HttpHeaders().set(InterceptorSkip, '403'),\n }\n )\n .pipe(map(caseDefinition => caseDefinition.final));\n } else {\n return this.http\n .get<any>(\n `${this.valtimoEndpointUri}v1/building-block/${buildingBlock.buildingBlockDefinitionKey}/version/${buildingBlock.buildingBlockDefinitionVersionTag}`,\n {\n headers: new HttpHeaders().set(InterceptorSkip, '403'),\n }\n )\n .pipe(map(buildingBlockDefinition => buildingBlockDefinition.final));\n }\n }\n}\n","/*\n * Copyright 2015-2024 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\nexport * from \"./freemarker-template-management.service\";\n","/*\n * Copyright 2015-2024 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\nimport {ChangeDetectionStrategy, Component, OnInit, ViewChild,} from '@angular/core';\nimport {BehaviorSubject, combineLatest, filter, map, merge, Observable, startWith, switchMap, take} from 'rxjs';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {CarbonListComponent, CarbonListModule, ColumnConfig, ViewType} from '@valtimo/components';\nimport {FreemarkerTemplateManagementService} from '../../../../services';\nimport {TemplateListItem} from '../../../../models';\nimport {\n BuildingBlockManagementParams,\n CaseManagementParams,\n EnvironmentService,\n getBuildingBlockManagementRouteParams,\n getCaseManagementRouteParams\n} from '@valtimo/shared';\nimport {CommonModule} from '@angular/common';\nimport {ButtonModule} from 'carbon-components-angular';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {DocumentTemplateDeleteModalComponent} from '../document-template-delete-modal/document-template-delete-modal.component';\nimport {DocumentTemplateAddEditModalComponent} from '../document-template-add-edit-modal/document-template-add-edit-modal.component';\n\n@Component({\n standalone: true,\n templateUrl: './document-template-list.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n CarbonListModule,\n ButtonModule,\n TranslateModule,\n DocumentTemplateDeleteModalComponent,\n DocumentTemplateAddEditModalComponent\n ]\n})\nexport class DocumentTemplateListComponent implements OnInit {\n @ViewChild(CarbonListComponent) carbonList: CarbonListComponent;\n\n public fields: ColumnConfig[] = [\n {\n viewType: ViewType.TEXT,\n key: 'key',\n label: 'Key',\n },\n {\n viewType: ViewType.TEXT,\n key: 'type',\n label: 'Document type',\n },\n ];\n\n private readonly _caseDefinitionId$: Observable<CaseManagementParams> = getCaseManagementRouteParams(this.route).pipe(\n filter((params: CaseManagementParams | undefined) => !!params?.caseDefinitionKey),\n );\n\n private readonly _buildingBlockDefinitionId$: Observable<BuildingBlockManagementParams> = getBuildingBlockManagementRouteParams(this.route).pipe(\n filter((params: BuildingBlockManagementParams | undefined) => !!params?.buildingBlockDefinitionKey),\n );\n\n private readonly _params$: Observable<{case?: CaseManagementParams, buildingBlock?: BuildingBlockManagementParams}> = merge(\n this._caseDefinitionId$.pipe(map(params => ({case: params}))),\n this._buildingBlockDefinitionId$.pipe(map(params => ({buildingBlock: params})))\n );\n\n public readonly readOnly$: Observable<boolean> = this._params$.pipe(\n switchMap(({case: caseDefinitionId, buildingBlock: buildingBlockDefinitionId}) => combineLatest([\n this.environmentService.canUpdateGlobalConfiguration(),\n this.templateService.isFinal(caseDefinitionId, buildingBlockDefinitionId)\n ]).pipe(\n map(([canUpdateGlobal, isFinalCase]) => !canUpdateGlobal || isFinalCase),\n startWith(true)\n )\n )\n );\n\n public readonly templates$ = new BehaviorSubject<TemplateListItem[] | null>(null);\n public readonly showAddModal$ = new BehaviorSubject<boolean>(false);\n public readonly showDeleteModal$ = new BehaviorSubject<boolean>(false);\n public readonly selectedRowKeys$ = new BehaviorSubject<Array<any>>([]);\n public readonly loading$ = new BehaviorSubject<boolean>(true);\n\n constructor(\n private readonly templateService: FreemarkerTemplateManagementService,\n private readonly router: Router,\n private readonly route: ActivatedRoute,\n private readonly environmentService: EnvironmentService,\n ) {\n }\n\n public ngOnInit(): void {\n this.reloadTemplateList();\n }\n\n public openAddModal(): void {\n this.showAddModal$.next(true);\n }\n\n public onAdd(data?: any): void {\n if (!data) {\n this.showAddModal$.next(false);\n return;\n }\n\n this._params$.pipe(\n take(1),\n switchMap(({case: caseDefinitionId, buildingBlock: buildingBlockDefinitionId}) => this.templateService.addTemplate({\n caseDefinitionKey: caseDefinitionId?.caseDefinitionKey,\n caseDefinitionVersionTag: caseDefinitionId?.caseDefinitionVersionTag,\n buildingBlockDefinitionKey: buildingBlockDefinitionId?.buildingBlockDefinitionKey,\n buildingBlockDefinitionVersionTag: buildingBlockDefinitionId?.buildingBlockDefinitionVersionTag,\n key: data.key,\n type: data.type.id,\n content: ''\n }))\n ).subscribe(template => {\n this.showAddModal$.next(false);\n this.gotoDocumentTemplateEditor(\n template.caseDefinitionKey,\n template.caseDefinitionVersionTag,\n template.buildingBlockDefinitionKey,\n template.buildingBlockDefinitionVersionTag,\n template.key,\n template.type\n );\n });\n }\n\n public showDeleteModal(): void {\n this.setSelectedTemplateKeys();\n this.showDeleteModal$.next(true);\n }\n\n public onDelete(templates: Array<string>): void {\n this.loading$.next(true);\n this._params$.pipe(\n take(1),\n switchMap(({case: caseDefinitionId, buildingBlock: buildingBlockDefinitionId}) => this.templateService.deleteTemplates({\n caseDefinitionKey: caseDefinitionId?.caseDefinitionKey,\n caseDefinitionVersionTag: caseDefinitionId?.caseDefinitionVersionTag,\n buildingBlockDefinitionKey: buildingBlockDefinitionId?.buildingBlockDefinitionKey,\n buildingBlockDefinitionVersionTag: buildingBlockDefinitionId?.buildingBlockDefinitionVersionTag,\n templates\n })),\n ).subscribe(_ => {\n this.reloadTemplateList();\n });\n }\n\n public onRowClick(template: TemplateListItem): void {\n this._params$.pipe(take(1)).subscribe(({case: caseDefinitionId, buildingBlock: buildingBlockDefinitionId}) =>\n this.gotoDocumentTemplateEditor(\n caseDefinitionId?.caseDefinitionKey,\n caseDefinitionId?.caseDefinitionVersionTag,\n buildingBlockDefinitionId?.buildingBlockDefinitionKey,\n buildingBlockDefinitionId?.buildingBlockDefinitionVersionTag,\n template.key,\n template.type\n )\n );\n }\n\n private gotoDocumentTemplateEditor(\n caseDefinitionKey: string,\n caseDefinitionVersionTag: string,\n buildingBlockDefinitionKey: string,\n buildingBlockDefinitionVersionTag: string,\n key: string,\n type: string\n ): void {\n if (caseDefinitionKey) {\n this.router.navigate([`/case-management/case/${caseDefinitionKey}/version/${caseDefinitionVersionTag}/document-template/${key}/${type}`]);\n } else {\n this.router.navigate([`/building-block-management/building-block/${buildingBlockDefinitionKey}/version/${buildingBlockDefinitionVersionTag}/document-template/${key}/${type}`]);\n }\n }\n\n private reloadTemplateList(): void {\n this.loading$.next(true);\n this._params$.pipe(\n switchMap(({case: caseDefinitionId, buildingBlock: buildingBlockDefinitionId}) => this.templateService.getAllDocumentTemplates(caseDefinitionId, buildingBlockDefinitionId)),\n map(templatePage => templatePage.content),\n take(1)\n ).subscribe(templateListItems => {\n this.templates$.next(templateListItems);\n this.loading$.next(false);\n });\n }\n\n private setSelectedTemplateKeys(): void {\n this.selectedRowKeys$.next(this.carbonList.selectedItems.map((template: TemplateListItem) => ({key: template.key, type: template.type})));\n }\n}\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\n<valtimo-carbon-list\n [header]=\"false\"\n [items]=\"templates$ | async\"\n [fields]=\"fields\"\n [loading]=\"loading$ | async\"\n [showSelectionColumn]=\"!(readOnly$ | async)\"\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-document-template-add-edit-modal\n [open]=\"showAddModal$ | async\"\n (closeEvent)=\"onAdd($event)\"\n></valtimo-document-template-add-edit-modal>\n\n<ng-container *ngIf=\"{selectedRowKeys: selectedRowKeys$ | async} as obs\">\n <valtimo-document-template-delete-modal\n [deleteRowKeys]=\"obs.selectedRowKeys\"\n [showDeleteModal$]=\"showDeleteModal$\"\n (deleteEvent)=\"onDelete($event)\"\n >\n </valtimo-document-template-delete-modal>\n</ng-container>\n\n<ng-template #addTemplateButton>\n <button cdsButton=\"primary\"\n [disabled]=\"readOnly$ | async\"\n (click)=\"openAddModal()\">\n {{ 'Add' }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\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\nimport {AfterViewInit, ChangeDetectionStrategy, Component, OnDestroy, OnInit} from '@angular/core';\nimport {BehaviorSubject, combineLatest, combineLatestWith, filter, map, merge, Observable, of, startWith, Subject, switchMap, take, takeUntil, tap} from 'rxjs';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {\n BreadcrumbService,\n CarbonListModule,\n EditorModel,\n EditorModule,\n PageTitleService,\n RenderInPageHeaderDirective\n} from '@valtimo/components';\nimport {ButtonModule, DialogModule, NotificationService, TabsModule} from 'carbon-components-angular';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {FreemarkerTemplateManagementService} from '../../../../services';\nimport {TemplateResponse, TemplateType} from '../../../../models';\nimport {\n BuildingBlockManagementParams,\n CaseManagementParams,\n EnvironmentService,\n getBuildingBlockManagementRouteParams,\n getCaseManagementRouteParams\n} from '@valtimo/shared';\nimport {CommonModule} from '@angular/common';\nimport {DocumentTemplateDeleteModalComponent} from '../document-template-delete-modal/document-template-delete-modal.component';\n\n@Component({\n standalone: true,\n templateUrl: './document-template-editor.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['./document-template-editor.component.scss'],\n providers: [NotificationService],\n imports: [\n CommonModule,\n TranslateModule,\n TabsModule,\n DialogModule,\n DocumentTemplateDeleteModalComponent,\n CarbonListModule,\n ButtonModule,\n EditorModule,\n RenderInPageHeaderDirective,\n ]\n})\nexport class DocumentTemplateEditorComponent implements OnInit, AfterViewInit, OnDestroy {\n public readonly model$ = new BehaviorSubject<EditorModel | null>(null);\n public readonly template$ = new BehaviorSubject<TemplateResponse | null>(null);\n public readonly saveDisabled$ = new BehaviorSubject<boolean>(true);\n public readonly editorDisabled$ = new BehaviorSubject<boolean>(false);\n public readonly moreDisabled$ = new BehaviorSubject<boolean>(true);\n public readonly showDeleteModal$ = new BehaviorSubject<boolean>(false);\n public readonly updatedModelValue$ = new BehaviorSubject<string>('');\n private readonly _destroy$ = new Subject<void>();\n\n private readonly _caseDefinitionId$: Observable<CaseManagementParams> = getCaseManagementRouteParams(this.route).pipe(\n filter((params: CaseManagementParams | undefined) => !!params?.caseDefinitionKey),\n );\n\n private readonly _buildingBlockDefinitionId$: Observable<BuildingBlockManagementParams> = getBuildingBlockManagementRouteParams(this.route).pipe(\n filter((params: BuildingBlockManagementParams | undefined) => !!params?.buildingBlockDefinitionKey),\n );\n\n private readonly _params$: Observable<{case?: CaseManagementParams, buildingBlock?: BuildingBlockManagementParams}> = merge(\n this._caseDefinitionId$.pipe(map(params => ({case: params}))),\n this._buildingBlockDefinitionId$.pipe(map(params => ({buildingBlock: params})))\n );\n\n public readonly templateKey$: Observable<string> = combineLatest([this.route.params, this.route.parent.params]).pipe(\n map(([params, parentParams]) => params?.templateKey || parentParams?.templateKey),\n filter(templateKey => !!templateKey)\n );\n\n public readonly templateType$: Observable<TemplateType> = combineLatest([this.route.params, this.route.parent.params]).pipe(\n map(([params, parentParams]) => params?.templateType || parentParams?.templateType),\n filter(templateType => !!templateType)\n );\n\n public readonly readOnly$: Observable<boolean> = this._params$.pipe(\n switchMap(({case: caseDefinitionId, buildingBlock: buildingBlockDefinitionId}) => combineLatest([\n this.environmentService.canUpdateGlobalConfiguration(),\n this.isFinal(caseDefinitionId, buildingBlockDefinitionId)\n ]).pipe(\n map(([canUpdateGlobal, isFinalCase]) => !canUpdateGlobal || isFinalCase),\n startWith(true)\n )\n )\n );\n\n constructor(\n private readonly templateService: FreemarkerTemplateManagementService,\n private readonly route: ActivatedRoute,\n private readonly pageTitleService: PageTitleService,\n private readonly router: Router,\n private readonly notificationService: NotificationService,\n private readonly translateService: TranslateService,\n private readonly breadcrumbService: BreadcrumbService,\n private readonly environmentService: EnvironmentService,\n ) {\n }\n\n public ngOnInit(): void {\n this.loadTemplate();\n }\n\n public ngAfterViewInit(): void {\n this.initBreadcrumb();\n }\n\n public ngOnDestroy(): void {\n this.pageTitleService.enableReset();\n this.breadcrumbService.clearThirdBreadcrumb();\n this.breadcrumbService.clearFourthBreadcrumb();\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public onValid(valid: boolean): void {\n this.saveDisabled$.next(valid === false);\n }\n\n public onValueChange(value: string): void {\n this.updatedModelValue$.next(value);\n }\n\n public updateTemplate(): void {\n this.disableEditor();\n this.disableSave();\n this.disableMore();\n\n combineLatest([this.updatedModelValue$, this._params$, this.templateKey$, this.templateType$]).pipe(\n take(1),\n switchMap(([updatedModelValue, {case: caseDefinitionId, buildingBlock: buildingBlockDefinitionId}, templateKey, templateType]) =>\n this.templateService.updateTemplate(\n {\n key: templateKey,\n caseDefinitionKey: caseDefinitionId?.caseDefinitionKey,\n caseDefinitionVersionTag: caseDefinitionId?.caseDefinitionVersionTag,\n buildingBlockDefinitionKey: buildingBlockDefinitionId?.buildingBlockDefinitionKey,\n buildingBlockDefinitionVersionTag: buildingBlockDefinitionId?.buildingBlockDefinitionVersionTag,\n type: templateType,\n content: updatedModelValue,\n }\n )\n ),\n takeUntil(this._destroy$)\n ).subscribe({\n next: result => {\n this.enableMore();\n this.enableSave();\n this.enableEditor();\n this.showSuccessMessage(result.key);\n this.setModel(result.content);\n this.template$.next(result);\n },\n error: () => {\n this.enableMore();\n this.enableSave();\n this.enableEditor();\n },\n });\n }\n\n public onDelete(templates: Array<any>): void {\n this.disableEditor();\n this.disableSave();\n this.disableMore();\n\n this._params$.pipe(\n take(1),\n switchMap(({case: caseDefinitionId, buildingBlock: buildingBlockDefinitionId}) => {\n if (caseDefinitionId?.caseDefinitionKey) {\n return this.templateService.deleteTemplates({\n caseDefinitionKey: caseDefinitionId.caseDefinitionKey,\n caseDefinitionVersionTag: caseDefinitionId.caseDefinitionVersionTag,\n templates\n }).pipe(map(() => `/case-management/case/${caseDefinitionId.caseDefinitionKey}/version/${caseDefinitionId.caseDefinitionVersionTag}/document-template`));\n } else {\n return this.templateService.deleteTemplates({\n buildingBlockDefinitionKey: buildingBlockDefinitionId.buildingBlockDefinitionKey,\n buildingBlockDefinitionVersionTag: buildingBlockDefinitionId.buildingBlockDefinitionVersionTag,\n templates\n }).pipe(map(() => `/building-block-management/building-block/${buildingBlockDefinitionId.buildingBlockDefinitionKey}/version/${buildingBlockDefinitionId.buildingBlockDefinitionVersionTag}/document-template`));\n }\n }),\n takeUntil(this._destroy$)\n ).subscribe(targetUrl => {\n this.router.navigate([targetUrl]);\n });\n }\n\n public showDeleteModal(): void {\n this.showDeleteModal$.next(true);\n }\n\n private loadTemplate(): void {\n this._params$.pipe(\n combineLatestWith(this.templateKey$, this.templateType$),\n switchMap(([{case: caseDefinitionId, buildingBlock: buildingBlockDefinitionId}, key, type]) => {\n return this.templateService.getTemplate(\n caseDefinitionId,\n buildingBlockDefinitionId,\n type,\n key\n ).pipe(map(result => ({result, key, type})));\n }),\n take(1),\n takeUntil(this._destroy$)\n ).subscribe(({result, key, type}) => {\n this.pageTitleService.setCustomPageTitle(`Document: ${key}.${type}`, true);\n this.enableMore();\n this.enableSave();\n this.enableEditor();\n this.setModel(result.content);\n this.template$.next(result);\n });\n }\n\n private setModel(content: string): void {\n this.model$.next({\n value: content,\n language: 'freemarker2',\n });\n this.updatedModelValue$.next(content);\n }\n\n private disableMore(): void {\n this.moreDisabled$.next(true);\n }\n\n private enableMore(): void {\n this.moreDisabled$.next(false);\n }\n\n private disableSave(): void {\n this.saveDisabled$.next(true);\n }\n\n private enableSave(): void {\n this.saveDisabled$.next(false);\n }\n\n private disableEditor(): void {\n this.editorDisabled$.next(true);\n }\n\n private enableEditor(): void {\n this.editorDisabled$.next(false);\n }\n\n public onSelectedTabPreview(): void {\n setTimeout(() => {\n const preview = document.getElementById('preview-iframe') as HTMLIFrameElement;\n if (preview) {\n preview.src = window.URL.createObjectURL(new Blob([\"\"], { type: \"text/plain\" }));\n combineLatest([this.updatedModelValue$, this.template$]).pipe(\n take(1),\n switchMap(([updatedModelValue, template]) =>\n combineLatest([this.templateService.previewTemplate(\n {\n fileName: `${template.key}.${template.type}`,\n content: updatedModelValue,\n }\n ), of(`${template.key}.${template.type}`)])\n )\n ).subscribe({\n next: ([blob, filename]) => {\n preview.src = URL.createObjectURL(blob);\n },\n error: (err) => {\n console.error(\"Preview failed:\", err);\n\n const errorBlob = new Blob(\n [`<html><body><h2>Error loading preview</h2><p>See logs for more information</p></body></html>`],\n { type: 'text/html' }\n );\n preview.src = URL.createObjectURL(errorBlob);\n }\n });\n }\n }, 100);\n }\n\n private isFinal(caseDefinitionId: CaseManagementParams | undefined, buildingBlockDefinitionId: BuildingBlockManagementParams | undefined): Observable<boolean> {\n return this.templateService.isFinal(caseDefinitionId, buildingBlockDefinitionId);\n }\n\n private initBreadcrumb(): void {\n this._params$.pipe(takeUntil(this._destroy$)).subscribe(({case: caseDefinitionId, buildingBlock: buildingBlockDefinitionId}) => {\n if (caseDefinitionId) {\n this.breadcrumbService.setThirdBreadcrumb({\n route: [`/case-management/case/${caseDefinitionId.caseDefinitionKey}/version/${caseDefinitionId.caseDefinitionVersionTag}`],\n content: `${caseDefinitionId.caseDefinitionKey}:${caseDefinitionId.caseDefinitionVersionTag}`,\n href: `/case-management/case/${caseDefinitionId.caseDefinitionKey}/version/${caseDefinitionId.caseDefinitionVersionTag}`,\n });\n this.breadcrumbService.setFourthBreadcrumb({\n route: [`/case-management/case/${caseDefinitionId.caseDefinitionKey}/version/${caseDefinitionId.caseDefinitionVersionTag}/document-template`],\n content: 'Document template',\n href: `/case-management/case/${caseDefinitionId.caseDefinitionKey}/version/${caseDefinitionId.caseDefinitionVersionTag}/document-template`,\n });\n } else if (buildingBlockDefinitionId) {\n this.breadcrumbService.setThirdBreadcrumb({\n route: [`/building-block-management/building-block/${buildingBlockDefinitionId.buildingBlockDefinitionKey}/version/${buildingBlockDefinitionId.buildingBlockDefinitionVersionTag}`],\n content: `${buildingBlockDefinitionId.buildingBlockDefinitionKey}:${buildingBlockDefinitionId.buildingBlockDefinitionVersionTag}`,\n href: `/building-block-management/building-block/${buildingBlockDefinitionId.buildingBlockDefinitionKey}/version/${buildingBlockDefinitionId.buildingBlockDefinitionVersionTag}`,\n });\n this.breadcrumbService.setFourthBreadcrumb({\n route: [`/building-block-management/building-block/${buildingBlockDefinitionId.buildingBlockDefinitionKey}/version/${buildingBlockDefinitionId.buildingBlockDefinitionVersionTag}/document-template`],\n content: 'Document template',\n href: `/building-block-management/building-block/${buildingBlockDefinitionId.buildingBlockDefinitionKey}/version/${buildingBlockDefinitionId.buildingBlockDefinitionVersionTag}/document-template`,\n });\n }\n });\n }\n\n private showSuccessMessage(key: string): void {\n this.notificationService.showToast({\n caption: this.translateService.instant(`${key} was saved successfully`, {\n key,\n }),\n type: 'success',\n duration: 4000,\n showClose: true,\n title: this.translateService.instant('Saved successfully'),\n });\n }\n}\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\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 @if (obs?.template?.type === 'pdf') {\n <p>\n <strong>PDF Templates</strong> use HTML in combination with\n <a href=\"https://freemarker.apache.org/docs/dgui_quickstart_basics.html\" target=\"_blank\"\n rel=\"noopener noreferrer\">\n FreeMarker\n </a>\n to define placeholders within the HTML structure. The FreeMarker data model is based on nested\n <a href=\"https://docs.valtimo.nl/features/value-resolvers\" target=\"_blank\" rel=\"noopener noreferrer\">\n Valtimo value resolvers\n </a>,\n but uses a slightly different syntax.\n </p>\n <p>\n For example, <code>$&#123;doc.firstName&#125;</code> retrieves the\n <code>firstName</code> value from the case.\n </p>\n <p>\n The notation <code>&lt;#list docs as doc&gt;...&lt;/#list&gt;</code> streams all documents in the\n current case.\n </p>\n } @else {\n <p>\n <strong>CSV Templates</strong> use a semicolon (<code>;</code>) as a separator.\n <a href=\"https://freemarker.apache.org/docs/dgui_quickstart_basics.html\" target=\"_blank\"\n rel=\"noopener noreferrer\">\n FreeMarker\n </a>\n is used to define placeholders within the CSV content. The FreeMarker data model is based on nested\n <a href=\"https://docs.valtimo.nl/features/value-resolvers\" target=\"_blank\" rel=\"noopener noreferrer\">\n Valtimo value resolvers\n </a>,\n but uses a slightly different syntax.\n </p>\n <p>\n For example, <code>$&#123;doc.firstName&#125;</code> retrieves the\n <code>firstName</code> value from the case.\n </p>\n <p>\n The notation <code>&lt;#list docs as doc&gt;...&lt;/#list&gt;</code> streams all documents in the\n current case.\n </p>\n }\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) || (readOnly$ | async)\"\n (validEvent)=\"onValid($event)\"\n (valueChangeEvent)=\"onValueChange($event)\"\n [fitPage]=\"true\"\n [fitPageExtraSpace]=\"80\"\n ></valtimo-editor>\n </cds-tab>\n <cds-tab [heading]=\"'Preview'\" (selected)=\"onSelectedTabPreview()\">\n <iframe title=\"Preview\" id=\"preview-iframe\">\n </iframe>\n </cds-tab>\n </cds-tabs>\n\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 || (readOnly$ | async)\"\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) || (readOnly$ | async)\"\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, templateType: templateType$ | async} as obs\">\n <valtimo-document-template-delete-modal\n [deleteRowKeys]=\"[{key: obs.templateKey, type: obs.templateType}]\"\n [showDeleteModal$]=\"showDeleteModal$\"\n (deleteEvent)=\"onDelete($event)\"\n >\n </valtimo-document-template-delete-modal>\n</ng-container>\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 */\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {ROLE_ADMIN} from '@valtimo/shared';\nimport {AuthGuardService} from '@valtimo/security';\nimport {DocumentTemplateEditorComponent} from './components/document-template-editor/document-template-editor.component';\n\nconst routes: Routes = [\n {\n path: 'case-management/case/:caseDefinitionKey/version/:caseDefinitionVersionTag/document-template/:templateKey/:templateType',\n component: DocumentTemplateEditorComponent,\n canActivate: [AuthGuardService],\n data: {\n title: 'Document Template Editor',\n templates: [ROLE_ADMIN],\n customPageTitle: true,\n },\n },\n {\n path: 'building-block-management/building-block/:buildingBlockDefinitionKey/version/:buildingBlockDefinitionVersionTag/document-template/:templateKey/:templateType',\n component: DocumentTemplateEditorComponent,\n canActivate: [AuthGuardService],\n data: {\n title: 'Document Template Editor',\n templates: [ROLE_ADMIN],\n customPageTitle: true,\n },\n },\n];\n\n@NgModule({\n imports: [CommonModule, RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class TemplateManagementRoutingModule {}\n","/*\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\nimport {Component, EventEmitter, Input, OnDestroy, OnInit, Output} from '@angular/core';\nimport {FunctionConfigurationComponent, FunctionConfigurationData} from '@valtimo/plugin';\nimport {BehaviorSubject, combineLatest, filter, map, merge, Observable, of, Subject, Subscription, switchMap, take, takeUntil, tap} from 'rxjs';\nimport {GenerateCsvFileConfig} from '../../models';\nimport {FreemarkerTemplateManagementService} from '../../../../services';\nimport {CaseManagementParams, getBuildingBlockManagementRouteParams, ManagementContext} from '@valtimo/shared';\nimport {SelectItem} from '@valtimo/components';\nimport {ActivatedRoute} from '@angular/router';\n\n@Component({\n standalone: false,\n selector: 'valtimo-generate-csv-configuration',\n templateUrl: './generate-csv.component.html',\n})\nexport class GenerateCsvComponent\n implements FunctionConfigurationComponent, OnInit, OnDestroy {\n @Input() save$!: Observable<void>;\n @Input() disabled$!: Observable<boolean>;\n @Input() pluginId!: string;\n @Input() prefillConfiguration$!: Observable<GenerateCsvFileConfig>;\n @Input() context$: Observable<[ManagementContext, CaseManagementParams]>;\n @Output() valid: EventEmitter<boolean> = new EventEmitter<boolean>();\n @Output() configuration: EventEmitter<FunctionConfigurationData> = new EventEmitter<FunctionConfigurationData>();\n\n private readonly buildingBlockParams$ = getBuildingBlockManagementRouteParams(this.route);\n private readonly formValue$ = new BehaviorSubject<GenerateCsvFileConfig | null>(null);\n private readonly valid$ = new BehaviorSubject<boolean>(false);\n private _subscriptions = new Subscription();\n\n readonly loading$ = new BehaviorSubject<boolean>(true);\n\n readonly templateListItems$ = new BehaviorSubject<Array<SelectItem>>([]);\n\n private readonly _destroy$ = new Subject<void>();\n\n constructor(\n private readonly templateService: FreemarkerTemplateManagementService,\n private readonly route: ActivatedRoute\n ) {\n }\n\n ngOnInit(): void {\n this.openSaveSubscription();\n this.initContextHandling();\n }\n\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n formValueChange(formValue: GenerateCsvFileConfig): void {\n this.formValue$.next(formValue);\n this.handleValid(formValue);\n }\n\n private initContextHandling(): void {\n const caseParams$ = this.context$ ? this.context$.pipe(\n filter(([managementContext, caseParams]) => managementContext === 'case' && !!caseParams?.caseDefinitionKey),\n map(([managementContext, caseParams]) => ({managementContext, caseParams}))\n ) : of(null);\n\n const buildingBlockParams$ = this.buildingBlockParams$.pipe(\n filter(buildingBlockParams => !!buildingBlockParams?.buildingBlockDefinitionKey),\n map(buildingBlockParams => ({managementContext: 'buildingBlock' as ManagementContext, buildingBlockParams}))\n );\n\n merge(caseParams$, buildingBlockParams$).pipe(\n filter(params => !!params),\n switchMap(params => {\n if (params!.managementContext === 'case') {\n return this.templateService.getAllTemplates((params as any).caseParams, null, 'csv');\n } else if (params!.managementContext === 'buildingBlock') {\n return this.templateService.getAllTemplates(null, (params as any).buildingBlockParams, 'csv');\n } else {\n console.error(`Freemarker plugin does not support '${params!.managementContext}' templates`);\n return of(null);\n }\n }),\n map(results =>\n results?.content.map(template => ({\n id: template.key,\n text: template.key,\n })) || []\n ),\n tap(() => this.loading$.next(false)),\n takeUntil(this._destroy$)\n ).subscribe(results => this.templateListItems$.next(results));\n }\n\n private handleValid(formValue: GenerateCsvFileConfig): void {\n const valid = !!(formValue.templateKey && formValue.processVariableName);\n\n this.valid$.next(valid);\n this.valid.emit(valid);\n }\n\n private openSaveSubscription(): void {\n const saveSubscription = this.save$?.subscribe(save => {\n combineLatest([this.formValue$, this.valid$])\n .pipe(take(1))\n .subscribe(([formValue, valid]) => {\n if (valid) {\n this.configuration.emit(formValue!);\n }\n });\n });\n this._subscriptions.add(saveSubscription);\n }\n}\n","<!--\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<ng-container *ngIf=\"{\n disabled: disabled$ | async,\n prefill: prefillConfiguration$ ? (prefillConfiguration$ | async) : null,\n templateListItems: templateListItems$ | async,\n loading: loading$ | async,\n } as obs\"\n>\n <ng-container *ngIf=\"obs.loading === false; else loading\">\n <v-paragraph [margin]=\"true\" [italic]=\"true\">\n {{ 'generateDocumentFileDescription' | pluginTranslate: pluginId | async }}\n </v-paragraph>\n <v-form (valueChange)=\"formValueChange($event)\">\n <v-select\n [items]=\"obs.templateListItems\"\n [margin]=\"true\"\n [widthInPx]=\"350\"\n name=\"templateKey\"\n [title]=\"'csvTemplateKey' | pluginTranslate: pluginId | async\"\n [disabled]=\"obs.disabled\"\n [defaultSelectionId]=\"obs.prefill?.templateKey\"\n [required]=\"true\"\n [loading]=\"!obs.templateListItems\"\n [tooltip]=\"'templateKeyTooltip' | pluginTranslate: pluginId | async\"\n ></v-select>\n <v-input\n name=\"processVariableName\"\n [title]=\"'processVariableName' | pluginTranslate: pluginId | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.prefill?.processVariableName || 'contentId'\"\n [disabled]=\"obs.disabled\"\n [tooltip]=\"'processVariableNameTooltip' | pluginTranslate: pluginId | async\"\n ></v-input>\n </v-form>\n </ng-container>\n</ng-container>\n\n<ng-template #loading>\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n</ng-template>\n","/*\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\nimport {Component, EventEmitter, Input, OnDestroy, OnInit, Output} from '@angular/core';\nimport {FunctionConfigurationComponent, FunctionConfigurationData} from '@valtimo/plugin';\nimport {BehaviorSubject, combineLatest, filter, map, merge, Observable, of, Subject, Subscription, switchMap, take, takeUntil, tap} from 'rxjs';\nimport {GeneratePdfFileConfig} from '../../models';\nimport {FreemarkerTemplateManagementService} from '../../../../services';\nimport {CaseManagementParams, getBuildingBlockManagementRouteParams, ManagementContext} from '@valtimo/shared';\nimport {SelectItem} from '@valtimo/components';\nimport {ActivatedRoute} from '@angular/router';\n\n@Component({\n standalone: false,\n selector: 'valtimo-generate-pdf-configuration',\n templateUrl: './generate-pdf.component.html',\n})\nexport class GeneratePdfComponent\n implements FunctionConfigurationComponent, OnInit, OnDestroy {\n @Input() save$!: Observable<void>;\n @Input() disabled$!: Observable<boolean>;\n @Input() pluginId!: string;\n @Input() prefillConfiguration$!: Observable<GeneratePdfFileConfig>;\n @Input() context$: Observable<[ManagementContext, CaseManagementParams]>;\n @Output() valid: EventEmitter<boolean> = new EventEmitter<boolean>();\n @Output() configuration: EventEmitter<FunctionConfigurationData> = new EventEmitter<FunctionConfigurationData>();\n\n private readonly buildingBlockParams$ = getBuildingBlockManagementRouteParams(this.route);\n private readonly formValue$ = new BehaviorSubject<GeneratePdfFileConfig | null>(null);\n private readonly valid$ = new BehaviorSubject<boolean>(false);\n private _subscriptions = new Subscription();\n\n readonly loading$ = new BehaviorSubject<boolean>(true);\n\n readonly templateListItems$ = new BehaviorSubject<Array<SelectItem>>([]);\n\n private readonly _destroy$ = new Subject<void>();\n\n constructor(\n private readonly templateService: FreemarkerTemplateManagementService,\n private readonly route: ActivatedRoute\n ) {\n }\n\n ngOnInit(): void {\n this.openSaveSubscription();\n this.initContextHandling();\n }\n\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n formValueChange(formValue: GeneratePdfFileConfig): void {\n this.formValue$.next(formValue);\n this.handleValid(formValue);\n }\n\n private initContextHandling(): void {\n const caseParams$ = this.context$ ? this.context$.pipe(\n filter(([managementContext, caseParams]) => managementContext === 'case' && !!caseParams?.caseDefinitionKey),\n map(([managementContext, caseParams]) => ({managementContext, caseParams}))\n ) : of(null);\n\n const buildingBlockParams$ = this.buildingBlockParams$.pipe(\n filter(buildingBlockParams => !!buildingBlockParams?.buildingBlockDefinitionKey),\n map(buildingBlockParams => ({managementContext: 'buildingBlock' as ManagementContext, buildingBlockParams}))\n );\n\n merge(caseParams$, buildingBlockParams$).pipe(\n filter(params => !!params),\n switchMap(params => {\n if (params!.managementContext === 'case') {\n return this.templateService.getAllTemplates((params as any).caseParams, null, 'pdf');\n } else if (params!.managementContext === 'buildingBlock') {\n return this.templateService.getAllTemplates(null, (params as any).buildingBlockParams, 'pdf');\n } else {\n console.error(`Freemarker plugin does not support '${params!.managementContext}' templates`);\n return of(null);\n }\n }),\n map(results =>\n results?.content.map(template => ({\n id: template.key,\n text: template.key,\n })) || []\n ),\n tap(() => this.loading$.next(false)),\n takeUntil(this._destroy$)\n ).subscribe(results => this.templateListItems$.next(results));\n }\n\n private handleValid(formValue: GeneratePdfFileConfig): void {\n const valid = !!(formValue.templateKey && formValue.processVariableName);\n\n this.valid$.next(valid);\n this.valid.emit(valid);\n }\n\n private openSaveSubscription(): void {\n const saveSubscription = this.save$?.subscribe(save => {\n combineLatest([this.formValue$, this.valid$])\n .pipe(take(1))\n .subscribe(([formValue, valid]) => {\n if (valid) {\n this.configuration.emit(formValue!);\n }\n });\n });\n this._subscriptions.add(saveSubscription);\n }\n}\n","<!--\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<ng-container *ngIf=\"{\n disabled: disabled$ | async,\n prefill: prefillConfiguration$ ? (prefillConfiguration$ | async) : null,\n templateListItems: templateListItems$ | async,\n loading: loading$ | async,\n } as obs\"\n>\n <ng-container *ngIf=\"obs.loading === false; else loading\">\n <v-paragraph [margin]=\"true\" [italic]=\"true\">\n {{ 'generateDocumentFileDescription' | pluginTranslate: pluginId | async }}\n </v-paragraph>\n <v-form (valueChange)=\"formValueChange($event)\">\n <v-select\n [items]=\"obs.templateListItems\"\n [margin]=\"true\"\n [widthInPx]=\"350\"\n name=\"templateKey\"\n [title]=\"'pdfTemplateKey' | pluginTranslate: pluginId | async\"\n [disabled]=\"obs.disabled\"\n [defaultSelectionId]=\"obs.prefill?.templateKey\"\n [required]=\"true\"\n [loading]=\"!obs.templateListItems\"\n [tooltip]=\"'templateKeyTooltip' | pluginTranslate: pluginId | async\"\n ></v-select>\n <v-input\n name=\"processVariableName\"\n [title]=\"'processVariableName' | pluginTranslate: pluginId | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.prefill?.processVariableName || 'contentId'\"\n [disabled]=\"obs.disabled\"\n [tooltip]=\"'processVariableNameTooltip' | pluginTranslate: pluginId | async\"\n ></v-input>\n </v-form>\n </ng-container>\n</ng-container>\n\n<ng-template #loading>\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n</ng-template>\n","/*\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\nimport { NgModule } from \"@angular/core\";\nimport { DocumentGeneratorConfigurationComponent } from \"./components/document-generator-configuration/document-generator-configuration.component\";\nimport { CommonModule } from \"@angular/common\";\nimport { PluginManagementService, PluginTranslatePipeModule } from \"@valtimo/plugin\";\nimport {\n CarbonListModule,\n ConfirmationModalModule,\n EditorModule,\n FormModule,\n InputModule as ValtimoInputModule,\n ParagraphModule,\n RenderInPageHeaderDirective,\n SelectModule,\n} from \"@valtimo/components\";\nimport {\n ButtonModule,\n DialogModule,\n DropdownModule,\n IconModule,\n InputModule,\n LoadingModule,\n ModalModule,\n NotificationModule,\n TabsModule,\n} from \"carbon-components-angular\";\nimport { BUILDING_BLOCK_MANAGEMENT_TAB_TOKEN, CASE_MANAGEMENT_TAB_TOKEN } from \"@valtimo/shared\";\nimport { DocumentTemplateListComponent } from \"./components/document-template-list/document-template-list.component\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { ReactiveFormsModule } from \"@angular/forms\";\nimport { TemplateManagementRoutingModule } from \"./document-generator-management-routing.module\";\nimport { GenerateCsvComponent } from \"./components/generate-csv/generate-csv.component\";\nimport { GeneratePdfComponent } from \"./components/generate-pdf/generate-pdf.component\";\nimport { catchError, map, of } from \"rxjs\";\n\n@NgModule({\n declarations: [GenerateCsvComponent, GeneratePdfComponent, DocumentGeneratorConfigurationComponent],\n imports: [\n CommonModule,\n PluginTranslatePipeModule,\n TemplateManagementRoutingModule,\n FormModule,\n ParagraphModule,\n SelectModule,\n ConfirmationModalModule,\n TranslateModule,\n ReactiveFormsModule,\n CarbonListModule,\n EditorModule,\n ValtimoInputModule,\n ButtonModule,\n DialogModule,\n DropdownModule,\n IconModule,\n InputModule,\n LoadingModule,\n ModalModule,\n NotificationModule,\n RenderInPageHeaderDirective,\n TabsModule,\n ],\n exports: [GenerateCsvComponent, GeneratePdfComponent],\n providers: [\n {\n provide: CASE_MANAGEMENT_TAB_TOKEN,\n useFactory: (pluginManagementService: PluginManagementService) => ({\n translationKey: \"Document template\",\n component: DocumentTemplateListComponent,\n tabRoute: \"document-template\",\n enabled$: pluginManagementService.getAllPluginConfigurations().pipe(\n map((pluginConfigs) => pluginConfigs.find((pluginConfig) => pluginConfig.pluginDefinition?.key === \"document-generator\")),\n catchError(() => of(false)),\n ),\n }),\n deps: [PluginManagementService],\n multi: true,\n },\n {\n provide: BUILDING_BLOCK_MANAGEMENT_TAB_TOKEN,\n useFactory: (pluginManagementService: PluginManagementService) => ({\n translationKey: \"Document template\",\n component: DocumentTemplateListComponent,\n tabRoute: \"document-template\",\n enabled$: pluginManagementService.getAllPluginConfigurations().pipe(\n map((pluginConfigs) => pluginConfigs.find((pluginConfig) => pluginConfig.pluginDefinition?.key === \"document-generator\")),\n catchError(() => of(false)),\n ),\n }),\n deps: [PluginManagementService],\n multi: true,\n },\n ],\n})\nexport class DocumentGeneratorPluginModule {}\n","/*\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\nconst DOCUMENT_GENERATOR_PLUGIN_LOGO_BASE64 =\n 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjcuNTggMzAuODk0NyAzNzYuNjYxIDEzNS40NjU3IiB3aWR0aD0iMzc2LjY2MXB4IiBoZWlnaHQ9IjEzNS40NjU3cHgiPgogIDxwYXRoIGQ9Ik0gMzI3LjExNiAxNDUuODk4IEwgMzQwLjMwNCAxNjUuODkyIEwgMzg0LjI0MSA5OS4yNDYgTCAzNDAuMzA0IDMyLjYwMSBMIDMyNy4xMTYgNTIuNTk1IEwgMzU3Ljg4OCA5OS4yNDYgTCAzMjcuMTE2IDE0NS44OTggWiIgc3R5bGU9ImZpbGw6IHJnYigwLCA4MCwgMTc4KTsiIHRyYW5zZm9ybT0ibWF0cml4KDEsIDAsIDAsIDEsIDEuNDIxMDg1NDcxNTIwMjAwNGUtMTQsIDcuMTA1NDI3MzU3NjAxMDAyZS0xNSkiLz4KICA8cGF0aCBkPSJNIDY0LjcwMyA1Mi41OTUgTCA1MS41MTggMzIuNjAxIEwgNy41OCA5OS4yNDYgTCA1MS41MTggMTY1Ljg5MiBMIDY0LjcwMyAxNDUuODk4IEwgMzMuOTMzIDk5LjI0NiBMIDY0LjcwMyA1Mi41OTUgWiIgc3R5bGU9ImZpbGw6IHJnYigwLCA4MCwgMTc4KTsiIHRyYW5zZm9ybT0ibWF0cml4KDEsIDAsIDAsIDEsIDEuNDIxMDg1NDcxNTIwMjAwNGUtMTQsIDcuMTA1NDI3MzU3NjAxMDAyZS0xNSkiLz4KICA8cGF0aCBkPSJNIDExMi44NiAzMi42MDEgTCAxMzkuNTE4IDMyLjYwMSBMIDEzNC44MTUgNTkuMjYgTCAxNjEuNDc0IDU5LjI2IEwgMTY2LjE3NiAzMi42MDEgTCAxOTIuODM0IDMyLjYwMSBMIDE4OC4xMyA1OS4yNiBMIDIxNC43ODggNTkuMjYgTCAyMTAuMDc3IDg1LjkxNyBMIDE4My40MTggODUuOTE3IEwgMTc4LjcyMyAxMTIuNTc1IEwgMjA1LjM4MiAxMTIuNTc1IEwgMjAwLjY3OCAxMzkuMjMzIEwgMTc0LjAyMSAxMzkuMjMzIEwgMTY5LjMzNiAxNjUuODkyIEwgMTQyLjY3OSAxNjUuODkyIEwgMTQ3LjM3MyAxMzkuMjMzIEwgMTIwLjcxNSAxMzkuMjMzIEwgMTE2LjA5NyAxNjUuODkyIEwgODkuMzYyIDE2NS44OTIgTCA5NC4wNTYgMTM5LjIzMyBMIDY3LjM5OCAxMzkuMjMzIEwgNzIuMTAyIDExMi41NzUgTCA5OC43NiAxMTIuNTc1IEwgMTAzLjQ1NCA4NS45ODUgTCA3Ni43OTYgODUuOTg1IEwgODEuNDk4IDU5LjI2IEwgMTA4LjE1NyA1OS4yNiBMIDExMi44NiAzMi42MDEgWiBNIDEyNS40MTcgMTEyLjU3NSBMIDE1Mi4wNzYgMTEyLjU3NSBMIDE1Ni43NzkgODUuOTE3IEwgMTMwLjEyMSA4NS45MTcgTCAxMjUuNDE3IDExMi41NzUgWiIgc3R5bGU9ImZpbGw6IHJnYigwLCA4MCwgMTc4KTsiIHRyYW5zZm9ybT0ibWF0cml4KDEsIDAsIDAsIDEsIDEuNDIxMDg1NDcxNTIwMjAwNGUtMTQsIDcuMTA1NDI3MzU3NjAxMDAyZS0xNSkiLz4KICA8ZyBpZD0iQ2FwYV8xIiBzdHlsZT0iIiB0cmFuc2Zvcm09Im1hdHJpeCgwLjI0NTk0Mjk5NDk1MjIwMTg0LCAwLCAwLCAwLjI0NTk0Mjk5NDk1MjIwMTg0LCAxODcuNDA1ODUzMjcxNDg0MzgsIDU2LjI1NzYzNzAyMzkyNTc4KSI+CiAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxLCAwLCAwLCAxLCA1OS40ODYxMTEsIC0xMDMuMTI1Mjc1KSI+CiAgICAgIDxwYXRoIGQ9Ik0xNjAuMzgxLDI4Mi4yMjVjMC0xNC44MzItMTAuMjk5LTIzLjY4NC0yOC40NzQtMjMuNjg0Yy03LjQxNCwwLTEyLjQzNywwLjcxNS0xNS4wNzEsMS40MzJWMzA3LjYgYzMuMTE0LDAuNzA3LDYuOTQyLDAuOTQ5LDEyLjE5MiwwLjk0OUMxNDguNDE5LDMwOC41NDksMTYwLjM4MSwyOTguNzQsMTYwLjM4MSwyODIuMjI1eiIvPgogICAgICA8cGF0aCBkPSJNMjcyLjg3NSwyNTkuMDE5Yy04LjE0NSwwLTEzLjM5NywwLjcxNy0xNi41MTksMS40MzV2MTA1LjUyM2MzLjExNiwwLjcyOSw4LjE0MiwwLjcyOSwxMi42OSwwLjcyOSBjMzMuMDE3LDAuMjMxLDU0LjU1NC0xNy45NDYsNTQuNTU0LTU2LjQ3NEMzMjMuODQyLDI3Ni43MTksMzA0LjIxNSwyNTkuMDE5LDI3Mi44NzUsMjU5LjAxOXoiLz4KICAgICAgPHBhdGggZD0iTTQ4OC40MjYsMTk3LjAxOUg0NzUuMnYtNjMuODE2YzAtMC4zOTgtMC4wNjMtMC43OTktMC4xMTYtMS4yMDJjLTAuMDIxLTIuNTM0LTAuODI3LTUuMDIzLTIuNTYyLTYuOTk1TDM2Ni4zMjUsMy42OTQgYy0wLjAzMi0wLjAzMS0wLjA2My0wLjA0Mi0wLjA4NS0wLjA3NmMtMC42MzMtMC43MDctMS4zNzEtMS4yOTUtMi4xNTEtMS44MDRjLTAuMjMxLTAuMTU1LTAuNDY0LTAuMjg1LTAuNzA2LTAuNDE5IGMtMC42NzYtMC4zNjktMS4zOTMtMC42NzUtMi4xMzEtMC44OTZjLTAuMi0wLjA1Ni0wLjM4LTAuMTM4LTAuNTgtMC4xOUMzNTkuODcsMC4xMTksMzU5LjAzNywwLDM1OC4xOTMsMEg5Ny4yIGMtMTEuOTE4LDAtMjEuNiw5LjY5My0yMS42LDIxLjYwMXYxNzUuNDEzSDYyLjM3N2MtMTcuMDQ5LDAtMzAuODczLDEzLjgxOC0zMC44NzMsMzAuODczdjE2MC41NDUgYzAsMTcuMDQzLDEzLjgyNCwzMC44NywzMC44NzMsMzAuODdoMTMuMjI0VjUyOS4yYzAsMTEuOTA3LDkuNjgyLDIxLjYwMSwyMS42LDIxLjYwMWgzNTYuNGMxMS45MDcsMCwyMS42LTkuNjkzLDIxLjYtMjEuNjAxIFY0MTkuMzAyaDEzLjIyNmMxNy4wNDQsMCwzMC44NzEtMTMuODI3LDMwLjg3MS0zMC44N3YtMTYwLjU0QzUxOS4yOTcsMjEwLjgzOCw1MDUuNDcsMTk3LjAxOSw0ODguNDI2LDE5Ny4wMTl6IE05Ny4yLDIxLjYwNSBoMjUwLjE5M3YxMTAuNTEzYzAsNS45NjcsNC44NDEsMTAuOCwxMC44LDEwLjhoOTUuNDA3djU0LjEwOEg5Ny4yVjIxLjYwNXogTTM2Mi4zNTksMzA5LjAyM2MwLDMwLjg3Ni0xMS4yNDMsNTIuMTY1LTI2LjgyLDY1LjMzMyBjLTE2Ljk3MSwxNC4xMTctNDIuODIsMjAuODE0LTc0LjM5NiwyMC44MTRjLTE4LjksMC0zMi4yOTctMS4xOTctNDEuNDAxLTIuMzg5VjIzNC4zNjVjMTMuMzk5LTIuMTQ5LDMwLjg3OC0zLjM0Niw0OS4zMDQtMy4zNDYgYzMwLjYxMiwwLDUwLjQ3OCw1LjUwOCw2Ni4wMzksMTcuMjI2QzM1MS44MjgsMjYwLjY5LDM2Mi4zNTksMjgwLjU0NywzNjIuMzU5LDMwOS4wMjN6IE04MC43LDM5My40OTlWMjM0LjM2NSBjMTEuMjQxLTEuOTA0LDI3LjA0Mi0zLjM0Niw0OS4yOTYtMy4zNDZjMjIuNDkxLDAsMzguNTI3LDQuMzA4LDQ5LjI5MSwxMi45MjhjMTAuMjkyLDguMTMxLDE3LjIxNSwyMS41MzQsMTcuMjE1LDM3LjMyOCBjMCwxNS43OTktNS4yNSwyOS4xOTgtMTQuODI5LDM4LjI4NWMtMTIuNDQyLDExLjcyOC0zMC44NjUsMTYuOTk2LTUyLjQwNywxNi45OTZjLTQuNzc4LDAtOS4xLTAuMjQzLTEyLjQzNS0wLjcyM3Y1Ny42N0g4MC43IFYzOTMuNDk5eiBNNDUzLjYwMSw1MjMuMzUzSDk3LjJWNDE5LjMwMmgzNTYuNFY1MjMuMzUzeiBNNDg0Ljg5OCwyNjIuMTI3aC02MS45ODl2MzYuODUxaDU3LjkxM3YyOS42NzRoLTU3LjkxM3Y2NC44NDhoLTM2LjU5MyBWMjMyLjIxNmg5OC41ODJWMjYyLjEyN3oiLz4KICAgIDwvZz4KICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDEsIDAsIDAsIDEsIDU5LjQ4NjExMSwgLTEwMy4xMjUyNzUpIi8+CiAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxLCAwLCAwLCAxLCA1OS40ODYxMTEsIC0xMDMuMTI1Mjc1KSIvPgogICAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMSwgMCwgMCwgMSwgNTkuNDg2MTExLCAtMTAzLjEyNTI3NSkiLz4KICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDEsIDAsIDAsIDEsIDU5LjQ4NjExMSwgLTEwMy4xMjUyNzUpIi8+CiAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxLCAwLCAwLCAxLCA1OS40ODYxMTEsIC0xMDMuMTI1Mjc1KSIvPgogICAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMSwgMCwgMCwgMSwgNTkuNDg2MTExLCAtMTAzLjEyNTI3NSkiLz4KICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDEsIDAsIDAsIDEsIDU5LjQ4NjExMSwgLTEwMy4xMjUyNzUpIi8+CiAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxLCAwLCAwLCAxLCA1OS40ODYxMTEsIC0xMDMuMTI1Mjc1KSIvPgogICAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMSwgMCwgMCwgMSwgNTkuNDg2MTExLCAtMTAzLjEyNTI3NSkiLz4KICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDEsIDAsIDAsIDEsIDU5LjQ4NjExMSwgLTEwMy4xMjUyNzUpIi8+CiAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxLCAwLCAwLCAxLCA1OS40ODYxMTEsIC0xMDMuMTI1Mjc1KSIvPgogICAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMSwgMCwgMCwgMSwgNTkuNDg2MTExLCAtMTAzLjEyNTI3NSkiLz4KICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDEsIDAsIDAsIDEsIDU5LjQ4NjExMSwgLTEwMy4xMjUyNzUpIi8+CiAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxLCAwLCAwLCAxLCA1OS40ODYxMTEsIC0xMDMuMTI1Mjc1KSIvPgogICAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMSwgMCwgMCwgMSwgNTkuNDg2MTExLCAtMTAzLjEyNTI3NSkiLz4KICA8L2c+Cjwvc3ZnPg==';\n\nexport {DOCUMENT_GENERATOR_PLUGIN_LOGO_BASE64};\n","/*\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\nexport * from './document-generator-plugin-logo';\n","/*\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\nimport {PluginSpecification} from '@valtimo/plugin';\nimport {DocumentGeneratorConfigurationComponent} from './components/document-generator-configuration/document-generator-configuration.component';\nimport {DOCUMENT_GENERATOR_PLUGIN_LOGO_BASE64} from './assets';\nimport {GeneratePdfComponent} from './components/generate-pdf/generate-pdf.component';\nimport {GenerateCsvComponent} from './components/generate-csv/generate-csv.component';\n\nconst documentGeneratorPluginSpecification: PluginSpecification = {\n pluginId: 'document-generator',\n pluginConfigurationComponent: DocumentGeneratorConfigurationComponent,\n pluginLogoBase64: DOCUMENT_GENERATOR_PLUGIN_LOGO_BASE64,\n functionConfigurationComponents: {\n 'generate-csv': GenerateCsvComponent,\n 'generate-pdf': GeneratePdfComponent,\n },\n pluginTranslations: {\n nl: {\n title: 'Document generator',\n 'generate-csv': 'Genereer CSV-bestand',\n 'generate-pdf': 'Genereer PDF-bestand',\n description: 'Genereer PDF of CSV bestanden met Freemarker-sjablonen.',\n configurationTitle: 'Configuratienaam',\n configurationTitleTooltip:\n 'De naam van de huidige plug-inconfiguratie. Onder deze naam is de configuratie beschikbaar in de rest van de applicatie.',\n generateDocumentFileDescription:\n 'Deze actie genereert een bestand op basis van een Freemarker-sjabloon en slaat het resultaat op in een tijdelijk bestand. Het bestand-ID wordt opgeslagen in een procesvariabele.',\n csvTemplateKey: 'CSV-sjabloon',\n pdfTemplateKey: 'PDF-sjabloon',\n templateKeyTooltip: 'Dit bestand wordt gegenereerd op basis van dit Freemarker-sjabloon.',\n processVariableName: 'Procesvariabelenaam',\n processVariableNameTooltip: 'Het gegenereerde bestand wordt opgeslagen in een procesvariabele met deze naam.',\n },\n en: {\n title: 'Document generator',\n 'generate-csv': 'Generate CSV File',\n 'generate-pdf': 'Generate PDF File',\n description: 'Generate PDF or CSV files using Freemarker templates.',\n configurationTitle: 'Configuration Name',\n configurationTitleTooltip:\n 'The name of the current plug-in configuration. This name is used to reference the configuration throughout the application.',\n generateDocumentFileDescription:\n 'This action generates a file based on a Freemarker template and stores the result in a temporary file. The file ID is saved in a process variable.',\n csvTemplateKey: 'CSV Template',\n pdfTemplateKey: 'PDF Template',\n templateKeyTooltip: 'The file will be generated based on this Freemarker template.',\n processVariableName: 'Process Variable Name',\n processVariableNameTooltip: 'The generated file will be stored in a process variable with this name.',\n },\n de: {\n title: 'Document generator',\n 'generate-csv': 'CSV-Datei generieren',\n 'generate-pdf': 'PDF-Datei generieren',\n description: 'PDF oder CSV Dateien mit Freemarker-Vorlagen generieren.',\n configurationTitle: 'Konfigurationsname',\n configurationTitleTooltip:\n 'Der Name der aktuellen Plug-in-Konfiguration. Diese Konfiguration kann unter diesem Namen in der gesamten Anwendung verwendet werden.',\n generateDocumentFileDescription:\n 'Diese Aktion erstellt eine Datei basierend auf einer Freemarker-Vorlage und speichert das Ergebnis in einer temporären Datei. Die Datei-ID wird in einer Prozessvariablen gespeichert.',\n csvTemplateKey: 'CSV-Vorlage',\n pdfTemplateKey: 'PDF-Vorlage',\n templateKeyTooltip: 'Die Datei wird basierend auf dieser Freemarker-Vorlage generiert.',\n processVariableName: 'Prozessvariablenname',\n processVariableNameTooltip: 'Die generierte Datei wird in einer Prozessvariablen mit diesem Namen gespeichert.',\n },\n },\n};\n\nexport {documentGeneratorPluginSpecification};\n","/*\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\nimport {PluginConfigurationData} from '@valtimo/plugin';\n\ninterface MailTemplateConfig extends PluginConfigurationData {\n}\n\ninterface GenerateMailContentConfig {\n mailTemplateKey: string;\n processVariableName: string;\n}\n\ninterface GenerateMailFileConfig {\n mailTemplateKey: string;\n processVariableName: string;\n}\n\nexport {MailTemplateConfig, GenerateMailContentConfig, GenerateMailFileConfig};\n","/*\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\nexport * from './config';\n","/*\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\nimport {Component, EventEmitter, Input, OnDestroy, OnInit, Output} from '@angular/core';\nimport {PluginConfigurationComponent, PluginConfigurationData} from '@valtimo/plugin';\nimport {BehaviorSubject, combineLatest, map, Observable, Subscription, take} from 'rxjs';\nimport {MailTemplateConfig} from '../../models';\n\n@Component({\n standalone: false,\n selector: 'valtimo-mail-template-configuration',\n templateUrl: './mail-template-configuration.component.html',\n})\nexport class MailTemplateConfigurationComponent\n implements PluginConfigurationComponent, OnInit, OnDestroy\n{\n @Input() save$!: Observable<void>;\n @Input() disabled$!: Observable<boolean>;\n @Input() pluginId!: string;\n @Input() prefillConfiguration$!: Observable<MailTemplateConfig>;\n @Output() valid: EventEmitter<boolean> = new EventEmitter<boolean>();\n @Output() configuration: EventEmitter<PluginConfigurationData> = new EventEmitter<PluginConfigurationData>();\n\n constructor(\n ) {}\n\n private saveSubscription!: Subscription;\n private readonly formValue$ = new BehaviorSubject<MailTemplateConfig | null>(null);\n private readonly valid$ = new BehaviorSubject<boolean>(false);\n\n ngOnInit(): void {\n this.openSaveSubscription();\n }\n\n ngOnDestroy() {\n this.saveSubscription?.unsubscribe();\n }\n\n formValueChange(formValue: MailTemplateConfig): void {\n this.formValue$.next(formValue);\n this.handleValid(formValue);\n }\n\n private handleValid(formValue: MailTemplateConfig): void {\n const valid = !!(formValue.configurationTitle);\n\n this.valid$.next(valid);\n this.valid.emit(valid);\n }\n\n private openSaveSubscription(): void {\n this.saveSubscription = this.save$?.subscribe(_ => {\n combineLatest([this.formValue$, this.valid$])\n .pipe(take(1))\n .subscribe(([formValue, valid]) => {\n if (valid) {\n this.configuration.emit(formValue!);\n this.injectCaseTab();\n }\n });\n });\n }\n\n private injectCaseTab() {\n }\n}\n","<!--\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=\"Mail Template Plugin\"\n >\n </v-input>\n</v-form>\n","/*\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\nimport {Component, EventEmitter, Input, OnDestroy, OnInit, Output} from '@angular/core';\n\nimport {FunctionConfigurationComponent, FunctionConfigurationData} from '@valtimo/plugin';\nimport {BehaviorSubject, combineLatest, filter, map, merge, Observable, of, Subject, Subscription, switchMap, take, takeUntil, tap,} from 'rxjs';\nimport {GenerateMailContentConfig} from '../../models';\nimport {SelectItem} from '@valtimo/components';\nimport {FreemarkerTemplateManagementService} from '../../../../services';\nimport {CaseManagementParams, getBuildingBlockManagementRouteParams, ManagementContext} from '@valtimo/shared';\nimport {ActivatedRoute} from '@angular/router';\n\n@Component({\n standalone: false,\n selector: 'valtimo-generate-mail-content-configuration',\n templateUrl: './generate-mail-content.component.html',\n})\nexport class GenerateMailContentComponent\n implements FunctionConfigurationComponent, OnInit, OnDestroy {\n @Input() save$!: Observable<void>;\n @Input() disabled$!: Observable<boolean>;\n @Input() pluginId!: string;\n @Input() context$: Observable<[ManagementContext, CaseManagementParams]>;\n @Input() prefillConfiguration$!: Observable<GenerateMailContentConfig>;\n @Output() valid: EventEmitter<boolean> = new EventEmitter<boolean>();\n @Output() configuration: EventEmitter<FunctionConfigurationData> = new EventEmitter<FunctionConfigurationData>();\n\n private readonly buildingBlockParams$ = getBuildingBlockManagementRouteParams(this.route);\n private readonly formValue$ = new BehaviorSubject<GenerateMailContentConfig | null>(null);\n private readonly valid$ = new BehaviorSubject<boolean>(false);\n private _subscriptions = new Subscription();\n\n readonly loading$ = new BehaviorSubject<boolean>(true);\n\n readonly mailTemplateItems$ = new BehaviorSubject<Array<SelectItem>>([]);\n\n private readonly _destroy$ = new Subject<void>();\n\n constructor(\n private readonly templateService: FreemarkerTemplateManagementService,\n private readonly route: ActivatedRoute\n ) {\n }\n\n ngOnInit(): void {\n this.openSaveSubscription();\n this.initContextHandling();\n }\n\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n formValueChange(formValue: GenerateMailContentConfig): void {\n this.formValue$.next(formValue);\n this.handleValid(formValue);\n }\n\n private handleValid(formValue: GenerateMailContentConfig): void {\n const valid = !!(formValue.mailTemplateKey && formValue.processVariableName);\n\n this.valid$.next(valid);\n this.valid.emit(valid);\n }\n\n private openSaveSubscription(): void {\n const saveSubscription = this.save$?.subscribe(save => {\n combineLatest([this.formValue$, this.valid$])\n .pipe(take(1))\n .subscribe(([formValue, valid]) => {\n if (valid) {\n this.configuration.emit(formValue!);\n }\n });\n });\n this._subscriptions.add(saveSubscription);\n }\n\n private initContextHandling(): void {\n const caseParams$ = this.context$ ? this.context$.pipe(\n filter(([managementContext, caseParams]) => managementContext === 'case' && !!caseParams?.caseDefinitionKey),\n map(([managementContext, caseParams]) => ({managementContext, caseParams}))\n ) : of(null);\n\n const buildingBlockParams$ = this.buildingBlockParams$.pipe(\n filter(buildingBlockParams => !!buildingBlockParams?.buildingBlockDefinitionKey),\n map(buildingBlockParams => ({managementContext: 'buildingBlock' as ManagementContext, buildingBlockParams}))\n );\n\n merge(caseParams$, buildingBlockParams$).pipe(\n filter(params => !!params),\n switchMap(params => {\n if (params!.managementContext === 'case') {\n return this.templateService.getAllMailTemplates((params as any).caseParams, null);\n } else if (params!.managementContext === 'buildingBlock') {\n return this.templateService.getAllMailTemplates(null, (params as any).buildingBlockParams);\n } else {\n console.error('Freemarker plugin does not support global templates');\n return of(null);\n }\n }),\n map(results =>\n results?.content.map(template => ({\n id: template.key,\n text: template.key,\n })) || []\n ),\n tap(() => this.loading$.next(false)),\n takeUntil(this._destroy$)\n ).subscribe(results => this.mailTemplateItems$.next(results));\n }\n\n}\n","<!--\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<ng-container *ngIf=\"{\n disabled: disabled$ | async,\n prefill: prefillConfiguration$ ? (prefillConfiguration$ | async) : null,\n mailTemplateItems: mailTemplateItems$ | async,\n loading: loading$ | async,\n } as obs\"\n>\n <ng-container *ngIf=\"obs.loading === false; else loading\">\n <v-paragraph [margin]=\"true\" [italic]=\"true\">\n {{ 'generateMailContentDescription' | pluginTranslate: pluginId | async }}\n </v-paragraph>\n <v-form (valueChange)=\"formValueChange($event)\">\n <v-select\n [items]=\"obs.mailTemplateItems\"\n [margin]=\"true\"\n [widthInPx]=\"350\"\n name=\"mailTemplateKey\"\n [title]=\"'mailTemplateKey' | pluginTranslate: pluginId | async\"\n [disabled]=\"obs.disabled\"\n [defaultSelectionId]=\"obs.prefill?.mailTemplateKey\"\n [required]=\"true\"\n [loading]=\"!obs.mailTemplateItems\"\n [tooltip]=\"'mailTemplateKeyTooltip' | pluginTranslate: pluginId | async\"\n ></v-select>\n <v-input\n name=\"processVariableName\"\n [title]=\"'processVariableName' | pluginTranslate: pluginId | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.prefill?.processVariableName || 'content'\"\n [disabled]=\"obs.disabled\"\n [tooltip]=\"'processVariableNameTooltip' | pluginTranslate: pluginId | async\"\n ></v-input>\n </v-form>\n </ng-container>\n</ng-container>\n\n<ng-template #loading>\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n</ng-template>\n","/*\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\nimport {Component, EventEmitter, Input, OnDestroy, OnInit, Output} from '@angular/core';\nimport {FunctionConfigurationComponent, FunctionConfigurationData} from '@valtimo/plugin';\nimport {BehaviorSubject, combineLatest, filter, map, merge, Observable, of, Subject, Subscription, switchMap, take, takeUntil, tap} from 'rxjs';\nimport {GenerateMailFileConfig} from '../../models';\nimport {SelectItem} from '@valtimo/components';\nimport {FreemarkerTemplateManagementService} from '../../../../services';\nimport {\n BuildingBlockManagementParams,\n CaseManagementParams,\n getBuildingBlockManagementRouteParams,\n ManagementContext\n} from '@valtimo/shared';\nimport {ActivatedRoute} from '@angular/router';\n\n@Component({\n standalone: false,\n selector: 'valtimo-generate-mail-file-configuration',\n templateUrl: './generate-mail-file.component.html',\n})\nexport class GenerateMailFileComponent\n implements FunctionConfigurationComponent, OnInit, OnDestroy {\n @Input() save$!: Observable<void>;\n @Input() disabled$!: Observable<boolean>;\n @Input() pluginId!: string;\n @Input() context$: Observable<[ManagementContext, CaseManagementParams]>;\n @Input() prefillConfiguration$!: Observable<GenerateMailFileConfig>;\n @Output() valid: EventEmitter<boolean> = new EventEmitter<boolean>();\n @Output() configuration: EventEmitter<FunctionConfigurationData> = new EventEmitter<FunctionConfigurationData>();\n\n private readonly buildingBlockParams$ = getBuildingBlockManagementRouteParams(this.route);\n private readonly formValue$ = new BehaviorSubject<GenerateMailFileConfig | null>(null);\n private readonly valid$ = new BehaviorSubject<boolean>(false);\n private _subscriptions = new Subscription();\n\n readonly loading$ = new BehaviorSubject<boolean>(true);\n\n readonly mailTemplateItems$ = new BehaviorSubject<Array<SelectItem>>([]);\n\n private readonly _destroy$ = new Subject<void>();\n\n constructor(\n private readonly templateService: FreemarkerTemplateManagementService,\n private readonly route: ActivatedRoute\n ) {\n }\n\n ngOnInit(): void {\n this.openSaveSubscription();\n this.initContextHandling();\n }\n\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n formValueChange(formValue: GenerateMailFileConfig): void {\n this.formValue$.next(formValue);\n this.handleValid(formValue);\n }\n\n private handleValid(formValue: GenerateMailFileConfig): void {\n const valid = !!(formValue.mailTemplateKey && formValue.processVariableName);\n\n this.valid$.next(valid);\n this.valid.emit(valid);\n }\n\n private openSaveSubscription(): void {\n const saveSubscription = this.save$?.subscribe(save => {\n combineLatest([this.formValue$, this.valid$])\n .pipe(take(1))\n .subscribe(([formValue, valid]) => {\n if (valid) {\n this.configuration.emit(formValue!);\n }\n });\n });\n this._subscriptions.add(saveSubscription);\n }\n\n private initContextHandling(): void {\n const caseParams$ = this.context$.pipe(\n filter(([managementContext, caseParams]) => managementContext === 'case' && !!caseParams?.caseDefinitionKey),\n map(([managementContext, caseParams]) => ({managementContext, caseParams}))\n );\n\n const buildingBlockParams$ = this.buildingBlockParams$.pipe(\n filter(buildingBlockParams => !!buildingBlockParams?.buildingBlockDefinitionKey),\n map(buildingBlockParams => ({managementContext: 'buildingBlock' as ManagementContext, buildingBlockParams}))\n );\n\n merge(caseParams$, buildingBlockParams$).pipe(\n filter(params => !!params),\n switchMap(params => {\n if (params!.managementContext === 'case') {\n return this.templateService.getAllMailTemplates((params as any).caseParams, null);\n } else if (params!.managementContext === 'buildingBlock') {\n return this.templateService.getAllMailTemplates(null, (params as any).buildingBlockParams);\n } else {\n console.error(`Freemarker plugin does not support '${params!.managementContext}' templates`);\n return of(null);\n }\n }),\n map(results =>\n results?.content.map(template => ({\n id: template.key,\n text: template.key,\n })) || []\n ),\n tap(() => this.loading$.next(false)),\n takeUntil(this._destroy$)\n ).subscribe(results => this.mailTemplateItems$.next(results));\n }\n\n}\n","<!--\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<ng-container *ngIf=\"{\n disabled: disabled$ | async,\n prefill: prefillConfiguration$ ? (prefillConfiguration$ | async) : null,\n mailTemplateItems: mailTemplateItems$ | async,\n loading: loading$ | async,\n } as obs\"\n>\n <ng-container *ngIf=\"obs.loading === false; else loading\">\n <v-paragraph [margin]=\"true\" [italic]=\"true\">\n {{ 'generateMailFileDescription' | pluginTranslate: pluginId | async }}\n </v-paragraph>\n <v-form (valueChange)=\"formValueChange($event)\">\n <v-select\n [items]=\"obs.mailTemplateItems\"\n [margin]=\"true\"\n [widthInPx]=\"350\"\n name=\"mailTemplateKey\"\n [title]=\"'mailTemplateKey' | pluginTranslate: pluginId | async\"\n [disabled]=\"obs.disabled\"\n [defaultSelectionId]=\"obs.prefill?.mailTemplateKey\"\n [required]=\"true\"\n [loading]=\"!obs.mailTemplateItems\"\n [tooltip]=\"'mailTemplateKeyTooltip' | pluginTranslate: pluginId | async\"\n ></v-select>\n <v-input\n name=\"processVariableName\"\n [title]=\"'processVariableName' | pluginTranslate: pluginId | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.prefill?.processVariableName || 'contentId'\"\n [disabled]=\"obs.disabled\"\n [tooltip]=\"'processVariableNameTooltip' | pluginTranslate: pluginId | async\"\n ></v-input>\n </v-form>\n </ng-container>\n</ng-container>\n\n<ng-template #loading>\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n</ng-template>\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\nimport {ChangeDetectionStrategy, Component, EventEmitter, Input, Output} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {ConfirmationModalModule} from '@valtimo/components';\n\n@Component({\n standalone: true,\n selector: 'valtimo-mail-template-delete-modal',\n templateUrl: './mail-template-delete-modal.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ConfirmationModalModule\n ]\n})\nexport class MailTemplateDeleteModalComponent {\n @Input() deleteRowKeys: Array<string>;\n @Input() showDeleteModal$: Observable<boolean>;\n @Output() deleteEvent = new EventEmitter<Array<string>>();\n\n public onDelete(templates: Array<any>): void {\n this.deleteEvent.emit(templates);\n }\n}\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\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","/*\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\nimport {ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output,} from '@angular/core';\nimport {FormBuilder, ReactiveFormsModule, Validators} from '@angular/forms';\nimport {TemplateMetadataModal} from '../../../../models';\nimport {CARBON_CONSTANTS, KeyGeneratorService} from '@valtimo/components';\nimport {ButtonModule, InputModule, ModalModule} from 'carbon-components-angular';\nimport {CommonModule} from '@angular/common';\nimport {TranslateModule} from '@ngx-translate/core';\n\n@Component({\n standalone: true,\n selector: 'valtimo-mail-template-add-edit-modal',\n templateUrl: './mail-template-add-edit-modal.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n ButtonModule,\n TranslateModule,\n ModalModule,\n ReactiveFormsModule,\n InputModule\n ]\n})\nexport class MailTemplateAddEditModalComponent implements OnInit {\n @Input() open = false;\n @Input() type: TemplateMetadataModal = 'add';\n\n @Input() set defaultKeyValue(value: string) {\n this._defaultKeyValue = value;\n this.setDefaultKeyValue(value);\n }\n\n @Output() closeEvent = new EventEmitter<{ key: string; metadata?: any } | null>();\n\n public form = this.fb.group({\n key: this.fb.control('', Validators.required),\n });\n\n private _defaultKeyValue!: string;\n\n public get key() {\n const key = this.form?.get('key');\n if (!key?.value) {\n return key;\n }\n key.setValue(this.keyGeneratorService.getUniqueKey(key.value, []));\n return key;\n }\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly keyGeneratorService: KeyGeneratorService,\n ) {\n }\n\n public ngOnInit(): void {\n }\n\n public onCancel(): void {\n this.closeEvent.emit(null);\n this.resetForm();\n }\n\n public onConfirm(): void {\n if (!this.key) {\n return;\n }\n\n this.closeEvent.emit({key: this.key.value});\n this.resetForm();\n }\n\n private setDefaultKeyValue(value: string) {\n this.key.setValue(value);\n }\n\n private resetForm(): void {\n setTimeout(() => {\n this.form.reset();\n if (this.type === 'edit') {\n this.setDefaultKeyValue(this._defaultKeyValue);\n }\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n}\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\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","/*\n * Copyright 2015-2024 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\nimport {ChangeDetectionStrategy, Component, OnInit, ViewChild,} from '@angular/core';\nimport {BehaviorSubject, combineLatest, filter, map, merge, Observable, startWith, switchMap, take, tap} from 'rxjs';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {CarbonListComponent, CarbonListModule, ColumnConfig, ViewType} from '@valtimo/components';\nimport {FreemarkerTemplateManagementService} from '../../../../services';\nimport {TemplateListItem} from '../../../../models';\nimport {CommonModule} from '@angular/common';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {MailTemplateDeleteModalComponent} from '../mail-template-delete-modal/mail-template-delete-modal.component';\nimport {MailTemplateAddEditModalComponent} from '../mail-template-add-edit-modal/mail-template-add-edit-modal.component';\nimport {\n BuildingBlockManagementParams,\n CaseManagementParams,\n EnvironmentService,\n getBuildingBlockManagementRouteParams,\n getCaseManagementRouteParams\n} from '@valtimo/shared';\nimport {ButtonModule} from 'carbon-components-angular';\n\n@Component({\n standalone: true,\n templateUrl: './mail-template-list.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n CarbonListModule,\n ButtonModule,\n TranslateModule,\n MailTemplateDeleteModalComponent,\n MailTemplateAddEditModalComponent\n ]\n})\nexport class MailTemplateListComponent implements OnInit {\n @ViewChild(CarbonListComponent) carbonList: CarbonListComponent;\n\n public fields: ColumnConfig[] = [\n {\n viewType: ViewType.TEXT,\n key: 'key',\n label: 'Key',\n },\n ];\n\n private readonly _caseDefinitionId$: Observable<CaseManagementParams> = getCaseManagementRouteParams(this.route).pipe(\n filter((params: CaseManagementParams | undefined) => !!params?.caseDefinitionKey),\n );\n\n private readonly _buildingBlockDefinitionId$: Observable<BuildingBlockManagementParams> = getBuildingBlockManagementRouteParams(this.route).pipe(\n filter((params: BuildingBlockManagementParams | undefined) => !!params?.buildingBlockDefinitionKey),\n );\n\n private readonly _params$: Observable<{case?: CaseManagementParams, buildingBlock?: BuildingBlockManagementParams}> = merge(\n this._caseDefinitionId$.pipe(map(params => ({case: params}))),\n this._buildingBlockDefinitionId$.pipe(map(params => ({buildingBlock: params})))\n );\n\n public readonly readOnly$: Observable<boolean> = this._params$.pipe(\n switchMap(({case: caseDefinitionId, buildingBlock: buildingBlockDefinitionId}) => combineLatest([\n this.environmentService.canUpdateGlobalConfiguration(),\n this.templateService.isFinal(caseDefinitionId, buildingBlockDefinitionId)\n ]).pipe(\n map(([canUpdateGlobal, isFinalCase]) => !canUpdateGlobal || isFinalCase),\n startWith(true)\n )\n )\n );\n\n public readonly templates$ = new BehaviorSubject<TemplateListItem[] | null>(null);\n public readonly showAddModal$ = new BehaviorSubject<boolean>(false);\n public readonly showDeleteModal$ = new BehaviorSubject<boolean>(false);\n public readonly selectedRowKeys$ = new BehaviorSubject<Array<any>>([]);\n public readonly loading$ = new BehaviorSubject<boolean>(true);\n\n constructor(\n private readonly templateService: FreemarkerTemplateManagementService,\n private readonly router: Router,\n private readonly route: ActivatedRoute,\n private readonly environmentService: EnvironmentService,\n ) {\n }\n\n public ngOnInit(): void {\n this.reloadTemplateList();\n }\n\n public openAddModal(): void {\n this.showAddModal$.next(true);\n }\n\n public onAdd(data?: any): void {\n if (!data) {\n this.showAddModal$.next(false);\n return;\n }\n\n this._params$.pipe(\n take(1),\n switchMap(({case: caseDefinitionId, buildingBlock: buildingBlockDefinitionId}) => this.templateService.addTemplate({\n caseDefinitionKey: caseDefinitionId?.caseDefinitionKey,\n caseDefinitionVersionTag: caseDefinitionId?.caseDefinitionVersionTag,\n buildingBlockDefinitionKey: buildingBlockDefinitionId?.buildingBlockDefinitionKey,\n buildingBlockDefinitionVersionTag: buildingBlockDefinitionId?.buildingBlockDefinitionVersionTag,\n type: 'mail', ...data\n }))\n ).subscribe(template => {\n this.showAddModal$.next(false);\n this.gotoMailTemplateEditor(\n template.caseDefinitionKey,\n template.caseDefinitionVersionTag,\n template.buildingBlockDefinitionKey,\n template.buildingBlockDefinitionVersionTag,\n template.key\n );\n });\n }\n\n public showDeleteModal(): void {\n this.setSelectedTemplateKeys();\n this.showDeleteModal$.next(true);\n }\n\n public onDelete(templates: Array<any>): void {\n this.loading$.next(true);\n this._params$.pipe(\n take(1),\n switchMap(({case: caseDefinitionId, buildingBlock: buildingBlockDefinitionId}) => this.templateService.deleteTemplates({\n caseDefinitionKey: caseDefinitionId?.caseDefinitionKey,\n caseDefinitionVersionTag: caseDefinitionId?.caseDefinitionVersionTag,\n buildingBlockDefinitionKey: buildingBlockDefinitionId?.buildingBlockDefinitionKey,\n buildingBlockDefinitionVersionTag: buildingBlockDefinitionId?.buildingBlockDefinitionVersionTag,\n templates\n })),\n ).subscribe(_ => {\n this.reloadTemplateList();\n });\n }\n\n public onRowClick(template: TemplateListItem): void {\n this._params$.pipe(take(1)).subscribe(({case: caseDefinitionId, buildingBlock: buildingBlockDefinitionId}) =>\n this.gotoMailTemplateEditor(\n caseDefinitionId?.caseDefinitionKey,\n caseDefinitionId?.caseDefinitionVersionTag,\n buildingBlockDefinitionId?.buildingBlockDefinitionKey,\n buildingBlockDefinitionId?.buildingBlockDefinitionVersionTag,\n template.key\n )\n );\n }\n\n private gotoMailTemplateEditor(\n caseDefinitionKey: string,\n caseDefinitionVersionTag: string,\n buildingBlockDefinitionKey: string,\n buildingBlockDefinitionVersionTag: string,\n key: string\n ): void {\n if (caseDefinitionKey) {\n this.router.navigate([`/case-management/case/${caseDefinitionKey}/version/${caseDefinitionVersionTag}/mail-template/${key}`]);\n } else {\n this.router.navigate([`/building-block-management/building-block/${buildingBlockDefinitionKey}/version/${buildingBlockDefinitionVersionTag}/mail-template/${key}`]);\n }\n }\n\n private reloadTemplateList(): void {\n this.loading$.next(true);\n this._params$.pipe(\n switchMap(({case: caseDefinitionId, buildingBlock: buildingBlockDefinitionId}) => this.templateService.getAllMailTemplates(caseDefinitionId, buildingBlockDefinitionId)),\n map(templatePage => templatePage.content),\n take(1)\n ).subscribe(templateListItems => {\n this.templates$.next(templateListItems);\n this.loading$.next(false);\n });\n }\n\n private setSelectedTemplateKeys(): void {\n this.selectedRowKeys$.next(this.carbonList.selectedItems.map((template: TemplateListItem) => ({key: template.key, type: template.type})));\n }\n}\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\n<valtimo-carbon-list\n [header]=\"false\"\n [items]=\"templates$ | async\"\n [fields]=\"fields\"\n [loading]=\"loading$ | async\"\n [showSelectionColumn]=\"!(readOnly$ | async)\"\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\"\n [disabled]=\"readOnly$ | async\"\n (click)=\"openAddModal()\">\n {{ 'Add' }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\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\nimport {AfterViewInit, ChangeDetectionStrategy, Component, OnDestroy, OnInit} from '@angular/core';\nimport {BehaviorSubject, combineLatest, combineLatestWith, filter, map, merge, Observable, startWith, Subject, switchMap, take, takeUntil, tap} from 'rxjs';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {\n BreadcrumbService,\n CarbonListModule,\n EditorModel,\n EditorModule,\n PageTitleService,\n RenderInPageHeaderDirective,\n} from '@valtimo/components';\nimport {ButtonModule, DialogModule, IconModule, NotificationService, TabsModule} from 'carbon-components-angular';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {FreemarkerTemplateManagementService} from '../../../../services';\nimport {TemplateResponse} from '../../../../models';\nimport {\n BuildingBlockManagementParams,\n CaseManagementParams,\n EnvironmentService,\n getBuildingBlockManagementRouteParams,\n getCaseManagementRouteParams\n} from '@valtimo/shared';\nimport {CommonModule} from '@angular/common';\nimport {MailTemplateDeleteModalComponent} from '../mail-template-delete-modal/mail-template-delete-modal.component';\n\n@Component({\n standalone: true,\n templateUrl: './mail-template-editor.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['./mail-template-editor.component.scss'],\n providers: [NotificationService],\n imports: [\n CommonModule,\n TranslateModule,\n TabsModule,\n DialogModule,\n MailTemplateDeleteModalComponent,\n CarbonListModule,\n ButtonModule,\n EditorModule,\n RenderInPageHeaderDirective,\n IconModule,\n ]\n})\nexport class MailTemplateEditorComponent implements OnInit, AfterViewInit, OnDestroy {\n public readonly model$ = new BehaviorSubject<EditorModel | null>(null);\n public readonly template$ = new BehaviorSubject<TemplateResponse | null>(null);\n public readonly saveDisabled$ = new BehaviorSubject<boolean>(true);\n public readonly editorDisabled$ = new BehaviorSubject<boolean>(false);\n public readonly moreDisabled$ = new BehaviorSubject<boolean>(true);\n public readonly showDeleteModal$ = new BehaviorSubject<boolean>(false);\n public readonly updatedModelValue$ = new BehaviorSubject<string>('');\n\n private readonly _destroy$ = new Subject<void>();\n\n private readonly _caseDefinitionId$: Observable<CaseManagementParams> = getCaseManagementRouteParams(this.route).pipe(\n filter((params: CaseManagementParams | undefined) => !!params?.caseDefinitionKey),\n );\n\n private readonly _buildingBlockDefinitionId$: Observable<BuildingBlockManagementParams> = getBuildingBlockManagementRouteParams(this.route).pipe(\n filter((params: BuildingBlockManagementParams | undefined) => !!params?.buildingBlockDefinitionKey),\n );\n\n private readonly _params$: Observable<{case?: CaseManagementParams, buildingBlock?: BuildingBlockManagementParams}> = merge(\n this._caseDefinitionId$.pipe(map(params => ({case: params}))),\n this._buildingBlockDefinitionId$.pipe(map(params => ({buildingBlock: params})))\n );\n\n public readonly templateKey$: Observable<string> = combineLatest([this.route.params, this.route.parent.params]).pipe(\n map(([params, parentParams]) => params?.templateKey || parentParams?.templateKey),\n filter(templateKey => !!templateKey)\n );\n\n public readonly readOnly$: Observable<boolean> = this._params$.pipe(\n switchMap(({case: caseDefinitionId, buildingBlock: buildingBlockDefinitionId}) => combineLatest([\n this.environmentService.canUpdateGlobalConfiguration(),\n this.isFinal(caseDefinitionId, buildingBlockDefinitionId)\n ]).pipe(\n map(([canUpdateGlobal, isFinalCase]) => !canUpdateGlobal || isFinalCase),\n startWith(true)\n )\n )\n );\n\n constructor(\n private readonly templateService: FreemarkerTemplateManagementService,\n private readonly route: ActivatedRoute,\n private readonly pageTitleService: PageTitleService,\n private readonly router: Router,\n private readonly notificationService: NotificationService,\n private readonly translateService: TranslateService,\n private readonly breadcrumbService: BreadcrumbService,\n private readonly environmentService: EnvironmentService,\n ) {\n }\n\n public ngOnInit(): void {\n this.loadTemplate();\n }\n\n public ngAfterViewInit(): void {\n this.initBreadcrumb();\n }\n\n public ngOnDestroy(): void {\n this.pageTitleService.enableReset();\n this.breadcrumbService.clearThirdBreadcrumb();\n this.breadcrumbService.clearFourthBreadcrumb();\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public onValid(valid: boolean): void {\n this.saveDisabled$.next(valid === false);\n }\n\n public onValueChange(value: string): void {\n this.updatedModelValue$.next(value);\n }\n\n public updateTemplate(): void {\n this.disableEditor();\n this.disableSave();\n this.disableMore();\n\n combineLatest([this.updatedModelValue$, this._params$, this.templateKey$]).pipe(\n take(1),\n switchMap(([updatedModelValue, {case: caseDefinitionId, buildingBlock: buildingBlockDefinitionId}, templateKey]) =>\n this.templateService.updateTemplate(\n {\n key: templateKey,\n caseDefinitionKey: caseDefinitionId?.caseDefinitionKey,\n caseDefinitionVersionTag: caseDefinitionId?.caseDefinitionVersionTag,\n buildingBlockDefinitionKey: buildingBlockDefinitionId?.buildingBlockDefinitionKey,\n buildingBlockDefinitionVersionTag: buildingBlockDefinitionId?.buildingBlockDefinitionVersionTag,\n type: 'mail',\n content: updatedModelValue,\n }\n )\n ),\n takeUntil(this._destroy$)\n ).subscribe({\n next: result => {\n this.enableMore();\n this.enableSave();\n this.enableEditor();\n this.showSuccessMessage(result.key);\n this.setModel(result.content);\n this.template$.next(result);\n },\n error: () => {\n this.enableMore();\n this.enableSave();\n this.enableEditor();\n },\n });\n }\n\n public onDelete(templates: Array<any>): void {\n this.disableEditor();\n this.disableSave();\n this.disableMore();\n\n this._params$.pipe(\n take(1),\n switchMap(({case: caseDefinitionId, buildingBlock: buildingBlockDefinitionId}) => {\n if (caseDefinitionId?.caseDefinitionKey) {\n return this.templateService.deleteTemplates({\n caseDefinitionKey: caseDefinitionId.caseDefinitionKey,\n caseDefinitionVersionTag: caseDefinitionId.caseDefinitionVersionTag,\n templates\n }).pipe(map(() => `/case-management/case/${caseDefinitionId.caseDefinitionKey}/version/${caseDefinitionId.caseDefinitionVersionTag}/mail-template`));\n } else {\n return this.templateService.deleteTemplates({\n buildingBlockDefinitionKey: buildingBlockDefinitionId.buildingBlockDefinitionKey,\n buildingBlockDefinitionVersionTag: buildingBlockDefinitionId.buildingBlockDefinitionVersionTag,\n templates\n }).pipe(map(() => `/building-block-management/building-block/${buildingBlockDefinitionId.buildingBlockDefinitionKey}/version/${buildingBlockDefinitionId.buildingBlockDefinitionVersionTag}/mail-template`));\n }\n }),\n takeUntil(this._destroy$)\n ).subscribe(targetUrl => {\n this.router.navigate([targetUrl]);\n });\n }\n\n public showDeleteModal(): void {\n this.showDeleteModal$.next(true);\n }\n\n private loadTemplate(): void {\n this._params$.pipe(\n combineLatestWith(this.templateKey$),\n switchMap(([{case: caseDefinitionId, buildingBlock: buildingBlockDefinitionId}, key]) => {\n return this.templateService.getMailTemplate(\n caseDefinitionId,\n buildingBlockDefinitionId,\n key\n ).pipe(map(result => ({result, key})));\n }),\n take(1),\n takeUntil(this._destroy$)\n ).subscribe(({result, key}) => {\n this.pageTitleService.setCustomPageTitle(`Mail template: ${key}`, true);\n this.enableMore();\n this.enableSave();\n this.enableEditor();\n this.setModel(result.content);\n this.refreshViewer(result.content);\n this.template$.next(result);\n });\n }\n\n private setModel(content: string): void {\n this.model$.next({\n value: content,\n language: 'freemarker2',\n });\n this.updatedModelValue$.next(content);\n }\n\n private disableMore(): void {\n this.moreDisabled$.next(true);\n }\n\n private enableMore(): void {\n this.moreDisabled$.next(false);\n }\n\n private disableSave(): void {\n this.saveDisabled$.next(true);\n }\n\n private enableSave(): void {\n this.saveDisabled$.next(false);\n }\n\n private disableEditor(): void {\n this.editorDisabled$.next(true);\n }\n\n private enableEditor(): void {\n this.editorDisabled$.next(false);\n }\n\n public onSelectedTabViewer(): void {\n this.updatedModelValue$.pipe(take(1), takeUntil(this._destroy$)).subscribe(html =>\n this.refreshViewer(html)\n );\n }\n\n private refreshViewer(html: string): void {\n setTimeout(() => {\n const htmlViewer = document.getElementById('html-viewer-iframe') as HTMLIFrameElement;\n if (htmlViewer) {\n htmlViewer.srcdoc = html;\n }\n }, 100);\n }\n\n private isFinal(caseDefinitionId: CaseManagementParams | undefined, buildingBlockDefinitionId: BuildingBlockManagementParams | undefined): Observable<boolean> {\n return this.templateService.isFinal(caseDefinitionId, buildingBlockDefinitionId);\n }\n\n private initBreadcrumb(): void {\n this._params$.pipe(takeUntil(this._destroy$)).subscribe(({case: caseDefinitionId, buildingBlock: buildingBlockDefinitionId}) => {\n if (caseDefinitionId) {\n this.breadcrumbService.setThirdBreadcrumb({\n route: [`/case-management/case/${caseDefinitionId.caseDefinitionKey}/version/${caseDefinitionId.caseDefinitionVersionTag}`],\n content: `${caseDefinitionId.caseDefinitionKey}:${caseDefinitionId.caseDefinitionVersionTag}`,\n href: `/case-management/case/${caseDefinitionId.caseDefinitionKey}/version/${caseDefinitionId.caseDefinitionVersionTag}`,\n });\n this.breadcrumbService.setFourthBreadcrumb({\n route: [`/case-management/case/${caseDefinitionId.caseDefinitionKey}/version/${caseDefinitionId.caseDefinitionVersionTag}/mail-template`],\n content: 'Mail template',\n href: `/case-management/case/${caseDefinitionId.caseDefinitionKey}/version/${caseDefinitionId.caseDefinitionVersionTag}/mail-template`,\n });\n } else if (buildingBlockDefinitionId) {\n this.breadcrumbService.setThirdBreadcrumb({\n route: [`/building-block-management/building-block/${buildingBlockDefinitionId.buildingBlockDefinitionKey}/version/${buildingBlockDefinitionId.buildingBlockDefinitionVersionTag}`],\n content: `${buildingBlockDefinitionId.buildingBlockDefinitionKey}:${buildingBlockDefinitionId.buildingBlockDefinitionVersionTag}`,\n href: `/building-block-management/building-block/${buildingBlockDefinitionId.buildingBlockDefinitionKey}/version/${buildingBlockDefinitionId.buildingBlockDefinitionVersionTag}`,\n });\n this.breadcrumbService.setFourthBreadcrumb({\n route: [`/building-block-management/building-block/${buildingBlockDefinitionId.buildingBlockDefinitionKey}/version/${buildingBlockDefinitionId.buildingBlockDefinitionVersionTag}/mail-template`],\n content: 'Mail template',\n href: `/building-block-management/building-block/${buildingBlockDefinitionId.buildingBlockDefinitionKey}/version/${buildingBlockDefinitionId.buildingBlockDefinitionVersionTag}/mail-template`,\n });\n }\n });\n }\n\n private showSuccessMessage(key: string): void {\n this.notificationService.showToast({\n caption: this.translateService.instant(`${key} was saved successfully`, {\n key,\n }),\n type: 'success',\n duration: 4000,\n showClose: true,\n title: this.translateService.instant('Saved successfully'),\n });\n }\n}\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\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/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 </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) || (readOnly$ | async)\"\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 || (readOnly$ | async)\"\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) || (readOnly$ | async)\"\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]=\"[{key: obs.templateKey, type: 'mail'}]\"\n [showDeleteModal$]=\"showDeleteModal$\"\n (deleteEvent)=\"onDelete($event)\"\n >\n </valtimo-mail-template-delete-modal>\n</ng-container>\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 */\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {ROLE_ADMIN} from '@valtimo/shared';\nimport {AuthGuardService} from '@valtimo/security';\nimport {MailTemplateEditorComponent} from './components/mail-template-editor/mail-template-editor.component';\n\nconst routes: Routes = [\n {\n path: 'case-management/case/:caseDefinitionKey/version/:caseDefinitionVersionTag/mail-template/:templateKey',\n component: MailTemplateEditorComponent,\n canActivate: [AuthGuardService],\n data: {\n title: 'Mail Template Editor',\n templates: [ROLE_ADMIN],\n customPageTitle: true,\n },\n },\n {\n path: 'building-block-management/building-block/:buildingBlockDefinitionKey/version/:buildingBlockDefinitionVersionTag/mail-template/:templateKey',\n component: MailTemplateEditorComponent,\n canActivate: [AuthGuardService],\n data: {\n title: 'Mail Template Editor',\n templates: [ROLE_ADMIN],\n customPageTitle: true,\n },\n },\n];\n\n@NgModule({\n imports: [CommonModule, RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class TemplateManagementRoutingModule {}\n","/*\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\nimport { NgModule } from \"@angular/core\";\nimport { MailTemplateConfigurationComponent } from \"./components/mail-template-configuration/mail-template-configuration.component\";\nimport { CommonModule } from \"@angular/common\";\nimport { PluginManagementService, PluginTranslatePipeModule } from \"@valtimo/plugin\";\nimport {\n CarbonListModule,\n ConfirmationModalModule,\n EditorModule,\n FormModule,\n InputModule as ValtimoInputModule,\n ParagraphModule,\n RenderInPageHeaderDirective,\n SelectModule,\n} from \"@valtimo/components\";\nimport { GenerateMailContentComponent } from \"./components/generate-mail-content/generate-mail-content.component\";\nimport { GenerateMailFileComponent } from \"./components/generate-mail-file/generate-mail-file.component\";\nimport {\n ButtonModule,\n DialogModule,\n DropdownModule,\n IconModule,\n InputModule,\n LoadingModule,\n ModalModule,\n NotificationModule,\n TabsModule,\n} from \"carbon-components-angular\";\nimport { BUILDING_BLOCK_MANAGEMENT_TAB_TOKEN, CASE_MANAGEMENT_TAB_TOKEN } from \"@valtimo/shared\";\nimport { MailTemplateListComponent } from \"./components/mail-template-list/mail-template-list.component\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { ReactiveFormsModule } from \"@angular/forms\";\nimport { TemplateManagementRoutingModule } from \"./mail-template-management-routing.module\";\nimport { MailTemplateDeleteModalComponent } from \"./components/mail-template-delete-modal/mail-template-delete-modal.component\";\nimport { catchError, map, of } from \"rxjs\";\n\n@NgModule({\n declarations: [MailTemplateConfigurationComponent, GenerateMailFileComponent, GenerateMailContentComponent],\n imports: [\n CommonModule,\n PluginTranslatePipeModule,\n TemplateManagementRoutingModule,\n FormModule,\n ParagraphModule,\n SelectModule,\n ConfirmationModalModule,\n TranslateModule,\n ReactiveFormsModule,\n CarbonListModule,\n EditorModule,\n ValtimoInputModule,\n ButtonModule,\n DialogModule,\n DropdownModule,\n IconModule,\n InputModule,\n LoadingModule,\n ModalModule,\n NotificationModule,\n RenderInPageHeaderDirective,\n TabsModule,\n MailTemplateDeleteModalComponent,\n ],\n exports: [MailTemplateConfigurationComponent, GenerateMailFileComponent, GenerateMailContentComponent],\n providers: [\n {\n provide: CASE_MANAGEMENT_TAB_TOKEN,\n useFactory: (pluginManagementService: PluginManagementService) => ({\n translationKey: \"Mail template\",\n component: MailTemplateListComponent,\n tabRoute: \"mail-template\",\n enabled$: pluginManagementService.getAllPluginConfigurations().pipe(\n map((pluginConfigs) => pluginConfigs.find((pluginConfig) => pluginConfig.pluginDefinition?.key === \"mail-template\")),\n catchError(() => of(false)),\n ),\n }),\n deps: [PluginManagementService],\n multi: true,\n },\n {\n provide: BUILDING_BLOCK_MANAGEMENT_TAB_TOKEN,\n useFactory: (pluginManagementService: PluginManagementService) => ({\n translationKey: \"Mail template\",\n component: MailTemplateListComponent,\n tabRoute: \"mail-template\",\n enabled$: pluginManagementService.getAllPluginConfigurations().pipe(\n map((pluginConfigs) => pluginConfigs.find((pluginConfig) => pluginConfig.pluginDefinition?.key === \"mail-template\")),\n catchError(() => of(false)),\n ),\n }),\n deps: [PluginManagementService],\n multi: true,\n },\n ],\n})\nexport class MailTemplatePluginModule {}\n","/*\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\nconst MAIL_TEMPLATE_PLUGIN_LOGO_BASE64 =\n 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyBpZD0ic3ZnMiIgdmlld0JveD0iMCAwIDQwMCAyMDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgPHBhdGggZD0iTSAzNDAuMzM3IDEzNS4zMjQgTCAzNTAuNTU1IDE1MC44MTUgTCAzODQuNiA5OS4xNzYgTCAzNTAuNTU1IDQ3LjUzNSBMIDM0MC4zMzcgNjMuMDI4IEwgMzY0LjE4MSA5OS4xNzYgTCAzNDAuMzM3IDEzNS4zMjQgWiIgc3R5bGU9ImZpbGw6IHJnYigwLCA4MCwgMTc4KTsiLz4KICA8cGF0aCBkPSJNIDU1LjQwNiA2My4wMjggTCA0NS4xODggNDcuNTM1IEwgMTEuMTQzIDk5LjE3NiBMIDQ1LjE4OCAxNTAuODE1IEwgNTUuNDA2IDEzNS4zMjQgTCAzMS41NjMgOTkuMTc2IEwgNTUuNDA2IDYzLjAyOCBaIiBzdHlsZT0iZmlsbDogcmdiKDAsIDgwLCAxNzgpOyIvPgogIDxwYXRoIGQ9Ik0gOTIuNzIxIDQ3LjUzNSBMIDExMy4zNzYgNDcuNTM1IEwgMTA5LjczMiA2OC4xOTEgTCAxMzAuMzg5IDY4LjE5MSBMIDEzNC4wMzIgNDcuNTM1IEwgMTU0LjY4OSA0Ny41MzUgTCAxNTEuMDQ1IDY4LjE5MSBMIDE3MS43MDEgNjguMTkxIEwgMTY4LjA0OSA4OC44NDggTCAxNDcuMzkzIDg4Ljg0OCBMIDE0My43NTYgMTA5LjUwNCBMIDE2NC40MTIgMTA5LjUwNCBMIDE2MC43NjcgMTMwLjE2IEwgMTQwLjExMSAxMzAuMTYgTCAxMzYuNDgyIDE1MC44MTUgTCAxMTUuODI2IDE1MC44MTUgTCAxMTkuNDYzIDEzMC4xNiBMIDk4LjgwNiAxMzAuMTYgTCA5NS4yMjkgMTUwLjgxNSBMIDc0LjUxMyAxNTAuODE1IEwgNzguMTUgMTMwLjE2IEwgNTcuNDk0IDEzMC4xNiBMIDYxLjEzOCAxMDkuNTA0IEwgODEuNzk1IDEwOS41MDQgTCA4NS40MzIgODguODk5IEwgNjQuNzc1IDg4Ljg5OSBMIDY4LjQyIDY4LjE5MSBMIDg5LjA3NiA2OC4xOTEgTCA5Mi43MjEgNDcuNTM1IFogTSAxMDIuNDUxIDEwOS41MDQgTCAxMjMuMTA3IDEwOS41MDQgTCAxMjYuNzUyIDg4Ljg0OCBMIDEwNi4wOTUgODguODQ4IEwgMTAyLjQ1MSAxMDkuNTA0IFoiIHN0eWxlPSJmaWxsOiByZ2IoMCwgODAsIDE3OCk7Ii8+CiAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMi4wMjgxNjQsIDAsIDAsIDIuMDI4MTY0LCAxNzkuMDc4MTg2LCAyNi4zMjE2NjcpIiBzdHlsZT0iIj4KICAgIDxwYXRoIGQ9Ik0gNjYuMDk3IDExLjUyOCBMIDkuMTk3IDExLjUyOCBDIDQuMTI2IDExLjUyOCAwIDE1LjY1NCAwIDIwLjcyNSBMIDAgNTMuNDQ3IEMgMCA1OC41MTggNC4xMjYgNjIuNjQ0IDkuMTk3IDYyLjY0NCBMIDY2LjA5NyA2Mi42NDQgQyA3MS4xNjggNjIuNjQ0IDc1LjI5NCA1OC41MTggNzUuMjk0IDUzLjQ0NyBMIDc1LjI5NCAyMC43MjYgQyA3NS4yOTUgMTUuNjU0IDcxLjE2OSAxMS41MjggNjYuMDk3IDExLjUyOCBaIE0gNjEuNjAzIDE3LjUyOCBMIDM3LjY0NyAzMi45NjIgTCAxMy42OTEgMTcuNTI4IEwgNjEuNjAzIDE3LjUyOCBaIE0gNjYuMDk3IDU2LjY0NSBMIDkuMTk3IDU2LjY0NSBDIDcuNDM0IDU2LjY0NSA2IDU1LjIxIDYgNTMuNDQ4IEwgNiAyMC44OTYgTCAzNS43OTYgNDAuMDU2IEMgMzUuODM2IDQwLjA4MSAzNS44NzkgNDAuMDk4IDM1LjkyIDQwLjEyMSBDIDM1Ljk2MyA0MC4xNDUgMzYuMDA3IDQwLjE2OCAzNi4wNTEgNDAuMTkgQyAzNi4yODIgNDAuMzA5IDM2LjUyIDQwLjQwNSAzNi43NjMgNDAuNDY4IEMgMzYuNzg4IDQwLjQ3NSAzNi44MTMgNDAuNDc4IDM2LjgzOCA0MC40ODQgQyAzNy4xMDUgNDAuNTQ3IDM3LjM3NSA0MC41ODYgMzcuNjQ1IDQwLjU4NiBDIDM3LjY0NiA0MC41ODYgMzcuNjQ3IDQwLjU4NiAzNy42NDcgNDAuNTg2IEMgMzcuNjQ5IDQwLjU4NiAzNy42NSA0MC41ODYgMzcuNjUxIDQwLjU4NiBDIDM3LjkyMSA0MC41ODYgMzguMTkxIDQwLjU0OCAzOC40NTggNDAuNDg0IEMgMzguNDgzIDQwLjQ3OCAzOC41MDggNDAuNDc1IDM4LjUzMyA0MC40NjggQyAzOC43NzYgNDAuNDA1IDM5LjAxMyA0MC4zMDkgMzkuMjQ1IDQwLjE5IEMgMzkuMjg5IDQwLjE2OCAzOS4zMzMgNDAuMTQ1IDM5LjM3NiA0MC4xMjEgQyAzOS40MTcgNDAuMDk4IDM5LjQ2IDQwLjA4MSAzOS41IDQwLjA1NiBMIDY5LjI5NiAyMC44OTYgTCA2OS4yOTYgNTMuNDQ3IEMgNjkuMjk1IDU1LjIxIDY3Ljg2IDU2LjY0NSA2Ni4wOTcgNTYuNjQ1IFoiLz4KICA8L2c+Cjwvc3ZnPg==';\n\nexport {MAIL_TEMPLATE_PLUGIN_LOGO_BASE64};\n","/*\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\nexport * from './mail-template-plugin-logo';\n","/*\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\nimport { PluginSpecification } from \"@valtimo/plugin\";\nimport { MailTemplateConfigurationComponent } from \"./components/mail-template-configuration/mail-template-configuration.component\";\nimport { MAIL_TEMPLATE_PLUGIN_LOGO_BASE64 } from \"./assets\";\nimport { GenerateMailContentComponent } from \"./components/generate-mail-content/generate-mail-content.component\";\nimport { GenerateMailFileComponent } from \"./components/generate-mail-file/generate-mail-file.component\";\n\nconst mailTemplatePluginSpecification: PluginSpecification = {\n pluginId: \"mail-template\",\n pluginConfigurationComponent: MailTemplateConfigurationComponent,\n pluginLogoBase64: MAIL_TEMPLATE_PLUGIN_LOGO_BASE64,\n functionConfigurationComponents: {\n \"generate-mail-file\": GenerateMailFileComponent,\n \"generate-mail-content\": GenerateMailContentComponent,\n },\n pluginTranslations: {\n nl: {\n title: \"Mail sjablonen\",\n \"generate-mail-file\": \"Genereer Mailbestand\",\n \"generate-mail-content\": \"Genereer Mailinhoud (verouderd)\",\n description: \"Maak Mail sjablonen met Freemarker.\",\n configurationTitle: \"Configuratienaam\",\n configurationTitleTooltip:\n \"De naam van de huidige plug-in configuratie. Onder deze naam kan de configuratie worden gevonden in de rest van de applicatie.\",\n generateMailContentDescription:\n 'Deze actie is verouderd. Gebruik \"Genereer Mailbestand\". Deze actie genereert de inhoud van een mail op basis van een sjabloon. De mail tekst wordt opgeslagen in een Proces Variabele.',\n generateMailFileDescription:\n \"Deze actie genereert de inhoud van een mail en slaat het resultaat op in een tijdelijk bestand. Het ID van het bestand wordt opgeslagen in een Proces Variabele.\",\n mailTemplateKey: \"Mail sjabloon\",\n mailTemplateKeyTooltip: \"Op bases van deze sjabloon wordt de mail gegenereerd\",\n processVariableName: \"Procesvariabelenaam\",\n processVariableNameTooltip: \"Het resultaat wordt opgeslagen in een procesvariabele met deze naam\",\n },\n en: {\n title: \"Mail Templates\",\n \"generate-mail-file\": \"Generate Mail File\",\n \"generate-mail-content\": \"Generate Mail Content (deprecated)\",\n description: \"Create mail templates with Freemarker.\",\n configurationTitle: \"Configuration Name\",\n configurationTitleTooltip:\n \"The name of the current plug-in configuration. The configuration can be found under this name in the rest of the application.\",\n generateMailContentDescription:\n 'This action generates the content of an mail based on a template. The mail text is then stored in a Process Variable. This action is deprecated because the mail text can be bigger than a Process Variable can store. Please use action \"Generate Mail File\" instead',\n generateMailFileDescription:\n \"This action generates the content of an mail and saves the result in a temporary file. The file ID is then stored in a Process Variable.\",\n mailTemplateKey: \"Mail Template\",\n mailTemplateKeyTooltip: \"The mail will be generated based on this template.\",\n processVariableName: \"Process Variable Name\",\n processVariableNameTooltip: \"The result will be stored in a process variable with this name.\",\n },\n },\n};\n\nexport { mailTemplatePluginSpecification };\n","/*\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\nimport {PluginConfigurationData} from '@valtimo/plugin';\n\ninterface TextTemplateConfig extends PluginConfigurationData {\n}\n\ninterface GenerateTextContentConfig {\n textTemplateKey: string;\n processVariableName: string;\n}\n\ninterface GenerateTextFileConfig {\n textTemplateKey: string;\n processVariableName: string;\n}\n\nexport {TextTemplateConfig, GenerateTextContentConfig, GenerateTextFileConfig};\n","/*\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\nexport * from './config';\n","/*\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\nimport {Component, EventEmitter, Input, OnDestroy, OnInit, Output} from '@angular/core';\nimport {PluginConfigurationComponent, PluginConfigurationData} from '@valtimo/plugin';\nimport {BehaviorSubject, combineLatest, map, Observable, Subscription, take} from 'rxjs';\nimport {TextTemplateConfig} from '../../models';\n\n@Component({\n standalone: false,\n selector: 'valtimo-text-template-configuration',\n templateUrl: './text-template-configuration.component.html',\n})\nexport class TextTemplateConfigurationComponent\n implements PluginConfigurationComponent, OnInit, OnDestroy\n{\n @Input() save$!: Observable<void>;\n @Input() disabled$!: Observable<boolean>;\n @Input() pluginId!: string;\n @Input() prefillConfiguration$!: Observable<TextTemplateConfig>;\n @Output() valid: EventEmitter<boolean> = new EventEmitter<boolean>();\n @Output() configuration: EventEmitter<PluginConfigurationData> = new EventEmitter<PluginConfigurationData>();\n\n constructor(\n ) {}\n\n private saveSubscription!: Subscription;\n private readonly formValue$ = new BehaviorSubject<TextTemplateConfig | null>(null);\n private readonly valid$ = new BehaviorSubject<boolean>(false);\n\n ngOnInit(): void {\n this.openSaveSubscription();\n }\n\n ngOnDestroy() {\n this.saveSubscription?.unsubscribe();\n }\n\n formValueChange(formValue: TextTemplateConfig): void {\n this.formValue$.next(formValue);\n this.handleValid(formValue);\n }\n\n private handleValid(formValue: TextTemplateConfig): void {\n const valid = !!(formValue.configurationTitle);\n\n this.valid$.next(valid);\n this.valid.emit(valid);\n }\n\n private openSaveSubscription(): void {\n this.saveSubscription = this.save$?.subscribe(_ => {\n combineLatest([this.formValue$, this.valid$])\n .pipe(take(1))\n .subscribe(([formValue, valid]) => {\n if (valid) {\n this.configuration.emit(formValue!);\n this.injectCaseTab();\n }\n });\n });\n }\n\n private injectCaseTab() {\n }\n}\n","<!--\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","/*\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\nimport {ChangeDetectionStrategy, Component, EventEmitter, Input, Output} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {ConfirmationModalModule} from '@valtimo/components';\n\n@Component({\n standalone: true,\n selector: 'valtimo-text-template-delete-modal',\n templateUrl: './text-template-delete-modal.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ConfirmationModalModule\n ]\n})\nexport class TextTemplateDeleteModalComponent {\n @Input() deleteRowKeys: Array<string>;\n @Input() showDeleteModal$: Observable<boolean>;\n @Output() deleteEvent = new EventEmitter<Array<string>>();\n\n public onDelete(templates: Array<any>): void {\n this.deleteEvent.emit(templates);\n }\n}\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\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","/*\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\nimport {ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output,} from '@angular/core';\nimport {FormBuilder, ReactiveFormsModule, Validators} from '@angular/forms';\nimport {TemplateMetadataModal} from '../../../../models';\nimport {CARBON_CONSTANTS, KeyGeneratorService} from '@valtimo/components';\nimport {CommonModule} from '@angular/common';\nimport {ButtonModule, InputModule, ModalModule} from 'carbon-components-angular';\nimport {TranslateModule} from '@ngx-translate/core';\n\n@Component({\n standalone: true,\n selector: 'valtimo-text-template-add-edit-modal',\n templateUrl: './text-template-add-edit-modal.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n ButtonModule,\n TranslateModule,\n ModalModule,\n ReactiveFormsModule,\n InputModule\n ]\n})\nexport class TextTemplateAddEditModalComponent implements OnInit {\n @Input() open = false;\n @Input() type: TemplateMetadataModal = 'add';\n\n @Input() set defaultKeyValue(value: string) {\n this._defaultKeyValue = value;\n this.setDefaultKeyValue(value);\n }\n\n @Output() closeEvent = new EventEmitter<{ key: string; metadata?: any } | null>();\n\n public form = this.fb.group({\n key: this.fb.control('', Validators.required),\n });\n\n private _defaultKeyValue!: string;\n\n public get key() {\n const key = this.form?.get('key');\n if (!key?.value) {\n return key;\n }\n key.setValue(this.keyGeneratorService.getUniqueKey(key.value, []));\n return key;\n }\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly keyGeneratorService: KeyGeneratorService,\n ) {\n }\n\n public ngOnInit(): void {\n }\n\n public onCancel(): void {\n this.closeEvent.emit(null);\n this.resetForm();\n }\n\n public onConfirm(): void {\n if (!this.key) {\n return;\n }\n\n this.closeEvent.emit({key: this.key.value});\n this.resetForm();\n }\n\n private setDefaultKeyValue(value: string) {\n this.key.setValue(value);\n }\n\n private resetForm(): void {\n setTimeout(() => {\n this.form.reset();\n if (this.type === 'edit') {\n this.setDefaultKeyValue(this._defaultKeyValue);\n }\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n}\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\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","/*\n * Copyright 2015-2024 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\nimport {ChangeDetectionStrategy, Component, OnInit, ViewChild,} from '@angular/core';\nimport {BehaviorSubject, combineLatest, filter, map, merge, Observable, startWith, switchMap, take} from 'rxjs';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {CarbonListComponent, CarbonListModule, ColumnConfig, ViewType} from '@valtimo/components';\nimport {FreemarkerTemplateManagementService} from '../../../../services';\nimport {TemplateListItem} from '../../../../models';\nimport {\n BuildingBlockManagementParams,\n CaseManagementParams,\n EnvironmentService,\n getBuildingBlockManagementRouteParams,\n getCaseManagementRouteParams\n} from '@valtimo/shared';\nimport {CommonModule} from '@angular/common';\nimport {ButtonModule} from 'carbon-components-angular';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {TextTemplateDeleteModalComponent} from '../text-template-delete-modal/text-template-delete-modal.component';\nimport {TextTemplateAddEditModalComponent} from '../text-template-add-edit-modal/text-template-add-edit-modal.component';\n\n@Component({\n standalone: true,\n templateUrl: './text-template-list.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n CarbonListModule,\n ButtonModule,\n TranslateModule,\n TextTemplateDeleteModalComponent,\n TextTemplateAddEditModalComponent\n ]\n})\nexport class TextTemplateListComponent implements OnInit {\n @ViewChild(CarbonListComponent) carbonList: CarbonListComponent;\n\n public fields: ColumnConfig[] = [\n {\n viewType: ViewType.TEXT,\n key: 'key',\n label: 'Key',\n },\n {\n viewType: ViewType.BOOLEAN,\n key: 'readOnly',\n label: 'Read only',\n },\n ];\n\n private readonly _caseDefinitionId$: Observable<CaseManagementParams> = getCaseManagementRouteParams(this.route).pipe(\n filter((params: CaseManagementParams | undefined) => !!params?.caseDefinitionKey),\n );\n\n private readonly _buildingBlockDefinitionId$: Observable<BuildingBlockManagementParams> = getBuildingBlockManagementRouteParams(this.route).pipe(\n filter((params: BuildingBlockManagementParams | undefined) => !!params?.buildingBlockDefinitionKey),\n );\n\n private readonly _params$: Observable<{case?: CaseManagementParams, buildingBlock?: BuildingBlockManagementParams}> = merge(\n this._caseDefinitionId$.pipe(map(params => ({case: params}))),\n this._buildingBlockDefinitionId$.pipe(map(params => ({buildingBlock: params})))\n );\n\n public readonly readOnly$: Observable<boolean> = this._params$.pipe(\n switchMap(({case: caseDefinitionId, buildingBlock: buildingBlockDefinitionId}) => combineLatest([\n this.environmentService.canUpdateGlobalConfiguration(),\n this.templateService.isFinal(caseDefinitionId, buildingBlockDefinitionId)\n ]).pipe(\n map(([canUpdateGlobal, isFinalCase]) => !canUpdateGlobal || isFinalCase),\n startWith(true)\n )\n )\n );\n\n public readonly templates$ = new BehaviorSubject<TemplateListItem[] | null>(null);\n public readonly showAddModal$ = new BehaviorSubject<boolean>(false);\n public readonly showDeleteModal$ = new BehaviorSubject<boolean>(false);\n public readonly selectedRowKeys$ = new BehaviorSubject<Array<any>>([]);\n public readonly loading$ = new BehaviorSubject<boolean>(true);\n\n constructor(\n private readonly templateService: FreemarkerTemplateManagementService,\n private readonly router: Router,\n private readonly route: ActivatedRoute,\n private readonly environmentService: EnvironmentService,\n ) {\n }\n\n public ngOnInit(): void {\n this.reloadTemplateList();\n }\n\n public openAddModal(): void {\n this.showAddModal$.next(true);\n }\n\n public onAdd(data?: any): void {\n if (!data) {\n this.showAddModal$.next(false);\n return;\n }\n\n this._params$.pipe(\n take(1),\n switchMap(({case: caseDefinitionId, buildingBlock: buildingBlockDefinitionId}) => this.templateService.addTemplate({\n caseDefinitionKey: caseDefinitionId?.caseDefinitionKey,\n caseDefinitionVersionTag: caseDefinitionId?.caseDefinitionVersionTag,\n buildingBlockDefinitionKey: buildingBlockDefinitionId?.buildingBlockDefinitionKey,\n buildingBlockDefinitionVersionTag: buildingBlockDefinitionId?.buildingBlockDefinitionVersionTag,\n type: 'text', ...data\n }))\n ).subscribe(template => {\n this.showAddModal$.next(false);\n this.gotoTextTemplateEditor(\n template.caseDefinitionKey,\n template.caseDefinitionVersionTag,\n template.buildingBlockDefinitionKey,\n template.buildingBlockDefinitionVersionTag,\n template.key\n );\n });\n }\n\n public showDeleteModal(): void {\n this.setSelectedTemplateKeys();\n this.showDeleteModal$.next(true);\n }\n\n public onDelete(templates: Array<any>): void {\n this.loading$.next(true);\n this._params$.pipe(\n take(1),\n switchMap(({case: caseDefinitionId, buildingBlock: buildingBlockDefinitionId}) => this.templateService.deleteTemplates({\n caseDefinitionKey: caseDefinitionId?.caseDefinitionKey,\n caseDefinitionVersionTag: caseDefinitionId?.caseDefinitionVersionTag,\n buildingBlockDefinitionKey: buildingBlockDefinitionId?.buildingBlockDefinitionKey,\n buildingBlockDefinitionVersionTag: buildingBlockDefinitionId?.buildingBlockDefinitionVersionTag,\n templates\n })),\n ).subscribe(_ => {\n this.reloadTemplateList();\n });\n }\n\n public onRowClick(template: TemplateListItem): void {\n this._params$.pipe(take(1)).subscribe(({case: caseDefinitionId, buildingBlock: buildingBlockDefinitionId}) =>\n this.gotoTextTemplateEditor(\n caseDefinitionId?.caseDefinitionKey,\n caseDefinitionId?.caseDefinitionVersionTag,\n buildingBlockDefinitionId?.buildingBlockDefinitionKey,\n buildingBlockDefinitionId?.buildingBlockDefinitionVersionTag,\n template.key\n )\n );\n }\n\n private gotoTextTemplateEditor(\n caseDefinitionKey: string,\n caseDefinitionVersionTag: string,\n buildingBlockDefinitionKey: string,\n buildingBlockDefinitionVersionTag: string,\n key: string\n ): void {\n if (caseDefinitionKey) {\n this.router.navigate([`/case-management/case/${caseDefinitionKey}/version/${caseDefinitionVersionTag}/text-template/${key}`]);\n } else {\n this.router.navigate([`/building-block-management/building-block/${buildingBlockDefinitionKey}/version/${buildingBlockDefinitionVersionTag}/text-template/${key}`]);\n }\n }\n\n private reloadTemplateList(): void {\n this.loading$.next(true);\n this._params$.pipe(\n switchMap(({case: caseDefinitionId, buildingBlock: buildingBlockDefinitionId}) => this.templateService.getAllTextTemplates(caseDefinitionId, buildingBlockDefinitionId)),\n map(templatePage => templatePage.content),\n take(1)\n ).subscribe(templateListItems => {\n this.templates$.next(templateListItems);\n this.loading$.next(false);\n });\n }\n\n private setSelectedTemplateKeys(): void {\n this.selectedRowKeys$.next(this.carbonList.selectedItems.map((template: TemplateListItem) => ({key: template.key, type: template.type})));\n }\n}\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\n<valtimo-carbon-list\n [header]=\"false\"\n [items]=\"templates$ | async\"\n [fields]=\"fields\"\n [loading]=\"loading$ | async\"\n [showSelectionColumn]=\"!(readOnly$ | async)\"\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-text-template-add-edit-modal\n [open]=\"showAddModal$ | async\"\n (closeEvent)=\"onAdd($event)\"\n></valtimo-text-template-add-edit-modal>\n\n<ng-container *ngIf=\"{selectedRowKeys: selectedRowKeys$ | async} as obs\">\n <valtimo-text-template-delete-modal\n [deleteRowKeys]=\"obs.selectedRowKeys\"\n [showDeleteModal$]=\"showDeleteModal$\"\n (deleteEvent)=\"onDelete($event)\"\n >\n </valtimo-text-template-delete-modal>\n</ng-container>\n\n<ng-template #addTemplateButton>\n <button cdsButton=\"primary\"\n [disabled]=\"readOnly$ | async\"\n (click)=\"openAddModal()\">\n {{ 'Add' }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\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\nimport {AfterViewInit, ChangeDetectionStrategy, Component, OnDestroy, OnInit} from '@angular/core';\nimport {BehaviorSubject, combineLatest, combineLatestWith, filter, map, merge, Observable, startWith, Subject, switchMap, take, takeUntil, tap} from 'rxjs';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {\n BreadcrumbService,\n CarbonListModule,\n EditorModel, EditorModule,\n PageTitleService,\n RenderInPageHeaderDirective\n} from '@valtimo/components';\nimport {ButtonModule, DialogModule, IconModule, NotificationService, TabsModule} from 'carbon-components-angular';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {FreemarkerTemplateManagementService} from '../../../../services';\nimport {TemplateResponse} from '../../../../models';\nimport {\n BuildingBlockManagementParams,\n CaseManagementParams,\n EnvironmentService,\n getBuildingBlockManagementRouteParams,\n getCaseManagementRouteParams\n} from '@valtimo/shared';\nimport {CommonModule} from '@angular/common';\nimport {TextTemplateDeleteModalComponent} from '../text-template-delete-modal/text-template-delete-modal.component';\n\n@Component({\n standalone: true,\n templateUrl: './text-template-editor.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['./text-template-editor.component.scss'],\n providers: [NotificationService],\n imports: [\n CommonModule,\n TranslateModule,\n TabsModule,\n DialogModule,\n TextTemplateDeleteModalComponent,\n CarbonListModule,\n ButtonModule,\n EditorModule,\n RenderInPageHeaderDirective,\n IconModule,\n ]\n})\nexport class TextTemplateEditorComponent implements OnInit, AfterViewInit, OnDestroy {\n public readonly model$ = new BehaviorSubject<EditorModel | null>(null);\n public readonly template$ = new BehaviorSubject<TemplateResponse | null>(null);\n public readonly saveDisabled$ = new BehaviorSubject<boolean>(true);\n public readonly editorDisabled$ = new BehaviorSubject<boolean>(false);\n public readonly moreDisabled$ = new BehaviorSubject<boolean>(true);\n public readonly showDeleteModal$ = new BehaviorSubject<boolean>(false);\n public readonly updatedModelValue$ = new BehaviorSubject<string>('');\n private readonly _destroy$ = new Subject<void>();\n\n private readonly _caseDefinitionId$: Observable<CaseManagementParams> = getCaseManagementRouteParams(this.route).pipe(\n filter((params: CaseManagementParams | undefined) => !!params?.caseDefinitionKey),\n );\n\n private readonly _buildingBlockDefinitionId$: Observable<BuildingBlockManagementParams> = getBuildingBlockManagementRouteParams(this.route).pipe(\n filter((params: BuildingBlockManagementParams | undefined) => !!params?.buildingBlockDefinitionKey),\n );\n\n private readonly _params$: Observable<{case?: CaseManagementParams, buildingBlock?: BuildingBlockManagementParams}> = merge(\n this._caseDefinitionId$.pipe(map(params => ({case: params}))),\n this._buildingBlockDefinitionId$.pipe(map(params => ({buildingBlock: params})))\n );\n\n public readonly templateKey$: Observable<string> = combineLatest([this.route.params, this.route.parent.params]).pipe(\n map(([params, parentParams]) => params?.templateKey || parentParams?.templateKey),\n filter(templateKey => !!templateKey)\n );\n\n public readonly readOnly$: Observable<boolean> = this._params$.pipe(\n switchMap(({case: caseDefinitionId, buildingBlock: buildingBlockDefinitionId}) => combineLatest([\n this.environmentService.canUpdateGlobalConfiguration(),\n this.isFinal(caseDefinitionId, buildingBlockDefinitionId)\n ]).pipe(\n map(([canUpdateGlobal, isFinalCase]) => !canUpdateGlobal || isFinalCase),\n startWith(true)\n )\n )\n );\n\n constructor(\n private readonly templateService: FreemarkerTemplateManagementService,\n private readonly route: ActivatedRoute,\n private readonly pageTitleService: PageTitleService,\n private readonly router: Router,\n private readonly notificationService: NotificationService,\n private readonly translateService: TranslateService,\n private readonly breadcrumbService: BreadcrumbService,\n private readonly environmentService: EnvironmentService,\n ) {\n }\n\n public ngOnInit(): void {\n this.loadTemplate();\n }\n\n public ngAfterViewInit(): void {\n this.initBreadcrumb();\n }\n\n public ngOnDestroy(): void {\n this.pageTitleService.enableReset();\n this.breadcrumbService.clearThirdBreadcrumb();\n this.breadcrumbService.clearFourthBreadcrumb();\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public onValid(valid: boolean): void {\n this.saveDisabled$.next(valid === false);\n }\n\n public onValueChange(value: string): void {\n this.updatedModelValue$.next(value);\n }\n\n public updateTemplate(): void {\n this.disableEditor();\n this.disableSave();\n this.disableMore();\n\n combineLatest([this.updatedModelValue$, this._params$, this.templateKey$]).pipe(\n take(1),\n switchMap(([updatedModelValue, {case: caseDefinitionId, buildingBlock: buildingBlockDefinitionId}, templateKey]) =>\n this.templateService.updateTemplate(\n {\n key: templateKey,\n caseDefinitionKey: caseDefinitionId?.caseDefinitionKey,\n caseDefinitionVersionTag: caseDefinitionId?.caseDefinitionVersionTag,\n buildingBlockDefinitionKey: buildingBlockDefinitionId?.buildingBlockDefinitionKey,\n buildingBlockDefinitionVersionTag: buildingBlockDefinitionId?.buildingBlockDefinitionVersionTag,\n type: 'text',\n content: updatedModelValue,\n }\n )\n ),\n takeUntil(this._destroy$)\n ).subscribe({\n next: result => {\n this.enableMore();\n this.enableSave();\n this.enableEditor();\n this.showSuccessMessage(result.key);\n this.setModel(result.content);\n this.template$.next(result);\n },\n error: () => {\n this.enableMore();\n this.enableSave();\n this.enableEditor();\n },\n });\n }\n\n public onDelete(templates: Array<any>): void {\n this.disableEditor();\n this.disableSave();\n this.disableMore();\n\n this._params$.pipe(\n take(1),\n switchMap(({case: caseDefinitionId, buildingBlock: buildingBlockDefinitionId}) => {\n if (caseDefinitionId?.caseDefinitionKey) {\n return this.templateService.deleteTemplates({\n caseDefinitionKey: caseDefinitionId.caseDefinitionKey,\n caseDefinitionVersionTag: caseDefinitionId.caseDefinitionVersionTag,\n templates\n }).pipe(map(() => `/case-management/case/${caseDefinitionId.caseDefinitionKey}/version/${caseDefinitionId.caseDefinitionVersionTag}/text-template`));\n } else {\n return this.templateService.deleteTemplates({\n buildingBlockDefinitionKey: buildingBlockDefinitionId.buildingBlockDefinitionKey,\n buildingBlockDefinitionVersionTag: buildingBlockDefinitionId.buildingBlockDefinitionVersionTag,\n templates\n }).pipe(map(() => `/building-block-management/building-block/${buildingBlockDefinitionId.buildingBlockDefinitionKey}/version/${buildingBlockDefinitionId.buildingBlockDefinitionVersionTag}/text-template`));\n }\n }),\n takeUntil(this._destroy$)\n ).subscribe(targetUrl => {\n this.router.navigate([targetUrl]);\n });\n }\n\n public showDeleteModal(): void {\n this.showDeleteModal$.next(true);\n }\n\n private loadTemplate(): void {\n this._params$.pipe(\n combineLatestWith(this.templateKey$),\n switchMap(([{case: caseDefinitionId, buildingBlock: buildingBlockDefinitionId}, key]) => {\n return this.templateService.getTextTemplate(\n caseDefinitionId,\n buildingBlockDefinitionId,\n key\n ).pipe(map(result => ({result, key})));\n }),\n take(1),\n takeUntil(this._destroy$)\n ).subscribe(({result, key}) => {\n this.pageTitleService.setCustomPageTitle(`Text template: ${key}`, true);\n this.enableMore();\n this.enableSave();\n this.enableEditor();\n this.setModel(result.content);\n this.template$.next(result);\n });\n }\n\n private setModel(content: string): void {\n this.model$.next({\n value: content,\n language: 'freemarker2',\n });\n this.updatedModelValue$.next(content);\n }\n\n private disableMore(): void {\n this.moreDisabled$.next(true);\n }\n\n private enableMore(): void {\n this.moreDisabled$.next(false);\n }\n\n private disableSave(): void {\n this.saveDisabled$.next(true);\n }\n\n private enableSave(): void {\n this.saveDisabled$.next(false);\n }\n\n private disableEditor(): void {\n this.editorDisabled$.next(true);\n }\n\n private enableEditor(): void {\n this.editorDisabled$.next(false);\n }\n\n private isFinal(caseDefinitionId: CaseManagementParams | undefined, buildingBlockDefinitionId: BuildingBlockManagementParams | undefined): Observable<boolean> {\n return this.templateService.isFinal(caseDefinitionId, buildingBlockDefinitionId);\n }\n\n private initBreadcrumb(): void {\n this._params$.pipe(takeUntil(this._destroy$)).subscribe(({case: caseDefinitionId, buildingBlock: buildingBlockDefinitionId}) => {\n if (caseDefinitionId) {\n this.breadcrumbService.setThirdBreadcrumb({\n route: [`/case-management/case/${caseDefinitionId.caseDefinitionKey}/version/${caseDefinitionId.caseDefinitionVersionTag}`],\n content: `${caseDefinitionId.caseDefinitionKey}:${caseDefinitionId.caseDefinitionVersionTag}`,\n href: `/case-management/case/${caseDefinitionId.caseDefinitionKey}/version/${caseDefinitionId.caseDefinitionVersionTag}`,\n });\n this.breadcrumbService.setFourthBreadcrumb({\n route: [`/case-management/case/${caseDefinitionId.caseDefinitionKey}/version/${caseDefinitionId.caseDefinitionVersionTag}/text-template`],\n content: 'Text template',\n href: `/case-management/case/${caseDefinitionId.caseDefinitionKey}/version/${caseDefinitionId.caseDefinitionVersionTag}/text-template`,\n });\n } else if (buildingBlockDefinitionId) {\n this.breadcrumbService.setThirdBreadcrumb({\n route: [`/building-block-management/building-block/${buildingBlockDefinitionId.buildingBlockDefinitionKey}/version/${buildingBlockDefinitionId.buildingBlockDefinitionVersionTag}`],\n content: `${buildingBlockDefinitionId.buildingBlockDefinitionKey}:${buildingBlockDefinitionId.buildingBlockDefinitionVersionTag}`,\n href: `/building-block-management/building-block/${buildingBlockDefinitionId.buildingBlockDefinitionKey}/version/${buildingBlockDefinitionId.buildingBlockDefinitionVersionTag}`,\n });\n this.breadcrumbService.setFourthBreadcrumb({\n route: [`/building-block-management/building-block/${buildingBlockDefinitionId.buildingBlockDefinitionKey}/version/${buildingBlockDefinitionId.buildingBlockDefinitionVersionTag}/text-template`],\n content: 'Text template',\n href: `/building-block-management/building-block/${buildingBlockDefinitionId.buildingBlockDefinitionKey}/version/${buildingBlockDefinitionId.buildingBlockDefinitionVersionTag}/text-template`,\n });\n }\n });\n }\n\n private showSuccessMessage(key: string): void {\n this.notificationService.showToast({\n caption: this.translateService.instant(`${key} was saved successfully`, {\n key,\n }),\n type: 'success',\n duration: 4000,\n showClose: true,\n title: this.translateService.instant('Saved successfully'),\n });\n }\n}\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\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) || (readOnly$ | async)\"\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 || (readOnly$ | async)\"\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) || (readOnly$ | async)\"\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","/*\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 */\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {ROLE_ADMIN} from '@valtimo/shared';\nimport {AuthGuardService} from '@valtimo/security';\nimport {TextTemplateEditorComponent} from './components/text-template-editor/text-template-editor.component';\n\nconst routes: Routes = [\n {\n path: 'case-management/case/:caseDefinitionKey/version/:caseDefinitionVersionTag/text-template/:templateKey',\n component: TextTemplateEditorComponent,\n canActivate: [AuthGuardService],\n data: {\n title: 'Text Template Editor',\n templates: [ROLE_ADMIN],\n customPageTitle: true,\n },\n },\n {\n path: 'building-block-management/building-block/:buildingBlockDefinitionKey/version/:buildingBlockDefinitionVersionTag/text-template/:templateKey',\n component: TextTemplateEditorComponent,\n canActivate: [AuthGuardService],\n data: {\n title: 'Text Template Editor',\n templates: [ROLE_ADMIN],\n customPageTitle: true,\n },\n },\n];\n\n@NgModule({\n imports: [CommonModule, RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class TemplateManagementRoutingModule {}\n","/*\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\nimport {Component, EventEmitter, Input, OnDestroy, OnInit, Output} from '@angular/core';\nimport {FunctionConfigurationComponent, FunctionConfigurationData} from '@valtimo/plugin';\nimport {BehaviorSubject, combineLatest, filter, map, merge, Observable, of, Subject, Subscription, switchMap, take, takeUntil, tap} from 'rxjs';\nimport {GenerateTextFileConfig} from '../../models';\nimport {SelectItem} from '@valtimo/components';\nimport {FreemarkerTemplateManagementService} from '../../../../services';\nimport {CaseManagementParams, getBuildingBlockManagementRouteParams, ManagementContext} from '@valtimo/shared';\nimport {ActivatedRoute} from '@angular/router';\n\n@Component({\n standalone: false,\n selector: 'valtimo-generate-text-file-configuration',\n templateUrl: './generate-text-file.component.html',\n})\nexport class GenerateTextFileComponent\n implements FunctionConfigurationComponent, OnInit, OnDestroy {\n @Input() save$!: Observable<void>;\n @Input() disabled$!: Observable<boolean>;\n @Input() pluginId!: string;\n @Input() context$: Observable<[ManagementContext, CaseManagementParams]>;\n @Input() prefillConfiguration$!: Observable<GenerateTextFileConfig>;\n @Output() valid: EventEmitter<boolean> = new EventEmitter<boolean>();\n @Output() configuration: EventEmitter<FunctionConfigurationData> = new EventEmitter<FunctionConfigurationData>();\n\n private readonly buildingBlockParams$ = getBuildingBlockManagementRouteParams(this.route);\n private readonly formValue$ = new BehaviorSubject<GenerateTextFileConfig | null>(null);\n private readonly valid$ = new BehaviorSubject<boolean>(false);\n private _subscriptions = new Subscription();\n\n readonly loading$ = new BehaviorSubject<boolean>(true);\n\n readonly textTemplateItems$ = new BehaviorSubject<Array<SelectItem>>([]);\n\n private readonly _destroy$ = new Subject<void>();\n\n constructor(\n private readonly templateService: FreemarkerTemplateManagementService,\n private readonly route: ActivatedRoute\n ) {\n }\n\n ngOnInit(): void {\n this.openSaveSubscription();\n this.initContextHandling();\n }\n\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n formValueChange(formValue: GenerateTextFileConfig): void {\n this.formValue$.next(formValue);\n this.handleValid(formValue);\n }\n\n private handleValid(formValue: GenerateTextFileConfig): void {\n const valid = !!(formValue.textTemplateKey && formValue.processVariableName);\n\n this.valid$.next(valid);\n this.valid.emit(valid);\n }\n\n private openSaveSubscription(): void {\n const saveSubscription = this.save$?.subscribe(save => {\n combineLatest([this.formValue$, this.valid$])\n .pipe(take(1))\n .subscribe(([formValue, valid]) => {\n if (valid) {\n this.configuration.emit(formValue!);\n }\n });\n });\n this._subscriptions.add(saveSubscription);\n }\n\n private initContextHandling(): void {\n const caseParams$ = this.context$ ? this.context$.pipe(\n filter(([managementContext, caseParams]) => managementContext === 'case' && !!caseParams?.caseDefinitionKey),\n map(([managementContext, caseParams]) => ({managementContext, caseParams}))\n ) : of(null);\n\n const buildingBlockParams$ = this.buildingBlockParams$.pipe(\n filter(buildingBlockParams => !!buildingBlockParams?.buildingBlockDefinitionKey),\n map(buildingBlockParams => ({managementContext: 'buildingBlock' as ManagementContext, buildingBlockParams}))\n );\n\n merge(caseParams$, buildingBlockParams$).pipe(\n filter(params => !!params),\n switchMap(params => {\n if (params!.managementContext === 'case') {\n return this.templateService.getAllTextTemplates((params as any).caseParams, null);\n } else if (params!.managementContext === 'buildingBlock') {\n return this.templateService.getAllTextTemplates(null, (params as any).buildingBlockParams);\n } else {\n console.error(`Freemarker plugin does not support '${params!.managementContext}' templates`);\n return of(null);\n }\n }),\n map(results =>\n results?.content.map(template => ({\n id: template.key,\n text: template.key,\n })) || []\n ),\n tap(() => this.loading$.next(false)),\n takeUntil(this._destroy$)\n ).subscribe(results => this.textTemplateItems$.next(results));\n }\n}\n","<!--\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<ng-container *ngIf=\"{\n disabled: disabled$ | async,\n prefill: prefillConfiguration$ ? (prefillConfiguration$ | async) : null,\n textTemplateItems: textTemplateItems$ | async,\n loading: loading$ | async,\n } as obs\"\n>\n <ng-container *ngIf=\"obs.loading === false; else loading\">\n <v-paragraph [margin]=\"true\" [italic]=\"true\">\n {{ 'generateTextFileDescription' | pluginTranslate: pluginId | async }}\n </v-paragraph>\n <v-form (valueChange)=\"formValueChange($event)\">\n <v-select\n [items]=\"obs.textTemplateItems\"\n [margin]=\"true\"\n [widthInPx]=\"350\"\n name=\"textTemplateKey\"\n [title]=\"'textTemplateKey' | pluginTranslate: pluginId | async\"\n [disabled]=\"obs.disabled\"\n [defaultSelectionId]=\"obs.prefill?.textTemplateKey\"\n [required]=\"true\"\n [loading]=\"!obs.textTemplateItems\"\n [tooltip]=\"'textTemplateKeyTooltip' | pluginTranslate: pluginId | async\"\n ></v-select>\n <v-input\n name=\"processVariableName\"\n [title]=\"'processVariableName' | pluginTranslate: pluginId | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.prefill?.processVariableName || 'contentId'\"\n [disabled]=\"obs.disabled\"\n [tooltip]=\"'processVariableNameTooltip' | pluginTranslate: pluginId | async\"\n ></v-input>\n </v-form>\n </ng-container>\n</ng-container>\n\n<ng-template #loading>\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n</ng-template>\n","/*\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\nimport { NgModule } from \"@angular/core\";\nimport { TextTemplateConfigurationComponent } from \"./components/text-template-configuration/text-template-configuration.component\";\nimport { CommonModule } from \"@angular/common\";\nimport { PluginManagementService, PluginTranslatePipeModule } from \"@valtimo/plugin\";\nimport {\n CarbonListModule,\n ConfirmationModalModule,\n EditorModule,\n FormModule,\n InputModule as ValtimoInputModule,\n ParagraphModule,\n RenderInPageHeaderDirective,\n SelectModule,\n} from \"@valtimo/components\";\nimport {\n ButtonModule,\n DialogModule,\n DropdownModule,\n IconModule,\n InputModule,\n LoadingModule,\n ModalModule,\n NotificationModule,\n TabsModule,\n} from \"carbon-components-angular\";\nimport { BUILDING_BLOCK_MANAGEMENT_TAB_TOKEN, CASE_MANAGEMENT_TAB_TOKEN } from \"@valtimo/shared\";\nimport { TextTemplateListComponent } from \"../text-template/components/text-template-list/text-template-list.component\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { ReactiveFormsModule } from \"@angular/forms\";\nimport { TemplateManagementRoutingModule } from \"./text-template-management-routing.module\";\nimport { GenerateTextFileComponent } from \"./components/generate-text-file/generate-text-file.component\";\nimport { catchError, map, of } from \"rxjs\";\n\n@NgModule({\n declarations: [GenerateTextFileComponent, TextTemplateConfigurationComponent],\n imports: [\n CommonModule,\n PluginTranslatePipeModule,\n TemplateManagementRoutingModule,\n FormModule,\n ParagraphModule,\n SelectModule,\n ConfirmationModalModule,\n TranslateModule,\n ReactiveFormsModule,\n CarbonListModule,\n EditorModule,\n ValtimoInputModule,\n ButtonModule,\n DialogModule,\n DropdownModule,\n IconModule,\n InputModule,\n LoadingModule,\n ModalModule,\n NotificationModule,\n RenderInPageHeaderDirective,\n TabsModule,\n ],\n exports: [GenerateTextFileComponent],\n providers: [\n {\n provide: CASE_MANAGEMENT_TAB_TOKEN,\n useFactory: (pluginManagementService: PluginManagementService) => ({\n translationKey: \"Text template\",\n component: TextTemplateListComponent,\n tabRoute: \"text-template\",\n enabled$: pluginManagementService.getAllPluginConfigurations().pipe(\n map((pluginConfigs) => pluginConfigs.find((pluginConfig) => pluginConfig.pluginDefinition?.key === \"text-template\")),\n catchError(() => of(false)),\n ),\n }),\n deps: [PluginManagementService],\n multi: true,\n },\n {\n provide: BUILDING_BLOCK_MANAGEMENT_TAB_TOKEN,\n useFactory: (pluginManagementService: PluginManagementService) => {\n return {\n translationKey: \"Text template\",\n component: TextTemplateListComponent,\n tabRoute: \"text-template\",\n enabled$: pluginManagementService.getAllPluginConfigurations().pipe(\n map((pluginConfigs) => pluginConfigs.find((pluginConfig) => pluginConfig.pluginDefinition?.key === \"text-template\")),\n catchError(() => of(false)),\n ),\n };\n },\n deps: [PluginManagementService],\n multi: true,\n },\n ],\n})\nexport class TextTemplatePluginModule {}\n","/*\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\nconst TEXT_TEMPLATE_PLUGIN_LOGO_BASE64 =\n 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyBpZD0ic3ZnMiIgdmlld0JveD0iMCAwIDQwMCAyMDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgPHBhdGggZD0iTSAzMjcuMTE2IDE0NS44OTggTCAzNDAuMzA0IDE2NS44OTIgTCAzODQuMjQxIDk5LjI0NiBMIDM0MC4zMDQgMzIuNjAxIEwgMzI3LjExNiA1Mi41OTUgTCAzNTcuODg4IDk5LjI0NiBMIDMyNy4xMTYgMTQ1Ljg5OCBaIiBzdHlsZT0iZmlsbDogcmdiKDAsIDgwLCAxNzgpOyIgdHJhbnNmb3JtPSJtYXRyaXgoMSwgMCwgMCwgMSwgLTUuNjg0MzQxODg2MDgwODAyZS0xNCwgMCkiLz4KICA8cGF0aCBkPSJNIDY0LjcwMyA1Mi41OTUgTCA1MS41MTggMzIuNjAxIEwgNy41OCA5OS4yNDYgTCA1MS41MTggMTY1Ljg5MiBMIDY0LjcwMyAxNDUuODk4IEwgMzMuOTMzIDk5LjI0NiBMIDY0LjcwMyA1Mi41OTUgWiIgc3R5bGU9ImZpbGw6IHJnYigwLCA4MCwgMTc4KTsiIHRyYW5zZm9ybT0ibWF0cml4KDEsIDAsIDAsIDEsIC01LjY4NDM0MTg4NjA4MDgwMmUtMTQsIDApIi8+CiAgPHBhdGggZD0iTSAxMTIuODYgMzIuNjAxIEwgMTM5LjUxOCAzMi42MDEgTCAxMzQuODE1IDU5LjI2IEwgMTYxLjQ3NCA1OS4yNiBMIDE2Ni4xNzYgMzIuNjAxIEwgMTkyLjgzNCAzMi42MDEgTCAxODguMTMgNTkuMjYgTCAyMTQuNzg4IDU5LjI2IEwgMjEwLjA3NyA4NS45MTcgTCAxODMuNDE4IDg1LjkxNyBMIDE3OC43MjMgMTEyLjU3NSBMIDIwNS4zODIgMTEyLjU3NSBMIDIwMC42NzggMTM5LjIzMyBMIDE3NC4wMjEgMTM5LjIzMyBMIDE2OS4zMzYgMTY1Ljg5MiBMIDE0Mi42NzkgMTY1Ljg5MiBMIDE0Ny4zNzMgMTM5LjIzMyBMIDEyMC43MTUgMTM5LjIzMyBMIDExNi4wOTcgMTY1Ljg5MiBMIDg5LjM2MiAxNjUuODkyIEwgOTQuMDU2IDEzOS4yMzMgTCA2Ny4zOTggMTM5LjIzMyBMIDcyLjEwMiAxMTIuNTc1IEwgOTguNzYgMTEyLjU3NSBMIDEwMy40NTQgODUuOTg1IEwgNzYuNzk2IDg1Ljk4NSBMIDgxLjQ5OCA1OS4yNiBMIDEwOC4xNTcgNTkuMjYgTCAxMTIuODYgMzIuNjAxIFogTSAxMjUuNDE3IDExMi41NzUgTCAxNTIuMDc2IDExMi41NzUgTCAxNTYuNzc5IDg1LjkxNyBMIDEzMC4xMjEgODUuOTE3IEwgMTI1LjQxNyAxMTIuNTc1IFoiIHN0eWxlPSJmaWxsOiByZ2IoMCwgODAsIDE3OCk7IiB0cmFuc2Zvcm09Im1hdHJpeCgxLCAwLCAwLCAxLCAtNS42ODQzNDE4ODYwODA4MDJlLTE0LCAwKSIvPgogIDxnIHRyYW5zZm9ybT0ibWF0cml4KDAuMjQ2MjE5MDA5MTYwOTk1NDgsIDAsIDAsIDAuMjQ2MjE5MDA5MTYwOTk1NDgsIDIwNC4yOTI0MTk0MzM1OTM3LCAzMi4xNjgzNjkyOTMyMTI4OSkiIHN0eWxlPSIiPgogICAgPHBhdGggZD0iTTQ4Ni4yMDEsMTk2LjEyNGgtMTMuMTY2VjEzMi41OWMwLTAuMzk2LTAuMDYyLTAuNzk1LTAuMTE1LTEuMTk2Yy0wLjAyMS0yLjUyMy0wLjgyNS01LTIuNTUyLTYuOTYzTDM2NC42NTcsMy42NzcmIzEwOyYjOTsmIzk7Yy0wLjAzMy0wLjAzMS0wLjA2NC0wLjA0Mi0wLjA4NS0wLjA3NWMtMC42My0wLjcwNC0xLjM2NC0xLjI5LTIuMTQzLTEuNzk2Yy0wLjIyOS0wLjE1NC0wLjQ2MS0wLjI4My0wLjcwMi0wLjQxOCYjMTA7JiM5OyYjOTtjLTAuNjcyLTAuMzY2LTEuMzg3LTAuNjcxLTIuMTIxLTAuODkyYy0wLjItMC4wNTUtMC4zNzktMC4xMzQtMC41NzctMC4xODhDMzU4LjIzLDAuMTE4LDM1Ny40MDEsMCwzNTYuNTYyLDBIOTYuNzU3JiMxMDsmIzk7JiM5O0M4NC44OTQsMCw3NS4yNTYsOS42NDksNzUuMjU2LDIxLjUwMnYxNzQuNjE2SDYyLjA5Yy0xNi45NjgsMC0zMC43MjksMTMuNzUzLTMwLjcyOSwzMC43M3YxNTkuODEyJiMxMDsmIzk7JiM5O2MwLDE2Ljk2MSwxMy43NjEsMzAuNzMxLDMwLjcyOSwzMC43MzFoMTMuMTY2VjUyNi43OWMwLDExLjg1NCw5LjYzOCwyMS41MDEsMjEuNTAxLDIxLjUwMWgzNTQuNzc2JiMxMDsmIzk7JiM5O2MxMS44NTMsMCwyMS41MDEtOS42NDcsMjEuNTAxLTIxLjUwMVY0MTcuMzkyaDEzLjE2NmMxNi45NjYsMCwzMC43MjktMTMuNzY0LDMwLjcyOS0zMC43MzFWMjI2Ljg1NCYjMTA7JiM5OyYjOTtDNTE2LjkzLDIwOS44NzIsNTAzLjE2NywxOTYuMTI0LDQ4Ni4yMDEsMTk2LjEyNHogTTk2Ljc1NywyMS41MDJoMjQ5LjA1NHYxMTAuMDA2YzAsNS45NDMsNC44MTcsMTAuNzUxLDEwLjc1MSwxMC43NTFoOTQuOTcyJiMxMDsmIzk7JiM5O3Y1My44NjRIOTYuNzU3VjIxLjUwMnogTTIwMi44MTQsMjI1LjA0Mmg0MS42OGwxNC4wNjMsMjkuM2M0Ljc1Niw5Ljc1Niw4LjMzNiwxNy42MjIsMTIuMTQ3LDI2LjY3NmgwLjQ4JiMxMDsmIzk7JiM5O2MzLjc5OC0xMC4yNDIsNi45LTE3LjM5MiwxMC45NS0yNi42NzZsMTMuNTg3LTI5LjNoNDEuNDQ5bC00NS4yNjEsNzguMzYzbDQ3LjYzOCw4Mi4xODVoLTQxLjkyN2wtMTQuNTI1LTI5LjA2JiMxMDsmIzk7JiM5O2MtNS45NTYtMTEuMTk3LTkuNzcxLTE5LjUyOC0xNC4yOTktMjguODI1aC0wLjQ3OGMtMy4zMzQsOS4yOTctNy4zODEsMTcuNjI4LTEyLjM4MSwyOC44MjVsLTEzLjMzNiwyOS4wNmgtNDEuNDU1bDQ2LjQ1NS04MS4yMjQmIzEwOyYjOTsmIzk7TDIwMi44MTQsMjI1LjA0MnogTTY2LjA4LDI1NS41MzJ2LTMwLjQ4OWgxMjMuMzgydjMwLjQ4OWgtNDMuODI4djEzMC4wNDloLTM2LjQzNFYyNTUuNTMySDY2LjA4eiBNNDUxLjUzNCw1MjAuOTYySDk2Ljc1N3YtMTAzLjU3JiMxMDsmIzk7JiM5O2gzNTQuNzc2VjUyMC45NjJ6IE00NzEuNzY0LDI1NS41MzJoLTQzLjgzMXYxMzAuMDQ5aC0zNi40NDJWMjU1LjUzMmgtNDMuMTE5di0zMC40ODloMTIzLjM5M1YyNTUuNTMyeiIvPgogIDwvZz4KPC9zdmc+';\n\nexport {TEXT_TEMPLATE_PLUGIN_LOGO_BASE64};\n","/*\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\nexport * from './text-template-plugin-logo';\n","/*\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\nimport {PluginSpecification} from '@valtimo/plugin';\nimport {TextTemplateConfigurationComponent} from './components/text-template-configuration/text-template-configuration.component';\nimport {TEXT_TEMPLATE_PLUGIN_LOGO_BASE64} from './assets';\nimport {GenerateTextFileComponent} from './components/generate-text-file/generate-text-file.component';\n\nconst textTemplatePluginSpecification: PluginSpecification = {\n pluginId: 'text-template',\n pluginConfigurationComponent: TextTemplateConfigurationComponent,\n pluginLogoBase64: TEXT_TEMPLATE_PLUGIN_LOGO_BASE64,\n functionConfigurationComponents: {\n 'generate-text-file': GenerateTextFileComponent,\n },\n pluginTranslations: {\n nl: {\n title: 'Text sjablonen',\n 'generate-text-file': 'Genereer Textbestand',\n description: 'Maak Text sjablonen met Freemarker.',\n configurationTitle: 'Configuratienaam',\n configurationTitleTooltip:\n 'De naam van de huidige plug-in configuratie. Onder deze naam kan de configuratie worden gevonden in de rest van de applicatie.',\n generateTextFileDescription:\n 'Deze actie genereert de inhoud van een text-template en slaat het resultaat op in een tijdelijk bestand. Het ID van het bestand wordt opgeslagen in een Proces Variabele.',\n textTemplateKey: 'Text sjabloon',\n textTemplateKeyTooltip: 'Op bases van deze sjabloon wordt de text-template gegenereerd',\n processVariableName: 'Procesvariabelenaam',\n processVariableNameTooltip: 'Het resultaat wordt opgeslagen in een procesvariabele met deze naam',\n },\n en: {\n title: 'Text Templates',\n 'generate-text-file': 'Generate Text File',\n description: 'Create text-template templates with Freemarker.',\n configurationTitle: 'Configuration Name',\n configurationTitleTooltip:\n 'The name of the current plug-in configuration. The configuration can be found under this name in the rest of the application.',\n generateTextFileDescription:\n 'This action generates the content of an text-template and saves the result in a temporary file. The file ID is stored in a Process Variable.',\n textTemplateKey: 'Text Template',\n textTemplateKeyTooltip: 'The text-template will be generated based on this template.',\n processVariableName: 'Process Variable Name',\n processVariableNameTooltip: 'The result will be stored in a process variable with this name.',\n },\n de: {\n title: 'Text-Vorlagen',\n 'generate-text-file': 'Text-Datei generieren',\n description: 'Erstellen Sie Text-Vorlagen mit Freemarker.',\n configurationTitle: 'Konfigurationsname',\n configurationTitleTooltip:\n 'Der Name der aktuellen Plug-in-Konfiguration. Unter diesem Namen kann die Konfiguration im Rest der Anwendung gefunden werden.',\n generateTextFileDescription:\n 'Diese Aktion generiert den Inhalt einer Text und speichert das Ergebnis in einer temporären Datei. Die Datei-ID wird in einer Prozessvariablen gespeichert.',\n textTemplateKey: 'Text-Vorlage',\n textTemplateKeyTooltip: 'Die Text wird basierend auf dieser Vorlage generiert.',\n processVariableName: 'Prozessvariablenname',\n processVariableNameTooltip: 'Das Ergebnis wird in einer Prozessvariablen mit diesem Namen gespeichert.',\n },\n },\n};\n\nexport {textTemplatePluginSpecification};\n","/*\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/*\n * Public API Surface of document-generator\n */\n\nexport * from './lib/plugins/document-generator/models';\nexport * from './lib/plugins/document-generator/document-generator-plugin-module';\nexport * from './lib/plugins/document-generator/document-generator-plugin.specification';\nexport * from './lib/plugins/document-generator/components/generate-csv/generate-csv.component';\nexport * from './lib/plugins/document-generator/components/generate-pdf/generate-pdf.component';\nexport * from './lib/plugins/document-generator/components/document-template-add-edit-modal/document-template-add-edit-modal.component';\nexport * from './lib/plugins/document-generator/components/document-generator-configuration/document-generator-configuration.component';\nexport * from './lib/plugins/document-generator/components/document-template-delete-modal/document-template-delete-modal.component';\nexport * from './lib/plugins/document-generator/components/document-template-editor/document-template-editor.component';\nexport * from './lib/plugins/document-generator/components/document-template-list/document-template-list.component';\n\n/*\n * Public API Surface of mail-template\n */\n\nexport * from './lib/plugins/mail-template/models';\nexport * from './lib/plugins/mail-template/mail-template-plugin-module';\nexport * from './lib/plugins/mail-template/mail-template-plugin.specification';\nexport * from './lib/plugins/mail-template/components/generate-mail-content/generate-mail-content.component';\nexport * from './lib/plugins/mail-template/components/generate-mail-file/generate-mail-file.component';\nexport * from './lib/plugins/mail-template/components/mail-template-add-edit-modal/mail-template-add-edit-modal.component';\nexport * from './lib/plugins/mail-template/components/mail-template-configuration/mail-template-configuration.component';\nexport * from './lib/plugins/mail-template/components/mail-template-delete-modal/mail-template-delete-modal.component';\nexport * from './lib/plugins/mail-template/components/mail-template-editor/mail-template-editor.component';\nexport * from './lib/plugins/mail-template/components/mail-template-list/mail-template-list.component';\n\n/*\n * Public API Surface of text-template\n */\n\nexport * from './lib/plugins/text-template/models';\nexport * from './lib/plugins/text-template/text-template-plugin-module';\nexport * from './lib/plugins/text-template/text-template-plugin.specification';\nexport * from './lib/plugins/text-template/components/generate-text-file/generate-text-file.component';\nexport * from './lib/plugins/text-template/components/text-template-add-edit-modal/text-template-add-edit-modal.component';\nexport * from './lib/plugins/text-template/components/text-template-configuration/text-template-configuration.component';\nexport * from './lib/plugins/text-template/components/text-template-delete-modal/text-template-delete-modal.component';\nexport * from './lib/plugins/text-template/components/text-template-editor/text-template-editor.component';\nexport * from './lib/plugins/text-template/components/text-template-list/text-template-list.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i2","i3","i4","i1.FreemarkerTemplateManagementService","i5","i6","i7","routes","TemplateManagementRoutingModule","ValtimoInputModule"],"mappings":"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"}