@valtimo/process-management 13.44.0 → 13.45.1
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"valtimo-process-management.mjs","sources":["../../../../projects/valtimo/process-management/src/lib/constants/bpmn.constants.ts","../../../../projects/valtimo/process-management/src/lib/constants/process-management.test-ids.ts","../../../../projects/valtimo/process-management/src/lib/constants/index.ts","../../../../projects/valtimo/process-management/src/lib/services/process-bean.service.ts","../../../../projects/valtimo/process-management/src/lib/services/process-management-editor.service.ts","../../../../projects/valtimo/process-management/src/lib/services/process-management-state.service.ts","../../../../projects/valtimo/process-management/src/lib/models/window.model.ts","../../../../projects/valtimo/process-management/src/lib/models/bpmn.model.ts","../../../../projects/valtimo/process-management/src/lib/models/process-bean.model.ts","../../../../projects/valtimo/process-management/src/lib/models/process-definition-import.model.ts","../../../../projects/valtimo/process-management/src/lib/models/process-management.model.ts","../../../../projects/valtimo/process-management/src/lib/models/process.model.ts","../../../../projects/valtimo/process-management/src/lib/models/index.ts","../../../../projects/valtimo/process-management/src/lib/services/process-management.service.ts","../../../../projects/valtimo/process-management/src/lib/services/index.ts","../../../../projects/valtimo/process-management/src/lib/utils/bpmn.utils.ts","../../../../projects/valtimo/process-management/src/lib/utils/process-management.utils.ts","../../../../projects/valtimo/process-management/src/lib/utils/process-management-builder.utils.ts","../../../../projects/valtimo/process-management/src/lib/utils/index.ts","../../../../projects/valtimo/process-management/src/lib/components/process-management-builder/panel/valtimo-properties-provider.ts","../../../../projects/valtimo/process-management/src/lib/components/process-management-builder/panel/read-only-properties-panel.ts","../../../../projects/valtimo/process-management/src/lib/components/process-management-builder/panel/expression-autocomplete.ts","../../../../projects/valtimo/process-management/src/lib/components/process-management-builder/panel/index.ts","../../../../projects/valtimo/process-management/src/lib/components/process-management-builder/process-management-builder.component.ts","../../../../projects/valtimo/process-management/src/lib/components/process-management-builder/process-management-builder.component.html","../../../../projects/valtimo/process-management/src/lib/components/process-management-list/process-management-list.component.ts","../../../../projects/valtimo/process-management/src/lib/components/process-management-list/process-management-list.component.html","../../../../projects/valtimo/process-management/src/lib/components/process-management-upload/process-management-upload.component.ts","../../../../projects/valtimo/process-management/src/lib/components/process-management-upload/process-management-upload.component.html","../../../../projects/valtimo/process-management/src/lib/components/process-management/process-management.component.ts","../../../../projects/valtimo/process-management/src/lib/components/process-management/process-management.component.html","../../../../projects/valtimo/process-management/src/lib/components/index.ts","../../../../projects/valtimo/process-management/src/lib/process-management-routing.module.ts","../../../../projects/valtimo/process-management/src/lib/process-management.module.ts","../../../../projects/valtimo/process-management/src/public-api.ts","../../../../projects/valtimo/process-management/src/valtimo-process-management.ts"],"sourcesContent":["/*\n * Copyright 2015-2025 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 EMPTY_BPMN = `\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<bpmn:definitions xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:bpmn=\"http://www.omg.org/spec/BPMN/20100524/MODEL\" xmlns:bpmndi=\"http://www.omg.org/spec/BPMN/20100524/DI\" xmlns:dc=\"http://www.omg.org/spec/DD/20100524/DC\" targetNamespace=\"http://bpmn.io/schema/bpmn\" id=\"Definitions_1\">\n <bpmn:process id=\"Process_1\" isExecutable=\"false\">\n <bpmn:startEvent id=\"StartEvent_1\"/>\n </bpmn:process>\n <bpmndi:BPMNDiagram id=\"BPMNDiagram_1\">\n <bpmndi:BPMNPlane id=\"BPMNPlane_1\" bpmnElement=\"Process_1\">\n <bpmndi:BPMNShape id=\"_BPMNShape_StartEvent_2\" bpmnElement=\"StartEvent_1\">\n <dc:Bounds height=\"36.0\" width=\"36.0\" x=\"173.0\" y=\"102.0\"/>\n </bpmndi:BPMNShape>\n </bpmndi:BPMNPlane>\n </bpmndi:BPMNDiagram>\n</bpmn:definitions>\n`;\n\nexport {EMPTY_BPMN};\n","/*\n * Copyright 2015-2026 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 const PROCESS_MANAGEMENT_LIST_TEST_IDS = {\n uploadButton: 'processManagementUploadButton',\n createProcessButton: 'processManagementCreateProcessButton',\n} as const;\n\nexport const PROCESS_MANAGEMENT_UPLOAD_TEST_IDS = {\n fileUploader: 'processManagementUploadFileUploader',\n cancelButton: 'processManagementUploadCancelButton',\n submitButton: 'processManagementUploadSubmitButton',\n backButton: 'processManagementUploadBackButton',\n importButton: 'processManagementUploadImportButton',\n closeButton: 'processManagementUploadCloseButton',\n} as const;\n\n/**\n * The \"Process link\" group the Valtimo properties provider adds to the bpmn-js\n * properties panel. The surrounding panel is rendered by bpmn-js itself and\n * cannot carry test ids — only this group is ours.\n */\nexport const PROCESS_LINK_PANEL_TEST_IDS = {\n createButton: 'processLinkPanelCreateButton',\n editButton: 'processLinkPanelEditButton',\n unlinkButton: 'processLinkPanelUnlinkButton',\n} as const;\n\nexport const PROCESS_MANAGEMENT_BUILDER_TEST_IDS = {\n draftToggle: 'processManagementBuilderDraftToggle',\n startsCaseToggle: 'processManagementBuilderStartsCaseToggle',\n startableByUserToggle: 'processManagementBuilderStartableByUserToggle',\n deployButton: 'processManagementBuilderDeployButton',\n exportOption: 'processManagementBuilderExportOption',\n markersVisibilityToggle: 'processManagementBuilderMarkersVisibilityToggle',\n versionDropdown: 'processManagementBuilderVersionDropdown',\n validateButton: 'processManagementBuilderValidateButton',\n moreButton: 'processManagementBuilderMoreButton',\n readOnlyTag: 'processManagementBuilderReadOnlyTag',\n systemProcessTag: 'processManagementBuilderSystemProcessTag',\n validationErrors: 'processManagementBuilderValidationErrors',\n} as const;\n","/*\n * Copyright 2015-2025 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 './bpmn.constants';\nexport * from './process-management.test-ids';\n","/*\n * Copyright 2015-2026 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 {HttpClient} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {BaseApiService, ConfigService} from '@valtimo/shared';\nimport {Observable} from 'rxjs';\nimport {ProcessBeanDto} from '../models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProcessBeanService extends BaseApiService {\n constructor(\n protected readonly httpClient: HttpClient,\n protected readonly configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n public getProcessBeans(): Observable<ProcessBeanDto[]> {\n return this.httpClient.get<ProcessBeanDto[]>(\n this.getApiUrl('/management/v1/process-bean')\n );\n }\n\n public getProcessBean(beanName: string): Observable<ProcessBeanDto> {\n return this.httpClient.get<ProcessBeanDto>(\n this.getApiUrl(`/management/v1/process-bean/${beanName}`)\n );\n }\n}\n","/*\n * Copyright 2015-2026 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, OnDestroy} from '@angular/core';\nimport {BehaviorSubject, filter, Observable, Subject, Subscription} from 'rxjs';\nimport {distinctUntilChanged} from 'rxjs/operators';\nimport {isEqual} from 'lodash';\nimport {\n ProcessLink,\n ProcessLinkCreateEvent,\n ProcessLinkDeleteEvent,\n ProcessLinkService,\n ProcessLinkUpdateEvent,\n} from '@valtimo/process-link';\nimport {\n DeleteProcessLinkEvent,\n OpenProcessLinkModalEvent,\n ProcessDefinitionValidationError,\n} from '../models';\nimport {AutofilledElement} from '@valtimo/process';\nimport {\n BuildingBlockManagementParams,\n CaseManagementParams,\n ManagementContext,\n ProcessDefinitionWithPropertiesDto,\n} from '@valtimo/shared';\nimport {FormDefinitionOption, FormService} from '@valtimo/form';\n\n@Injectable()\nexport class ProcessManagementEditorService implements OnDestroy {\n private readonly _selectionProcessDefinitionSubject$ =\n new BehaviorSubject<ProcessDefinitionWithPropertiesDto | null>(null);\n\n public get selectionProcessDefinition$(): Observable<ProcessDefinitionWithPropertiesDto> {\n return this._selectionProcessDefinitionSubject$.pipe(\n filter(selectedProcessDefinition => !!selectedProcessDefinition?.id),\n distinctUntilChanged((previous, current) => isEqual(previous, current))\n );\n }\n\n public get selectionProcessDefinition(): ProcessDefinitionWithPropertiesDto {\n return this._selectionProcessDefinitionSubject$.getValue();\n }\n\n private readonly _processLinksForSelectedDefinition$ = new BehaviorSubject<ProcessLink[]>([]);\n\n public get processLinksForSelectedDefinition$(): Observable<ProcessLink[]> {\n return this._processLinksForSelectedDefinition$.asObservable();\n }\n\n public get processLinksForSelectedDefinition(): ProcessLink[] {\n return this._processLinksForSelectedDefinition$.getValue();\n }\n\n private readonly _openProcessLinkModalEvents$ = new Subject<OpenProcessLinkModalEvent>();\n\n public get openProcessLinkModalEvents$(): Observable<OpenProcessLinkModalEvent> {\n return this._openProcessLinkModalEvents$.asObservable();\n }\n\n private readonly _deleteProcessLinkEvents$ = new Subject<DeleteProcessLinkEvent>();\n\n public get deleteProcessLinkEvents$(): Observable<DeleteProcessLinkEvent> {\n return this._deleteProcessLinkEvents$.asObservable();\n }\n\n public setSelectedProcessDefinition(definition: ProcessDefinitionWithPropertiesDto): void {\n this._selectionProcessDefinitionSubject$.next(definition);\n }\n\n private readonly _managementRouteParams$ = new BehaviorSubject<\n [ManagementContext, CaseManagementParams | BuildingBlockManagementParams] | null\n >(null);\n\n private readonly _formDefinitionOptions$ = new BehaviorSubject<FormDefinitionOption[]>([]);\n\n public get formDefinitionOptions(): FormDefinitionOption[] {\n return this._formDefinitionOptions$.getValue();\n }\n\n private readonly _validationErrors$ = new BehaviorSubject<ProcessDefinitionValidationError[]>(\n []\n );\n\n public readonly validationErrors$ = this._validationErrors$.asObservable();\n\n public get validationErrors(): ProcessDefinitionValidationError[] {\n return this._validationErrors$.getValue();\n }\n\n public setValidationErrors(errors: ProcessDefinitionValidationError[]): void {\n this._validationErrors$.next(errors);\n }\n\n private readonly _dismissedAutofills$ = new BehaviorSubject<Set<string>>(new Set());\n private readonly _autofillDismissed$ = new Subject<string>();\n\n public get dismissedAutofills(): Set<string> {\n return this._dismissedAutofills$.getValue();\n }\n\n public get autofillDismissed$(): Observable<string> {\n return this._autofillDismissed$.asObservable();\n }\n\n public dismissAutofill(activityId: string): void {\n const current = this._dismissedAutofills$.getValue();\n current.add(activityId);\n this._dismissedAutofills$.next(new Set(current));\n this._autofillDismissed$.next(activityId);\n }\n\n public clearDismissedAutofills(): void {\n this._dismissedAutofills$.next(new Set());\n }\n\n public isAutofillDismissed(activityId: string): boolean {\n return this._dismissedAutofills$.getValue().has(activityId);\n }\n\n private readonly _autofilledElements$ = new BehaviorSubject<AutofilledElement[]>([]);\n\n public get autofilledElements(): AutofilledElement[] {\n return this._autofilledElements$.getValue();\n }\n\n public setAutofilledElements(elements: AutofilledElement[]): void {\n this._autofilledElements$.next(elements);\n }\n\n public getAutofillForActivity(activityId: string): AutofilledElement | undefined {\n return this._autofilledElements$.getValue().find(e => e.activityId === activityId);\n }\n\n private readonly _editingAllowed$ = new BehaviorSubject<boolean>(true);\n\n public get editingAllowed(): boolean {\n return this._editingAllowed$.getValue();\n }\n\n public setEditingAllowed(editingAllowed: boolean): void {\n this._editingAllowed$.next(editingAllowed);\n }\n\n private _updateBpmnViewFunction!: () => void;\n\n private _updatingBpmnView = false;\n\n private _activityIdBusinessIdMap: Record<string, string> = {};\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly processLinkService: ProcessLinkService,\n private readonly formService: FormService\n ) {\n this.openSelectedProcessDefinitionSubscription();\n this.openFormDefinitionOptionsSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public setManagementRouteParams(\n context: ManagementContext,\n params: CaseManagementParams | BuildingBlockManagementParams\n ): void {\n this._managementRouteParams$.next([context, params]);\n }\n\n public sendOpenProcessLinkModalEvent(\n event: OpenProcessLinkModalEvent,\n updateBpmnViewFunction: () => void\n ): void {\n this._updateBpmnViewFunction = updateBpmnViewFunction;\n this._openProcessLinkModalEvents$.next(event);\n }\n\n public sendDeleteProcessLinkEvent(\n event: DeleteProcessLinkEvent,\n updateBpmnViewFunction: () => void\n ): void {\n this._updateBpmnViewFunction = updateBpmnViewFunction;\n this._deleteProcessLinkEvents$.next(event);\n }\n\n public updateProcessLink(event: ProcessLinkUpdateEvent): void {\n this.setProcessLinksForSelectedDefinition(\n this.processLinksForSelectedDefinition.map(processLink => {\n if (processLink.activityId === event.activityId) {\n return {...processLink, ...(event as any)};\n }\n\n return processLink;\n })\n );\n\n this.updateBpmnView();\n }\n\n public createProcessLink(event: ProcessLinkCreateEvent): void {\n this.setProcessLinksForSelectedDefinition([\n ...this.processLinksForSelectedDefinition,\n event as any,\n ]);\n\n this.updateBpmnView();\n }\n\n public deleteProcessLink(\n event: ProcessLinkDeleteEvent,\n updateBpmnViewFunction?: () => void\n ): void {\n if (updateBpmnViewFunction) {\n this._updateBpmnViewFunction = updateBpmnViewFunction;\n }\n\n this.setProcessLinksForSelectedDefinition(\n this.processLinksForSelectedDefinition.filter(\n processLink => processLink.activityId !== event.activityId\n )\n );\n\n this.updateBpmnView();\n }\n\n public setProcessLinksForSelectedDefinition(processLinks: ProcessLink[]): void {\n this._processLinksForSelectedDefinition$.next(processLinks);\n }\n\n public setActivityIdBusinessIdMap(activityIdBusinessIdMap: Record<string, string>): void {\n this._activityIdBusinessIdMap = activityIdBusinessIdMap;\n }\n\n public updateProcessLinksOnIdChange(activityId: string, newBusinessId: string): void {\n const newBusinessIdWithoutLabelString = newBusinessId.replace('_label', '');\n\n if (\n !this._activityIdBusinessIdMap[activityId] ||\n this._activityIdBusinessIdMap[activityId] === newBusinessIdWithoutLabelString\n ) {\n return;\n }\n\n this.updateProcessLinkId(this._activityIdBusinessIdMap[activityId], newBusinessId);\n this._activityIdBusinessIdMap = {...this._activityIdBusinessIdMap, [activityId]: newBusinessId};\n }\n\n private openSelectedProcessDefinitionSubscription(): void {\n this._subscriptions.add(\n this.selectionProcessDefinition$.subscribe(definition => {\n this.fetchProcessLinksForDefinition(definition.id);\n })\n );\n }\n\n private fetchProcessLinksForDefinition(processDefinitionId: string): void {\n this.processLinkService.getProcessLink({processDefinitionId}).subscribe(res => {\n this.setProcessLinksForSelectedDefinition(res);\n });\n }\n\n private updateBpmnView(): void {\n if (!this._updateBpmnViewFunction || this._updatingBpmnView) return;\n this._updatingBpmnView = true;\n this._updateBpmnViewFunction();\n this._updatingBpmnView = false;\n }\n\n private updateProcessLinkId(oldBusinessId: string, newBusinessId: string): void {\n this.setProcessLinksForSelectedDefinition(\n this.processLinksForSelectedDefinition.map(processLink => {\n if (processLink.activityId === oldBusinessId) {\n return {...processLink, activityId: newBusinessId};\n }\n\n return processLink;\n })\n );\n\n this.updateBpmnView();\n }\n\n private openFormDefinitionOptionsSubscription(): void {\n this._subscriptions.add(\n this._managementRouteParams$\n .pipe(\n filter(\n (\n params\n ): params is [\n ManagementContext,\n CaseManagementParams | BuildingBlockManagementParams,\n ] => params !== null\n )\n )\n .subscribe(([context, params]) => {\n switch (context) {\n case 'independent':\n this.formService\n .getAllUnlinkedFormDefinitions()\n .subscribe(options => this._formDefinitionOptions$.next(options));\n break;\n case 'case':\n const caseParams = params as CaseManagementParams;\n this.formService\n .getAllFormDefinitionsForCaseDefinition(\n caseParams.caseDefinitionKey,\n caseParams.caseDefinitionVersionTag\n )\n .subscribe(options => this._formDefinitionOptions$.next(options));\n break;\n case 'buildingBlock': {\n const buildingBlockParams = params as BuildingBlockManagementParams;\n this.formService\n .getAllFormDefinitionsForBuildingBlock(\n buildingBlockParams.buildingBlockDefinitionKey,\n buildingBlockParams.buildingBlockDefinitionVersionTag\n )\n .subscribe(options => this._formDefinitionOptions$.next(options));\n break;\n }\n }\n })\n );\n }\n}\n","/*\n * Copyright 2015-2025 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 {Injectable} from '@angular/core';\nimport {BehaviorSubject, Observable, Subject} from 'rxjs';\n\n@Injectable({providedIn: 'root'})\nexport class ProcessManagementStateService {\n private readonly _openModal$ = new Subject<boolean>();\n private readonly _reloadDefinitions$ = new BehaviorSubject<null>(null);\n\n public get openModal$(): Observable<boolean> {\n return this._openModal$.asObservable();\n }\n\n public get reloadDefinitions$(): Observable<null> {\n return this._reloadDefinitions$.asObservable();\n }\n\n public openModal(): void {\n this._openModal$.next(true);\n }\n\n public closeModal(): void {\n this._openModal$.next(false);\n }\n\n public reloadDefinitions(): void {\n this._reloadDefinitions$.next(null);\n }\n}\n","/*\n * Copyright 2015-2026 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 {ValtimoWindow} from '@valtimo/shared';\nimport {ProcessManagementEditorService} from '../services';\nimport {TranslateService} from '@ngx-translate/core';\nimport {PluginTranslationService} from '@valtimo/plugin';\nimport {ProcessLinkService} from '@valtimo/process-link';\n\ninterface ProcessManagementWindow extends ValtimoWindow {\n processManagementEditorService: ProcessManagementEditorService;\n translateService: TranslateService;\n pluginTranslationService: PluginTranslationService;\n processLinkService: ProcessLinkService;\n}\n\nexport {ProcessManagementWindow};\n","/*\n * Copyright 2015-2025 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\ninterface BpmnElement {\n type: string;\n id: string;\n di?: {id?: string; bpmnElement?: {name?: string}};\n}\nexport {BpmnElement};\n","/*\n * Copyright 2015-2026 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\ninterface ProcessBeanMethodParameterDto {\n name: string;\n type: string;\n}\n\ninterface ProcessBeanMethodDto {\n name: string;\n description: string | null;\n example: string | null;\n returnType: string;\n parameters: ProcessBeanMethodParameterDto[];\n}\n\ninterface ProcessBeanDto {\n name: string;\n className: string;\n description: string | null;\n methods: ProcessBeanMethodDto[];\n}\n\nexport {ProcessBeanDto, ProcessBeanMethodDto, ProcessBeanMethodParameterDto};\n","/*\n * Copyright 2015-2026 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\ntype MissingReferenceType =\n | 'SUB_PROCESS'\n | 'DECISION_DEFINITION'\n | 'FORM'\n | 'FORM_FLOW'\n | 'READ_ONLY_SYSTEM_PROCESS';\n\ninterface MissingReference {\n type: MissingReferenceType;\n reference: string;\n activityId: string | null;\n processDefinitionKey: string | null;\n blocksImport: boolean;\n}\n\ninterface ProcessDefinitionPluginConfigurationPreview {\n pluginConfigurationId: string;\n pluginDefinitionKey: string | null;\n pluginActionDefinitionKey: string;\n processDefinitionKey: string;\n activityId: string;\n existsInTargetEnvironment: boolean;\n}\n\ntype ReplacedElementType = 'PROCESS_DEFINITION' | 'DECISION_DEFINITION' | 'FORM';\n\ninterface ReplacedElement {\n type: ReplacedElementType;\n key: string;\n}\n\ninterface ProcessDefinitionImportPreview {\n processDefinitionKeys: string[];\n /** The processes of the package that already exist here and will be replaced by the import. */\n existingProcessDefinitionKeys: string[];\n pluginConfigurations: ProcessDefinitionPluginConfigurationPreview[];\n missingReferences: MissingReference[];\n /** Elements bundled in the package that already exist here and will be replaced by the import. */\n elementsToReplace: ReplacedElement[];\n canImport: boolean;\n}\n\ninterface ProcessDefinitionImportResult {\n processDefinitionKeys: string[];\n missingReferences: MissingReference[];\n}\n\nexport {\n MissingReference,\n MissingReferenceType,\n ProcessDefinitionImportPreview,\n ProcessDefinitionImportResult,\n ProcessDefinitionPluginConfigurationPreview,\n ReplacedElement,\n ReplacedElementType,\n};\n","/*\n * Copyright 2015-2026 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 {ModalParams, ProcessLink} from '@valtimo/process-link';\nimport {ManagementContext, ProcessDefinitionValidationError} from '@valtimo/shared';\n\ninterface OpenProcessLinkModalEvent {\n modalParams: ModalParams;\n processLink?: ProcessLink;\n}\n\ninterface DeleteProcessLinkEvent {\n activityId: string;\n}\n\nconst PROCESS_MANAGEMENT_ENDPOINTS = {\n case: '/management/v1/case-definition',\n independent: '/management/v1/process-definition',\n};\n\ninterface ProcessManagementRouteData {\n context: ManagementContext;\n}\n\ninterface UpdateProcessDefinitionCaseDefinitionRequest {\n canInitializeDocument?: boolean;\n startableByUser?: boolean;\n}\n\ninterface ProcessDefinitionValidationResult {\n isValid: boolean;\n hasWarnings: boolean;\n errors: ProcessDefinitionValidationError[];\n}\n\ninterface ProcessDefinitionValidateRequest {\n bpmnXml: string;\n processLinks: any[];\n canInitializeDocument?: boolean;\n startableByUser?: boolean;\n}\n\ninterface ActivityMarkerInfo {\n hasExecutionListener: boolean;\n hasTaskListener: boolean;\n hasProcessLink: boolean;\n executionListenerCount: number;\n taskListenerCount: number;\n}\n\nexport {\n OpenProcessLinkModalEvent,\n PROCESS_MANAGEMENT_ENDPOINTS,\n ProcessManagementRouteData,\n UpdateProcessDefinitionCaseDefinitionRequest,\n DeleteProcessLinkEvent,\n ProcessDefinitionValidationError,\n ProcessDefinitionValidationResult,\n ProcessDefinitionValidateRequest,\n ActivityMarkerInfo,\n};\n","/*\n * Copyright 2015-2026 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 {ProcessDocumentDefinition} from '@valtimo/document';\nimport {ProcessLink} from '@valtimo/process-link';\nimport {AutofilledElement} from '@valtimo/process';\nimport {ProcessDefinitionWithPropertiesDto} from '@valtimo/shared';\n\ninterface ProcessDefinitionResult {\n bpmn20Xml: string;\n processCaseLink?: ProcessDocumentDefinition;\n processDefinition: ProcessDefinitionWithPropertiesDto;\n processLinks: ProcessLink[];\n draft?: boolean;\n autofilledElements?: AutofilledElement[];\n}\n\nexport {ProcessDefinitionResult};\n","/*\n * Copyright 2015-2025 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 './window.model';\nexport * from './bpmn.model';\nexport * from './process-bean.model';\nexport * from './process-definition-import.model';\nexport * from './process-management.model';\nexport * from './process.model';\n","/*\n * Copyright 2015-2025 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 {HttpClient, HttpHeaders, HttpResponse} from '@angular/common/http';\nimport {Injectable, Signal, signal} from '@angular/core';\nimport {\n BaseApiService,\n BuildingBlockProcessDefinitionWithLinksDto,\n ConfigService,\n InterceptorSkip,\n InterceptorSkipHeader,\n ManagementContext,\n} from '@valtimo/shared';\nimport {BehaviorSubject, combineLatest, Observable, of, switchMap} from 'rxjs';\nimport {toObservable} from '@angular/core/rxjs-interop';\n\nimport {\n PROCESS_MANAGEMENT_ENDPOINTS,\n ProcessDefinitionImportPreview,\n ProcessDefinitionImportResult,\n ProcessDefinitionResult,\n ProcessDefinitionValidateRequest,\n ProcessDefinitionValidationResult,\n UpdateProcessDefinitionCaseDefinitionRequest,\n} from '../models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProcessManagementService extends BaseApiService {\n private readonly _definitionKey$ = new BehaviorSubject<string | null>(null);\n private readonly _versionTag$ = new BehaviorSubject<string | null>(null);\n\n public get caseDefinitionKey(): string {\n return this._definitionKey$.getValue() ?? '';\n }\n\n public get caseDefinitionVersionTag(): string {\n return this._versionTag$.getValue() ?? '';\n }\n\n private _$context = signal<ManagementContext>('independent');\n public set context(value: ManagementContext) {\n this._$context.set(value);\n }\n public get $context(): Signal<ManagementContext> {\n return this._$context.asReadonly();\n }\n\n public processes$: Observable<ProcessDefinitionResult[]> = combineLatest([\n this._definitionKey$,\n this._versionTag$,\n toObservable(this._$context),\n ]).pipe(\n switchMap(([definitionKey, versionTag, context]) => {\n if (context === 'independent') {\n return this.getUnlinkedProcesses();\n }\n if (!!definitionKey && !!versionTag) {\n return this.getProcesses(definitionKey, versionTag);\n }\n return of([]);\n })\n );\n\n constructor(\n protected readonly httpClient: HttpClient,\n protected readonly configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n public setParams(key: string, versionTag: string): void {\n this._definitionKey$.next(key);\n this._versionTag$.next(versionTag);\n }\n\n public deleteProcess(processDefinitionKey: string): Observable<void> {\n return this.httpClient.delete<void>(\n this.getApiUrl(\n `${PROCESS_MANAGEMENT_ENDPOINTS[this._$context()]}/${this._definitionKey$.getValue()}/version/${this._versionTag$.getValue()}/process-definition/key/${processDefinitionKey}`\n )\n );\n }\n\n public deleteUnlinkedProcess(processDefinitionKey: string): Observable<void> {\n return this.httpClient.delete<void>(\n this.getApiUrl(\n `${PROCESS_MANAGEMENT_ENDPOINTS[this._$context()]}/key/${processDefinitionKey}`\n )\n );\n }\n\n public deployBpmn(bpmn: File): Observable<any> {\n const formData: FormData = new FormData();\n formData.append('file', bpmn);\n formData.append(\n 'processLinks',\n new Blob([JSON.stringify([].map(processLink => this.emptyStringToNull(processLink)))], {\n type: 'application/json',\n })\n );\n\n return this.httpClient.post<any>(\n this._$context() === 'case'\n ? this.getApiUrl(\n `${PROCESS_MANAGEMENT_ENDPOINTS[this._$context()]}/${this._definitionKey$.getValue()}/version/${this._versionTag$.getValue()}/process-definition`\n )\n : this.getApiUrl(`${PROCESS_MANAGEMENT_ENDPOINTS[this._$context()]}`),\n formData\n );\n }\n\n public getProcessDefinitionForCase(\n caseDefinitionKey: string,\n caseDefinitionVersionTag: string,\n processDefinitionKey: string\n ): Observable<ProcessDefinitionResult> {\n return this.httpClient.get<ProcessDefinitionResult>(\n this.getApiUrl(\n `${PROCESS_MANAGEMENT_ENDPOINTS[this._$context()]}/${caseDefinitionKey}/version/${caseDefinitionVersionTag}/process-definition/key/${processDefinitionKey}`\n )\n );\n }\n\n public getBuildingBlockProcessDefinition(\n key: string,\n versionTag: string,\n processDefinitionId: string\n ): Observable<BuildingBlockProcessDefinitionWithLinksDto> {\n return this.httpClient.get<BuildingBlockProcessDefinitionWithLinksDto>(\n this.getApiUrl(\n `management/v1/building-block/${key}/version/${versionTag}/process-definition/${processDefinitionId}`\n )\n );\n }\n\n public getUnlinkedProcessDefinitionsByKey(\n processDefinitionKey: string\n ): Observable<ProcessDefinitionResult[]> {\n return this.httpClient.get<ProcessDefinitionResult[]>(\n this.getApiUrl(\n `${PROCESS_MANAGEMENT_ENDPOINTS[this._$context()]}/key/${processDefinitionKey}`\n )\n );\n }\n\n public updateProcessDefinitionCaseDefinitionProperties(\n caseDefinitionKey: string,\n caseDefinitionVersionTag: string,\n processDefinitionId: string,\n body: UpdateProcessDefinitionCaseDefinitionRequest\n ): Observable<void> {\n return this.httpClient.put<void>(\n this.getApiUrl(\n `/management/v1/case-definition/${caseDefinitionKey}/version/${caseDefinitionVersionTag}/process/${processDefinitionId}/properties`\n ),\n body\n );\n }\n\n public exportProcessDefinition(processDefinitionId: string): Observable<HttpResponse<Blob>> {\n return this.httpClient.get<Blob>(\n this.getApiUrl(`/management/v1/process-definition/${processDefinitionId}/export`),\n {observe: 'response', responseType: 'blob' as 'json', headers: InterceptorSkipHeader}\n );\n }\n\n public previewProcessDefinitionImport(\n file: FormData\n ): Observable<ProcessDefinitionImportPreview> {\n return this.httpClient.post<ProcessDefinitionImportPreview>(\n this.getApiUrl('/management/v1/process-definition/import/preview'),\n file,\n {headers: new HttpHeaders().set(InterceptorSkip, '400')}\n );\n }\n\n public importProcessDefinition(\n file: FormData,\n pluginConfigurationMappings?: Record<string, string | null>\n ): Observable<ProcessDefinitionImportResult> {\n if (pluginConfigurationMappings) {\n file.set(\n 'pluginConfigurationMappings',\n new Blob([JSON.stringify(pluginConfigurationMappings)], {type: 'application/json'})\n );\n }\n\n return this.httpClient.post<ProcessDefinitionImportResult>(\n this.getApiUrl('/management/v1/process-definition/import'),\n file,\n {headers: new HttpHeaders().set(InterceptorSkip, '400')}\n );\n }\n\n public validateProcessDefinition(\n request: ProcessDefinitionValidateRequest\n ): Observable<ProcessDefinitionValidationResult> {\n return this.httpClient.post<ProcessDefinitionValidationResult>(\n this.getApiUrl('/management/v1/process-definition/validate'),\n request\n );\n }\n\n private getProcesses(\n definitionName: string,\n versionTag: string\n ): Observable<ProcessDefinitionResult[]> {\n return this.httpClient.get<ProcessDefinitionResult[]>(\n this.getApiUrl(\n `${PROCESS_MANAGEMENT_ENDPOINTS[this._$context()]}/${definitionName}/version/${versionTag}/process-definition`\n )\n );\n }\n\n private getUnlinkedProcesses(): Observable<ProcessDefinitionResult[]> {\n return this.httpClient.get<ProcessDefinitionResult[]>(\n this.getApiUrl(`${PROCESS_MANAGEMENT_ENDPOINTS[this._$context()]}`)\n );\n }\n\n private emptyStringToNull<T extends Record<string, any>>(object: T): T {\n if (object && typeof object === 'object') {\n Object.keys(object).forEach(key => {\n const typedKey = key as keyof T;\n const value = object[typedKey];\n if (typeof value === 'object' && value !== null) {\n this.emptyStringToNull(value);\n } else if (value === '') {\n object[typedKey] = null as any;\n }\n });\n }\n return object;\n }\n}\n","/*\n * Copyright 2015-2025 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 './process-bean.service';\nexport * from './process-management-editor.service';\nexport * from './process-management-state.service';\nexport * from './process-management.service';\n","/*\n * Copyright 2015-2025 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 mapActivityTypeToActivityListenerType = (activityType: string, element?: any): string => {\n if (activityType === 'bpmn:UserTask') {\n return activityType + ':create';\n }\n\n if (activityType === 'bpmn:StartEvent' && element) {\n const eventDefinitions = element.businessObject?.eventDefinitions;\n if (eventDefinitions?.length > 0 && eventDefinitions[0].$type === 'bpmn:MessageEventDefinition') {\n return 'bpmn:MessageStartEvent:start';\n }\n }\n\n if (activityType === 'bpmn:ReceiveTask' || activityType === 'bpmn:IntermediateCatchEvent') {\n return activityType + ':end';\n }\n\n return activityType + ':start';\n};\n\nexport {mapActivityTypeToActivityListenerType};\n","/*\n * Copyright 2015-2025 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 {ActivatedRoute} from '@angular/router';\nimport {ManagementContext} from '@valtimo/shared';\nimport {Observable} from 'rxjs';\nimport {distinctUntilChanged, map} from 'rxjs/operators';\n\nfunction getContextObservable(route: ActivatedRoute): Observable<ManagementContext | null> {\n return route.data.pipe(\n map(data => (data && (data['context'] as ManagementContext)) || null),\n distinctUntilChanged()\n );\n}\n\nexport {getContextObservable};\n","/*\n * Copyright 2015-2025 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 {BreadcrumbService} from '@valtimo/components';\nimport {TranslateService} from '@ngx-translate/core';\nimport {\n BuildingBlockManagementParams,\n CaseManagementParams,\n ManagementContext,\n ProcessDefinitionWithPropertiesDto,\n} from '@valtimo/shared';\nimport Modeler from 'bpmn-js/lib/Modeler';\nimport NavigatedViewer from 'bpmn-js/lib/NavigatedViewer';\nimport {is} from 'bpmn-js/lib/util/ModelUtil';\n\nconst getLatestProcessDefinition = (\n processDefinitions: ProcessDefinitionWithPropertiesDto[]\n): ProcessDefinitionWithPropertiesDto | null => {\n if (!processDefinitions || processDefinitions.length === 0) return null;\n\n return processDefinitions.reduce((acc, version) =>\n version.version > acc.version ? version : acc\n );\n};\n\nconst initBreadcrumbsForContext = (\n breadcrumbService: BreadcrumbService,\n translateService: TranslateService,\n params: CaseManagementParams | BuildingBlockManagementParams,\n context: ManagementContext\n): void => {\n if (!params) return;\n\n if (context === 'case') {\n const caseParams = params as CaseManagementParams;\n const route = `/case-management/case/${caseParams.caseDefinitionKey}/version/${caseParams.caseDefinitionVersionTag}`;\n\n breadcrumbService.setThirdBreadcrumb({\n route: [route],\n content: `${caseParams.caseDefinitionKey} (${caseParams.caseDefinitionVersionTag})`,\n href: route,\n });\n\n const routeWithProcesses = `${route}/processes`;\n\n breadcrumbService.setFourthBreadcrumb({\n route: [routeWithProcesses],\n content: translateService.instant('caseManagement.tabs.processes'),\n href: routeWithProcesses,\n });\n }\n\n if (context === 'buildingBlock') {\n const bbParams = params as BuildingBlockManagementParams;\n const route = `/building-block-management/building-block/${bbParams.buildingBlockDefinitionKey}/version/${bbParams.buildingBlockDefinitionVersionTag}`;\n const generalRoute = `${route}/general`;\n\n breadcrumbService.setThirdBreadcrumb({\n route: [generalRoute],\n content: `${bbParams.buildingBlockDefinitionKey} (${bbParams.buildingBlockDefinitionVersionTag})`,\n href: generalRoute,\n });\n\n const processRoute = `${route}/process-definition`;\n\n breadcrumbService.setFourthBreadcrumb({\n route: [processRoute],\n content: translateService.instant('buildingBlockManagement.tabs.processes'),\n href: processRoute,\n });\n }\n};\n\nconst DisableBpmnWriteModule = {\n paletteProvider: ['value', {}],\n contextPadProvider: ['value', {}],\n directEditing: [\n 'value',\n {\n registerProvider: () => {},\n activate: () => {},\n deactivate: () => {},\n isActive: () => false,\n },\n ],\n move: ['value', null],\n resizeHandles: ['value', {addResizer: () => {}, removeResizers: () => {}}],\n bendpoints: ['value', {}],\n bendpointMove: ['value', {start: () => {}}],\n bendpointMovePreview: ['value', {}],\n connectionSegmentMove: ['value', {start: () => {}}],\n};\n\nconst disableCommands = (editor: Modeler | NavigatedViewer): void => {\n const commandStack = (editor as any).get('commandStack') as any;\n const originalExecute = commandStack?.execute?.bind(commandStack);\n\n if (commandStack?.execute) {\n commandStack.execute = (command: string, context: any) => {\n if (\n command === 'elements.delete' ||\n command === 'elements.copy' ||\n command === 'elements.paste' ||\n command === 'elements.create'\n ) {\n return;\n }\n originalExecute(command, context);\n };\n }\n};\n\nconst applyBuildingBlockCalledElement = (\n editor: Modeler | NavigatedViewer,\n activityId: string,\n mainProcessDefinitionKey: string,\n versionTag: string\n): void => {\n if (!editor) return;\n\n const elementRegistry = (editor as any).get('elementRegistry') as any;\n const modeling = (editor as any).get('modeling') as any;\n const moddle = (editor as any).get('moddle') as any;\n\n const element = elementRegistry.get(activityId);\n\n if (!element || !is(element, 'bpmn:CallActivity')) {\n return;\n }\n\n modeling.updateProperties(element, {\n calledElement: mainProcessDefinitionKey,\n 'camunda:calledElementBinding': 'versionTag',\n 'camunda:calledElementVersionTag': versionTag,\n 'camunda:calledElementType': 'BPMN',\n });\n\n let extensionElements = element.businessObject.extensionElements;\n\n if (!extensionElements) {\n extensionElements = moddle.create('bpmn:ExtensionElements', {values: []});\n modeling.updateProperties(element, {\n extensionElements,\n });\n }\n\n extensionElements.values = (extensionElements.values || []).filter(\n (val: any) => !(val.$type === 'camunda:In' && val.businessKey)\n );\n\n const inWithBusinessKey = moddle.create('camunda:In', {\n businessKey: '#{buildingBlockDocumentId}',\n });\n\n extensionElements.values.push(inWithBusinessKey);\n\n modeling.updateProperties(element, {\n extensionElements,\n });\n};\n\nconst clearBuildingBlockCalledElement = (\n editor: Modeler | NavigatedViewer,\n activityId: string\n): void => {\n const localEditor = editor as any;\n if (!localEditor) return;\n\n const elementRegistry = localEditor.get('elementRegistry') as any;\n const modeling = localEditor.get('modeling') as any;\n\n const element = elementRegistry.get(activityId);\n if (!element || !is(element, 'bpmn:CallActivity')) return;\n\n const bo = element.businessObject;\n const versionTag = bo.get('camunda:calledElementVersionTag');\n\n if (!versionTag || !versionTag.startsWith('BB:')) return;\n\n const props: any = {\n calledElement: undefined,\n 'camunda:calledElementBinding': undefined,\n 'camunda:calledElementVersionTag': undefined,\n 'camunda:calledElementType': undefined,\n };\n\n const extensionElements = bo.extensionElements;\n if (extensionElements && Array.isArray(extensionElements.values)) {\n // Keep all elements except camunda:In with businessKey (building block mapping)\n extensionElements.values = extensionElements.values.filter(\n (val: any) => val.$type !== 'camunda:In' || !val.businessKey\n );\n\n if (extensionElements.values.length === 0) {\n props.extensionElements = undefined;\n } else {\n props.extensionElements = extensionElements;\n }\n }\n\n modeling.updateProperties(element, props);\n\n const attrs = bo.$attrs || {};\n\n Object.keys(attrs).forEach(key => {\n if (key.startsWith('camunda:calledElement')) delete attrs[key];\n if (key === 'calledElement') delete attrs[key];\n });\n};\n\nexport {\n getLatestProcessDefinition,\n initBreadcrumbsForContext,\n DisableBpmnWriteModule,\n disableCommands,\n applyBuildingBlockCalledElement,\n clearBuildingBlockCalledElement,\n};\n","/*\n * Copyright 2015-2025 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 './bpmn.utils';\nexport * from './process-management.utils';\nexport * from './process-management-builder.utils';\n","/*\n * Copyright 2015-2026 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 {useService} from 'bpmn-js-properties-panel';\nimport {html} from 'htm/preact';\nimport {is} from 'bpmn-js/lib/util/ModelUtil';\nimport {PROCESS_LINK_PANEL_TEST_IDS} from '../../../constants';\nimport {ProcessManagementEditorService} from '../../../services';\nimport {\n BpmnElement,\n OpenProcessLinkModalEvent,\n ProcessDefinitionValidationError,\n ProcessManagementWindow,\n} from '../../../models';\nimport {ModalParams, ProcessLink, ProcessLinkService} from '@valtimo/process-link';\nimport {TranslateService} from '@ngx-translate/core';\nimport {mapActivityTypeToActivityListenerType} from '../../../utils';\nimport {VNode} from 'preact';\nimport {PluginTranslationService} from '@valtimo/plugin';\n\nclass ValtimoPropertiesProvider {\n static $inject = ['propertiesPanel', 'translate'];\n\n private get processManagementEditorService(): ProcessManagementEditorService {\n return (window as any as ProcessManagementWindow).processManagementEditorService;\n }\n\n private get translateService(): TranslateService {\n return (window as any as ProcessManagementWindow).translateService;\n }\n\n private get pluginTranslationService(): PluginTranslationService {\n return (window as any as ProcessManagementWindow).pluginTranslationService;\n }\n\n private get processLinkService(): ProcessLinkService {\n return (window as any as ProcessManagementWindow).processLinkService;\n }\n\n constructor(propertiesPanel: any) {\n propertiesPanel.registerProvider(500, this);\n }\n\n private addAsSecondOrFirst<T>(arr: T[], element: T): T[] {\n if (arr.length === 0) {\n arr.push(element);\n } else {\n arr.splice(1, 0, element);\n }\n return arr;\n }\n\n public getGroups(element: BpmnElement): (groups: any[]) => any[] {\n const processLink: ProcessLink | null =\n this.processManagementEditorService.processLinksForSelectedDefinition.find(\n processLink => processLink.activityId === element.id\n ) || null;\n\n const elementErrors = this.processManagementEditorService.validationErrors.filter(\n error => error.elementId === element.id\n );\n\n const autofillInfo = this.processManagementEditorService.getAutofillForActivity(element.id);\n const isAutofillDismissed = this.processManagementEditorService.isAutofillDismissed(element.id);\n\n return (groups: any[]) => {\n const generalGroup = groups.find((g: any) => g.id === 'general');\n if (generalGroup) {\n generalGroup.entries = generalGroup.entries.filter(\n (entry: any) => entry.id !== 'isExecutable'\n );\n }\n\n if (elementErrors.length > 0) {\n const errorGroup = {\n id: 'validationErrorsGroup',\n label: this.translateService.instant('processManagement.validationErrors'),\n entries: [\n {\n id: 'validationErrorsEntry',\n errors: elementErrors,\n translateService: this.translateService,\n component: ValidationErrorsElement,\n },\n ],\n shouldOpen: true,\n };\n groups.unshift(errorGroup);\n }\n\n if (autofillInfo && !isAutofillDismissed) {\n const targetGroupId = this.getGroupIdForModificationType(autofillInfo.modificationType);\n const targetGroup = groups.find((g: any) => g.id === targetGroupId);\n if (targetGroup) {\n const notificationEntry = {\n id: 'autofilledNotificationEntry',\n activityId: element.id,\n element,\n translateService: this.translateService,\n processManagementEditorService: this.processManagementEditorService,\n processLinkService: this.processLinkService,\n component: AutofilledNotificationElement,\n };\n targetGroup.entries.unshift(notificationEntry);\n targetGroup.shouldOpen = true;\n }\n }\n\n if (\n is(element, 'bpmn:UserTask') ||\n is(element, 'bpmn:StartEvent') ||\n is(element, 'bpmn:ServiceTask') ||\n is(element, 'bpmn:SendTask') ||\n is(element, 'bpmn:ReceiveTask') ||\n is(element, 'bpmn:IntermediateThrowEvent') ||\n is(element, 'bpmn:IntermediateCatchEvent') ||\n is(element, 'bpmn:CallActivity')\n ) {\n const editingAllowed = this.processManagementEditorService.editingAllowed;\n\n if (editingAllowed || processLink) {\n const customGroup = {\n id: 'customRootGroup',\n label: 'Process link',\n entries: [this.createCustomRootElement(element, processLink, editingAllowed)],\n groupType: 'root',\n };\n this.addAsSecondOrFirst(groups, customGroup);\n }\n }\n return groups;\n };\n }\n\n private getGroupIdForModificationType(modificationType: string): string {\n const groupMapping: Record<string, string> = {\n SERVICE_TASK_EXPRESSION: 'CamundaPlatform__Implementation',\n SEND_TASK_EXPRESSION: 'CamundaPlatform__Implementation',\n MESSAGE_EVENT_EXPRESSION: 'message',\n TIMER_DURATION: 'timer',\n CALL_ACTIVITY_BUSINESS_KEY: 'CamundaPlatform__BusinessKey',\n };\n return groupMapping[modificationType] || 'general';\n }\n\n public createCustomRootElement(\n element: any,\n processLink: ProcessLink | null,\n editingAllowed: boolean\n ): any {\n return {\n translateService: this.translateService,\n processManagementEditorService: this.processManagementEditorService,\n pluginTranslationService: this.pluginTranslationService,\n id: 'customRootElement',\n processLink,\n element,\n editingAllowed,\n component: CustomRootElement,\n isEdited: (node: HTMLInputElement) => node && !!node.value,\n };\n }\n}\n\nconst CustomRootElement = (props: {\n translateService: TranslateService;\n processManagementEditorService: ProcessManagementEditorService;\n pluginTranslationService: PluginTranslationService;\n id: string;\n processLink: ProcessLink;\n element: BpmnElement;\n editingAllowed: boolean;\n}): VNode => {\n const {\n element,\n processLink,\n translateService,\n processManagementEditorService,\n pluginTranslationService,\n editingAllowed,\n } = props;\n const modeling = useService('modeling');\n const elementRegistry = useService('elementRegistry');\n const editProcessLinkText = translateService.instant('interface.edit');\n const unlinkText = translateService.instant('processLink.unlink');\n const createText = translateService.instant('processLink.create');\n const viewText = translateService.instant('interface.view');\n\n const getModalParams = (): ModalParams => {\n const currentElement = elementRegistry.get(element.id) || element;\n return {\n processDefinitionKey: processManagementEditorService.selectionProcessDefinition?.key,\n processDefinitionId: processManagementEditorService.selectionProcessDefinition?.id,\n element: {\n id: currentElement.id,\n type: currentElement.type,\n activityListenerType: mapActivityTypeToActivityListenerType(\n currentElement.type,\n currentElement\n ),\n name: currentElement.di?.bpmnElement?.name,\n },\n };\n };\n\n const handleCreateClick = (): void => {\n const event: OpenProcessLinkModalEvent = {\n modalParams: getModalParams(),\n };\n\n processManagementEditorService.sendOpenProcessLinkModalEvent(event, () => {\n // Defer to avoid calling modeling.updateProperties during command stack execute/revert phase\n setTimeout(() => modeling.updateProperties(element, {}), 0);\n });\n };\n\n const handleEditClick = (): void => {\n const event: OpenProcessLinkModalEvent = {\n processLink,\n modalParams: getModalParams(),\n };\n\n processManagementEditorService.sendOpenProcessLinkModalEvent(event, () => {\n // Defer to avoid calling modeling.updateProperties during command stack execute/revert phase\n setTimeout(() => modeling.updateProperties(element, {}), 0);\n });\n };\n\n const handleUnlinkClick = (): void => {\n processManagementEditorService.sendDeleteProcessLinkEvent(\n {activityId: processLink.activityId},\n () => {\n // Defer to avoid calling modeling.updateProperties during command stack execute/revert phase\n setTimeout(() => modeling.updateProperties(element, {}), 0);\n }\n );\n };\n\n const processLinkFormDefinitionId = processLink?.formDefinitionId;\n const processLinkFormDefinitionName = processManagementEditorService.formDefinitionOptions.find(\n option => option.id === processLinkFormDefinitionId\n )?.name;\n\n const hiddenInput = html`<input\n type=\"hidden\"\n class=\"bio-properties-panel-input\"\n value=${processLink ? 'configured' : ''}\n />`;\n const wrapEntry = (content: any) =>\n html`<div data-entry-id=${props.id}>${hiddenInput}${content}</div>`;\n\n const linkedButtons = !editingAllowed\n ? html`<div class=\"process-link-properties-panel__buttons\">\n <button\n class=\"cds--btn cds--btn--primary cds--btn--sm cds--layout--size-md\"\n data-test-id=${PROCESS_LINK_PANEL_TEST_IDS.editButton}\n onClick=${handleEditClick}\n >\n ${viewText}\n </button>\n </div>`\n : html`<div class=\"process-link-properties-panel__buttons\">\n <button\n class=\"cds--btn cds--btn--danger cds--btn--sm cds--layout--side-md\"\n data-test-id=${PROCESS_LINK_PANEL_TEST_IDS.unlinkButton}\n onClick=${handleUnlinkClick}\n >\n ${unlinkText}\n </button>\n\n <button\n class=\"cds--btn cds--btn--primary cds--btn--sm cds--layout--size-md\"\n data-test-id=${PROCESS_LINK_PANEL_TEST_IDS.editButton}\n onClick=${handleEditClick}\n >\n ${editProcessLinkText}\n </button>\n </div>`;\n\n if (processLinkFormDefinitionName) {\n return wrapEntry(\n html`<div class=\"process-link-properties-panel\">\n <div class=\"process-link-properties-panel__header\">\n <span class=\"process-link-properties-panel__title\">${processLinkFormDefinitionName}</span>\n\n <cds-tag\n class=\"cds--tag cds--tag--blue cds--tag--md cds--layout--size-md cds-tag--no-margin\"\n ><span class=\"cds--tag__label\">\n ${translateService.instant('processLinkType.form')}\n </span>\n </cds-tag>\n </div>\n\n ${linkedButtons}\n </div>`\n );\n }\n\n const processLinkFormFlowDefinitionKey = processLink?.formFlowDefinitionKey;\n\n if (processLinkFormFlowDefinitionKey) {\n return wrapEntry(\n html`<div class=\"process-link-properties-panel\">\n <div class=\"process-link-properties-panel__header\">\n <span class=\"process-link-properties-panel__title\"\n >${processLinkFormFlowDefinitionKey}</span\n >\n\n <cds-tag\n class=\"cds--tag cds--tag--teal cds--tag--md cds--layout--size-md cds-tag--no-margin\"\n ><span class=\"cds--tag__label\">\n ${translateService.instant('processLinkType.form-flow')}\n </span>\n </cds-tag>\n </div>\n\n ${linkedButtons}\n </div>`\n );\n }\n\n const buildingBlockDefinitionKey = processLink?.buildingBlockDefinitionKey;\n const buildingBlockDefinitionVersion = processLink?.buildingBlockDefinitionVersionTag;\n\n if (buildingBlockDefinitionKey) {\n return wrapEntry(\n html`<div class=\"process-link-properties-panel\">\n <div class=\"process-link-properties-panel__header\">\n <span class=\"process-link-properties-panel__title\"\n >${buildingBlockDefinitionKey} (${buildingBlockDefinitionVersion})</span\n >\n\n <cds-tag\n class=\"cds--tag cds--tag--green cds--tag--md cds--layout--size-md cds-tag--no-margin\"\n ><span class=\"cds--tag__label\">\n ${translateService.instant('processLinkType.building-block')}\n </span>\n </cds-tag>\n </div>\n\n ${linkedButtons}\n </div>`\n );\n }\n\n const pluginActionKey = processLink?.pluginActionDefinitionKey;\n const pluginActionTranslation =\n pluginTranslationService.instantByPluginActionKey(pluginActionKey);\n const pluginTitleTranslation =\n pluginTranslationService.instantPluginTitleByPluginActionKey(pluginActionKey);\n\n if (pluginActionKey) {\n return wrapEntry(\n html`<div class=\"process-link-properties-panel\">\n <div class=\"process-link-properties-panel__header\">\n <span class=\"process-link-properties-panel__title-container\">\n <span class=\"process-link-properties-panel__title\">${pluginTitleTranslation}</span>\n\n <span class=\"process-link-properties-panel__title\">${pluginActionTranslation}</span>\n </span>\n\n <cds-tag\n class=\"cds--tag cds--tag--purple cds--tag--md cds--layout--size-md cds-tag--no-margin\"\n ><span class=\"cds--tag__label\">\n ${translateService.instant('processLinkType.plugin')}\n </span>\n </cds-tag>\n </div>\n\n ${linkedButtons}\n </div>`\n );\n }\n\n const uiComponentKey = processLink?.componentKey;\n\n if (uiComponentKey) {\n return wrapEntry(\n html`<div class=\"process-link-properties-panel\">\n <div class=\"process-link-properties-panel__header\">\n <span class=\"process-link-properties-panel__title\">${uiComponentKey}</span>\n\n <cds-tag\n class=\"cds--tag cds--tag--magenta cds--tag--md cds--layout--size-md cds-tag--no-margin\"\n ><span class=\"cds--tag__label\">\n ${translateService.instant('processLinkType.ui-component')}\n </span>\n </cds-tag>\n </div>\n\n ${linkedButtons}\n </div>`\n );\n }\n\n const genericLinkedPanel = html`<div class=\"process-link-properties-panel\">\n ${linkedButtons}\n </div>`;\n\n const genericCreatePanel = html`<div class=\"process-link-properties-panel\">\n <div class=\"process-link-properties-panel__buttons\">\n <button\n class=\"cds--btn cds--btn--primary cds--btn--sm cds--layout--size-md\"\n data-test-id=${PROCESS_LINK_PANEL_TEST_IDS.createButton}\n onClick=${handleCreateClick}\n >\n ${createText}\n </button>\n </div>\n </div>`;\n\n return wrapEntry(processLink ? genericLinkedPanel : genericCreatePanel);\n};\n\nconst ValidationErrorsElement = (props: {\n errors: ProcessDefinitionValidationError[];\n translateService: TranslateService;\n}): VNode => {\n const getErrorMessage = (error: ProcessDefinitionValidationError): string => {\n if (error.errorCode) {\n const translationKey = `processManagement.validationErrorCodes.${error.errorCode}`;\n const translated = props.translateService.instant(translationKey, {\n expression: error.expression ?? '',\n });\n if (translated !== translationKey) {\n return translated;\n }\n }\n return error.reason;\n };\n\n return html`<div class=\"validation-errors-panel\">\n ${props.errors.map(\n error =>\n html`<div\n class=\"validation-errors-panel__item${error.severity === 'WARNING' ? ' warning' : ''}\"\n >\n <span\n class=\"validation-errors-panel__icon${error.severity === 'WARNING' ? ' warning' : ''}\"\n >!</span\n >\n <span\n class=\"validation-errors-panel__reason${error.severity === 'WARNING' ? ' warning' : ''}\"\n >${getErrorMessage(error)}</span\n >\n </div>`\n )}\n </div>`;\n};\n\nconst AutofilledNotificationElement = (props: {\n activityId: string;\n element: BpmnElement;\n translateService: TranslateService;\n processManagementEditorService: ProcessManagementEditorService;\n processLinkService: ProcessLinkService;\n}): VNode => {\n const handleDismiss = (event: Event): void => {\n const processDefinitionId = props.processManagementEditorService.selectionProcessDefinition?.id;\n if (processDefinitionId) {\n props.processLinkService.deleteAutofill(processDefinitionId, props.activityId).subscribe();\n }\n props.processManagementEditorService.dismissAutofill(props.activityId);\n\n const target = event.currentTarget as HTMLElement;\n const panel = target.closest('.autofilled-notification-panel') as HTMLElement;\n if (panel) {\n panel.style.display = 'none';\n }\n };\n\n return html`<div class=\"autofilled-notification-panel\">\n <span class=\"autofilled-notification-panel__icon\">!</span>\n <span class=\"autofilled-notification-panel__message\">\n ${props.translateService.instant('processManagement.autofilled.sidebarMessage')}\n </span>\n <button class=\"autofilled-notification-panel__dismiss\" onClick=${handleDismiss}>×</button>\n </div>`;\n};\n\nconst ValtimoPropertiesProviderModule = {\n __init__: ['customPropertiesProvider'],\n customPropertiesProvider: ['type', ValtimoPropertiesProvider],\n};\n\nexport {ValtimoPropertiesProviderModule};\n","/*\n * Copyright 2015-2026 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 READ_ONLY_PRIORITY = 1;\n\nconst removeEditActions = (node: any): void => {\n if (!node || typeof node !== 'object') return;\n\n if (node.add) node.add = null;\n\n if (node.remove) node.remove = null;\n\n if (Array.isArray(node.entries)) {\n node.entries.forEach((entry: any) => removeEditActions(entry));\n }\n\n if (Array.isArray(node.items)) {\n node.items.forEach((item: any) => removeEditActions(item));\n }\n};\n\nclass ReadOnlyPropertiesProvider {\n static $inject = ['propertiesPanel'];\n\n constructor(propertiesPanel: any) {\n propertiesPanel.registerProvider(READ_ONLY_PRIORITY, this);\n }\n\n public getGroups(): (groups: any[]) => any[] {\n return (groups: any[]) => {\n groups.forEach(group => removeEditActions(group));\n return groups;\n };\n }\n}\n\nconst ENTRY = '.bio-properties-panel-entry';\n\nconst READ_ONLY_INPUT_TYPES = ['email', 'number', 'password', 'search', 'tel', 'text', 'url'];\n\nconst makeControlsReadOnly = (container: HTMLElement): void => {\n container.querySelectorAll<HTMLInputElement>(`${ENTRY} input`).forEach(input => {\n if (READ_ONLY_INPUT_TYPES.includes(input.type)) {\n input.readOnly = true;\n } else {\n input.disabled = true;\n }\n });\n\n container\n .querySelectorAll<HTMLTextAreaElement>(`${ENTRY} textarea`)\n .forEach(textarea => (textarea.readOnly = true));\n\n container\n .querySelectorAll<HTMLSelectElement | HTMLButtonElement>(`${ENTRY} select, ${ENTRY} button`)\n .forEach(control => (control.disabled = true));\n\n container\n .querySelectorAll(`${ENTRY} [contenteditable=\"true\"]`)\n .forEach(editor => editor.setAttribute('contenteditable', 'false'));\n};\n\nclass ReadOnlyPropertiesPanel {\n static $inject = ['config.propertiesPanel', 'eventBus'];\n\n private _observer: MutationObserver | null = null;\n\n constructor(config: any, eventBus: any) {\n const parent: HTMLElement | undefined = config?.parent;\n\n if (!parent) return;\n\n this._observer = new MutationObserver(() => makeControlsReadOnly(parent));\n this._observer.observe(parent, {childList: true, subtree: true});\n\n eventBus.on('diagram.destroy', () => this._observer?.disconnect());\n }\n}\n\nconst ReadOnlyPropertiesPanelModule = {\n __init__: ['readOnlyPropertiesProvider', 'readOnlyPropertiesPanel'],\n readOnlyPropertiesProvider: ['type', ReadOnlyPropertiesProvider],\n readOnlyPropertiesPanel: ['type', ReadOnlyPropertiesPanel],\n};\n\nexport {ReadOnlyPropertiesPanel, ReadOnlyPropertiesPanelModule, ReadOnlyPropertiesProvider};\n","/*\n * Copyright 2015-2026 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 {ProcessBeanDto} from '../../../models';\n\ninterface ParsedExpression {\n beanName: string | null;\n methodName: string | null;\n parameters: string[];\n}\n\nclass ExpressionAutocomplete {\n static $inject = ['eventBus'];\n\n private processBeans: ProcessBeanDto[] = [];\n private panelContainer: HTMLElement | null = null;\n private stylesInjected = false;\n private observer: MutationObserver | null = null;\n private documentClickHandlers: Array<(e: MouseEvent) => void> = [];\n\n constructor(eventBus: any) {\n this.injectStyles();\n\n eventBus.on('diagram.destroy', () => {\n this.dispose();\n });\n }\n\n private dispose(): void {\n this.cleanupClickHandlers();\n if (this.observer) {\n this.observer.disconnect();\n this.observer = null;\n }\n this.panelContainer = null;\n }\n\n private cleanupClickHandlers(): void {\n for (const handler of this.documentClickHandlers) {\n document.removeEventListener('click', handler);\n }\n this.documentClickHandlers = [];\n }\n\n public setProcessBeans(beans: ProcessBeanDto[]): void {\n this.processBeans = beans;\n }\n\n public setPanelContainer(container: HTMLElement): void {\n this.panelContainer = container;\n this.startObserving();\n setTimeout(() => this.scanAndAttach(), 100);\n }\n\n private startObserving(): void {\n if (!this.panelContainer || this.observer) return;\n\n this.observer = new MutationObserver(() => {\n this.scanAndAttach();\n });\n\n this.observer.observe(this.panelContainer, {\n childList: true,\n subtree: true,\n });\n }\n\n private scanAndAttach(): void {\n if (!this.panelContainer) return;\n\n const allInputs = this.panelContainer.querySelectorAll<HTMLInputElement | HTMLTextAreaElement>(\n 'input, textarea'\n );\n\n allInputs.forEach(input => {\n if (input.dataset.autocompleteAttached) return;\n if (this.isExpressionField(input)) {\n this.attachAutocomplete(input);\n input.dataset.autocompleteAttached = 'true';\n }\n });\n }\n\n private isExpressionField(input: HTMLInputElement | HTMLTextAreaElement): boolean {\n const type = input.type?.toLowerCase();\n if (input.tagName !== 'TEXTAREA' && !(input.tagName === 'INPUT' && (!type || type === 'text'))) {\n return false;\n }\n\n if (input.closest('.expression-editor-simple')) {\n return false;\n }\n\n const name = (input.name || input.id || '').toLowerCase();\n\n if (name.includes('resultvariable') || name.includes('result-variable')) {\n return false;\n }\n\n if (name.includes('expression') || name.includes('delegateexpression')) {\n return true;\n }\n\n const entry = input.closest('.bio-properties-panel-entry');\n if (entry) {\n const entryId = (entry.getAttribute('data-entry-id') || '').toLowerCase();\n\n if (entryId.includes('resultvariable') || entryId.includes('result-variable')) {\n return false;\n }\n\n if (entryId.includes('expression')) {\n return true;\n }\n }\n\n const label = input.closest('.bio-properties-panel-entry')?.querySelector('label');\n if (label) {\n const labelText = label.textContent?.toLowerCase() || '';\n\n if (labelText.includes('result variable') || labelText.includes('resultvariable')) {\n return false;\n }\n\n if (labelText.includes('expression') || labelText.includes('delegate')) {\n return true;\n }\n }\n\n return false;\n }\n\n private attachAutocomplete(input: HTMLInputElement | HTMLTextAreaElement): void {\n this.wrapWithEditor(input);\n }\n\n // --- Expression Editor (Dropdown/Manual toggle) ---\n\n private wrapWithEditor(input: HTMLInputElement | HTMLTextAreaElement): void {\n const wrapper = document.createElement('div');\n wrapper.className = 'expression-editor-wrapper';\n\n const parsed = this.parseExpression(input.value);\n const canUseDropdown = !input.value || (parsed.beanName !== null && parsed.methodName !== null);\n const initialMode = canUseDropdown ? 'simple' : 'technical';\n wrapper.dataset.mode = initialMode;\n\n input.parentNode?.insertBefore(wrapper, input);\n\n const toggle = document.createElement('div');\n toggle.className = 'expression-editor-toggle';\n toggle.innerHTML = `\n <button type=\"button\" class=\"expression-editor-toggle__btn${initialMode === 'simple' ? ' active' : ''}\" data-mode=\"simple\">Dropdown</button>\n <button type=\"button\" class=\"expression-editor-toggle__btn${initialMode === 'technical' ? ' active' : ''}\" data-mode=\"technical\">Manual</button>\n `;\n\n const technicalContainer = document.createElement('div');\n technicalContainer.className = 'expression-editor-technical';\n technicalContainer.appendChild(input);\n technicalContainer.style.display = initialMode === 'technical' ? 'block' : 'none';\n\n const simpleContainer = document.createElement('div');\n simpleContainer.className = 'expression-editor-simple';\n simpleContainer.style.display = initialMode === 'simple' ? 'block' : 'none';\n\n wrapper.appendChild(toggle);\n wrapper.appendChild(technicalContainer);\n wrapper.appendChild(simpleContainer);\n\n toggle.querySelectorAll('button').forEach(btn => {\n btn.addEventListener('click', e => {\n e.preventDefault();\n this.setEditorMode(wrapper, input, (btn as HTMLButtonElement).dataset.mode || 'technical');\n });\n });\n\n if (initialMode === 'simple') {\n this.renderSimpleMode(simpleContainer, input);\n }\n }\n\n private setEditorMode(\n wrapper: HTMLElement,\n input: HTMLInputElement | HTMLTextAreaElement,\n mode: string\n ): void {\n wrapper.dataset.mode = mode;\n\n wrapper.querySelectorAll('.expression-editor-toggle__btn').forEach(btn => {\n btn.classList.toggle('active', (btn as HTMLButtonElement).dataset.mode === mode);\n });\n\n const technicalContainer = wrapper.querySelector('.expression-editor-technical') as HTMLElement;\n const simpleContainer = wrapper.querySelector('.expression-editor-simple') as HTMLElement;\n\n const invalidArgsStr = wrapper.dataset.invalidArgs;\n const invalidArgs: number[] = invalidArgsStr ? JSON.parse(invalidArgsStr) : [];\n\n if (mode === 'simple') {\n technicalContainer.style.display = 'none';\n simpleContainer.style.display = 'block';\n input.classList.remove('validation-error-param');\n this.renderSimpleMode(simpleContainer, input);\n if (invalidArgs.length > 0) {\n setTimeout(() => {\n for (const idx of invalidArgs) {\n const paramInput = simpleContainer.querySelector(\n `.expression-editor-param input[data-param-index=\"${idx}\"]`\n );\n if (paramInput) {\n paramInput.classList.add('validation-error-param');\n }\n }\n }, 0);\n }\n } else {\n technicalContainer.style.display = 'block';\n simpleContainer.style.display = 'none';\n if (invalidArgs.length > 0) {\n input.classList.add('validation-error-param');\n }\n setTimeout(() => input.blur(), 0);\n }\n }\n\n private renderSimpleMode(container: HTMLElement, input: HTMLInputElement | HTMLTextAreaElement): void {\n this.cleanupClickHandlers();\n\n const parsed = this.parseExpression(input.value);\n\n container.innerHTML = `\n <div class=\"expression-editor-field\" data-container=\"bean\">\n <label>Service</label>\n </div>\n <div class=\"expression-editor-field\" data-container=\"method\"></div>\n <div data-container=\"params\"></div>\n `;\n\n const beanContainer = container.querySelector('[data-container=\"bean\"]') as HTMLElement;\n this.renderCustomSelect(\n beanContainer,\n this.processBeans.map(b => ({\n value: b.name,\n label: this.camelCaseToReadable(b.name),\n description: b.description,\n })),\n parsed.beanName,\n 'Select service...',\n 'bean',\n beanName => {\n this.renderMethodDropdown(container, beanName, null, input);\n this.renderParameterInputs(container, beanName, null, [], input);\n this.buildAndSetExpression(container, input);\n }\n );\n\n if (parsed.beanName) {\n this.renderMethodDropdown(container, parsed.beanName, parsed.methodName, input);\n }\n\n if (parsed.beanName && parsed.methodName) {\n this.renderParameterInputs(container, parsed.beanName, parsed.methodName, parsed.parameters, input);\n }\n }\n\n private renderCustomSelect(\n container: HTMLElement,\n options: {value: string; label: string; description?: string | null}[],\n selectedValue: string | null,\n placeholder: string,\n dataField: string,\n onChange: (value: string) => void\n ): void {\n const wrapper = document.createElement('div');\n wrapper.className = 'expression-editor-custom-select';\n wrapper.dataset.field = dataField;\n wrapper.dataset.value = selectedValue || '';\n\n const nativeSelect = document.createElement('select');\n nativeSelect.className = 'bio-properties-panel-input';\n nativeSelect.innerHTML =\n `<option value=\"\" disabled ${!selectedValue ? 'selected' : ''}>${this.escapeHtml(placeholder)}</option>` +\n options\n .map(\n opt =>\n `<option value=\"${this.escapeAttr(opt.value)}\" ${opt.value === selectedValue ? 'selected' : ''}>${this.escapeHtml(opt.label)}</option>`\n )\n .join('');\n\n const selectedOption = options.find(o => o.value === selectedValue);\n if (selectedOption?.description) {\n nativeSelect.title = selectedOption.description;\n }\n\n const dropdown = document.createElement('div');\n dropdown.className = 'expression-editor-custom-select__dropdown';\n dropdown.style.display = 'none';\n\n let selectedIndex = options.findIndex(o => o.value === selectedValue);\n if (selectedIndex < 0) selectedIndex = 0;\n\n const renderItems = () => {\n dropdown.innerHTML = options\n .map(\n (opt, i) => `\n <div class=\"expression-editor-custom-select__item${opt.value === selectedValue ? ' selected' : ''}\" data-index=\"${i}\" data-value=\"${this.escapeAttr(opt.value)}\">\n <div class=\"expression-editor-custom-select__label\">${this.escapeHtml(opt.label)}</div>\n ${opt.description ? `<div class=\"expression-editor-custom-select__desc\">${this.escapeHtml(opt.description)}</div>` : ''}\n </div>\n `\n )\n .join('');\n\n dropdown.querySelectorAll('.expression-editor-custom-select__item').forEach(item => {\n item.addEventListener('click', e => {\n e.stopPropagation();\n const value = (item as HTMLElement).dataset.value!;\n const selected = options.find(o => o.value === value);\n wrapper.dataset.value = value;\n nativeSelect.value = value;\n nativeSelect.title = selected?.description || '';\n dropdown.style.display = 'none';\n onChange(value);\n });\n });\n };\n\n renderItems();\n\n nativeSelect.addEventListener('mousedown', e => {\n e.preventDefault();\n nativeSelect.focus();\n const isOpen = dropdown.style.display !== 'none';\n dropdown.style.display = isOpen ? 'none' : 'block';\n });\n\n nativeSelect.addEventListener('keydown', e => {\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {\n e.preventDefault();\n if (dropdown.style.display === 'none') {\n dropdown.style.display = 'block';\n }\n const delta = e.key === 'ArrowDown' ? 1 : -1;\n selectedIndex = Math.max(0, Math.min(options.length - 1, selectedIndex + delta));\n dropdown.querySelectorAll('.expression-editor-custom-select__item').forEach((item, i) => {\n item.classList.toggle('highlighted', i === selectedIndex);\n });\n dropdown.children[selectedIndex]?.scrollIntoView({block: 'nearest'});\n } else if (e.key === 'Enter' && dropdown.style.display !== 'none') {\n e.preventDefault();\n const opt = options[selectedIndex];\n if (opt) {\n wrapper.dataset.value = opt.value;\n nativeSelect.value = opt.value;\n nativeSelect.title = opt.description || '';\n dropdown.style.display = 'none';\n onChange(opt.value);\n }\n } else if (e.key === 'Escape') {\n dropdown.style.display = 'none';\n } else if (e.key === ' ' && dropdown.style.display === 'none') {\n e.preventDefault();\n dropdown.style.display = 'block';\n }\n });\n\n const closeHandler = (e: MouseEvent) => {\n if (!wrapper.contains(e.target as Node)) {\n dropdown.style.display = 'none';\n }\n };\n document.addEventListener('click', closeHandler);\n this.documentClickHandlers.push(closeHandler);\n\n wrapper.appendChild(nativeSelect);\n wrapper.appendChild(dropdown);\n container.appendChild(wrapper);\n }\n\n private renderMethodDropdown(\n container: HTMLElement,\n beanName: string,\n selectedMethod: string | null,\n input: HTMLInputElement | HTMLTextAreaElement\n ): void {\n const methodContainer = container.querySelector('[data-container=\"method\"]') as HTMLElement;\n if (!methodContainer) return;\n\n const bean = this.processBeans.find(b => b.name === beanName);\n if (!bean) {\n methodContainer.innerHTML = '';\n return;\n }\n\n methodContainer.innerHTML = '<label>Method</label>';\n\n this.renderCustomSelect(\n methodContainer,\n bean.methods.map(m => ({\n value: m.name,\n label: this.camelCaseToReadable(m.name),\n description: m.description,\n })),\n selectedMethod,\n 'Select method...',\n 'method',\n methodName => {\n this.renderParameterInputs(container, beanName, methodName, [], input);\n this.buildAndSetExpression(container, input);\n }\n );\n }\n\n private renderParameterInputs(\n container: HTMLElement,\n beanName: string,\n methodName: string | null,\n values: string[],\n input: HTMLInputElement | HTMLTextAreaElement\n ): void {\n const paramsContainer = container.querySelector('[data-container=\"params\"]');\n if (!paramsContainer) return;\n\n if (!methodName) {\n paramsContainer.innerHTML = '';\n return;\n }\n\n const bean = this.processBeans.find(b => b.name === beanName);\n const method = bean?.methods.find(m => m.name === methodName);\n\n if (!method || method.parameters.length === 0) {\n paramsContainer.innerHTML = '';\n return;\n }\n\n paramsContainer.innerHTML = method.parameters\n .map(\n (p, i) => `\n <div class=\"expression-editor-param\">\n <label>${this.escapeHtml(p.name)} <span class=\"type\">(${this.escapeHtml(p.type)})</span></label>\n <input type=\"text\" class=\"expression-editor-input\" data-param-index=\"${i}\" value=\"${this.escapeAttr(values[i] || '')}\">\n </div>\n `\n )\n .join('');\n\n paramsContainer.querySelectorAll('input').forEach(paramInput => {\n paramInput.addEventListener('input', () => {\n this.buildAndSetExpression(container, input);\n });\n });\n }\n\n private buildAndSetExpression(\n simpleContainer: HTMLElement,\n input: HTMLInputElement | HTMLTextAreaElement\n ): void {\n const beanSelect = simpleContainer.querySelector('[data-field=\"bean\"]') as HTMLElement;\n const methodSelect = simpleContainer.querySelector('[data-field=\"method\"]') as HTMLElement;\n const paramInputs = simpleContainer.querySelectorAll(\n '[data-param-index]'\n ) as NodeListOf<HTMLInputElement>;\n\n const bean = beanSelect?.dataset.value;\n const method = methodSelect?.dataset.value;\n\n if (!bean || !method) {\n input.value = '';\n input.dispatchEvent(new Event('input', {bubbles: true}));\n return;\n }\n\n const params = Array.from(paramInputs).map(i => i.value);\n input.value = `\\${${bean}.${method}(${params.join(', ')})}`;\n input.dispatchEvent(new Event('input', {bubbles: true}));\n }\n\n private parseExpression(expr: string): ParsedExpression {\n const match = expr.match(/^\\$\\{([a-zA-Z_]\\w*)\\.([a-zA-Z_]\\w*)\\((.*)\\)\\}$/);\n if (!match) return {beanName: null, methodName: null, parameters: []};\n return {\n beanName: match[1],\n methodName: match[2],\n parameters: this.parseParameters(match[3]),\n };\n }\n\n private parseParameters(paramsStr: string): string[] {\n const params: string[] = [];\n let current = '';\n let depth = 0;\n let inString = false;\n let stringChar = '';\n\n for (const char of paramsStr) {\n if (!inString && (char === '\"' || char === \"'\")) {\n inString = true;\n stringChar = char;\n current += char;\n } else if (inString && char === stringChar) {\n inString = false;\n current += char;\n } else if (!inString && (char === '(' || char === '[')) {\n depth++;\n current += char;\n } else if (!inString && (char === ')' || char === ']')) {\n depth--;\n current += char;\n } else if (!inString && char === ',' && depth === 0) {\n params.push(current.trim());\n current = '';\n } else {\n current += char;\n }\n }\n if (current.trim()) params.push(current.trim());\n return params;\n }\n\n private escapeHtml(text: string): string {\n const div = document.createElement('div');\n div.textContent = text;\n return div.innerHTML;\n }\n\n private escapeAttr(text: string): string {\n return text\n .replace(/&/g, '&')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(/</g, '<')\n .replace(/>/g, '>');\n }\n\n private camelCaseToReadable(text: string): string {\n return text\n .replace(/([a-z])([A-Z])/g, '$1 $2')\n .replace(/^./, str => str.toUpperCase());\n }\n\n private injectStyles(): void {\n if (this.stylesInjected) return;\n this.stylesInjected = true;\n\n const style = document.createElement('style');\n style.textContent = `\n /* Expression Editor Toggle UI */\n .expression-editor-wrapper {\n width: 100%;\n }\n .expression-editor-toggle {\n display: flex;\n gap: 0;\n margin-bottom: 8px;\n }\n .expression-editor-toggle__btn {\n flex: 1;\n padding: 4px 8px;\n border: 1px solid #ccc;\n background: #fafafa;\n color: #333;\n cursor: pointer;\n font-size: 13px;\n font-family: inherit;\n }\n .expression-editor-toggle__btn:first-child {\n border-radius: 2px 0 0 2px;\n }\n .expression-editor-toggle__btn:last-child {\n border-radius: 0 2px 2px 0;\n border-left: none;\n }\n .expression-editor-toggle__btn.active {\n background: #2b79bd;\n color: white;\n border-color: #2b79bd;\n }\n .expression-editor-toggle__btn:hover:not(.active) {\n background: #fff;\n }\n .expression-editor-simple {\n display: flex;\n flex-direction: column;\n gap: 6px;\n }\n .expression-editor-field label,\n .expression-editor-param > label {\n display: block;\n font-size: var(--text-size-small, 12px);\n color: var(--label-color, #666);\n margin-bottom: 2px;\n }\n .expression-editor-field label .type,\n .expression-editor-param label .type {\n color: var(--description-color, #808080);\n }\n .expression-editor-select,\n .expression-editor-input {\n display: block;\n width: 100%;\n padding: 3px 6px 2px;\n border: 1px solid #ccc;\n border-radius: 2px;\n font-size: 14px;\n background-color: #fafafa;\n font-family: inherit;\n box-sizing: border-box;\n }\n .expression-editor-select:focus,\n .expression-editor-input:focus {\n outline: none;\n background-color: hsl(205, 100%, 95%);\n border-color: hsl(205, 100%, 50%);\n }\n /* Override bpmn-js input styles to prevent focus-within highlighting */\n .expression-editor-technical input,\n .expression-editor-technical textarea {\n background-color: #fafafa !important;\n border-color: #ccc !important;\n }\n /* Override native select and input styles in simple mode */\n .expression-editor-simple select.bio-properties-panel-input,\n .expression-editor-simple .expression-editor-input {\n background-color: #fafafa !important;\n border-color: #ccc !important;\n }\n .expression-editor-simple select.bio-properties-panel-input:focus,\n .expression-editor-simple .expression-editor-input:focus {\n background-color: hsl(205, 100%, 95%) !important;\n border-color: hsl(205, 100%, 50%) !important;\n }\n .expression-editor-technical input:focus,\n .expression-editor-technical textarea:focus {\n background-color: hsl(205, 100%, 95%) !important;\n border-color: hsl(205, 100%, 50%) !important;\n }\n .expression-editor-param {\n padding-left: 8px;\n border-left: 2px solid #ccc;\n margin-top: 4px;\n }\n .expression-editor-description {\n font-size: var(--text-size-small, 12px);\n color: var(--description-color, #808080);\n margin-top: 4px;\n font-style: italic;\n }\n\n /* Custom Select (Listbox) */\n .expression-editor-custom-select {\n position: relative;\n width: 100%;\n }\n .expression-editor-custom-select select {\n width: 100%;\n }\n .expression-editor-custom-select__dropdown {\n position: absolute;\n top: 100%;\n left: 0;\n right: 0;\n max-height: 200px;\n overflow-y: auto;\n background: #fff;\n border: 1px solid #ccc;\n border-radius: 2px;\n box-shadow: 0 2px 6px rgba(0,0,0,0.15);\n z-index: 1000;\n margin-top: 2px;\n }\n .expression-editor-custom-select__item {\n padding: 8px;\n cursor: pointer;\n border-bottom: 1px solid #eee;\n }\n .expression-editor-custom-select__item:last-child {\n border-bottom: none;\n }\n .expression-editor-custom-select__item:hover,\n .expression-editor-custom-select__item.selected,\n .expression-editor-custom-select__item.highlighted {\n background: hsl(205, 100%, 95%);\n }\n .expression-editor-custom-select__label {\n font-weight: 500;\n font-size: 14px;\n color: #333;\n }\n .expression-editor-custom-select__desc {\n font-size: 11px;\n color: #666;\n margin-top: 2px;\n }\n `;\n document.head.appendChild(style);\n }\n}\n\nconst ExpressionAutocompleteModule = {\n __init__: ['expressionAutocomplete'],\n expressionAutocomplete: ['type', ExpressionAutocomplete],\n};\n\nexport {ExpressionAutocompleteModule, ExpressionAutocomplete};\n","/*\n * Copyright 2015-2025 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 './valtimo-properties-provider';\nexport * from './read-only-properties-panel';\nexport * from './expression-autocomplete';\n","/*\n * Copyright 2015-2026 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 {CommonModule} from '@angular/common';\nimport {HttpErrorResponse, HttpResponse} from '@angular/common/http';\nimport {AfterViewInit, Component, ElementRef, OnDestroy, signal, ViewChild} from '@angular/core';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {\n BreadcrumbService,\n ConfirmationModalModule,\n FitPageDirective,\n ModalService,\n OverflowMenuModule,\n PageHeaderService,\n PageTitleService,\n RenderInPageHeaderDirective,\n} from '@valtimo/components';\nimport {\n BuildingBlockManagementParams,\n BuildingBlockProcessDefinitionWithLinksDto,\n CaseManagementParams,\n EditPermissionsService,\n getBuildingBlockManagementRouteParams,\n getCaseManagementRouteParams,\n GlobalNotificationService,\n ManagementContext,\n ProcessDefinitionWithPropertiesDto,\n} from '@valtimo/shared';\nimport {AutofilledElement, ProcessService} from '@valtimo/process';\nimport {\n BuildingBlockProcessDefinitionConflictResponse,\n BuildingBlockProcessLinkCreateDto,\n BuildingBlockProcessLinkUpdateDto,\n ProcessDefinitionConflictResponse,\n ProcessLinkBuildingBlockApiService,\n ProcessLinkButtonService,\n ProcessLinkCreateEvent,\n ProcessLinkModule,\n ProcessLinkService,\n ProcessLinkStateService,\n ProcessLinkStepService,\n} from '@valtimo/process-link';\nimport {\n BpmnPropertiesPanelModule,\n BpmnPropertiesProviderModule,\n CamundaPlatformPropertiesProviderModule,\n} from 'bpmn-js-properties-panel';\nimport Modeler from 'bpmn-js/lib/Modeler';\nimport NavigatedViewer from 'bpmn-js/lib/NavigatedViewer';\nimport camundaPlatformBehaviors from 'camunda-bpmn-js-behaviors/lib/camunda-platform';\nimport CamundaBpmnModdle from 'camunda-bpmn-moddle/resources/camunda.json';\nimport {\n ButtonModule,\n DropdownModule,\n IconModule,\n IconService,\n ListItem,\n LoadingModule,\n SelectModule,\n TagModule,\n ToggleModule,\n TooltipModule,\n} from 'carbon-components-angular';\nimport {isEqual} from 'lodash';\nimport {NGXLogger} from 'ngx-logger';\nimport {\n BehaviorSubject,\n combineLatest,\n filter,\n from,\n map,\n merge,\n Observable,\n of,\n startWith,\n Subject,\n Subscription,\n switchMap,\n take,\n tap,\n} from 'rxjs';\nimport {distinctUntilChanged} from 'rxjs/operators';\nimport {EMPTY_BPMN, PROCESS_MANAGEMENT_BUILDER_TEST_IDS} from '../../constants';\nimport {\n ActivityMarkerInfo,\n OpenProcessLinkModalEvent,\n ProcessDefinitionResult,\n ProcessDefinitionValidationError,\n ProcessManagementWindow,\n UpdateProcessDefinitionCaseDefinitionRequest,\n} from '../../models';\nimport {ProcessManagementEditorService, ProcessManagementService} from '../../services';\nimport {\n applyBuildingBlockCalledElement,\n clearBuildingBlockCalledElement,\n DisableBpmnWriteModule,\n disableCommands,\n getContextObservable,\n getLatestProcessDefinition,\n initBreadcrumbsForContext,\n} from '../../utils';\nimport {\n ValtimoPropertiesProviderModule,\n ReadOnlyPropertiesPanelModule,\n ExpressionAutocompleteModule,\n ExpressionAutocomplete,\n} from './panel';\nimport {PluginTranslationService} from '@valtimo/plugin';\nimport {ProcessBeanService} from '../../services';\nimport {View16, ViewOff16} from '@carbon/icons';\n\n@Component({\n selector: 'valtimo-process-management-builder',\n templateUrl: './process-management-builder.component.html',\n styleUrls: ['./process-management-builder.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n FitPageDirective,\n LoadingModule,\n RenderInPageHeaderDirective,\n DropdownModule,\n ReactiveFormsModule,\n SelectModule,\n ButtonModule,\n IconModule,\n TranslateModule,\n TagModule,\n ProcessLinkModule,\n ToggleModule,\n TooltipModule,\n ConfirmationModalModule,\n OverflowMenuModule,\n ],\n providers: [\n ProcessManagementEditorService,\n ProcessLinkStateService,\n ProcessLinkStepService,\n ProcessLinkButtonService,\n ],\n})\nexport class ProcessManagementBuilderComponent implements AfterViewInit, OnDestroy {\n @ViewChild('modeler', {static: false}) modelerElementRef!: ElementRef;\n @ViewChild('modelerPanel', {static: false}) modelerPanelElementRef!: ElementRef;\n @ViewChild('viewer', {static: false}) viewerElementRef!: ElementRef;\n @ViewChild('viewerPanel', {static: false}) viewerPanelElementRef!: ElementRef;\n\n private readonly _selectedProcess$ = new BehaviorSubject<\n ProcessDefinitionResult | BuildingBlockProcessDefinitionWithLinksDto | 'create' | null\n >(null);\n\n public readonly loading$ = new BehaviorSubject<boolean>(true);\n\n private _bpmnModeler!: Modeler;\n private _bpmnViewer!: NavigatedViewer;\n private _validationErrorElementIds: string[] = [];\n private _validationHoverHandler: ((event: any) => void) | null = null;\n private _validationOutHandler: ((event: any) => void) | null = null;\n private _selectionChangedHandler: ((event: any) => void) | null = null;\n private _fieldInputCleanupFns: (() => void)[] = [];\n private _expressionAutocomplete: ExpressionAutocomplete | null = null;\n private _activityMarkerElementIds: string[] = [];\n private _activityMarkerUpdateTimeout: any = null;\n private _autofilledElements: AutofilledElement[] = [];\n private _autofilledElementIds: string[] = [];\n private _viewerActive = false;\n\n private get activeEditor(): Modeler | NavigatedViewer {\n return this._viewerActive ? this._bpmnViewer : this._bpmnModeler;\n }\n\n private get loadedEditors(): (Modeler | NavigatedViewer)[] {\n return [this._bpmnModeler, this._bpmnViewer].filter(editor => !!editor);\n }\n\n public readonly isReadOnlyProcess$ = new BehaviorSubject<boolean>(false);\n public readonly isSystemProcess$ = new BehaviorSubject<boolean>(false);\n\n public readonly draft$ = new BehaviorSubject<boolean>(false);\n public readonly canInitializeDocument$ = new BehaviorSubject<boolean>(false);\n public readonly startableByUser$ = new BehaviorSubject<boolean>(false);\n public readonly validationErrors$ = this.processManagementEditorService.validationErrors$;\n\n public readonly $markersVisible = signal<boolean>(true);\n\n protected readonly testIds = PROCESS_MANAGEMENT_BUILDER_TEST_IDS;\n\n public readonly selectedProcessDefinitionXml$ =\n this.processManagementEditorService.selectionProcessDefinition$.pipe(\n filter(selectedProcessDefinition => !!selectedProcessDefinition?.id),\n distinctUntilChanged((previous, current) => isEqual(previous, current)),\n tap(selectedProcessDefinition => {\n this.loading$.next(true);\n this.pageTitleService.setCustomPageTitle(selectedProcessDefinition?.name || '-');\n }),\n switchMap(selectedProcessDefinition =>\n this.processService.getProcessDefinitionXml(selectedProcessDefinition.id)\n ),\n tap(result => {\n this.cleanUpListenersOnModeler();\n this._autofilledElements = result.autofilledElements ?? [];\n this.processManagementEditorService.setAutofilledElements(this._autofilledElements);\n this._bpmnModeler?.importXML(result.bpmn20Xml).then(() => {\n this.highlightAutofilledElements();\n });\n this._bpmnViewer?.importXML(result.bpmn20Xml).then(() => {\n this.highlightAutofilledElements();\n });\n this.isReadOnlyProcess$.next(result.readOnly);\n this.isSystemProcess$.next(result.systemProcess);\n this.loading$.next(false);\n })\n );\n\n public readonly changesPending$ = new BehaviorSubject<boolean>(false);\n\n public readonly editParam$: Observable<string | 'create' | null> = this.route.url.pipe(\n map(segments => {\n const lastSegment = segments[segments.length - 1]?.path;\n if (lastSegment === 'create') {\n return 'create';\n }\n const param = this.route.snapshot.paramMap.get('processDefinitionKey');\n const idParam = this.route.snapshot.paramMap.get('processDefinitionId');\n return param || idParam || null;\n }),\n filter(editParam => !!editParam)\n );\n\n public readonly context$ = getContextObservable(this.route);\n\n public readonly managementParams$ = this.context$.pipe(\n filter(context => context === 'case' || context === 'buildingBlock'),\n switchMap(context =>\n context === 'case'\n ? getCaseManagementRouteParams(this.route)\n : getBuildingBlockManagementRouteParams(this.route)\n )\n );\n\n public readonly hasEditPermissions$: Observable<boolean> = this.context$.pipe(\n switchMap(context => {\n if (context === 'independent') {\n return of(true);\n }\n\n return this.managementParams$.pipe(\n switchMap(params =>\n this.editPermissionsService.hasPermissionsToEditBasedOnContext(params, context)\n )\n );\n })\n );\n\n public readonly viewerActive$: Observable<boolean> = combineLatest([\n this.isReadOnlyProcess$,\n this.hasEditPermissions$,\n ]).pipe(\n map(([isReadOnlyProcess, hasEditPermissions]) => isReadOnlyProcess || !hasEditPermissions),\n distinctUntilChanged()\n );\n\n private readonly _reload$ = new Subject<null>();\n\n public readonly processDefinitionVersions$: Observable<ProcessDefinitionWithPropertiesDto[]> =\n combineLatest([this.editParam$, this.context$, this._reload$.pipe(startWith(null))]).pipe(\n switchMap(([editParam, context]) =>\n context === 'independent'\n ? this.processManagementService.getUnlinkedProcessDefinitionsByKey(editParam)\n : of([] as ProcessDefinitionResult[])\n ),\n map(result => result.map(resultItem => resultItem.processDefinition)),\n tap(processDefinitions => {\n this.changesPending$.next(false);\n this.setSelectedProcessDefinitionToLatest(processDefinitions);\n })\n );\n\n public readonly processDefinitionVersionsListItems$: Observable<ListItem[]> = combineLatest([\n this.processDefinitionVersions$,\n this.processManagementEditorService.selectionProcessDefinition$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([processDefinitionVersions, selectionProcessDefinition]) =>\n processDefinitionVersions\n .map(processDefinitionVersion => ({\n id: processDefinitionVersion.version,\n content: `${this.translateService.instant('processManagement.version')}${processDefinitionVersion.version}`,\n selected: selectionProcessDefinition.version === processDefinitionVersion.version,\n processDefinitionVersion,\n }))\n .sort((a, b) => b.id - a.id)\n )\n );\n\n public readonly compactMode$ = this.pageHeaderService.compactMode$;\n\n public readonly creatingNewProcess$ = new BehaviorSubject<boolean>(false);\n\n public readonly updatingProcessDefinitionCaseDefinition$ = new BehaviorSubject<boolean>(false);\n\n public readonly showWarningConfirmationModal$ = new BehaviorSubject<boolean>(false);\n private _pendingDeployAction: (() => void) | null = null;\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly breadcrumbService: BreadcrumbService,\n private readonly iconService: IconService,\n private readonly logger: NGXLogger,\n private readonly modalService: ModalService,\n private readonly notificationService: GlobalNotificationService,\n private readonly pageHeaderService: PageHeaderService,\n private readonly pageTitleService: PageTitleService,\n private readonly processLinkService: ProcessLinkService,\n private readonly processLinkStateService: ProcessLinkStateService,\n private readonly processManagementEditorService: ProcessManagementEditorService,\n private readonly processManagementService: ProcessManagementService,\n private readonly processService: ProcessService,\n private readonly route: ActivatedRoute,\n private readonly router: Router,\n private readonly translateService: TranslateService,\n private readonly pluginTranslationService: PluginTranslationService,\n private readonly editPermissionsService: EditPermissionsService,\n private readonly processLinkBuildingBlockApiService: ProcessLinkBuildingBlockApiService,\n private readonly processBeanService: ProcessBeanService\n ) {\n this.iconService.registerAll([View16, ViewOff16]);\n this.setProcessManagementWindow();\n }\n\n public ngAfterViewInit(): void {\n this.pageTitleService.disableReset();\n this.pageHeaderService.enableTitleAsBreadcrumb();\n this.openParamsAndContextSubscription();\n this.initModeler();\n this.initViewer();\n this.subscribeToOpenProcessLinkModalEvents();\n this.subscribeToProcessLinkUpdateEvents();\n this.subscribeToProcessLinkCreateEvents();\n this.subscribeToProcessLinkDeleteEvents();\n this.subscribeToAutofillDismissEvents();\n this.subscribeToViewerActive();\n this.initEditing();\n }\n\n public ngOnDestroy(): void {\n this.clearValidationErrors();\n this.clearActivityMarkers();\n if (this._activityMarkerUpdateTimeout) {\n clearTimeout(this._activityMarkerUpdateTimeout);\n }\n this._bpmnModeler?.destroy();\n this._bpmnViewer?.destroy();\n this._subscriptions.unsubscribe();\n this.pageTitleService.enableReset();\n this.pageHeaderService.disableTitleAsBreadcrumb();\n this.pageTitleService.clearPageActionsViewContainerRef();\n this.breadcrumbService.clearThirdBreadcrumb();\n this.breadcrumbService.clearFourthBreadcrumb();\n }\n\n public exportBpmn(isReadOnlyProcess: boolean): void {\n (isReadOnlyProcess ? from(this._bpmnViewer.saveXML()) : from(this._bpmnModeler.saveXML()))\n .pipe(take(1))\n .subscribe(result => {\n const file = new Blob([result.xml ?? ''], {type: 'text/xml'});\n const processDefinitionKey =\n this.processManagementEditorService.selectionProcessDefinition?.key;\n\n this.downloadFile(\n file,\n processDefinitionKey ? `${processDefinitionKey}.bpmn` : 'diagram.bpmn'\n );\n });\n }\n\n public export(): void {\n const processDefinitionId = this.processManagementEditorService.selectionProcessDefinition?.id;\n\n if (!processDefinitionId) {\n this.showNotification('exportError');\n return;\n }\n\n this.processManagementService\n .exportProcessDefinition(processDefinitionId)\n .pipe(take(1))\n .subscribe({\n next: response => {\n const blob = response.body;\n if (!blob) {\n this.showNotification('exportError');\n return;\n }\n this.downloadFile(blob, this.getFileName(response));\n },\n error: () => {\n this.showNotification('exportError');\n },\n });\n }\n\n private getFileName(response: HttpResponse<Blob>): string {\n const contentDisposition = response.headers.get('Content-Disposition') ?? '';\n return contentDisposition.split('filename=')[1]?.replace(/\"/g, '').trim() || 'process.zip';\n }\n\n private downloadFile(file: Blob, fileName: string): void {\n const link = document.createElement('a');\n link.download = fileName;\n link.href = window.URL.createObjectURL(file);\n link.click();\n window.URL.revokeObjectURL(link.href);\n link.remove();\n }\n\n public validateProcessDefinition(isReadOnlyProcess: boolean): void {\n combineLatest([\n from(isReadOnlyProcess ? this._bpmnViewer.saveXML() : this._bpmnModeler.saveXML()),\n this.processManagementEditorService.processLinksForSelectedDefinition$,\n ])\n .pipe(\n take(1),\n switchMap(([result, processLinks]) => {\n const xml = this.applyDraftState(result?.xml ?? '') ?? '';\n return this.processManagementService.validateProcessDefinition({\n bpmnXml: xml,\n processLinks: processLinks.map(link => ({\n ...link,\n processDefinitionId: '-',\n })),\n canInitializeDocument: this.canInitializeDocument$.getValue(),\n startableByUser: this.startableByUser$.getValue(),\n });\n })\n )\n .subscribe({\n next: validationResult => {\n this.highlightValidationErrors(validationResult.errors);\n if (validationResult.isValid && !validationResult.hasWarnings) {\n this.showNotification('validationSuccess');\n }\n },\n error: () => {\n this.showNotification('error');\n },\n });\n }\n\n public deployChanges(isReadOnlyProcess: boolean): void {\n this.validateAndDeploy(isReadOnlyProcess, () => this.executeDeployChanges(isReadOnlyProcess));\n }\n\n private executeDeployChanges(isReadOnlyProcess: boolean): void {\n combineLatest([\n from(isReadOnlyProcess ? this._bpmnViewer.saveXML() : this._bpmnModeler.saveXML()),\n this.processManagementEditorService.processLinksForSelectedDefinition$,\n this.processManagementEditorService.selectionProcessDefinition$,\n this.context$,\n this.managementParams$.pipe(startWith(null)),\n ])\n .pipe(\n take(1),\n switchMap(([result, processLinks, selectedProcessDefinition, context, params]) => {\n const xml = !isReadOnlyProcess ? this.applyDraftState(result?.xml ?? '') : null;\n\n if (context === 'case') {\n const caseManagementParams = params as CaseManagementParams;\n\n return this.processLinkService.updateProcessDefinitionForCase(\n processLinks as ProcessLinkCreateEvent[],\n selectedProcessDefinition.id,\n xml,\n caseManagementParams?.caseDefinitionKey ?? '',\n caseManagementParams?.caseDefinitionVersionTag ?? '',\n this.canInitializeDocument$.getValue(),\n this.startableByUser$.getValue()\n );\n }\n\n if (context === 'buildingBlock') {\n const buildingBlockManagementParams = params as BuildingBlockManagementParams;\n\n return this.processLinkService.updateProcessDefinitionForBuildingBlock(\n processLinks as ProcessLinkCreateEvent[],\n selectedProcessDefinition.id,\n this.applyDraftState(result?.xml),\n buildingBlockManagementParams.buildingBlockDefinitionKey,\n buildingBlockManagementParams.buildingBlockDefinitionVersionTag\n );\n }\n\n return this.processLinkService.updateProcessDefinition(\n processLinks as ProcessLinkCreateEvent[],\n selectedProcessDefinition.id,\n xml\n );\n }),\n switchMap(() => this.context$)\n )\n .subscribe({\n next: context => {\n this.clearValidationErrors();\n this.processManagementEditorService.clearDismissedAutofills();\n if (context === 'independent') {\n this.reload();\n this.showNotification('success');\n } else {\n this.navigateBack('success');\n }\n },\n error: (error: unknown) => {\n if (this.isValidationError(error)) {\n this.highlightValidationErrors((error as HttpErrorResponse).error.errors);\n } else {\n this.showNotification('error');\n }\n },\n });\n }\n\n public deployNewProcessDefinition(): void {\n this.validateAndDeploy(false, () => this.executeDeployNewProcessDefinition());\n }\n\n private executeDeployNewProcessDefinition(): void {\n combineLatest([\n from(this._bpmnModeler.saveXML()),\n this.processManagementEditorService.processLinksForSelectedDefinition$,\n this.context$,\n this.managementParams$.pipe(startWith(null)),\n ])\n .pipe(\n take(1),\n switchMap(([result, processLinks, context, params]) => {\n const xml = this.applyDraftState(result.xml ?? '');\n const mappedProcessLinks = processLinks.map(link => ({\n ...link,\n processDefinitionId: '-',\n })) as ProcessLinkCreateEvent[];\n\n switch (context) {\n case 'independent':\n return this.processLinkService.createProcessDefinition(mappedProcessLinks, xml\n );\n case 'buildingBlock':\n const buildingBlockParams = params as BuildingBlockManagementParams;\n return this.processLinkService.createProcessDefinitionForBuildingBlock(\n mappedProcessLinks,\n xml,\n buildingBlockParams.buildingBlockDefinitionKey,\n buildingBlockParams.buildingBlockDefinitionVersionTag\n );\n case 'case':\n const caseManagementParams = params as CaseManagementParams;\n return this.processLinkService.createProcessDefinitionForCase(\n mappedProcessLinks,\n xml,\n caseManagementParams.caseDefinitionKey,\n caseManagementParams.caseDefinitionVersionTag,\n this.canInitializeDocument$.getValue(),\n this.startableByUser$.getValue()\n );\n }\n })\n )\n .subscribe({\n next: () => {\n this.clearValidationErrors();\n this.processManagementEditorService.clearDismissedAutofills();\n this.navigateBack('success');\n },\n error: (error: unknown) => {\n if (this.isProcessDefinitionAlreadyExistsError(error)) {\n this.showNotification('alreadyExists');\n } else if (this.isValidationError(error)) {\n this.highlightValidationErrors((error as HttpErrorResponse).error.errors);\n } else {\n this.showNotification('error');\n }\n },\n });\n }\n\n public selectedVersionChange(event: {\n item: {processDefinitionVersion: ProcessDefinitionWithPropertiesDto};\n }): void {\n this.processManagementEditorService.selectionProcessDefinition$\n .pipe(take(1))\n .subscribe(selectedVersion => {\n if (selectedVersion.id !== event.item.processDefinitionVersion.id) {\n this.processManagementEditorService.setSelectedProcessDefinition(\n event?.item?.processDefinitionVersion\n );\n this.changesPending$.next(false);\n }\n });\n }\n\n public navigateBack(notification: null | 'success' | 'error'): void {\n this.router.navigate(['../'], {relativeTo: this.route});\n\n if (!notification) return;\n\n this.showNotification(notification);\n }\n\n public onProcessToggleChange(\n field: keyof UpdateProcessDefinitionCaseDefinitionRequest | 'draft',\n value: boolean\n ): void {\n if (field === 'draft') this.draft$.next(value);\n if (field === 'canInitializeDocument') this.canInitializeDocument$.next(value);\n if (field === 'startableByUser') this.startableByUser$.next(value);\n this.changesPending$.next(true);\n }\n\n public onWarningConfirmationConfirm(): void {\n if (this._pendingDeployAction) {\n this._pendingDeployAction();\n this._pendingDeployAction = null;\n }\n }\n\n public onWarningConfirmationCancel(): void {\n this._pendingDeployAction = null;\n }\n\n private validateAndDeploy(isReadOnlyProcess: boolean, deployAction: () => void): void {\n if (this.draft$.getValue()) {\n deployAction();\n return;\n }\n\n combineLatest([\n from(isReadOnlyProcess ? this._bpmnViewer.saveXML() : this._bpmnModeler.saveXML()),\n this.processManagementEditorService.processLinksForSelectedDefinition$,\n ])\n .pipe(\n take(1),\n switchMap(([result, processLinks]) => {\n const xml = this.applyDraftState(result?.xml ?? '') ?? '';\n return this.processManagementService.validateProcessDefinition({\n bpmnXml: xml,\n processLinks: processLinks.map(link => ({\n ...link,\n processDefinitionId: '-',\n })),\n canInitializeDocument: this.canInitializeDocument$.getValue(),\n startableByUser: this.startableByUser$.getValue(),\n });\n })\n )\n .subscribe({\n next: validationResult => {\n if (!validationResult.isValid) {\n this.highlightValidationErrors(validationResult.errors);\n } else if (validationResult.hasWarnings) {\n this.highlightValidationErrors(validationResult.errors);\n this._pendingDeployAction = deployAction;\n this.showWarningConfirmationModal$.next(true);\n } else {\n deployAction();\n }\n },\n error: () => {\n deployAction();\n },\n });\n }\n\n private setProcessManagementWindow(): void {\n const processManagementWindow = window as any as ProcessManagementWindow;\n\n if (!processManagementWindow) return;\n\n processManagementWindow.processManagementEditorService = this.processManagementEditorService;\n processManagementWindow.translateService = this.translateService;\n processManagementWindow.pluginTranslationService = this.pluginTranslationService;\n processManagementWindow.processLinkService = this.processLinkService;\n }\n\n private showNotification(\n notification:\n | null\n | 'success'\n | 'error'\n | 'exportError'\n | 'alreadyExists'\n | 'validationError'\n | 'validationWarning'\n | 'validationSuccess'\n ): void {\n if (!notification) return;\n\n let type: 'success' | 'error' | 'warning';\n if (\n notification === 'alreadyExists' ||\n notification === 'validationError' ||\n notification === 'exportError' ||\n notification === 'error'\n ) {\n type = 'error';\n } else if (notification === 'validationWarning') {\n type = 'warning';\n } else {\n type = 'success';\n }\n this.notificationService.showToast({\n caption: this.translateService.instant(`processManagement.${notification}Notification`),\n type,\n title: this.translateService.instant(`interface.${type}`),\n });\n }\n\n private isProcessDefinitionAlreadyExistsError(error: unknown): boolean {\n if (!(error instanceof HttpErrorResponse) || error.status !== 409) return false;\n const body = error.error;\n if ((body as ProcessDefinitionConflictResponse)?.processDefinitionId) return true;\n const bbBody = body as BuildingBlockProcessDefinitionConflictResponse;\n return (\n Array.isArray(bbBody?.duplicateProcessDefinitions) &&\n bbBody.duplicateProcessDefinitions.length > 0\n );\n }\n\n private applyDraftState(xml: string | null | undefined): string | null {\n if (!xml) return null;\n\n const doc = new DOMParser().parseFromString(xml, 'application/xml');\n if (doc.getElementsByTagName('parsererror').length > 0) return xml;\n\n const executableValue = this.draft$.getValue() ? 'false' : 'true';\n const processes = doc.getElementsByTagNameNS('*', 'process');\n for (let i = 0; i < processes.length; i++) {\n processes[i].setAttribute('isExecutable', executableValue);\n }\n return new XMLSerializer().serializeToString(doc);\n }\n\n private parseDraftFromXml(xml: string | null | undefined): boolean {\n if (!xml) return false;\n\n const doc = new DOMParser().parseFromString(xml, 'application/xml');\n if (doc.getElementsByTagName('parsererror').length > 0) return false;\n\n const processes = doc.getElementsByTagNameNS('*', 'process');\n if (processes.length === 0) return false;\n\n for (let i = 0; i < processes.length; i++) {\n if (processes[i].getAttribute('isExecutable') === 'true') return false;\n }\n return true;\n }\n\n private isValidationError(error: unknown): boolean {\n return (\n error instanceof HttpErrorResponse &&\n error.status === 422 &&\n Array.isArray(error.error?.errors)\n );\n }\n\n private highlightValidationErrors(errors: ProcessDefinitionValidationError[]): void {\n this.clearValidationErrors();\n this.processManagementEditorService.setValidationErrors(errors);\n\n const modeler = this.activeEditor;\n const canvas = modeler.get('canvas') as any;\n const overlays = modeler.get('overlays') as any;\n\n const errorElementIds = new Set<string>();\n\n const elementHasError = new Map<string, boolean>();\n const elementFirstIssue = new Map<string, ProcessDefinitionValidationError>();\n\n for (const error of errors) {\n if (error.elementType === 'Process') continue;\n\n const hasErrorAlready = elementHasError.get(error.elementId) ?? false;\n const isError = error.severity !== 'WARNING';\n\n if (!elementFirstIssue.has(error.elementId)) {\n elementFirstIssue.set(error.elementId, error);\n } else if (isError && !hasErrorAlready) {\n elementFirstIssue.set(error.elementId, error);\n }\n\n if (isError) {\n elementHasError.set(error.elementId, true);\n } else if (!hasErrorAlready) {\n elementHasError.set(error.elementId, false);\n }\n }\n\n for (const [elementId, issue] of elementFirstIssue) {\n try {\n const hasError = elementHasError.get(elementId) ?? false;\n const markerClass = hasError ? 'highlight-overlay-error' : 'highlight-overlay-warning';\n const overlayClass = hasError ? 'validation-error-overlay' : 'validation-warning-overlay';\n\n this._validationErrorElementIds.push(elementId);\n errorElementIds.add(elementId);\n canvas.addMarker(elementId, markerClass);\n\n const position =\n issue.elementType === 'Participant' ? {top: 5, left: 5} : {top: -12, left: -12};\n\n overlays.add(elementId, 'validation-error', {\n position,\n html: this.buildOverlayElement(\n overlayClass,\n elementId,\n this.getValidationErrorMessage(issue)\n ),\n });\n } catch (e) {\n // Element may not exist on the canvas\n }\n }\n\n const eventBus = modeler.get('eventBus') as any;\n this._validationHoverHandler = (event: any) => {\n const id = event.element?.id;\n if (id && errorElementIds.has(id)) {\n const errorOverlay = document.querySelector(\n `.validation-error-overlay[data-element-id=\"${id}\"]`\n );\n const warningOverlay = document.querySelector(\n `.validation-warning-overlay[data-element-id=\"${id}\"]`\n );\n errorOverlay?.classList.add('validation-error-overlay--active');\n warningOverlay?.classList.add('validation-warning-overlay--active');\n }\n };\n this._validationOutHandler = (event: any) => {\n const id = event.element?.id;\n if (id && errorElementIds.has(id)) {\n const errorOverlay = document.querySelector(\n `.validation-error-overlay[data-element-id=\"${id}\"]`\n );\n const warningOverlay = document.querySelector(\n `.validation-warning-overlay[data-element-id=\"${id}\"]`\n );\n errorOverlay?.classList.remove('validation-error-overlay--active');\n warningOverlay?.classList.remove('validation-warning-overlay--active');\n }\n };\n eventBus.on('element.hover', this._validationHoverHandler);\n eventBus.on('element.out', this._validationOutHandler);\n\n this._selectionChangedHandler = (event: any) => {\n this.highlightInvalidFieldsInPropertiesPanel(event.newSelection, errors);\n };\n eventBus.on('selection.changed', this._selectionChangedHandler);\n\n const selection = modeler.get('selection') as any;\n const selected = selection.get();\n if (selected?.length > 0) {\n const current = selected[0];\n selection.deselect(current);\n selection.select(current);\n }\n }\n\n private highlightInvalidFieldsInPropertiesPanel(\n newSelection: any[],\n errors: ProcessDefinitionValidationError[]\n ): void {\n document.querySelectorAll('.validation-error-field').forEach(el => {\n el.classList.remove('validation-error-field');\n });\n document.querySelectorAll('.validation-error-param').forEach(el => {\n el.classList.remove('validation-error-param');\n });\n\n if (!newSelection?.length) return;\n\n const selectedId = newSelection[0]?.id;\n if (!selectedId) return;\n\n const elementErrors = errors.filter(e => e.elementId === selectedId);\n\n setTimeout(() => {\n for (const error of elementErrors) {\n const listenerEntryId =\n error.listenerType != null && error.listenerIndex != null\n ? `${selectedId}-${error.listenerType}-${error.listenerIndex}`\n : null;\n\n if (error.invalidFields) {\n for (const fieldId of error.invalidFields) {\n let entry: Element | null = null;\n\n if (listenerEntryId) {\n const listenerEntry = document.querySelector(\n `[data-entry-id=\"${listenerEntryId}\"]`\n );\n if (listenerEntry) {\n entry = listenerEntry.querySelector(`[data-entry-id=\"${fieldId}\"]`);\n }\n }\n\n if (!entry) {\n entry = document.querySelector(`[data-entry-id=\"${fieldId}\"]`);\n }\n\n if (entry) {\n entry.classList.add('validation-error-field');\n const input = entry.querySelector('input, textarea, select');\n if (input) {\n const handler = (): void => {\n entry!.classList.remove('validation-error-field');\n input.removeEventListener('input', handler);\n input.removeEventListener('change', handler);\n };\n input.addEventListener('input', handler);\n input.addEventListener('change', handler);\n this._fieldInputCleanupFns.push(() => {\n input.removeEventListener('input', handler);\n input.removeEventListener('change', handler);\n });\n }\n }\n }\n }\n\n if (error.invalidArguments && error.invalidArguments.length > 0) {\n let scopeElement: Element | null = null;\n\n if (listenerEntryId) {\n scopeElement = document.querySelector(`[data-entry-id=\"${listenerEntryId}\"]`);\n }\n\n const wrapper = scopeElement\n ? scopeElement.querySelector('.expression-editor-wrapper') as HTMLElement\n : document.querySelector('.expression-editor-wrapper') as HTMLElement;\n if (wrapper) {\n wrapper.dataset.invalidArgs = JSON.stringify(error.invalidArguments);\n }\n\n for (const idx of error.invalidArguments) {\n const paramInput = scopeElement\n ? scopeElement.querySelector(`.expression-editor-param input[data-param-index=\"${idx}\"]`)\n : document.querySelector(`.expression-editor-param input[data-param-index=\"${idx}\"]`);\n\n if (paramInput) {\n paramInput.classList.add('validation-error-param');\n const handler = (): void => {\n paramInput!.classList.remove('validation-error-param');\n paramInput!.removeEventListener('input', handler);\n };\n paramInput.addEventListener('input', handler);\n this._fieldInputCleanupFns.push(() => {\n paramInput!.removeEventListener('input', handler);\n });\n }\n }\n }\n }\n }, 50);\n }\n\n private clearValidationErrors(): void {\n const modeler = this.activeEditor;\n\n if (!modeler) return;\n\n this.processManagementEditorService.setValidationErrors([]);\n\n const canvas = modeler.get('canvas') as any;\n const overlays = modeler.get('overlays') as any;\n\n const eventBus = modeler.get('eventBus') as any;\n if (this._validationHoverHandler) {\n eventBus.off('element.hover', this._validationHoverHandler);\n this._validationHoverHandler = null;\n }\n if (this._validationOutHandler) {\n eventBus.off('element.out', this._validationOutHandler);\n this._validationOutHandler = null;\n }\n if (this._selectionChangedHandler) {\n eventBus.off('selection.changed', this._selectionChangedHandler);\n this._selectionChangedHandler = null;\n }\n\n this._fieldInputCleanupFns.forEach(fn => fn());\n this._fieldInputCleanupFns = [];\n\n document.querySelectorAll('.validation-error-field').forEach(el => {\n el.classList.remove('validation-error-field');\n });\n document.querySelectorAll('.validation-error-param').forEach(el => {\n el.classList.remove('validation-error-param');\n });\n document.querySelectorAll('.expression-editor-wrapper[data-invalid-args]').forEach(el => {\n delete (el as HTMLElement).dataset.invalidArgs;\n });\n\n for (const elementId of this._validationErrorElementIds) {\n try {\n canvas.removeMarker(elementId, 'highlight-overlay-error');\n canvas.removeMarker(elementId, 'highlight-overlay-warning');\n } catch (e) {\n // ignore\n }\n }\n this._validationErrorElementIds = [];\n\n try {\n overlays.remove({type: 'validation-error'});\n } catch (e) {\n // ignore\n }\n }\n\n private highlightAutofilledElements(): void {\n this.clearAutofilledHighlights();\n\n if (!this._autofilledElements?.length) return;\n\n const modeler = this.activeEditor;\n if (!modeler) return;\n\n const overlays = modeler.get('overlays') as any;\n\n for (const element of this._autofilledElements) {\n try {\n this._autofilledElementIds.push(element.activityId);\n\n const tooltipText = this.getAutofilledTooltip();\n overlays.add(element.activityId, 'autofilled-indicator', {\n position: {top: -12, left: -12},\n html: this.buildAutofilledOverlayElement(element.activityId, tooltipText),\n });\n } catch (e) {\n // Element may not exist on the canvas\n }\n }\n }\n\n private clearAutofilledHighlights(): void {\n const modeler = this.activeEditor;\n if (!modeler) return;\n\n const overlays = modeler.get('overlays') as any;\n\n this._autofilledElementIds = [];\n\n try {\n overlays.remove({type: 'autofilled-indicator'});\n } catch (e) {\n // ignore\n }\n }\n\n private buildAutofilledOverlayElement(elementId: string, tooltipText: string): HTMLElement {\n const container = document.createElement('div');\n container.className = 'autofilled-indicator-overlay';\n container.dataset.elementId = elementId;\n\n const icon = document.createElement('span');\n icon.className = 'autofilled-indicator-icon';\n icon.innerHTML = '!';\n container.appendChild(icon);\n\n const tooltip = document.createElement('span');\n tooltip.className = 'autofilled-indicator-tooltip';\n tooltip.textContent = tooltipText;\n container.appendChild(tooltip);\n\n return container;\n }\n\n private getAutofilledTooltip(): string {\n return this.translateService.instant('processManagement.autofilled.generic');\n }\n\n private getElementListeners(element: any): {\n hasExecutionListener: boolean;\n hasTaskListener: boolean;\n executionListenerCount: number;\n taskListenerCount: number;\n } {\n const extensionElements = element?.businessObject?.extensionElements;\n const values = extensionElements?.values || [];\n\n const executionListeners = values.filter(\n (v: any) => v.$type === 'camunda:ExecutionListener'\n );\n const taskListeners = values.filter((v: any) => v.$type === 'camunda:TaskListener');\n\n return {\n hasExecutionListener: executionListeners.length > 0,\n hasTaskListener: taskListeners.length > 0,\n executionListenerCount: executionListeners.length,\n taskListenerCount: taskListeners.length,\n };\n }\n\n public toggleMarkerVisibility(): void {\n this.$markersVisible.update(v => !v);\n if (this.$markersVisible()) {\n this.updateActivityMarkers();\n } else {\n this.clearActivityMarkers();\n }\n }\n\n private updateActivityMarkers(): void {\n this.clearActivityMarkers();\n\n if (!this.$markersVisible()) return;\n\n const modeler = this.activeEditor;\n if (!modeler) return;\n\n const overlays = modeler.get('overlays') as any;\n const elementRegistry = modeler.get('elementRegistry') as any;\n\n const processLinks = this.processManagementEditorService.processLinksForSelectedDefinition;\n const processLinkActivityIds = new Set(processLinks.map(pl => pl.activityId));\n\n const elementMarkers = new Map<string, ActivityMarkerInfo>();\n\n elementRegistry.forEach((element: any) => {\n if (!element.id || element.type === 'label') return;\n\n const listeners = this.getElementListeners(element);\n const hasProcessLink = processLinkActivityIds.has(element.id);\n\n if (listeners.hasExecutionListener || listeners.hasTaskListener || hasProcessLink) {\n elementMarkers.set(element.id, {\n hasExecutionListener: listeners.hasExecutionListener,\n hasTaskListener: listeners.hasTaskListener,\n hasProcessLink,\n executionListenerCount: listeners.executionListenerCount,\n taskListenerCount: listeners.taskListenerCount,\n });\n }\n });\n\n for (const [elementId, info] of elementMarkers) {\n this._activityMarkerElementIds.push(elementId);\n\n const badges = this.buildActivityMarkerBadges(info, elementId);\n if (badges) {\n try {\n const element = elementRegistry.get(elementId);\n const position = this.calculateMarkerPosition(element);\n overlays.add(elementId, 'activity-marker', {\n position,\n html: badges,\n });\n } catch (e) {\n // Element may not exist on canvas\n }\n }\n }\n }\n\n private calculateMarkerPosition(element: any): {top: number; left?: number; right?: number} {\n if (element?.waypoints?.length > 1) {\n const waypoints = element.waypoints;\n const lastPoint = waypoints[waypoints.length - 1];\n const secondLastPoint = waypoints[waypoints.length - 2];\n\n // Compute bounding box from waypoints (same as diagram-js getBBox)\n const minX = Math.min(...waypoints.map((wp: any) => wp.x));\n const minY = Math.min(...waypoints.map((wp: any) => wp.y));\n\n // Direction of the final segment\n const dx = lastPoint.x - secondLastPoint.x;\n const dy = lastPoint.y - secondLastPoint.y;\n const len = Math.sqrt(dx * dx + dy * dy);\n\n // Offset back from arrow tip along the line\n const backOffset = 30;\n const backX = len > 0 ? (-dx / len) * backOffset : 0;\n const backY = len > 0 ? (-dy / len) * backOffset : 0;\n\n // Perpendicular offset: above for horizontal lines, right for vertical lines\n const perpOffset = 20;\n const isMoreHorizontal = Math.abs(dx) > Math.abs(dy);\n const perpX = isMoreHorizontal ? 0 : perpOffset;\n const perpY = isMoreHorizontal ? -perpOffset : 0;\n\n return {\n top: lastPoint.y - minY + backY + perpY - 11,\n left: lastPoint.x - minX + backX + perpX - 11,\n };\n }\n return {top: -12, right: 12};\n }\n\n private buildActivityMarkerBadges(info: ActivityMarkerInfo, elementId: string): HTMLElement | null {\n const container = document.createElement('div');\n container.className = 'activity-marker-overlay';\n container.dataset.elementId = elementId;\n\n if (info.hasProcessLink) {\n const tooltip = this.translateService.instant('processManagement.markers.processLink');\n container.appendChild(this.buildMarkerBadge('process-link', 'P', tooltip));\n }\n if (info.hasExecutionListener) {\n const countSuffix = info.executionListenerCount > 1 ? ` (${info.executionListenerCount})` : '';\n const tooltip =\n this.translateService.instant('processManagement.markers.executionListener') + countSuffix;\n container.appendChild(this.buildMarkerBadge('execution-listener', 'E', tooltip));\n }\n if (info.hasTaskListener) {\n const countSuffix = info.taskListenerCount > 1 ? ` (${info.taskListenerCount})` : '';\n const tooltip =\n this.translateService.instant('processManagement.markers.taskListener') + countSuffix;\n container.appendChild(this.buildMarkerBadge('task-listener', 'T', tooltip));\n }\n\n if (container.children.length === 0) return null;\n\n return container;\n }\n\n private buildMarkerBadge(type: string, label: string, tooltip: string): HTMLElement {\n const badge = document.createElement('div');\n badge.className = `activity-marker-badge activity-marker-badge--${type}`;\n\n const icon = document.createElement('span');\n icon.className = 'activity-marker-badge__icon';\n icon.textContent = label;\n badge.appendChild(icon);\n\n const text = document.createElement('span');\n text.className = 'activity-marker-badge__text';\n text.textContent = tooltip;\n badge.appendChild(text);\n\n return badge;\n }\n\n private clearActivityMarkers(): void {\n const modeler = this.activeEditor;\n if (!modeler) return;\n\n const overlays = modeler.get('overlays') as any;\n\n this._activityMarkerElementIds = [];\n\n try {\n overlays.remove({type: 'activity-marker'});\n } catch (e) {\n // ignore\n }\n }\n\n private scheduleActivityMarkerUpdate(): void {\n if (this._activityMarkerUpdateTimeout) {\n clearTimeout(this._activityMarkerUpdateTimeout);\n }\n this._activityMarkerUpdateTimeout = setTimeout(() => {\n this.updateActivityMarkers();\n this._activityMarkerUpdateTimeout = null;\n }, 300);\n }\n\n private setSelectedProcessDefinitionToLatest(\n processDefinitions: ProcessDefinitionWithPropertiesDto[]\n ): void {\n const latest = getLatestProcessDefinition(processDefinitions);\n\n if (!latest) return;\n\n this.processManagementEditorService.setSelectedProcessDefinition(latest);\n }\n\n private initModeler(): void {\n this._bpmnModeler = new Modeler({\n additionalModules: [\n BpmnPropertiesPanelModule,\n BpmnPropertiesProviderModule,\n CamundaPlatformPropertiesProviderModule,\n camundaPlatformBehaviors,\n ValtimoPropertiesProviderModule,\n ExpressionAutocompleteModule,\n ],\n moddleExtensions: {camunda: CamundaBpmnModdle},\n propertiesPanel: {parent: this.modelerPanelElementRef.nativeElement},\n });\n\n this._bpmnModeler?.attachTo(this.modelerElementRef.nativeElement);\n\n // Initialize expression autocomplete\n this._expressionAutocomplete = this._bpmnModeler.get('expressionAutocomplete') as ExpressionAutocomplete;\n this._expressionAutocomplete?.setPanelContainer(this.modelerPanelElementRef.nativeElement);\n this.loadProcessBeansForAutocomplete();\n\n this._bpmnModeler.on('commandStack.changed', () => {\n this.changesPending$.next(true);\n });\n\n this._bpmnModeler.on('import.done', () => {\n const idMap: Record<string, string> = {};\n const elementRegistry = this._bpmnModeler.get('elementRegistry') as any;\n\n elementRegistry.forEach((element: any) => {\n const activityId = element?.di?.id;\n const businessId = element?.id;\n\n if (!activityId || !businessId) return;\n\n idMap[activityId] = businessId;\n });\n\n this.processManagementEditorService.setActivityIdBusinessIdMap(idMap);\n this.listenToActivityChangesOnModeler();\n this.updateActivityMarkers();\n });\n }\n\n private loadProcessBeansForAutocomplete(): void {\n this.processBeanService.getProcessBeans().subscribe({\n next: beans => {\n this._expressionAutocomplete?.setProcessBeans(beans);\n },\n error: err => {\n this.logger.warn('Failed to load process beans for autocomplete', err);\n },\n });\n }\n\n private initViewer(): void {\n this._bpmnViewer = new Modeler({\n additionalModules: [\n DisableBpmnWriteModule,\n BpmnPropertiesPanelModule,\n BpmnPropertiesProviderModule,\n CamundaPlatformPropertiesProviderModule,\n ValtimoPropertiesProviderModule,\n ReadOnlyPropertiesPanelModule,\n ],\n moddleExtensions: {camunda: CamundaBpmnModdle},\n propertiesPanel: {parent: this.viewerPanelElementRef.nativeElement},\n });\n\n this._bpmnViewer?.attachTo(this.viewerElementRef.nativeElement);\n\n this._bpmnViewer.on('commandStack.changed', () => {\n this.changesPending$.next(true);\n });\n\n this._bpmnViewer.on('import.done', () => {\n disableCommands(this._bpmnViewer);\n this.updateActivityMarkers();\n });\n }\n\n private reload(): void {\n this._reload$.next(null);\n }\n\n private handleUpdateEvent(event: OpenProcessLinkModalEvent): void {\n this.modalService.setModalData(event?.modalParams);\n this.processLinkStateService.setModalParams(event?.modalParams);\n this.processLinkStateService.setElementName(event?.modalParams?.element?.name ?? '');\n this.processLinkStateService.selectProcessLink(event.processLink);\n this.processLinkStateService.setReadOnly(!this.processManagementEditorService.editingAllowed);\n this.processLinkStateService.showModal();\n }\n\n private handleCreateEvent(event: OpenProcessLinkModalEvent): void {\n this.processLinkService\n .getProcessLinkCandidates(event.modalParams.element.activityListenerType ?? '')\n .subscribe(candidates => {\n this.modalService.setModalData(event?.modalParams);\n this.processLinkStateService.setModalParams(event?.modalParams);\n this.processLinkStateService.setElementName(event?.modalParams?.element?.name ?? '');\n this.processLinkStateService.setAvailableProcessLinkTypes(candidates);\n this.processLinkStateService.showModal();\n });\n }\n\n private subscribeToOpenProcessLinkModalEvents(): void {\n this._subscriptions.add(\n this.processManagementEditorService.openProcessLinkModalEvents$.subscribe(event => {\n if (event.processLink) {\n this.handleUpdateEvent(event);\n } else {\n this.handleCreateEvent(event);\n }\n })\n );\n }\n\n private subscribeToProcessLinkUpdateEvents(): void {\n this._subscriptions.add(\n this.processLinkStateService.processLinkUpdateEvents$.subscribe(event => {\n this.processManagementEditorService.updateProcessLink(event);\n this.processLinkStateService.stopSaving();\n this.processLinkStateService.closeModal();\n\n const buildingBlockProcessLinkUpdateDto = event as BuildingBlockProcessLinkUpdateDto;\n\n if (\n buildingBlockProcessLinkUpdateDto.buildingBlockDefinitionKey &&\n buildingBlockProcessLinkUpdateDto.buildingBlockDefinitionVersionTag\n ) {\n this.setCalledElementForBuildingBlockProcessLink(\n buildingBlockProcessLinkUpdateDto.activityId,\n buildingBlockProcessLinkUpdateDto.buildingBlockDefinitionKey,\n buildingBlockProcessLinkUpdateDto.buildingBlockDefinitionVersionTag\n );\n }\n })\n );\n }\n\n private subscribeToProcessLinkCreateEvents(): void {\n this._subscriptions.add(\n this.processLinkStateService.processLinkCreateEvents$.subscribe(event => {\n this.processManagementEditorService.createProcessLink(event);\n this.processLinkStateService.stopSaving();\n this.processLinkStateService.closeModal();\n this.updateActivityMarkers();\n\n const buildingBlockProcessLinkCreateDto = event as BuildingBlockProcessLinkCreateDto;\n\n if (\n buildingBlockProcessLinkCreateDto.buildingBlockDefinitionKey &&\n buildingBlockProcessLinkCreateDto.buildingBlockDefinitionVersionTag\n ) {\n this.setCalledElementForBuildingBlockProcessLink(\n buildingBlockProcessLinkCreateDto.activityId,\n buildingBlockProcessLinkCreateDto.buildingBlockDefinitionKey,\n buildingBlockProcessLinkCreateDto.buildingBlockDefinitionVersionTag\n );\n }\n })\n );\n }\n\n private subscribeToProcessLinkDeleteEvents(): void {\n this._subscriptions.add(\n merge(\n this.processManagementEditorService.deleteProcessLinkEvents$,\n this.processLinkStateService.processLinkDeleteEvents$\n ).subscribe(event => {\n this.processManagementEditorService.deleteProcessLink(event);\n this.processLinkStateService.stopSaving();\n this.processLinkStateService.closeModal();\n this.updateActivityMarkers();\n\n this.unsetCalledElementForBuildingBlockProcessLink(event.activityId);\n })\n );\n }\n\n private subscribeToViewerActive(): void {\n this._subscriptions.add(\n this.viewerActive$.subscribe(viewerActive => {\n this._viewerActive = viewerActive;\n\n this.updateActivityMarkers();\n this.highlightAutofilledElements();\n })\n );\n\n this._subscriptions.add(\n this.hasEditPermissions$.subscribe(hasEditPermissions =>\n this.processManagementEditorService.setEditingAllowed(hasEditPermissions)\n )\n );\n }\n\n private subscribeToAutofillDismissEvents(): void {\n this._subscriptions.add(\n this.processManagementEditorService.autofillDismissed$.subscribe(activityId => {\n this.removeAutofillOverlay(activityId);\n })\n );\n }\n\n private removeAutofillOverlay(activityId: string): void {\n const modeler = this.activeEditor;\n if (!modeler) return;\n\n const overlays = modeler.get('overlays') as any;\n try {\n overlays.remove({element: activityId, type: 'autofilled-indicator'});\n } catch (e) {\n // ignore\n }\n\n const idx = this._autofilledElementIds.indexOf(activityId);\n if (idx > -1) {\n this._autofilledElementIds.splice(idx, 1);\n }\n }\n\n private initIfCreate(): void {\n if (this._selectedProcess$.getValue() !== 'create') return;\n\n this.creatingNewProcess$.next(true);\n this._bpmnModeler?.importXML(EMPTY_BPMN);\n this.isReadOnlyProcess$.next(false);\n this.isSystemProcess$.next(false);\n this.loading$.next(false);\n }\n\n private shapeAddedHandler = (event: any): void => {\n this.logger.debug('Shape added:', event);\n };\n\n private shapeRemovedHandler = (event: any): void => {\n this.logger.debug('Shape removed:', event);\n\n const activityId = event?.element?.id;\n\n if (!activityId) return;\n\n this.processManagementEditorService.deleteProcessLink({activityId});\n };\n\n private elementChangedHandler = (event: any): void => {\n this.logger.debug('Element changed:', event);\n\n const activityId = event?.element?.di?.id;\n const businessId = event?.element?.id;\n\n if (!activityId || !businessId) return;\n\n this.processManagementEditorService.updateProcessLinksOnIdChange(activityId, businessId);\n this.scheduleActivityMarkerUpdate();\n };\n\n private listenToActivityChangesOnModeler(): void {\n const eventBus = this._bpmnModeler.get('eventBus') as any;\n\n if (!eventBus) return;\n\n eventBus.on('shape.added', this.shapeAddedHandler);\n eventBus.on('shape.removed', this.shapeRemovedHandler);\n eventBus.on('element.changed', this.elementChangedHandler);\n }\n\n private cleanUpListenersOnModeler(): void {\n const eventBus = this._bpmnModeler.get('eventBus') as any;\n\n if (!eventBus) return;\n\n eventBus.off('shape.added', this.shapeAddedHandler);\n eventBus.off('shape.removed', this.shapeRemovedHandler);\n eventBus.off('element.changed', this.elementChangedHandler);\n }\n\n private initProcessDefinition(): void {\n this._subscriptions.add(\n this._selectedProcess$\n .pipe(\n filter(selectedProcess => selectedProcess !== null && selectedProcess !== 'create'),\n distinctUntilChanged((previous, current) => isEqual(previous, current)),\n tap(() => this.loading$.next(true))\n )\n .subscribe(result => {\n const processDefinitionResult = result as ProcessDefinitionResult;\n\n this.cleanUpListenersOnModeler();\n this._autofilledElements = processDefinitionResult.autofilledElements ?? [];\n this.processManagementEditorService.setAutofilledElements(this._autofilledElements);\n\n this._bpmnModeler?.importXML(processDefinitionResult.bpmn20Xml).then(() => {\n this.highlightAutofilledElements();\n });\n this._bpmnViewer?.importXML(processDefinitionResult.bpmn20Xml).then(() => {\n this.highlightAutofilledElements();\n });\n\n this.canInitializeDocument$.next(\n !!processDefinitionResult?.processCaseLink?.canInitializeDocument\n );\n this.startableByUser$.next(!!processDefinitionResult?.processCaseLink?.startableByUser);\n this.draft$.next(!!processDefinitionResult?.draft);\n\n this.loading$.next(false);\n })\n );\n }\n\n private openParamsAndContextSubscription(): void {\n this._subscriptions.add(\n combineLatest([\n getContextObservable(this.route),\n getCaseManagementRouteParams(this.route),\n getBuildingBlockManagementRouteParams(this.route),\n ]).subscribe(([context, caseManagementParams, buildingBlockManagementParams]) => {\n if (context) this.processManagementService.context = context;\n\n this.processLinkStateService.setContext(context);\n\n if (caseManagementParams) {\n this.processManagementService.setParams(\n caseManagementParams.caseDefinitionKey,\n caseManagementParams.caseDefinitionVersionTag\n );\n }\n\n if (buildingBlockManagementParams) {\n this.processManagementService.setParams(\n buildingBlockManagementParams.buildingBlockDefinitionKey,\n buildingBlockManagementParams.buildingBlockDefinitionVersionTag\n );\n }\n\n initBreadcrumbsForContext(\n this.breadcrumbService,\n this.translateService,\n caseManagementParams || buildingBlockManagementParams,\n context as ManagementContext\n );\n\n this.processManagementEditorService.setManagementRouteParams(\n context,\n caseManagementParams || buildingBlockManagementParams\n );\n })\n );\n }\n\n private initEditing(): void {\n combineLatest([this.editParam$, this.managementParams$.pipe(startWith(null)), this.context$])\n .pipe(\n take(1),\n switchMap(([editParam, params, context]) => {\n if (editParam === 'create') {\n this._selectedProcess$.next('create');\n this.initIfCreate();\n\n return of(null);\n }\n\n switch (context) {\n case 'case':\n const caseManagementParams = params as CaseManagementParams;\n return this.processManagementService.getProcessDefinitionForCase(\n caseManagementParams.caseDefinitionKey,\n caseManagementParams.caseDefinitionVersionTag,\n editParam\n );\n case 'independent':\n return this.processManagementService\n .getUnlinkedProcessDefinitionsByKey(editParam)\n .pipe(map(processDefinitionResults => processDefinitionResults[0]));\n case 'buildingBlock':\n const buildingBlockParams = params as BuildingBlockManagementParams;\n return this.processManagementService.getBuildingBlockProcessDefinition(\n buildingBlockParams.buildingBlockDefinitionKey,\n buildingBlockParams.buildingBlockDefinitionVersionTag,\n editParam\n );\n }\n }),\n tap(res => {\n if (res) {\n this._selectedProcess$.next(res);\n this.processManagementEditorService.setSelectedProcessDefinition(res.processDefinition);\n this.processManagementEditorService.setProcessLinksForSelectedDefinition(\n res.processLinks\n );\n this.pageTitleService.setCustomPageTitle(res.processDefinition.name || '-');\n }\n\n this.initProcessDefinition();\n })\n )\n .subscribe();\n }\n\n private setCalledElementForBuildingBlockProcessLink(\n activityId: string,\n buildingBlockDefinitionKey: string,\n buildingBlockDefinitionVersionTag: string\n ): void {\n const editors = this.loadedEditors;\n\n if (!editors.length) {\n return;\n }\n\n this.processLinkBuildingBlockApiService\n .getMainProcessDefinitionKeyForBuildingBlock(\n buildingBlockDefinitionKey,\n buildingBlockDefinitionVersionTag\n )\n .subscribe({\n next: (mainProcessDefinitionKey: string) => {\n const versionTag = `BB:${buildingBlockDefinitionKey}:${buildingBlockDefinitionVersionTag}`;\n\n editors.forEach(editor =>\n applyBuildingBlockCalledElement(editor, activityId, mainProcessDefinitionKey, versionTag)\n );\n },\n });\n }\n\n private unsetCalledElementForBuildingBlockProcessLink(activityId: string): void {\n this.loadedEditors.forEach(editor => clearBuildingBlockCalledElement(editor, activityId));\n }\n\n public onValidationErrorClick(elementId: string): void {\n const modeler = this.activeEditor;\n const canvas = modeler.get('canvas') as any;\n const selection = modeler.get('selection') as any;\n const elementRegistry = modeler.get('elementRegistry') as any;\n\n const element = elementRegistry.get(elementId);\n if (!element) return;\n\n canvas.scrollToElement(element, {top: 100, bottom: 100, left: 100, right: 100});\n selection.select(element);\n }\n\n public getValidationErrorMessage(error: {\n reason: string;\n errorCode?: string;\n expression?: string;\n }): string {\n if (error.errorCode) {\n const translationKey = `processManagement.validationErrorCodes.${error.errorCode}`;\n const translated = this.translateService.instant(translationKey, {\n expression: error.expression ?? '',\n });\n if (translated !== translationKey) {\n return translated;\n }\n }\n return error.reason;\n }\n\n private buildOverlayElement(\n overlayClass: string,\n elementId: string,\n message: string\n ): HTMLElement {\n const container = document.createElement('div');\n container.className = overlayClass;\n container.dataset.elementId = elementId;\n\n const icon = document.createElement('span');\n icon.className = `${overlayClass}__icon`;\n icon.textContent = '!';\n container.appendChild(icon);\n\n const text = document.createElement('span');\n text.className = `${overlayClass}__text`;\n text.textContent = message;\n container.appendChild(text);\n\n return container;\n }\n}\n","<!--\n ~ Copyright 2015-2026 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<div\n fitPage\n [disableOverflow]=\"true\"\n *ngIf=\"{\n processDefinitionVersions: processDefinitionVersions$ | async,\n selectedProcessDefinitionXml: selectedProcessDefinitionXml$ | async,\n loading: loading$ | async,\n isReadOnlyProcess: isReadOnlyProcess$ | async,\n hasEditPermissions: hasEditPermissions$ | async,\n } as obs\"\n data-carbon-theme=\"g10\"\n class=\"bpmn__container\"\n>\n <div\n class=\"bpmn__modeler\"\n [style.display]=\"obs.isReadOnlyProcess || !obs.hasEditPermissions ? 'none' : 'flex'\"\n >\n <div class=\"bpmn__modeler-canvas\" #modeler>\n <cds-tooltip\n align=\"top-right\"\n [autoAlign]=\"true\"\n [description]=\"'processManagement.markers.toggleTooltip' | translate\"\n class=\"markers-visibility-toggle-wrapper\"\n >\n <button\n type=\"button\"\n class=\"markers-visibility-toggle\"\n (click)=\"toggleMarkerVisibility()\"\n [attr.data-test-id]=\"testIds.markersVisibilityToggle\"\n >\n <svg cdsIcon=\"view\" *ngIf=\"$markersVisible()\" size=\"16\"></svg>\n <svg cdsIcon=\"view--off\" *ngIf=\"!$markersVisible()\" size=\"16\"></svg>\n <span class=\"markers-visibility-toggle__label\">\n {{\n ($markersVisible()\n ? 'processManagement.markers.hide'\n : 'processManagement.markers.show'\n ) | translate\n }}\n </span>\n </button>\n </cds-tooltip>\n\n <div\n class=\"validation-errors-list\"\n *ngIf=\"validationErrors$ | async as validationErrors\"\n [style.display]=\"validationErrors.length > 0 ? '' : 'none'\"\n [attr.data-test-id]=\"testIds.validationErrors\"\n >\n <details open>\n <summary class=\"validation-errors-list__header\">\n <span>{{\n 'processManagement.validationErrorsCount'\n | translate: {count: validationErrors.length}\n }}</span>\n <svg\n class=\"validation-errors-list__arrow\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n >\n <path\n fill-rule=\"evenodd\"\n d=\"m11.657 8-4.95 4.95a1 1 0 0 1-1.414-1.414L8.828 8 5.293 4.464A1 1 0 1 1 6.707 3.05L11.657 8Z\"\n />\n </svg>\n </summary>\n\n <div class=\"validation-errors-list__items\">\n <button\n *ngFor=\"let error of validationErrors\"\n class=\"validation-errors-list__item\"\n [class.warning]=\"error.severity === 'WARNING'\"\n (click)=\"onValidationErrorClick(error.elementId)\"\n >\n <span\n class=\"validation-errors-list__icon\"\n [class.warning]=\"error.severity === 'WARNING'\"\n >{{ error.severity === 'WARNING' ? '!' : '!' }}</span\n >\n\n <span class=\"validation-errors-list__details\">\n <span class=\"validation-errors-list__element\">{{\n error.elementName || error.elementId\n }}</span>\n\n <span\n class=\"validation-errors-list__reason\"\n [class.warning]=\"error.severity === 'WARNING'\"\n >{{ getValidationErrorMessage(error) }}</span\n >\n </span>\n </button>\n </div>\n </details>\n </div>\n </div>\n\n <div class=\"bpmn__modeler-panel\" #modelerPanel></div>\n </div>\n\n <div\n class=\"bpmn__modeler\"\n [style.display]=\"obs.isReadOnlyProcess || !obs.hasEditPermissions ? 'flex' : 'none'\"\n >\n <div class=\"bpmn__modeler-canvas\" #viewer>\n <cds-tooltip\n align=\"top-right\"\n [autoAlign]=\"true\"\n [description]=\"'processManagement.markers.toggleTooltip' | translate\"\n class=\"markers-visibility-toggle-wrapper\"\n >\n <button\n type=\"button\"\n class=\"markers-visibility-toggle\"\n (click)=\"toggleMarkerVisibility()\"\n [attr.data-test-id]=\"testIds.markersVisibilityToggle\"\n >\n <svg cdsIcon=\"view\" *ngIf=\"$markersVisible()\" size=\"16\"></svg>\n <svg cdsIcon=\"view--off\" *ngIf=\"!$markersVisible()\" size=\"16\"></svg>\n <span class=\"markers-visibility-toggle__label\">\n {{\n ($markersVisible()\n ? 'processManagement.markers.hide'\n : 'processManagement.markers.show'\n ) | translate\n }}\n </span>\n </button>\n </cds-tooltip>\n </div>\n\n <div class=\"bpmn__modeler-panel bpmn__modeler-panel--read-only\" #viewerPanel></div>\n </div>\n</div>\n\n<valtimo-process-link-modal></valtimo-process-link-modal>\n\n<valtimo-confirmation-modal\n [showModalSubject$]=\"showWarningConfirmationModal$\"\n [titleTranslationKey]=\"'processManagement.warningConfirmation.title'\"\n [contentTranslationKey]=\"'processManagement.warningConfirmation.content'\"\n [confirmButtonTextTranslationKey]=\"'processManagement.warningConfirmation.confirm'\"\n [cancelButtonTextTranslationKey]=\"'interface.cancel'\"\n (confirmEvent)=\"onWarningConfirmationConfirm()\"\n (cancelEvent)=\"onWarningConfirmationCancel()\"\n></valtimo-confirmation-modal>\n\n<ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <div\n class=\"page-header-actions\"\n *ngIf=\"{\n processDefinitionVersionsListItems: processDefinitionVersionsListItems$ | async,\n loading: loading$ | async,\n changesPending: changesPending$ | async,\n isReadOnlyProcess: isReadOnlyProcess$ | async,\n isSystemProcess: isSystemProcess$ | async,\n compactMode: compactMode$ | async,\n creatingNewProcess: creatingNewProcess$ | async,\n context: context$ | async,\n hasEditPermissions: hasEditPermissions$ | async,\n draft: draft$ | async,\n canInitializeDocument: canInitializeDocument$ | async,\n startableByUser: startableByUser$ | async,\n updatingProcessDefinitionCaseDefinition: updatingProcessDefinitionCaseDefinition$ | async,\n } as actionsObs\"\n >\n <div class=\"page-header-actions__left-container\">\n <cds-dropdown\n *ngIf=\"!actionsObs.creatingNewProcess && actionsObs?.context === 'independent'\"\n class=\"page-header-actions__version-dropdown\"\n [attr.data-test-id]=\"testIds.versionDropdown\"\n (selected)=\"selectedVersionChange($event)\"\n [disabled]=\"\n actionsObs.loading ||\n (actionsObs.processDefinitionVersionsListItems || []).length === 0 ||\n (actionsObs.processDefinitionVersionsListItems || []).length === 1\n \"\n [size]=\"actionsObs.compactMode ? 'sm' : 'md'\"\n >\n <cds-dropdown-list\n [items]=\"actionsObs.processDefinitionVersionsListItems || []\"\n ></cds-dropdown-list>\n </cds-dropdown>\n\n <div\n class=\"page-header-actions__tags\"\n *ngIf=\"\n actionsObs.isReadOnlyProcess ||\n !actionsObs.hasEditPermissions ||\n actionsObs.isSystemProcess\n \"\n >\n <cds-tag\n *ngIf=\"actionsObs.isReadOnlyProcess || !actionsObs.hasEditPermissions\"\n type=\"blue\"\n [attr.data-test-id]=\"testIds.readOnlyTag\"\n >{{ 'processManagement.readOnly' | translate }}</cds-tag\n >\n\n <cds-tag\n *ngIf=\"actionsObs.isSystemProcess\"\n type=\"red\"\n [attr.data-test-id]=\"testIds.systemProcessTag\"\n >{{ 'processManagement.systemProcess' | translate }}</cds-tag\n >\n </div>\n\n <div class=\"page-header-actions__toggles\">\n <cds-tooltip\n align=\"bottom-left\"\n [autoAlign]=\"true\"\n [description]=\"'processManagement.draftTooltip' | translate\"\n >\n <cds-toggle\n size=\"sm\"\n [onText]=\"'processManagement.draft' | translate\"\n [offText]=\"'processManagement.draft' | translate\"\n [checked]=\"actionsObs.draft\"\n [disabled]=\"actionsObs.loading || !actionsObs.hasEditPermissions\"\n (checkedChange)=\"onProcessToggleChange('draft', $event)\"\n [attr.data-test-id]=\"testIds.draftToggle\"\n ></cds-toggle>\n </cds-tooltip>\n\n @if (actionsObs.context === 'case') {\n <cds-tooltip\n align=\"bottom-left\"\n [autoAlign]=\"true\"\n [description]=\"'processCaseConnection.processCreatesCaseTooltip' | translate\"\n >\n <cds-toggle\n size=\"sm\"\n [onText]=\"'processManagement.canInitializeDocument' | translate\"\n [offText]=\"'processManagement.canInitializeDocument' | translate\"\n [checked]=\"actionsObs.canInitializeDocument\"\n [disabled]=\"\n actionsObs.loading ||\n actionsObs.updatingProcessDefinitionCaseDefinition ||\n !actionsObs.hasEditPermissions\n \"\n (checkedChange)=\"onProcessToggleChange('canInitializeDocument', $event)\"\n [attr.data-test-id]=\"testIds.startsCaseToggle\"\n ></cds-toggle>\n </cds-tooltip>\n\n <cds-tooltip\n align=\"bottom-left\"\n [autoAlign]=\"true\"\n [description]=\"'processCaseConnection.startableWithinCaseTooltip' | translate\"\n >\n <cds-toggle\n size=\"sm\"\n [onText]=\"'processManagement.startableByUser' | translate\"\n [offText]=\"'processManagement.startableByUser' | translate\"\n [checked]=\"actionsObs.startableByUser\"\n [disabled]=\"\n actionsObs.loading ||\n actionsObs.updatingProcessDefinitionCaseDefinition ||\n !actionsObs.hasEditPermissions\n \"\n (checkedChange)=\"onProcessToggleChange('startableByUser', $event)\"\n [attr.data-test-id]=\"testIds.startableByUserToggle\"\n ></cds-toggle\n ></cds-tooltip>\n }\n </div>\n </div>\n\n <div class=\"page-header-actions__buttons\">\n <v-overflow-menu class=\"overflow-button\" placement=\"bottom-end\">\n <v-overflow-menu-trigger\n overflowTrigger\n [attr.data-test-id]=\"testIds.moreButton\"\n ></v-overflow-menu-trigger>\n <v-overflow-menu-option\n *ngIf=\"actionsObs.context !== 'case'\"\n [disabled]=\"actionsObs.loading\"\n [attr.data-test-id]=\"testIds.exportOption\"\n (selected)=\"export()\"\n >{{ 'interface.export' | translate }}\n </v-overflow-menu-option>\n\n <v-overflow-menu-option\n [disabled]=\"actionsObs.loading\"\n (selected)=\"exportBpmn(actionsObs.isReadOnlyProcess)\"\n >{{ 'processManagement.exportBpmn' | translate }}\n </v-overflow-menu-option>\n </v-overflow-menu>\n\n <button\n *ngIf=\"actionsObs.context === 'case'\"\n cdsButton=\"tertiary\"\n [size]=\"actionsObs.compactMode ? 'sm' : 'md'\"\n (click)=\"navigateBack(null)\"\n >\n {{ 'interface.back' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"return\" size=\"16\"></svg>\n </button>\n\n <button\n cdsButton=\"secondary\"\n [size]=\"actionsObs.compactMode ? 'sm' : 'md'\"\n [disabled]=\"actionsObs.loading || !actionsObs.hasEditPermissions\"\n [attr.data-test-id]=\"testIds.validateButton\"\n (click)=\"validateProcessDefinition(actionsObs.isReadOnlyProcess)\"\n >\n {{ 'processManagement.validate' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"list--checked\" size=\"16\"></svg>\n </button>\n\n <button\n [disabled]=\"!actionsObs.changesPending || !actionsObs.hasEditPermissions\"\n cdsButton=\"primary\"\n (click)=\"\n !actionsObs.creatingNewProcess\n ? deployChanges(actionsObs.isReadOnlyProcess)\n : deployNewProcessDefinition()\n \"\n [size]=\"actionsObs.compactMode ? 'sm' : 'md'\"\n [attr.data-test-id]=\"testIds.deployButton\"\n >\n {{ 'processManagement.deploy' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"deploy\" size=\"16\"></svg>\n </button>\n </div>\n </div>\n </ng-template>\n</ng-container>\n","/*\n * Copyright 2015-2025 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 {ChangeDetectionStrategy, Component, EventEmitter, Output} from '@angular/core';\nimport {Upload16} from '@carbon/icons';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {\n ActionItem,\n CarbonListModule,\n ColumnConfig,\n ConfirmationModalModule,\n ViewType,\n} from '@valtimo/components';\nimport {\n EditPermissionsService,\n EnvironmentService,\n getCaseManagementRouteParams,\n GlobalNotificationService,\n ProcessDefinitionWithPropertiesDto,\n} from '@valtimo/shared';\nimport {ProcessDefinition} from '@valtimo/process';\nimport {ButtonModule, IconModule, IconService} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, map, Observable, switchMap, tap} from 'rxjs';\nimport {ProcessDefinitionResult} from '../../models';\nimport {ProcessManagementService, ProcessManagementStateService} from '../../services';\nimport {ActivatedRoute} from '@angular/router';\nimport {getContextObservable} from '../../utils';\nimport {PROCESS_MANAGEMENT_LIST_TEST_IDS} from '../../constants';\n\n@Component({\n selector: 'valtimo-process-management-list',\n templateUrl: './process-management-list.component.html',\n styleUrls: ['./process-management-list.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n ButtonModule,\n CarbonListModule,\n IconModule,\n IconModule,\n TranslateModule,\n ConfirmationModalModule,\n ],\n})\nexport class ProcessManagementListComponent {\n @Output() public readonly processSelected = new EventEmitter<\n ProcessDefinitionResult | 'create'\n >();\n\n public readonly $context = this.processManagementService.$context;\n public readonly processToDelete$ = new BehaviorSubject<ProcessDefinitionWithPropertiesDto | null>(\n null\n );\n public readonly showDeleteModal$ = new BehaviorSubject<boolean>(false);\n public readonly loading$ = new BehaviorSubject<boolean>(true);\n public readonly testIds = PROCESS_MANAGEMENT_LIST_TEST_IDS;\n\n public readonly ACTION_ITEMS: ActionItem[] = [\n {label: 'Delete', callback: this.onDeleteProcess.bind(this), type: 'danger'},\n ];\n\n public readonly context$ = getContextObservable(this.route);\n\n public readonly processDefinitions$ = combineLatest([\n this.processManagementStateService.reloadDefinitions$.pipe(\n tap(() => this.loading$.next(true)),\n switchMap(() => this.processManagementService.processes$),\n tap(() => this.loading$.next(false))\n ),\n this.translateService.stream('key'),\n ]).pipe(\n map(([definitions]) =>\n definitions.map(def => {\n const tags: Array<{content: string; type: string}> = [];\n if (def.draft) {\n tags.push({content: this.translateService.instant('processManagement.draft'), type: 'red'});\n }\n if (def.processDefinition?.readOnly) {\n tags.push({content: this.translateService.instant('processManagement.readOnly'), type: 'gray'});\n }\n return {...def, statusTags: tags};\n })\n )\n );\n\n public readonly hasEditPermissions$: Observable<boolean> = combineLatest([\n getCaseManagementRouteParams(this.route),\n this.context$,\n ]).pipe(\n switchMap(([params, context]) => {\n return this.editPermissionsService.hasPermissionsToEditBasedOnContext(params, context);\n })\n );\n\n public readonly FIELDS: ColumnConfig[] = [\n {key: 'processDefinition.name', label: 'processManagement.name'},\n {key: 'processDefinition.key', label: 'processManagement.key'},\n ...(this.processManagementService.$context() === 'case'\n ? [\n {\n key: 'processCaseLink.canInitializeDocument',\n label: 'processManagement.canInitializeDocument',\n viewType: ViewType.BOOLEAN,\n },\n {\n key: 'processCaseLink.startableByUser',\n label: 'processManagement.startableByUser',\n viewType: ViewType.BOOLEAN,\n },\n ]\n : []),\n {\n key: 'statusTags',\n label: 'processManagement.status',\n viewType: ViewType.TAGS,\n tagAmount: 2,\n },\n ];\n\n constructor(\n private readonly iconService: IconService,\n private readonly notificationService: GlobalNotificationService,\n private readonly processManagementService: ProcessManagementService,\n private readonly processManagementStateService: ProcessManagementStateService,\n private readonly translateService: TranslateService,\n private readonly environmentService: EnvironmentService,\n private readonly route: ActivatedRoute,\n private readonly editPermissionsService: EditPermissionsService\n ) {\n this.iconService.registerAll([Upload16]);\n }\n\n public editProcessDefinition(processDefinition: ProcessDefinitionResult): void {\n this.processSelected.emit(processDefinition);\n }\n\n public openModal(): void {\n this.processManagementStateService.openModal();\n }\n\n public onCreateProcess(): void {\n this.processSelected.emit('create');\n }\n\n public onDeleteConfirm(processDefinition: ProcessDefinition): void {\n (this.$context() === 'case'\n ? this.processManagementService.deleteProcess(processDefinition.key)\n : this.processManagementService.deleteUnlinkedProcess(processDefinition.key)\n ).subscribe(() => {\n this.processManagementStateService.reloadDefinitions();\n\n this.notificationService.showToast({\n title: this.translateService.instant(`interface.delete`),\n caption: this.translateService.instant(`processManagement.deleteNotification`),\n type: 'success',\n });\n });\n }\n\n public onDeleteProcess(process: ProcessDefinitionResult): void {\n this.processToDelete$.next(process.processDefinition);\n this.showDeleteModal$.next(true);\n }\n}\n","<!--\n ~ Copyright 2015-2025 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 [actionItems]=\"ACTION_ITEMS\"\n [showActionItems]=\"hasEditPermissions$ | async\"\n [fields]=\"FIELDS\"\n [header]=\"false\"\n [items]=\"processDefinitions$ | async\"\n [loading]=\"loading$ | async\"\n (rowClicked)=\"editProcessDefinition($event)\"\n>\n <ng-container carbonToolbarContent>\n <button\n *ngIf=\"hasEditPermissions$ | async\"\n cdsButton=\"ghost\"\n iconOnly=\"true\"\n [attr.data-test-id]=\"testIds.uploadButton\"\n (click)=\"openModal()\"\n >\n <svg cdsIcon=\"upload\" size=\"16\"></svg>\n </button>\n\n <ng-container [ngTemplateOutlet]=\"createProcess\"></ng-container>\n </ng-container>\n\n <valtimo-no-results\n [action]=\"createProcess\"\n [title]=\"'processManagement.noResults.title' | translate\"\n [description]=\"'processManagement.noResults.' + $context() + 'Description' | translate\"\n ></valtimo-no-results>\n</valtimo-carbon-list>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"processManagement.deleteModal.content\"\n [outputOnConfirm]=\"processToDelete$ | async\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"processManagement.deleteModal.title\"\n (confirmEvent)=\"onDeleteConfirm($event)\"\n></valtimo-confirmation-modal>\n\n<ng-template #createProcess>\n <button *ngIf=\"hasEditPermissions$ | async\" cdsButton=\"primary\" [attr.data-test-id]=\"testIds.createProcessButton\" (click)=\"onCreateProcess()\">\n {{ 'processManagement.createProcess' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n</ng-template>\n","/*\n * Copyright 2015-2025 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 {HttpErrorResponse} from '@angular/common/http';\nimport {ChangeDetectionStrategy, ChangeDetectorRef, Component, ViewChild} from '@angular/core';\nimport {FormBuilder, ReactiveFormsModule, Validators} from '@angular/forms';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {\n CARBON_CONSTANTS,\n ConfirmationModalModule,\n RenderInBodyComponent,\n ValtimoCdsModalDirective,\n} from '@valtimo/components';\nimport {GlobalNotificationService} from '@valtimo/shared';\nimport {PluginConfigurationMappingComponent} from '@valtimo/plugin';\nimport {ProcessDefinitionConflictResponse, ProcessLinkService} from '@valtimo/process-link';\nimport {\n ButtonModule,\n FileItem,\n FileUploaderModule,\n LayerModule,\n ModalModule,\n NotificationModule,\n} from 'carbon-components-angular';\nimport {BehaviorSubject, from, map, startWith, switchMap, take} from 'rxjs';\nimport {\n MissingReference,\n MissingReferenceType,\n ProcessDefinitionImportPreview,\n ReplacedElement,\n ReplacedElementType,\n} from '../../models';\nimport {PROCESS_MANAGEMENT_UPLOAD_TEST_IDS} from '../../constants';\nimport {ProcessManagementService, ProcessManagementStateService} from '../../services';\n\nenum UPLOAD_STEP {\n FILE_SELECT = 'fileSelect',\n REVIEW = 'review',\n SUMMARY = 'summary',\n}\n\n@Component({\n selector: 'valtimo-process-management-upload',\n templateUrl: './process-management-upload.component.html',\n styleUrls: ['./process-management-upload.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n FileUploaderModule,\n ModalModule,\n LayerModule,\n ReactiveFormsModule,\n ButtonModule,\n ConfirmationModalModule,\n RenderInBodyComponent,\n ValtimoCdsModalDirective,\n NotificationModule,\n PluginConfigurationMappingComponent,\n ],\n})\nexport class ProcessManagementUploadComponent {\n public readonly modalOpen$ = this.processManagementStateService.openModal$;\n public readonly showReplaceConfirmationModal$ = new BehaviorSubject<boolean>(false);\n public replaceModalContent = '';\n\n private _conflictingProcessDefinitionId: string | null = null;\n\n // Extensions need a leading dot: the file dialog only filters on valid accept tokens, and Carbon\n // matches a dropped file on its dot-prefixed extension\n public readonly ACCEPTED_FILES: string[] = ['.bpmn', '.zip'];\n\n public readonly UPLOAD_STEP = UPLOAD_STEP;\n\n public readonly testIds = PROCESS_MANAGEMENT_UPLOAD_TEST_IDS;\n\n public readonly form = this.formBuilder.group({\n file: this.formBuilder.control(new Set<any>(), [Validators.required]),\n });\n\n // The current control value is read instead of the emitted one, so this also reports the selection\n // correctly when the footer is re-created after going back to the file select step\n public readonly fileSelected$ = this.form.get('file')?.valueChanges.pipe(\n startWith(null),\n map(() => {\n const value = this.form.get('file')?.value;\n return !!(value instanceof Set && value.size > 0);\n })\n );\n\n public readonly activeStep$ = new BehaviorSubject<UPLOAD_STEP>(UPLOAD_STEP.FILE_SELECT);\n public readonly preview$ = new BehaviorSubject<ProcessDefinitionImportPreview | null>(null);\n public readonly missingReferences$ = new BehaviorSubject<MissingReference[]>([]);\n public readonly importing$ = new BehaviorSubject<boolean>(false);\n\n @ViewChild(PluginConfigurationMappingComponent)\n private _pluginConfigurationMapping?: PluginConfigurationMappingComponent;\n\n /**\n * Leaving the file select step destroys cds-file-uploader, which empties the form control: every\n * cds-file emits (remove) from its own ngOnDestroy. So the selection is kept here to import it\n * afterwards, and to restore it when the user goes back.\n */\n private _selectedFile: File | null = null;\n private _selectedFileItems: Set<FileItem> | null = null;\n\n constructor(\n private readonly formBuilder: FormBuilder,\n private readonly notificationService: GlobalNotificationService,\n private readonly processManagementService: ProcessManagementService,\n private readonly processManagementStateService: ProcessManagementStateService,\n private readonly processLinkService: ProcessLinkService,\n private readonly translateService: TranslateService,\n private readonly changeDetectorRef: ChangeDetectorRef\n ) {}\n\n public closeModal(): void {\n this.processManagementStateService.closeModal();\n\n setTimeout(() => {\n this.form.reset();\n this.activeStep$.next(UPLOAD_STEP.FILE_SELECT);\n this.preview$.next(null);\n this.missingReferences$.next([]);\n this.importing$.next(false);\n this._selectedFile = null;\n this._selectedFileItems = null;\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n\n public uploadProcessBpmn(): void {\n const file = this.form.value?.file?.values()?.next()?.value?.file;\n\n if (!file) return;\n\n // A package of an earlier selection must not be imported when another file is uploaded\n this._selectedFile = null;\n this._selectedFileItems = null;\n\n if (this.isZip(file)) {\n this.previewProcessPackage(file);\n return;\n }\n\n if (this.processManagementService.$context() === 'case') {\n this.uploadForCase(file);\n } else {\n this.uploadIndependent(file);\n }\n }\n\n public importProcessPackage(): void {\n const existingProcessDefinitionKeys = this.preview$.value?.existingProcessDefinitionKeys ?? [];\n\n // Ask before replacing, the same way uploading a single bpmn file does\n if (existingProcessDefinitionKeys.length > 0) {\n this.showReplaceConfirmation(\n this.translateService.instant('processManagement.upload.replaceContentWithDuplicates', {\n duplicates: existingProcessDefinitionKeys.join(', '),\n })\n );\n return;\n }\n\n this.executeImportProcessPackage();\n }\n\n private showReplaceConfirmation(content: string): void {\n this.replaceModalContent = content;\n // The content is bound from a plain field, so this OnPush component has to be checked again.\n // The bpmn flow sets it from an http error callback, which does not mark this view dirty itself.\n this.changeDetectorRef.markForCheck();\n this.showReplaceConfirmationModal$.next(true);\n }\n\n private executeImportProcessPackage(): void {\n const file = this._selectedFile;\n if (!file) return;\n\n this.importing$.next(true);\n this.processManagementService\n .importProcessDefinition(\n this.toFormData(file),\n this._pluginConfigurationMapping?.getMappings()\n )\n .pipe(take(1))\n .subscribe({\n next: result => {\n this.importing$.next(false);\n this.processManagementStateService.reloadDefinitions();\n\n if (result.missingReferences.length > 0) {\n // Keep the summary on screen: a toast disappears before it can be read\n this.missingReferences$.next(result.missingReferences);\n this.activeStep$.next(UPLOAD_STEP.SUMMARY);\n return;\n }\n\n this.notificationService.showNotification({\n type: 'success',\n title: this.translateService.instant('processManagement.upload.success'),\n });\n this.closeModal();\n },\n error: () => {\n this.importing$.next(false);\n this.notificationService.showNotification({\n type: 'error',\n title: this.translateService.instant('processManagement.upload.failure'),\n });\n },\n });\n }\n\n public onBackClick(): void {\n this.activeStep$.next(UPLOAD_STEP.FILE_SELECT);\n // Restore the selection the file uploader dropped when it was destroyed\n if (this._selectedFileItems) {\n this.form.get('file')?.setValue(this._selectedFileItems);\n }\n }\n\n public getMissingReferenceGroups(\n missingReferences: MissingReference[]\n ): {type: MissingReferenceType; references: string[]}[] {\n return missingReferences.reduce(\n (groups, missingReference) => {\n const group = groups.find(({type}) => type === missingReference.type);\n if (group) {\n group.references = [...new Set([...group.references, missingReference.reference])];\n return groups;\n }\n return [...groups, {type: missingReference.type, references: [missingReference.reference]}];\n },\n [] as {type: MissingReferenceType; references: string[]}[]\n );\n }\n\n public getReplacedElementGroups(\n elementsToReplace: ReplacedElement[]\n ): {type: ReplacedElementType; keys: string[]}[] {\n return (elementsToReplace ?? []).reduce(\n (groups, element) => {\n const group = groups.find(({type}) => type === element.type);\n if (group) {\n group.keys = [...new Set([...group.keys, element.key])];\n return groups;\n }\n return [...groups, {type: element.type, keys: [element.key]}];\n },\n [] as {type: ReplacedElementType; keys: string[]}[]\n );\n }\n\n private previewProcessPackage(file: File): void {\n const fileItem: FileItem | undefined = this.form.value?.file?.values()?.next()?.value;\n\n this.processManagementService\n .previewProcessDefinitionImport(this.toFormData(file))\n .pipe(take(1))\n .subscribe({\n next: preview => {\n this._selectedFile = file;\n this._selectedFileItems = this.form.value?.file ?? null;\n this.preview$.next(preview);\n this.missingReferences$.next(preview.missingReferences);\n\n // Nothing to review, so the package can be imported straight away. Elements that will be\n // replaced are shown in the review step first, so the replacement is a conscious choice.\n if (\n preview.pluginConfigurations.length === 0 &&\n preview.missingReferences.length === 0 &&\n preview.elementsToReplace.length === 0\n ) {\n this.importProcessPackage();\n return;\n }\n\n this.activeStep$.next(UPLOAD_STEP.REVIEW);\n },\n error: () => {\n if (fileItem) {\n fileItem.invalid = true;\n fileItem.invalidTitle = this.translateService.instant(\n 'processManagement.upload.invalidZip.title'\n );\n fileItem.invalidText = this.translateService.instant(\n 'processManagement.upload.invalidZip.text'\n );\n }\n },\n });\n }\n\n private isZip(file: File): boolean {\n return file.name.toLowerCase().endsWith('.zip');\n }\n\n private toFormData(file: File): FormData {\n const formData = new FormData();\n formData.append('file', file, file.name);\n return formData;\n }\n\n public confirmReplace(): void {\n const processDefinitionId = this._conflictingProcessDefinitionId;\n this.replaceModalContent = '';\n this._conflictingProcessDefinitionId = null;\n\n // A selected package is only set while importing a zip, which replaces through the import itself\n if (this._selectedFile) {\n this.executeImportProcessPackage();\n return;\n }\n\n if (!processDefinitionId) {\n this.notificationService.showNotification({\n type: 'error',\n title: this.translateService.instant('processManagement.upload.failure'),\n });\n return;\n }\n\n const bpmnFile = this.form.value?.file?.values()?.next()?.value?.file;\n if (!bpmnFile) return;\n\n const isCase = this.processManagementService.$context() === 'case';\n\n from(bpmnFile.text())\n .pipe(\n switchMap(bpmnXml =>\n isCase\n ? this.processLinkService.updateProcessDefinitionForCase(\n [],\n processDefinitionId,\n `${bpmnXml}`,\n this.processManagementService.caseDefinitionKey,\n this.processManagementService.caseDefinitionVersionTag\n )\n : this.processLinkService.updateProcessDefinition([], processDefinitionId, `${bpmnXml}`)\n )\n )\n .subscribe({\n next: () => {\n this.notificationService.showNotification({\n type: 'success',\n title: this.translateService.instant('processManagement.upload.success'),\n });\n this.closeModal();\n this.processManagementStateService.reloadDefinitions();\n },\n error: () => {\n this.notificationService.showNotification({\n type: 'error',\n title: this.translateService.instant('processManagement.upload.failure'),\n });\n },\n });\n }\n\n public clearReplaceModal(): void {\n this.replaceModalContent = '';\n }\n\n private uploadForCase(bpmnFile: File): void {\n from(bpmnFile.text())\n .pipe(\n switchMap(bpmnXml =>\n this.processLinkService.createProcessDefinitionForCase(\n [],\n `${bpmnXml}`,\n this.processManagementService.caseDefinitionKey,\n this.processManagementService.caseDefinitionVersionTag\n )\n )\n )\n .subscribe({\n next: () => {\n this.notificationService.showNotification({\n type: 'success',\n title: this.translateService.instant('processManagement.upload.success'),\n });\n this.closeModal();\n this.processManagementStateService.reloadDefinitions();\n },\n error: (error: unknown) => {\n const isConflict = error instanceof HttpErrorResponse && error.status === 409;\n if (isConflict) {\n const body = (error as HttpErrorResponse).error as ProcessDefinitionConflictResponse;\n this._conflictingProcessDefinitionId = body?.processDefinitionId ?? null;\n this.showReplaceConfirmation(this.buildReplaceModalContent(body));\n return;\n }\n\n this.notificationService.showNotification({\n type: 'error',\n title: this.translateService.instant('processManagement.upload.failure'),\n });\n },\n });\n }\n\n private uploadIndependent(bpmnFile: File): void {\n from(bpmnFile.text())\n .pipe(switchMap(bpmnXml => this.processLinkService.createProcessDefinition([], `${bpmnXml}`)))\n .subscribe({\n next: () => {\n this.notificationService.showNotification({\n type: 'success',\n title: this.translateService.instant('processManagement.upload.success'),\n });\n this.closeModal();\n this.processManagementStateService.reloadDefinitions();\n },\n error: (error: unknown) => {\n const isConflict = error instanceof HttpErrorResponse && error.status === 409;\n if (isConflict) {\n const body = (error as HttpErrorResponse).error as ProcessDefinitionConflictResponse;\n this._conflictingProcessDefinitionId = body?.processDefinitionId ?? null;\n this.showReplaceConfirmation(this.buildReplaceModalContent(body));\n return;\n }\n\n this.notificationService.showNotification({\n type: 'error',\n title: this.translateService.instant('processManagement.upload.failure'),\n });\n },\n });\n }\n\n private buildReplaceModalContent(body: ProcessDefinitionConflictResponse): string {\n if (body?.processDefinitionKey) {\n const label = body.processDefinitionName\n ? `${body.processDefinitionKey} (${body.processDefinitionName})`\n : body.processDefinitionKey;\n return this.translateService.instant(\n 'processManagement.upload.replaceContentWithDuplicates',\n {duplicates: label}\n );\n }\n\n return this.translateService.instant('processManagement.upload.replaceContent');\n }\n}\n","<!--\n ~ Copyright 2015-2026 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 valtimoCdsModal [open]=\"modalOpen$ | async\" size=\"sm\" (close)=\"closeModal()\">\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>{{ 'processManagement.upload.modalTitle' | translate }}</h3>\n </cds-modal-header>\n\n <ng-container\n *ngIf=\"{\n activeStep: activeStep$ | async,\n preview: preview$ | async,\n missingReferences: missingReferences$ | async,\n importing: importing$ | async,\n } as obs\"\n >\n <section cdsModalContent [cdsLayer]=\"1\" [formGroup]=\"form\" [ngSwitch]=\"obs.activeStep\">\n <cds-file-uploader\n *ngSwitchCase=\"UPLOAD_STEP.FILE_SELECT\"\n [accept]=\"ACCEPTED_FILES\"\n [buttonText]=\"'processManagement.upload.buttonText' | translate\"\n [description]=\"'processManagement.upload.description' | translate\"\n [multiple]=\"false\"\n [title]=\"'processManagement.upload.title' | translate\"\n buttonType=\"primary\"\n formControlName=\"file\"\n [attr.data-test-id]=\"testIds.fileUploader\"\n >\n </cds-file-uploader>\n\n <div *ngSwitchCase=\"UPLOAD_STEP.REVIEW\" class=\"process-management-upload__review\">\n <ng-container *ngFor=\"let group of getMissingReferenceGroups(obs.missingReferences)\">\n <cds-inline-notification\n [notificationObj]=\"{\n type:\n group.type === 'SUB_PROCESS' || group.type === 'DECISION_DEFINITION'\n ? 'warning'\n : 'error',\n title:\n 'processManagement.upload.missingReference.' + group.type + '.title' | translate,\n message:\n ('processManagement.upload.missingReference.' + group.type + '.message'\n | translate) +\n ' ' +\n group.references.join(', '),\n showClose: false,\n lowContrast: true,\n }\"\n ></cds-inline-notification>\n </ng-container>\n\n <ng-container\n *ngFor=\"let group of getReplacedElementGroups(obs.preview?.elementsToReplace ?? [])\"\n >\n <cds-inline-notification\n [notificationObj]=\"{\n type: 'warning',\n title: 'processManagement.upload.willBeReplaced.' + group.type + '.title' | translate,\n message:\n ('processManagement.upload.willBeReplaced.' + group.type + '.message' | translate) +\n ' ' +\n group.keys.join(', '),\n showClose: false,\n lowContrast: true,\n }\"\n ></cds-inline-notification>\n </ng-container>\n\n <ng-container *ngIf=\"obs.preview?.pluginConfigurations?.length\">\n <p class=\"process-management-upload__description\">\n {{ 'processManagement.upload.pluginsDescription' | translate }}\n </p>\n\n <valtimo-plugin-configuration-mapping\n [pluginConfigurations]=\"obs.preview.pluginConfigurations\"\n ></valtimo-plugin-configuration-mapping>\n </ng-container>\n </div>\n\n <div *ngSwitchCase=\"UPLOAD_STEP.SUMMARY\" class=\"process-management-upload__review\">\n <cds-inline-notification\n [notificationObj]=\"{\n type: 'success',\n title: 'processManagement.upload.success' | translate,\n message: 'processManagement.upload.summaryDescription' | translate,\n showClose: false,\n lowContrast: true,\n }\"\n ></cds-inline-notification>\n\n <ng-container *ngFor=\"let group of getMissingReferenceGroups(obs.missingReferences)\">\n <cds-inline-notification\n [notificationObj]=\"{\n type: 'warning',\n title:\n 'processManagement.upload.missingReference.' + group.type + '.title' | translate,\n message:\n ('processManagement.upload.missingReference.' + group.type + '.message'\n | translate) +\n ' ' +\n group.references.join(', '),\n showClose: false,\n lowContrast: true,\n }\"\n ></cds-inline-notification>\n </ng-container>\n </div>\n </section>\n\n <cds-modal-footer>\n <ng-container *ngIf=\"obs.activeStep === UPLOAD_STEP.FILE_SELECT\">\n <button\n cdsButton=\"secondary\"\n [attr.data-test-id]=\"testIds.cancelButton\"\n (click)=\"closeModal()\"\n >\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button\n cdsButton=\"primary\"\n [disabled]=\"(fileSelected$ | async) === false || obs.importing\"\n [attr.data-test-id]=\"testIds.submitButton\"\n (click)=\"uploadProcessBpmn()\"\n >\n {{ 'interface.upload' | translate }}\n </button>\n </ng-container>\n\n <ng-container *ngIf=\"obs.activeStep === UPLOAD_STEP.REVIEW\">\n <button\n cdsButton=\"secondary\"\n [attr.data-test-id]=\"testIds.backButton\"\n (click)=\"onBackClick()\"\n >\n {{ 'interface.back' | translate }}\n </button>\n\n <button\n cdsButton=\"primary\"\n [disabled]=\"obs.preview?.canImport === false || obs.importing\"\n [attr.data-test-id]=\"testIds.importButton\"\n (click)=\"importProcessPackage()\"\n >\n {{ 'interface.upload' | translate }}\n </button>\n </ng-container>\n\n <button\n *ngIf=\"obs.activeStep === UPLOAD_STEP.SUMMARY\"\n cdsButton=\"primary\"\n [attr.data-test-id]=\"testIds.closeButton\"\n (click)=\"closeModal()\"\n >\n {{ 'interface.close' | translate }}\n </button>\n </cds-modal-footer>\n </ng-container>\n</cds-modal>\n\n<valtimo-render-in-body>\n <valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"processManagement.upload.replaceConfirm\"\n confirmButtonType=\"danger\"\n cancelButtonTextTranslationKey=\"interface.cancel\"\n [content]=\"replaceModalContent\"\n [showModalSubject$]=\"showReplaceConfirmationModal$\"\n titleTranslationKey=\"processManagement.upload.replaceTitle\"\n (confirmEvent)=\"confirmReplace()\"\n (cancelEvent)=\"clearReplaceModal()\"\n ></valtimo-confirmation-modal>\n</valtimo-render-in-body>\n","/*\n * Copyright 2015-2025 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 {ChangeDetectionStrategy, Component, OnDestroy, OnInit} from '@angular/core';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {TranslateService} from '@ngx-translate/core';\nimport {getCaseManagementRouteParams} from '@valtimo/shared';\nimport {LoadingModule, NotificationModule} from 'carbon-components-angular';\nimport {isEqual} from 'lodash';\nimport {BehaviorSubject, combineLatest, startWith, Subscription, switchMap} from 'rxjs';\nimport {distinctUntilChanged, filter} from 'rxjs/operators';\nimport {ProcessDefinitionResult} from '../../models';\nimport {ProcessManagementService} from '../../services';\nimport {getContextObservable} from '../../utils';\nimport {ProcessManagementListComponent} from '../process-management-list/process-management-list.component';\nimport {ProcessManagementUploadComponent} from '../process-management-upload/process-management-upload.component';\n\n@Component({\n selector: 'valtimo-process-management',\n templateUrl: './process-management.component.html',\n styleUrls: ['./process-management.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n ProcessManagementListComponent,\n ProcessManagementUploadComponent,\n LoadingModule,\n NotificationModule,\n ],\n providers: [TranslateService],\n})\nexport class ProcessManagementComponent implements OnInit, OnDestroy {\n public readonly context$ = getContextObservable(this.route);\n\n public readonly params$ = this.context$.pipe(\n filter(context => context === 'case'),\n switchMap(() => getCaseManagementRouteParams(this.route)),\n distinctUntilChanged((previous, current) => isEqual(previous, current))\n );\n\n public readonly paramsAreSet$ = new BehaviorSubject<boolean>(false);\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly processManagementService: ProcessManagementService,\n private readonly route: ActivatedRoute,\n private readonly router: Router\n ) {}\n\n public ngOnInit(): void {\n this.openParamsAndContextSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public onProcessSelected(selectedProcessEvent: ProcessDefinitionResult | 'create'): void {\n const editParam =\n selectedProcessEvent === 'create' ? 'create' : selectedProcessEvent?.processDefinition?.key;\n\n this.router.navigate([editParam], {\n relativeTo: this.route,\n });\n }\n\n private openParamsAndContextSubscription(): void {\n this._subscriptions.add(\n combineLatest([this.context$, this.params$.pipe(startWith(null))]).subscribe(\n ([context, params]) => {\n if (context) this.processManagementService.context = context;\n\n if (params) {\n this.processManagementService.setParams(\n params.caseDefinitionKey,\n params.caseDefinitionVersionTag\n );\n }\n\n this.paramsAreSet$.next(true);\n }\n )\n );\n }\n}\n","<!--\n ~ Copyright 2015-2025 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 paramsAreSet: paramsAreSet$ | async,\n } as obs\"\n>\n @if (obs.paramsAreSet) {\n <valtimo-process-management-list\n (processSelected)=\"onProcessSelected($event)\"\n ></valtimo-process-management-list>\n\n <valtimo-process-management-upload></valtimo-process-management-upload>\n } @else {\n <cds-loading></cds-loading>\n }\n</ng-container>\n","/*\n * Copyright 2015-2025 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 './process-management-builder/process-management-builder.component';\nexport * from './process-management/process-management.component';\n","/*\n * Copyright 2015-2025 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 {RouterModule, Routes} from '@angular/router';\nimport {CommonModule} from '@angular/common';\nimport {AuthGuardService} from '@valtimo/security';\nimport {ROLE_ADMIN} from '@valtimo/shared';\nimport {ProcessManagementBuilderComponent, ProcessManagementComponent} from './components';\nimport {ProcessManagementRouteData} from './models';\nimport {pendingChangesGuard} from '@valtimo/components';\n\nconst routes: Routes = [\n {\n path: 'processes',\n component: ProcessManagementComponent,\n canActivate: [AuthGuardService],\n data: {\n title: 'Processes',\n roles: [ROLE_ADMIN],\n context: 'independent',\n } as ProcessManagementRouteData,\n },\n {\n path: 'processes/create',\n component: ProcessManagementBuilderComponent,\n canActivate: [AuthGuardService],\n //TODO: Re-enable when pending changes is fixed\n // canDeactivate: [pendingChangesGuard],\n data: {\n title: 'Create new Process',\n roles: [ROLE_ADMIN],\n context: 'independent',\n } as ProcessManagementRouteData,\n },\n {\n path: 'processes/:processDefinitionKey',\n component: ProcessManagementBuilderComponent,\n canActivate: [AuthGuardService],\n //TODO: Re-enable when pending changes is fixed\n // canDeactivate: [pendingChangesGuard],\n data: {\n title: 'Process details',\n roles: [ROLE_ADMIN],\n customPageTitle: true,\n context: 'independent',\n } as ProcessManagementRouteData,\n },\n];\n\n@NgModule({\n declarations: [],\n imports: [CommonModule, RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class ProcessManagementRoutingModule {}\n","/*\n * Copyright 2015-2025 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 {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {CarbonListModule, WidgetModule} from '@valtimo/components';\nimport {ProcessLinkModule} from '@valtimo/process-link';\nimport {\n ButtonModule,\n DropdownModule,\n FileUploaderModule,\n IconModule,\n LayerModule,\n ModalModule,\n NotificationModule,\n RadioModule,\n} from 'carbon-components-angular';\nimport {ProcessManagementBuilderComponent, ProcessManagementComponent} from './components';\nimport {ProcessManagementRoutingModule} from './process-management-routing.module';\n\n@NgModule({\n imports: [\n CommonModule,\n ProcessManagementRoutingModule,\n WidgetModule,\n FormsModule,\n TranslateModule,\n ProcessLinkModule,\n ProcessManagementComponent,\n ProcessManagementBuilderComponent,\n CarbonListModule,\n ButtonModule,\n IconModule,\n DropdownModule,\n ModalModule,\n NotificationModule,\n RadioModule,\n ReactiveFormsModule,\n ModalModule,\n FileUploaderModule,\n LayerModule,\n ],\n})\nexport class ProcessManagementModule {}\n","/*\n * Copyright 2015-2025 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 process-management\n */\n\nexport * from './lib/process-management.module';\nexport * from './lib/services/process-management-state.service';\nexport * from './lib/components/process-management/process-management.component';\nexport * from './lib/components/process-management-builder/process-management-builder.component';\nexport * from './lib/models';\nexport * from './lib/constants/process-management.test-ids';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","map","i4","i6.ProcessManagementEditorService","i6.ProcessManagementService","i6.ProcessBeanService","i11","i3.ProcessManagementService","i3.ProcessManagementStateService","i5","i7","i8","filter","i1.ProcessManagementService","i3"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"valtimo-process-management.mjs","sources":["../../../../projects/valtimo/process-management/src/lib/constants/bpmn.constants.ts","../../../../projects/valtimo/process-management/src/lib/constants/process-management.test-ids.ts","../../../../projects/valtimo/process-management/src/lib/constants/index.ts","../../../../projects/valtimo/process-management/src/lib/services/process-bean.service.ts","../../../../projects/valtimo/process-management/src/lib/services/process-management-editor.service.ts","../../../../projects/valtimo/process-management/src/lib/services/process-management-state.service.ts","../../../../projects/valtimo/process-management/src/lib/models/window.model.ts","../../../../projects/valtimo/process-management/src/lib/models/bpmn.model.ts","../../../../projects/valtimo/process-management/src/lib/models/process-bean.model.ts","../../../../projects/valtimo/process-management/src/lib/models/process-definition-import.model.ts","../../../../projects/valtimo/process-management/src/lib/models/process-management.model.ts","../../../../projects/valtimo/process-management/src/lib/models/process.model.ts","../../../../projects/valtimo/process-management/src/lib/models/index.ts","../../../../projects/valtimo/process-management/src/lib/services/process-management.service.ts","../../../../projects/valtimo/process-management/src/lib/services/index.ts","../../../../projects/valtimo/process-management/src/lib/utils/bpmn.utils.ts","../../../../projects/valtimo/process-management/src/lib/utils/process-management.utils.ts","../../../../projects/valtimo/process-management/src/lib/utils/process-management-builder.utils.ts","../../../../projects/valtimo/process-management/src/lib/utils/index.ts","../../../../projects/valtimo/process-management/src/lib/components/process-management-builder/panel/valtimo-properties-provider.ts","../../../../projects/valtimo/process-management/src/lib/components/process-management-builder/panel/read-only-properties-panel.ts","../../../../projects/valtimo/process-management/src/lib/components/process-management-builder/panel/expression-autocomplete.ts","../../../../projects/valtimo/process-management/src/lib/components/process-management-builder/panel/index.ts","../../../../projects/valtimo/process-management/src/lib/components/process-management-builder/process-management-builder.component.ts","../../../../projects/valtimo/process-management/src/lib/components/process-management-builder/process-management-builder.component.html","../../../../projects/valtimo/process-management/src/lib/components/process-management-list/process-management-list.component.ts","../../../../projects/valtimo/process-management/src/lib/components/process-management-list/process-management-list.component.html","../../../../projects/valtimo/process-management/src/lib/components/process-management-upload/process-management-upload.component.ts","../../../../projects/valtimo/process-management/src/lib/components/process-management-upload/process-management-upload.component.html","../../../../projects/valtimo/process-management/src/lib/components/process-management/process-management.component.ts","../../../../projects/valtimo/process-management/src/lib/components/process-management/process-management.component.html","../../../../projects/valtimo/process-management/src/lib/components/index.ts","../../../../projects/valtimo/process-management/src/lib/process-management-routing.module.ts","../../../../projects/valtimo/process-management/src/lib/process-management.module.ts","../../../../projects/valtimo/process-management/src/public-api.ts","../../../../projects/valtimo/process-management/src/valtimo-process-management.ts"],"sourcesContent":["/*\n * Copyright 2015-2025 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 EMPTY_BPMN = `\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<bpmn:definitions xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:bpmn=\"http://www.omg.org/spec/BPMN/20100524/MODEL\" xmlns:bpmndi=\"http://www.omg.org/spec/BPMN/20100524/DI\" xmlns:dc=\"http://www.omg.org/spec/DD/20100524/DC\" targetNamespace=\"http://bpmn.io/schema/bpmn\" id=\"Definitions_1\">\n <bpmn:process id=\"Process_1\" isExecutable=\"false\">\n <bpmn:startEvent id=\"StartEvent_1\"/>\n </bpmn:process>\n <bpmndi:BPMNDiagram id=\"BPMNDiagram_1\">\n <bpmndi:BPMNPlane id=\"BPMNPlane_1\" bpmnElement=\"Process_1\">\n <bpmndi:BPMNShape id=\"_BPMNShape_StartEvent_2\" bpmnElement=\"StartEvent_1\">\n <dc:Bounds height=\"36.0\" width=\"36.0\" x=\"173.0\" y=\"102.0\"/>\n </bpmndi:BPMNShape>\n </bpmndi:BPMNPlane>\n </bpmndi:BPMNDiagram>\n</bpmn:definitions>\n`;\n\nexport {EMPTY_BPMN};\n","/*\n * Copyright 2015-2026 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 const PROCESS_MANAGEMENT_LIST_TEST_IDS = {\n uploadButton: 'processManagementUploadButton',\n createProcessButton: 'processManagementCreateProcessButton',\n} as const;\n\nexport const PROCESS_MANAGEMENT_UPLOAD_TEST_IDS = {\n fileUploader: 'processManagementUploadFileUploader',\n cancelButton: 'processManagementUploadCancelButton',\n submitButton: 'processManagementUploadSubmitButton',\n backButton: 'processManagementUploadBackButton',\n importButton: 'processManagementUploadImportButton',\n closeButton: 'processManagementUploadCloseButton',\n} as const;\n\n/**\n * The \"Process link\" group the Valtimo properties provider adds to the bpmn-js\n * properties panel. The surrounding panel is rendered by bpmn-js itself and\n * cannot carry test ids — only this group is ours.\n */\nexport const PROCESS_LINK_PANEL_TEST_IDS = {\n createButton: 'processLinkPanelCreateButton',\n editButton: 'processLinkPanelEditButton',\n unlinkButton: 'processLinkPanelUnlinkButton',\n} as const;\n\nexport const PROCESS_MANAGEMENT_BUILDER_TEST_IDS = {\n draftToggle: 'processManagementBuilderDraftToggle',\n startsCaseToggle: 'processManagementBuilderStartsCaseToggle',\n startableByUserToggle: 'processManagementBuilderStartableByUserToggle',\n deployButton: 'processManagementBuilderDeployButton',\n exportOption: 'processManagementBuilderExportOption',\n markersVisibilityToggle: 'processManagementBuilderMarkersVisibilityToggle',\n versionDropdown: 'processManagementBuilderVersionDropdown',\n validateButton: 'processManagementBuilderValidateButton',\n moreButton: 'processManagementBuilderMoreButton',\n readOnlyTag: 'processManagementBuilderReadOnlyTag',\n systemProcessTag: 'processManagementBuilderSystemProcessTag',\n validationErrors: 'processManagementBuilderValidationErrors',\n} as const;\n","/*\n * Copyright 2015-2025 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 './bpmn.constants';\nexport * from './process-management.test-ids';\n","/*\n * Copyright 2015-2026 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 {HttpClient} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {BaseApiService, ConfigService} from '@valtimo/shared';\nimport {Observable} from 'rxjs';\nimport {ProcessBeanDto} from '../models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProcessBeanService extends BaseApiService {\n constructor(\n protected readonly httpClient: HttpClient,\n protected readonly configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n public getProcessBeans(): Observable<ProcessBeanDto[]> {\n return this.httpClient.get<ProcessBeanDto[]>(\n this.getApiUrl('/management/v1/process-bean')\n );\n }\n\n public getProcessBean(beanName: string): Observable<ProcessBeanDto> {\n return this.httpClient.get<ProcessBeanDto>(\n this.getApiUrl(`/management/v1/process-bean/${beanName}`)\n );\n }\n}\n","/*\n * Copyright 2015-2026 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, OnDestroy} from '@angular/core';\nimport {BehaviorSubject, filter, Observable, Subject, Subscription} from 'rxjs';\nimport {distinctUntilChanged} from 'rxjs/operators';\nimport {isEqual} from 'lodash';\nimport {\n ProcessLink,\n ProcessLinkCreateEvent,\n ProcessLinkDeleteEvent,\n ProcessLinkService,\n ProcessLinkUpdateEvent,\n} from '@valtimo/process-link';\nimport {\n DeleteProcessLinkEvent,\n OpenProcessLinkModalEvent,\n ProcessDefinitionValidationError,\n} from '../models';\nimport {AutofilledElement} from '@valtimo/process';\nimport {\n BuildingBlockManagementParams,\n CaseManagementParams,\n ManagementContext,\n ProcessDefinitionWithPropertiesDto,\n} from '@valtimo/shared';\nimport {FormDefinitionOption, FormService} from '@valtimo/form';\n\n@Injectable()\nexport class ProcessManagementEditorService implements OnDestroy {\n private readonly _selectionProcessDefinitionSubject$ =\n new BehaviorSubject<ProcessDefinitionWithPropertiesDto | null>(null);\n\n public get selectionProcessDefinition$(): Observable<ProcessDefinitionWithPropertiesDto> {\n return this._selectionProcessDefinitionSubject$.pipe(\n filter(selectedProcessDefinition => !!selectedProcessDefinition?.id),\n distinctUntilChanged((previous, current) => isEqual(previous, current))\n );\n }\n\n public get selectionProcessDefinition(): ProcessDefinitionWithPropertiesDto {\n return this._selectionProcessDefinitionSubject$.getValue();\n }\n\n private readonly _processLinksForSelectedDefinition$ = new BehaviorSubject<ProcessLink[]>([]);\n\n public get processLinksForSelectedDefinition$(): Observable<ProcessLink[]> {\n return this._processLinksForSelectedDefinition$.asObservable();\n }\n\n public get processLinksForSelectedDefinition(): ProcessLink[] {\n return this._processLinksForSelectedDefinition$.getValue();\n }\n\n private readonly _openProcessLinkModalEvents$ = new Subject<OpenProcessLinkModalEvent>();\n\n public get openProcessLinkModalEvents$(): Observable<OpenProcessLinkModalEvent> {\n return this._openProcessLinkModalEvents$.asObservable();\n }\n\n private readonly _deleteProcessLinkEvents$ = new Subject<DeleteProcessLinkEvent>();\n\n public get deleteProcessLinkEvents$(): Observable<DeleteProcessLinkEvent> {\n return this._deleteProcessLinkEvents$.asObservable();\n }\n\n public setSelectedProcessDefinition(definition: ProcessDefinitionWithPropertiesDto): void {\n this._selectionProcessDefinitionSubject$.next(definition);\n }\n\n private readonly _managementRouteParams$ = new BehaviorSubject<\n [ManagementContext, CaseManagementParams | BuildingBlockManagementParams] | null\n >(null);\n\n private readonly _formDefinitionOptions$ = new BehaviorSubject<FormDefinitionOption[]>([]);\n\n public get formDefinitionOptions(): FormDefinitionOption[] {\n return this._formDefinitionOptions$.getValue();\n }\n\n private readonly _validationErrors$ = new BehaviorSubject<ProcessDefinitionValidationError[]>(\n []\n );\n\n public readonly validationErrors$ = this._validationErrors$.asObservable();\n\n public get validationErrors(): ProcessDefinitionValidationError[] {\n return this._validationErrors$.getValue();\n }\n\n public setValidationErrors(errors: ProcessDefinitionValidationError[]): void {\n this._validationErrors$.next(errors);\n }\n\n private readonly _dismissedAutofills$ = new BehaviorSubject<Set<string>>(new Set());\n private readonly _autofillDismissed$ = new Subject<string>();\n\n public get dismissedAutofills(): Set<string> {\n return this._dismissedAutofills$.getValue();\n }\n\n public get autofillDismissed$(): Observable<string> {\n return this._autofillDismissed$.asObservable();\n }\n\n public dismissAutofill(activityId: string): void {\n const current = this._dismissedAutofills$.getValue();\n current.add(activityId);\n this._dismissedAutofills$.next(new Set(current));\n this._autofillDismissed$.next(activityId);\n }\n\n public clearDismissedAutofills(): void {\n this._dismissedAutofills$.next(new Set());\n }\n\n public isAutofillDismissed(activityId: string): boolean {\n return this._dismissedAutofills$.getValue().has(activityId);\n }\n\n private readonly _autofilledElements$ = new BehaviorSubject<AutofilledElement[]>([]);\n\n public get autofilledElements(): AutofilledElement[] {\n return this._autofilledElements$.getValue();\n }\n\n public setAutofilledElements(elements: AutofilledElement[]): void {\n this._autofilledElements$.next(elements);\n }\n\n public getAutofillForActivity(activityId: string): AutofilledElement | undefined {\n return this._autofilledElements$.getValue().find(e => e.activityId === activityId);\n }\n\n private readonly _editingAllowed$ = new BehaviorSubject<boolean>(true);\n\n public get editingAllowed(): boolean {\n return this._editingAllowed$.getValue();\n }\n\n public setEditingAllowed(editingAllowed: boolean): void {\n this._editingAllowed$.next(editingAllowed);\n }\n\n private _updateBpmnViewFunction!: () => void;\n\n private _updatingBpmnView = false;\n\n private _activityIdBusinessIdMap: Record<string, string> = {};\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly processLinkService: ProcessLinkService,\n private readonly formService: FormService\n ) {\n this.openSelectedProcessDefinitionSubscription();\n this.openFormDefinitionOptionsSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public setManagementRouteParams(\n context: ManagementContext,\n params: CaseManagementParams | BuildingBlockManagementParams\n ): void {\n this._managementRouteParams$.next([context, params]);\n }\n\n public sendOpenProcessLinkModalEvent(\n event: OpenProcessLinkModalEvent,\n updateBpmnViewFunction: () => void\n ): void {\n this._updateBpmnViewFunction = updateBpmnViewFunction;\n this._openProcessLinkModalEvents$.next(event);\n }\n\n public sendDeleteProcessLinkEvent(\n event: DeleteProcessLinkEvent,\n updateBpmnViewFunction: () => void\n ): void {\n this._updateBpmnViewFunction = updateBpmnViewFunction;\n this._deleteProcessLinkEvents$.next(event);\n }\n\n public updateProcessLink(event: ProcessLinkUpdateEvent): void {\n this.setProcessLinksForSelectedDefinition(\n this.processLinksForSelectedDefinition.map(processLink => {\n if (processLink.activityId === event.activityId) {\n return {...processLink, ...(event as any)};\n }\n\n return processLink;\n })\n );\n\n this.updateBpmnView();\n }\n\n public createProcessLink(event: ProcessLinkCreateEvent): void {\n this.setProcessLinksForSelectedDefinition([\n ...this.processLinksForSelectedDefinition,\n event as any,\n ]);\n\n this.updateBpmnView();\n }\n\n public deleteProcessLink(\n event: ProcessLinkDeleteEvent,\n updateBpmnViewFunction?: () => void\n ): void {\n if (updateBpmnViewFunction) {\n this._updateBpmnViewFunction = updateBpmnViewFunction;\n }\n\n this.setProcessLinksForSelectedDefinition(\n this.processLinksForSelectedDefinition.filter(\n processLink => processLink.activityId !== event.activityId\n )\n );\n\n this.updateBpmnView();\n }\n\n public setProcessLinksForSelectedDefinition(processLinks: ProcessLink[]): void {\n this._processLinksForSelectedDefinition$.next(processLinks);\n }\n\n public setActivityIdBusinessIdMap(activityIdBusinessIdMap: Record<string, string>): void {\n this._activityIdBusinessIdMap = activityIdBusinessIdMap;\n }\n\n public updateProcessLinksOnIdChange(activityId: string, newBusinessId: string): void {\n const newBusinessIdWithoutLabelString = newBusinessId.replace('_label', '');\n\n if (\n !this._activityIdBusinessIdMap[activityId] ||\n this._activityIdBusinessIdMap[activityId] === newBusinessIdWithoutLabelString\n ) {\n return;\n }\n\n this.updateProcessLinkId(this._activityIdBusinessIdMap[activityId], newBusinessId);\n this._activityIdBusinessIdMap = {...this._activityIdBusinessIdMap, [activityId]: newBusinessId};\n }\n\n private openSelectedProcessDefinitionSubscription(): void {\n this._subscriptions.add(\n this.selectionProcessDefinition$.subscribe(definition => {\n this.fetchProcessLinksForDefinition(definition.id);\n })\n );\n }\n\n private fetchProcessLinksForDefinition(processDefinitionId: string): void {\n this.processLinkService.getProcessLink({processDefinitionId}).subscribe(res => {\n this.setProcessLinksForSelectedDefinition(res);\n });\n }\n\n private updateBpmnView(): void {\n if (!this._updateBpmnViewFunction || this._updatingBpmnView) return;\n this._updatingBpmnView = true;\n this._updateBpmnViewFunction();\n this._updatingBpmnView = false;\n }\n\n private updateProcessLinkId(oldBusinessId: string, newBusinessId: string): void {\n this.setProcessLinksForSelectedDefinition(\n this.processLinksForSelectedDefinition.map(processLink => {\n if (processLink.activityId === oldBusinessId) {\n return {...processLink, activityId: newBusinessId};\n }\n\n return processLink;\n })\n );\n\n this.updateBpmnView();\n }\n\n private openFormDefinitionOptionsSubscription(): void {\n this._subscriptions.add(\n this._managementRouteParams$\n .pipe(\n filter(\n (\n params\n ): params is [\n ManagementContext,\n CaseManagementParams | BuildingBlockManagementParams,\n ] => params !== null\n )\n )\n .subscribe(([context, params]) => {\n switch (context) {\n case 'independent':\n this.formService\n .getAllUnlinkedFormDefinitions()\n .subscribe(options => this._formDefinitionOptions$.next(options));\n break;\n case 'case':\n const caseParams = params as CaseManagementParams;\n this.formService\n .getAllFormDefinitionsForCaseDefinition(\n caseParams.caseDefinitionKey,\n caseParams.caseDefinitionVersionTag\n )\n .subscribe(options => this._formDefinitionOptions$.next(options));\n break;\n case 'buildingBlock': {\n const buildingBlockParams = params as BuildingBlockManagementParams;\n this.formService\n .getAllFormDefinitionsForBuildingBlock(\n buildingBlockParams.buildingBlockDefinitionKey,\n buildingBlockParams.buildingBlockDefinitionVersionTag\n )\n .subscribe(options => this._formDefinitionOptions$.next(options));\n break;\n }\n }\n })\n );\n }\n}\n","/*\n * Copyright 2015-2025 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 {Injectable} from '@angular/core';\nimport {BehaviorSubject, Observable, Subject} from 'rxjs';\n\n@Injectable({providedIn: 'root'})\nexport class ProcessManagementStateService {\n private readonly _openModal$ = new Subject<boolean>();\n private readonly _reloadDefinitions$ = new BehaviorSubject<null>(null);\n\n public get openModal$(): Observable<boolean> {\n return this._openModal$.asObservable();\n }\n\n public get reloadDefinitions$(): Observable<null> {\n return this._reloadDefinitions$.asObservable();\n }\n\n public openModal(): void {\n this._openModal$.next(true);\n }\n\n public closeModal(): void {\n this._openModal$.next(false);\n }\n\n public reloadDefinitions(): void {\n this._reloadDefinitions$.next(null);\n }\n}\n","/*\n * Copyright 2015-2026 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 {ValtimoWindow} from '@valtimo/shared';\nimport {ProcessManagementEditorService} from '../services';\nimport {TranslateService} from '@ngx-translate/core';\nimport {PluginTranslationService} from '@valtimo/plugin';\nimport {ProcessLinkService} from '@valtimo/process-link';\n\ninterface ProcessManagementWindow extends ValtimoWindow {\n processManagementEditorService: ProcessManagementEditorService;\n translateService: TranslateService;\n pluginTranslationService: PluginTranslationService;\n processLinkService: ProcessLinkService;\n}\n\nexport {ProcessManagementWindow};\n","/*\n * Copyright 2015-2025 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\ninterface BpmnElement {\n type: string;\n id: string;\n di?: {id?: string; bpmnElement?: {name?: string}};\n}\nexport {BpmnElement};\n","/*\n * Copyright 2015-2026 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\ninterface ProcessBeanMethodParameterDto {\n name: string;\n type: string;\n}\n\ninterface ProcessBeanMethodDto {\n name: string;\n description: string | null;\n example: string | null;\n returnType: string;\n parameters: ProcessBeanMethodParameterDto[];\n}\n\ninterface ProcessBeanDto {\n name: string;\n className: string;\n description: string | null;\n methods: ProcessBeanMethodDto[];\n}\n\nexport {ProcessBeanDto, ProcessBeanMethodDto, ProcessBeanMethodParameterDto};\n","/*\n * Copyright 2015-2026 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\ntype MissingReferenceType =\n | 'SUB_PROCESS'\n | 'DECISION_DEFINITION'\n | 'FORM'\n | 'FORM_FLOW'\n | 'READ_ONLY_SYSTEM_PROCESS';\n\ninterface MissingReference {\n type: MissingReferenceType;\n reference: string;\n activityId: string | null;\n processDefinitionKey: string | null;\n blocksImport: boolean;\n}\n\ninterface ProcessDefinitionPluginConfigurationPreview {\n pluginConfigurationId: string;\n pluginDefinitionKey: string | null;\n pluginActionDefinitionKey: string;\n processDefinitionKey: string;\n activityId: string;\n existsInTargetEnvironment: boolean;\n}\n\ntype ReplacedElementType = 'PROCESS_DEFINITION' | 'DECISION_DEFINITION' | 'FORM';\n\ninterface ReplacedElement {\n type: ReplacedElementType;\n key: string;\n}\n\ninterface ProcessDefinitionImportPreview {\n processDefinitionKeys: string[];\n /** The processes of the package that already exist here and will be replaced by the import. */\n existingProcessDefinitionKeys: string[];\n pluginConfigurations: ProcessDefinitionPluginConfigurationPreview[];\n missingReferences: MissingReference[];\n /** Elements bundled in the package that already exist here and will be replaced by the import. */\n elementsToReplace: ReplacedElement[];\n canImport: boolean;\n}\n\ninterface ProcessDefinitionImportResult {\n processDefinitionKeys: string[];\n missingReferences: MissingReference[];\n}\n\nexport {\n MissingReference,\n MissingReferenceType,\n ProcessDefinitionImportPreview,\n ProcessDefinitionImportResult,\n ProcessDefinitionPluginConfigurationPreview,\n ReplacedElement,\n ReplacedElementType,\n};\n","/*\n * Copyright 2015-2026 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 {ModalParams, ProcessLink} from '@valtimo/process-link';\nimport {ManagementContext, ProcessDefinitionValidationError} from '@valtimo/shared';\n\ninterface OpenProcessLinkModalEvent {\n modalParams: ModalParams;\n processLink?: ProcessLink;\n}\n\ninterface DeleteProcessLinkEvent {\n activityId: string;\n}\n\nconst PROCESS_MANAGEMENT_ENDPOINTS = {\n case: '/management/v1/case-definition',\n independent: '/management/v1/process-definition',\n};\n\ninterface ProcessManagementRouteData {\n context: ManagementContext;\n}\n\ninterface UpdateProcessDefinitionCaseDefinitionRequest {\n canInitializeDocument?: boolean;\n startableByUser?: boolean;\n}\n\ninterface ProcessDefinitionValidationResult {\n isValid: boolean;\n hasWarnings: boolean;\n errors: ProcessDefinitionValidationError[];\n}\n\ninterface ProcessDefinitionValidateRequest {\n bpmnXml: string;\n processLinks: any[];\n canInitializeDocument?: boolean;\n startableByUser?: boolean;\n}\n\ninterface ActivityMarkerInfo {\n hasExecutionListener: boolean;\n hasTaskListener: boolean;\n hasProcessLink: boolean;\n executionListenerCount: number;\n taskListenerCount: number;\n}\n\nexport {\n OpenProcessLinkModalEvent,\n PROCESS_MANAGEMENT_ENDPOINTS,\n ProcessManagementRouteData,\n UpdateProcessDefinitionCaseDefinitionRequest,\n DeleteProcessLinkEvent,\n ProcessDefinitionValidationError,\n ProcessDefinitionValidationResult,\n ProcessDefinitionValidateRequest,\n ActivityMarkerInfo,\n};\n","/*\n * Copyright 2015-2026 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 {ProcessDocumentDefinition} from '@valtimo/document';\nimport {ProcessLink} from '@valtimo/process-link';\nimport {AutofilledElement} from '@valtimo/process';\nimport {ProcessDefinitionWithPropertiesDto} from '@valtimo/shared';\n\ninterface ProcessDefinitionResult {\n bpmn20Xml: string;\n processCaseLink?: ProcessDocumentDefinition;\n processDefinition: ProcessDefinitionWithPropertiesDto;\n processLinks: ProcessLink[];\n draft?: boolean;\n autofilledElements?: AutofilledElement[];\n}\n\nexport {ProcessDefinitionResult};\n","/*\n * Copyright 2015-2025 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 './window.model';\nexport * from './bpmn.model';\nexport * from './process-bean.model';\nexport * from './process-definition-import.model';\nexport * from './process-management.model';\nexport * from './process.model';\n","/*\n * Copyright 2015-2025 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 {HttpClient, HttpHeaders, HttpResponse} from '@angular/common/http';\nimport {Injectable, Signal, signal} from '@angular/core';\nimport {\n BaseApiService,\n BuildingBlockProcessDefinitionWithLinksDto,\n ConfigService,\n InterceptorSkip,\n InterceptorSkipHeader,\n ManagementContext,\n} from '@valtimo/shared';\nimport {BehaviorSubject, combineLatest, Observable, of, switchMap} from 'rxjs';\nimport {toObservable} from '@angular/core/rxjs-interop';\n\nimport {\n PROCESS_MANAGEMENT_ENDPOINTS,\n ProcessDefinitionImportPreview,\n ProcessDefinitionImportResult,\n ProcessDefinitionResult,\n ProcessDefinitionValidateRequest,\n ProcessDefinitionValidationResult,\n UpdateProcessDefinitionCaseDefinitionRequest,\n} from '../models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProcessManagementService extends BaseApiService {\n private readonly _definitionKey$ = new BehaviorSubject<string | null>(null);\n private readonly _versionTag$ = new BehaviorSubject<string | null>(null);\n\n public get caseDefinitionKey(): string {\n return this._definitionKey$.getValue() ?? '';\n }\n\n public get caseDefinitionVersionTag(): string {\n return this._versionTag$.getValue() ?? '';\n }\n\n private _$context = signal<ManagementContext>('independent');\n public set context(value: ManagementContext) {\n this._$context.set(value);\n }\n public get $context(): Signal<ManagementContext> {\n return this._$context.asReadonly();\n }\n\n public processes$: Observable<ProcessDefinitionResult[]> = combineLatest([\n this._definitionKey$,\n this._versionTag$,\n toObservable(this._$context),\n ]).pipe(\n switchMap(([definitionKey, versionTag, context]) => {\n if (context === 'independent') {\n return this.getUnlinkedProcesses();\n }\n if (!!definitionKey && !!versionTag) {\n return this.getProcesses(definitionKey, versionTag);\n }\n return of([]);\n })\n );\n\n constructor(\n protected readonly httpClient: HttpClient,\n protected readonly configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n public setParams(key: string, versionTag: string): void {\n this._definitionKey$.next(key);\n this._versionTag$.next(versionTag);\n }\n\n public deleteProcess(processDefinitionKey: string): Observable<void> {\n return this.httpClient.delete<void>(\n this.getApiUrl(\n `${PROCESS_MANAGEMENT_ENDPOINTS[this._$context()]}/${this._definitionKey$.getValue()}/version/${this._versionTag$.getValue()}/process-definition/key/${processDefinitionKey}`\n )\n );\n }\n\n public deleteUnlinkedProcess(processDefinitionKey: string): Observable<void> {\n return this.httpClient.delete<void>(\n this.getApiUrl(\n `${PROCESS_MANAGEMENT_ENDPOINTS[this._$context()]}/key/${processDefinitionKey}`\n )\n );\n }\n\n public deployBpmn(bpmn: File): Observable<any> {\n const formData: FormData = new FormData();\n formData.append('file', bpmn);\n formData.append(\n 'processLinks',\n new Blob([JSON.stringify([].map(processLink => this.emptyStringToNull(processLink)))], {\n type: 'application/json',\n })\n );\n\n return this.httpClient.post<any>(\n this._$context() === 'case'\n ? this.getApiUrl(\n `${PROCESS_MANAGEMENT_ENDPOINTS[this._$context()]}/${this._definitionKey$.getValue()}/version/${this._versionTag$.getValue()}/process-definition`\n )\n : this.getApiUrl(`${PROCESS_MANAGEMENT_ENDPOINTS[this._$context()]}`),\n formData\n );\n }\n\n public getProcessDefinitionForCase(\n caseDefinitionKey: string,\n caseDefinitionVersionTag: string,\n processDefinitionKey: string\n ): Observable<ProcessDefinitionResult> {\n return this.httpClient.get<ProcessDefinitionResult>(\n this.getApiUrl(\n `${PROCESS_MANAGEMENT_ENDPOINTS[this._$context()]}/${caseDefinitionKey}/version/${caseDefinitionVersionTag}/process-definition/key/${processDefinitionKey}`\n )\n );\n }\n\n public getBuildingBlockProcessDefinition(\n key: string,\n versionTag: string,\n processDefinitionId: string\n ): Observable<BuildingBlockProcessDefinitionWithLinksDto> {\n return this.httpClient.get<BuildingBlockProcessDefinitionWithLinksDto>(\n this.getApiUrl(\n `management/v1/building-block/${key}/version/${versionTag}/process-definition/${processDefinitionId}`\n )\n );\n }\n\n public getUnlinkedProcessDefinitionsByKey(\n processDefinitionKey: string\n ): Observable<ProcessDefinitionResult[]> {\n return this.httpClient.get<ProcessDefinitionResult[]>(\n this.getApiUrl(\n `${PROCESS_MANAGEMENT_ENDPOINTS[this._$context()]}/key/${processDefinitionKey}`\n )\n );\n }\n\n public updateProcessDefinitionCaseDefinitionProperties(\n caseDefinitionKey: string,\n caseDefinitionVersionTag: string,\n processDefinitionId: string,\n body: UpdateProcessDefinitionCaseDefinitionRequest\n ): Observable<void> {\n return this.httpClient.put<void>(\n this.getApiUrl(\n `/management/v1/case-definition/${caseDefinitionKey}/version/${caseDefinitionVersionTag}/process/${processDefinitionId}/properties`\n ),\n body\n );\n }\n\n public exportProcessDefinition(processDefinitionId: string): Observable<HttpResponse<Blob>> {\n return this.httpClient.get<Blob>(\n this.getApiUrl(`/management/v1/process-definition/${processDefinitionId}/export`),\n {observe: 'response', responseType: 'blob' as 'json', headers: InterceptorSkipHeader}\n );\n }\n\n public previewProcessDefinitionImport(\n file: FormData\n ): Observable<ProcessDefinitionImportPreview> {\n return this.httpClient.post<ProcessDefinitionImportPreview>(\n this.getApiUrl('/management/v1/process-definition/import/preview'),\n file,\n {headers: new HttpHeaders().set(InterceptorSkip, '400')}\n );\n }\n\n public importProcessDefinition(\n file: FormData,\n pluginConfigurationMappings?: Record<string, string | null>\n ): Observable<ProcessDefinitionImportResult> {\n if (pluginConfigurationMappings) {\n file.set(\n 'pluginConfigurationMappings',\n new Blob([JSON.stringify(pluginConfigurationMappings)], {type: 'application/json'})\n );\n }\n\n return this.httpClient.post<ProcessDefinitionImportResult>(\n this.getApiUrl('/management/v1/process-definition/import'),\n file,\n {headers: new HttpHeaders().set(InterceptorSkip, '400')}\n );\n }\n\n public validateProcessDefinition(\n request: ProcessDefinitionValidateRequest\n ): Observable<ProcessDefinitionValidationResult> {\n return this.httpClient.post<ProcessDefinitionValidationResult>(\n this.getApiUrl('/management/v1/process-definition/validate'),\n request\n );\n }\n\n private getProcesses(\n definitionName: string,\n versionTag: string\n ): Observable<ProcessDefinitionResult[]> {\n return this.httpClient.get<ProcessDefinitionResult[]>(\n this.getApiUrl(\n `${PROCESS_MANAGEMENT_ENDPOINTS[this._$context()]}/${definitionName}/version/${versionTag}/process-definition`\n )\n );\n }\n\n private getUnlinkedProcesses(): Observable<ProcessDefinitionResult[]> {\n return this.httpClient.get<ProcessDefinitionResult[]>(\n this.getApiUrl(`${PROCESS_MANAGEMENT_ENDPOINTS[this._$context()]}`)\n );\n }\n\n private emptyStringToNull<T extends Record<string, any>>(object: T): T {\n if (object && typeof object === 'object') {\n Object.keys(object).forEach(key => {\n const typedKey = key as keyof T;\n const value = object[typedKey];\n if (typeof value === 'object' && value !== null) {\n this.emptyStringToNull(value);\n } else if (value === '') {\n object[typedKey] = null as any;\n }\n });\n }\n return object;\n }\n}\n","/*\n * Copyright 2015-2025 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 './process-bean.service';\nexport * from './process-management-editor.service';\nexport * from './process-management-state.service';\nexport * from './process-management.service';\n","/*\n * Copyright 2015-2025 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 mapActivityTypeToActivityListenerType = (activityType: string, element?: any): string => {\n if (activityType === 'bpmn:UserTask') {\n return activityType + ':create';\n }\n\n if (activityType === 'bpmn:StartEvent' && element) {\n const eventDefinitions = element.businessObject?.eventDefinitions;\n if (eventDefinitions?.length > 0 && eventDefinitions[0].$type === 'bpmn:MessageEventDefinition') {\n return 'bpmn:MessageStartEvent:start';\n }\n }\n\n if (activityType === 'bpmn:ReceiveTask' || activityType === 'bpmn:IntermediateCatchEvent') {\n return activityType + ':end';\n }\n\n return activityType + ':start';\n};\n\nexport {mapActivityTypeToActivityListenerType};\n","/*\n * Copyright 2015-2025 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 {ActivatedRoute} from '@angular/router';\nimport {ManagementContext} from '@valtimo/shared';\nimport {Observable} from 'rxjs';\nimport {distinctUntilChanged, map} from 'rxjs/operators';\n\nfunction getContextObservable(route: ActivatedRoute): Observable<ManagementContext | null> {\n return route.data.pipe(\n map(data => (data && (data['context'] as ManagementContext)) || null),\n distinctUntilChanged()\n );\n}\n\nexport {getContextObservable};\n","/*\n * Copyright 2015-2025 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 {BreadcrumbService} from '@valtimo/components';\nimport {TranslateService} from '@ngx-translate/core';\nimport {\n BuildingBlockManagementParams,\n CaseManagementParams,\n ManagementContext,\n ProcessDefinitionWithPropertiesDto,\n} from '@valtimo/shared';\nimport Modeler from 'bpmn-js/lib/Modeler';\nimport NavigatedViewer from 'bpmn-js/lib/NavigatedViewer';\nimport {is} from 'bpmn-js/lib/util/ModelUtil';\n\nconst getLatestProcessDefinition = (\n processDefinitions: ProcessDefinitionWithPropertiesDto[]\n): ProcessDefinitionWithPropertiesDto | null => {\n if (!processDefinitions || processDefinitions.length === 0) return null;\n\n return processDefinitions.reduce((acc, version) =>\n version.version > acc.version ? version : acc\n );\n};\n\nconst initBreadcrumbsForContext = (\n breadcrumbService: BreadcrumbService,\n translateService: TranslateService,\n params: CaseManagementParams | BuildingBlockManagementParams,\n context: ManagementContext\n): void => {\n if (!params) return;\n\n if (context === 'case') {\n const caseParams = params as CaseManagementParams;\n const route = `/case-management/case/${caseParams.caseDefinitionKey}/version/${caseParams.caseDefinitionVersionTag}`;\n\n breadcrumbService.setThirdBreadcrumb({\n route: [route],\n content: `${caseParams.caseDefinitionKey} (${caseParams.caseDefinitionVersionTag})`,\n href: route,\n });\n\n const routeWithProcesses = `${route}/processes`;\n\n breadcrumbService.setFourthBreadcrumb({\n route: [routeWithProcesses],\n content: translateService.instant('caseManagement.tabs.processes'),\n href: routeWithProcesses,\n });\n }\n\n if (context === 'buildingBlock') {\n const bbParams = params as BuildingBlockManagementParams;\n const route = `/building-block-management/building-block/${bbParams.buildingBlockDefinitionKey}/version/${bbParams.buildingBlockDefinitionVersionTag}`;\n const generalRoute = `${route}/general`;\n\n breadcrumbService.setThirdBreadcrumb({\n route: [generalRoute],\n content: `${bbParams.buildingBlockDefinitionKey} (${bbParams.buildingBlockDefinitionVersionTag})`,\n href: generalRoute,\n });\n\n const processRoute = `${route}/process-definition`;\n\n breadcrumbService.setFourthBreadcrumb({\n route: [processRoute],\n content: translateService.instant('buildingBlockManagement.tabs.processes'),\n href: processRoute,\n });\n }\n};\n\nconst DisableBpmnWriteModule = {\n paletteProvider: ['value', {}],\n contextPadProvider: ['value', {}],\n directEditing: [\n 'value',\n {\n registerProvider: () => {},\n activate: () => {},\n deactivate: () => {},\n isActive: () => false,\n },\n ],\n move: ['value', null],\n resizeHandles: ['value', {addResizer: () => {}, removeResizers: () => {}}],\n bendpoints: ['value', {}],\n bendpointMove: ['value', {start: () => {}}],\n bendpointMovePreview: ['value', {}],\n connectionSegmentMove: ['value', {start: () => {}}],\n};\n\nconst disableCommands = (editor: Modeler | NavigatedViewer): void => {\n const commandStack = (editor as any).get('commandStack') as any;\n const originalExecute = commandStack?.execute?.bind(commandStack);\n\n if (commandStack?.execute) {\n commandStack.execute = (command: string, context: any) => {\n if (\n command === 'elements.delete' ||\n command === 'elements.copy' ||\n command === 'elements.paste' ||\n command === 'elements.create'\n ) {\n return;\n }\n originalExecute(command, context);\n };\n }\n};\n\nconst applyBuildingBlockCalledElement = (\n editor: Modeler | NavigatedViewer,\n activityId: string,\n mainProcessDefinitionKey: string,\n versionTag: string\n): void => {\n if (!editor) return;\n\n const elementRegistry = (editor as any).get('elementRegistry') as any;\n const modeling = (editor as any).get('modeling') as any;\n const moddle = (editor as any).get('moddle') as any;\n\n const element = elementRegistry.get(activityId);\n\n if (!element || !is(element, 'bpmn:CallActivity')) {\n return;\n }\n\n modeling.updateProperties(element, {\n calledElement: mainProcessDefinitionKey,\n 'camunda:calledElementBinding': 'versionTag',\n 'camunda:calledElementVersionTag': versionTag,\n 'camunda:calledElementType': 'BPMN',\n });\n\n let extensionElements = element.businessObject.extensionElements;\n\n if (!extensionElements) {\n extensionElements = moddle.create('bpmn:ExtensionElements', {values: []});\n modeling.updateProperties(element, {\n extensionElements,\n });\n }\n\n extensionElements.values = (extensionElements.values || []).filter(\n (val: any) => !(val.$type === 'camunda:In' && val.businessKey)\n );\n\n const inWithBusinessKey = moddle.create('camunda:In', {\n businessKey: '#{buildingBlockDocumentId}',\n });\n\n extensionElements.values.push(inWithBusinessKey);\n\n modeling.updateProperties(element, {\n extensionElements,\n });\n};\n\nconst clearBuildingBlockCalledElement = (\n editor: Modeler | NavigatedViewer,\n activityId: string\n): void => {\n const localEditor = editor as any;\n if (!localEditor) return;\n\n const elementRegistry = localEditor.get('elementRegistry') as any;\n const modeling = localEditor.get('modeling') as any;\n\n const element = elementRegistry.get(activityId);\n if (!element || !is(element, 'bpmn:CallActivity')) return;\n\n const bo = element.businessObject;\n const versionTag = bo.get('camunda:calledElementVersionTag');\n\n if (!versionTag || !versionTag.startsWith('BB:')) return;\n\n const props: any = {\n calledElement: undefined,\n 'camunda:calledElementBinding': undefined,\n 'camunda:calledElementVersionTag': undefined,\n 'camunda:calledElementType': undefined,\n };\n\n const extensionElements = bo.extensionElements;\n if (extensionElements && Array.isArray(extensionElements.values)) {\n // Keep all elements except camunda:In with businessKey (building block mapping)\n extensionElements.values = extensionElements.values.filter(\n (val: any) => val.$type !== 'camunda:In' || !val.businessKey\n );\n\n if (extensionElements.values.length === 0) {\n props.extensionElements = undefined;\n } else {\n props.extensionElements = extensionElements;\n }\n }\n\n modeling.updateProperties(element, props);\n\n const attrs = bo.$attrs || {};\n\n Object.keys(attrs).forEach(key => {\n if (key.startsWith('camunda:calledElement')) delete attrs[key];\n if (key === 'calledElement') delete attrs[key];\n });\n};\n\nexport {\n getLatestProcessDefinition,\n initBreadcrumbsForContext,\n DisableBpmnWriteModule,\n disableCommands,\n applyBuildingBlockCalledElement,\n clearBuildingBlockCalledElement,\n};\n","/*\n * Copyright 2015-2025 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 './bpmn.utils';\nexport * from './process-management.utils';\nexport * from './process-management-builder.utils';\n","/*\n * Copyright 2015-2026 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 {useService} from 'bpmn-js-properties-panel';\nimport {html} from 'htm/preact';\nimport {is} from 'bpmn-js/lib/util/ModelUtil';\nimport {PROCESS_LINK_PANEL_TEST_IDS} from '../../../constants';\nimport {ProcessManagementEditorService} from '../../../services';\nimport {\n BpmnElement,\n OpenProcessLinkModalEvent,\n ProcessDefinitionValidationError,\n ProcessManagementWindow,\n} from '../../../models';\nimport {ModalParams, ProcessLink, ProcessLinkService} from '@valtimo/process-link';\nimport {TranslateService} from '@ngx-translate/core';\nimport {mapActivityTypeToActivityListenerType} from '../../../utils';\nimport {VNode} from 'preact';\nimport {PluginTranslationService} from '@valtimo/plugin';\n\nclass ValtimoPropertiesProvider {\n static $inject = ['propertiesPanel', 'translate'];\n\n private get processManagementEditorService(): ProcessManagementEditorService {\n return (window as any as ProcessManagementWindow).processManagementEditorService;\n }\n\n private get translateService(): TranslateService {\n return (window as any as ProcessManagementWindow).translateService;\n }\n\n private get pluginTranslationService(): PluginTranslationService {\n return (window as any as ProcessManagementWindow).pluginTranslationService;\n }\n\n private get processLinkService(): ProcessLinkService {\n return (window as any as ProcessManagementWindow).processLinkService;\n }\n\n constructor(propertiesPanel: any) {\n propertiesPanel.registerProvider(500, this);\n }\n\n private addAsSecondOrFirst<T>(arr: T[], element: T): T[] {\n if (arr.length === 0) {\n arr.push(element);\n } else {\n arr.splice(1, 0, element);\n }\n return arr;\n }\n\n public getGroups(element: BpmnElement): (groups: any[]) => any[] {\n const processLink: ProcessLink | null =\n this.processManagementEditorService.processLinksForSelectedDefinition.find(\n processLink => processLink.activityId === element.id\n ) || null;\n\n const elementErrors = this.processManagementEditorService.validationErrors.filter(\n error => error.elementId === element.id\n );\n\n const autofillInfo = this.processManagementEditorService.getAutofillForActivity(element.id);\n const isAutofillDismissed = this.processManagementEditorService.isAutofillDismissed(element.id);\n\n return (groups: any[]) => {\n const generalGroup = groups.find((g: any) => g.id === 'general');\n if (generalGroup) {\n generalGroup.entries = generalGroup.entries.filter(\n (entry: any) => entry.id !== 'isExecutable'\n );\n }\n\n if (elementErrors.length > 0) {\n const errorGroup = {\n id: 'validationErrorsGroup',\n label: this.translateService.instant('processManagement.validationErrors'),\n entries: [\n {\n id: 'validationErrorsEntry',\n errors: elementErrors,\n translateService: this.translateService,\n component: ValidationErrorsElement,\n },\n ],\n shouldOpen: true,\n };\n groups.unshift(errorGroup);\n }\n\n if (autofillInfo && !isAutofillDismissed) {\n const targetGroupId = this.getGroupIdForModificationType(autofillInfo.modificationType);\n const targetGroup = groups.find((g: any) => g.id === targetGroupId);\n if (targetGroup) {\n const notificationEntry = {\n id: 'autofilledNotificationEntry',\n activityId: element.id,\n element,\n translateService: this.translateService,\n processManagementEditorService: this.processManagementEditorService,\n processLinkService: this.processLinkService,\n component: AutofilledNotificationElement,\n };\n targetGroup.entries.unshift(notificationEntry);\n targetGroup.shouldOpen = true;\n }\n }\n\n if (\n is(element, 'bpmn:UserTask') ||\n is(element, 'bpmn:StartEvent') ||\n is(element, 'bpmn:ServiceTask') ||\n is(element, 'bpmn:SendTask') ||\n is(element, 'bpmn:ReceiveTask') ||\n is(element, 'bpmn:IntermediateThrowEvent') ||\n is(element, 'bpmn:IntermediateCatchEvent') ||\n is(element, 'bpmn:CallActivity')\n ) {\n const editingAllowed = this.processManagementEditorService.editingAllowed;\n\n if (editingAllowed || processLink) {\n const customGroup = {\n id: 'customRootGroup',\n label: 'Process link',\n entries: [this.createCustomRootElement(element, processLink, editingAllowed)],\n groupType: 'root',\n };\n this.addAsSecondOrFirst(groups, customGroup);\n }\n }\n return groups;\n };\n }\n\n private getGroupIdForModificationType(modificationType: string): string {\n const groupMapping: Record<string, string> = {\n SERVICE_TASK_EXPRESSION: 'CamundaPlatform__Implementation',\n SEND_TASK_EXPRESSION: 'CamundaPlatform__Implementation',\n MESSAGE_EVENT_EXPRESSION: 'message',\n TIMER_DURATION: 'timer',\n CALL_ACTIVITY_BUSINESS_KEY: 'CamundaPlatform__BusinessKey',\n };\n return groupMapping[modificationType] || 'general';\n }\n\n public createCustomRootElement(\n element: any,\n processLink: ProcessLink | null,\n editingAllowed: boolean\n ): any {\n return {\n translateService: this.translateService,\n processManagementEditorService: this.processManagementEditorService,\n pluginTranslationService: this.pluginTranslationService,\n id: 'customRootElement',\n processLink,\n element,\n editingAllowed,\n component: CustomRootElement,\n isEdited: (node: HTMLInputElement) => node && !!node.value,\n };\n }\n}\n\nconst CustomRootElement = (props: {\n translateService: TranslateService;\n processManagementEditorService: ProcessManagementEditorService;\n pluginTranslationService: PluginTranslationService;\n id: string;\n processLink: ProcessLink;\n element: BpmnElement;\n editingAllowed: boolean;\n}): VNode => {\n const {\n element,\n processLink,\n translateService,\n processManagementEditorService,\n pluginTranslationService,\n editingAllowed,\n } = props;\n const modeling = useService('modeling');\n const elementRegistry = useService('elementRegistry');\n const editProcessLinkText = translateService.instant('interface.edit');\n const unlinkText = translateService.instant('processLink.unlink');\n const createText = translateService.instant('processLink.create');\n const viewText = translateService.instant('interface.view');\n\n const getModalParams = (): ModalParams => {\n const currentElement = elementRegistry.get(element.id) || element;\n return {\n processDefinitionKey: processManagementEditorService.selectionProcessDefinition?.key,\n processDefinitionId: processManagementEditorService.selectionProcessDefinition?.id,\n element: {\n id: currentElement.id,\n type: currentElement.type,\n activityListenerType: mapActivityTypeToActivityListenerType(\n currentElement.type,\n currentElement\n ),\n name: currentElement.di?.bpmnElement?.name,\n },\n };\n };\n\n const handleCreateClick = (): void => {\n const event: OpenProcessLinkModalEvent = {\n modalParams: getModalParams(),\n };\n\n processManagementEditorService.sendOpenProcessLinkModalEvent(event, () => {\n // Defer to avoid calling modeling.updateProperties during command stack execute/revert phase\n setTimeout(() => modeling.updateProperties(element, {}), 0);\n });\n };\n\n const handleEditClick = (): void => {\n const event: OpenProcessLinkModalEvent = {\n processLink,\n modalParams: getModalParams(),\n };\n\n processManagementEditorService.sendOpenProcessLinkModalEvent(event, () => {\n // Defer to avoid calling modeling.updateProperties during command stack execute/revert phase\n setTimeout(() => modeling.updateProperties(element, {}), 0);\n });\n };\n\n const handleUnlinkClick = (): void => {\n processManagementEditorService.sendDeleteProcessLinkEvent(\n {activityId: processLink.activityId},\n () => {\n // Defer to avoid calling modeling.updateProperties during command stack execute/revert phase\n setTimeout(() => modeling.updateProperties(element, {}), 0);\n }\n );\n };\n\n const processLinkFormDefinitionId = processLink?.formDefinitionId;\n const processLinkFormDefinitionName = processManagementEditorService.formDefinitionOptions.find(\n option => option.id === processLinkFormDefinitionId\n )?.name;\n\n const hiddenInput = html`<input\n type=\"hidden\"\n class=\"bio-properties-panel-input\"\n value=${processLink ? 'configured' : ''}\n />`;\n const wrapEntry = (content: any) =>\n html`<div data-entry-id=${props.id}>${hiddenInput}${content}</div>`;\n\n const linkedButtons = !editingAllowed\n ? html`<div class=\"process-link-properties-panel__buttons\">\n <button\n class=\"cds--btn cds--btn--primary cds--btn--sm cds--layout--size-md\"\n data-test-id=${PROCESS_LINK_PANEL_TEST_IDS.editButton}\n onClick=${handleEditClick}\n >\n ${viewText}\n </button>\n </div>`\n : html`<div class=\"process-link-properties-panel__buttons\">\n <button\n class=\"cds--btn cds--btn--danger cds--btn--sm cds--layout--side-md\"\n data-test-id=${PROCESS_LINK_PANEL_TEST_IDS.unlinkButton}\n onClick=${handleUnlinkClick}\n >\n ${unlinkText}\n </button>\n\n <button\n class=\"cds--btn cds--btn--primary cds--btn--sm cds--layout--size-md\"\n data-test-id=${PROCESS_LINK_PANEL_TEST_IDS.editButton}\n onClick=${handleEditClick}\n >\n ${editProcessLinkText}\n </button>\n </div>`;\n\n if (processLinkFormDefinitionName) {\n return wrapEntry(\n html`<div class=\"process-link-properties-panel\">\n <div class=\"process-link-properties-panel__header\">\n <span class=\"process-link-properties-panel__title\">${processLinkFormDefinitionName}</span>\n\n <cds-tag\n class=\"cds--tag cds--tag--blue cds--tag--md cds--layout--size-md cds-tag--no-margin\"\n ><span class=\"cds--tag__label\">\n ${translateService.instant('processLinkType.form')}\n </span>\n </cds-tag>\n </div>\n\n ${linkedButtons}\n </div>`\n );\n }\n\n const processLinkFormFlowDefinitionKey = processLink?.formFlowDefinitionKey;\n\n if (processLinkFormFlowDefinitionKey) {\n return wrapEntry(\n html`<div class=\"process-link-properties-panel\">\n <div class=\"process-link-properties-panel__header\">\n <span class=\"process-link-properties-panel__title\"\n >${processLinkFormFlowDefinitionKey}</span\n >\n\n <cds-tag\n class=\"cds--tag cds--tag--teal cds--tag--md cds--layout--size-md cds-tag--no-margin\"\n ><span class=\"cds--tag__label\">\n ${translateService.instant('processLinkType.form-flow')}\n </span>\n </cds-tag>\n </div>\n\n ${linkedButtons}\n </div>`\n );\n }\n\n const buildingBlockDefinitionKey = processLink?.buildingBlockDefinitionKey;\n const buildingBlockDefinitionVersion = processLink?.buildingBlockDefinitionVersionTag;\n\n if (buildingBlockDefinitionKey) {\n return wrapEntry(\n html`<div class=\"process-link-properties-panel\">\n <div class=\"process-link-properties-panel__header\">\n <span class=\"process-link-properties-panel__title\"\n >${buildingBlockDefinitionKey} (${buildingBlockDefinitionVersion})</span\n >\n\n <cds-tag\n class=\"cds--tag cds--tag--green cds--tag--md cds--layout--size-md cds-tag--no-margin\"\n ><span class=\"cds--tag__label\">\n ${translateService.instant('processLinkType.building-block')}\n </span>\n </cds-tag>\n </div>\n\n ${linkedButtons}\n </div>`\n );\n }\n\n const pluginActionKey = processLink?.pluginActionDefinitionKey;\n const pluginActionTranslation =\n pluginTranslationService.instantByPluginActionKey(pluginActionKey);\n const pluginTitleTranslation =\n pluginTranslationService.instantPluginTitleByPluginActionKey(pluginActionKey);\n\n if (pluginActionKey) {\n return wrapEntry(\n html`<div class=\"process-link-properties-panel\">\n <div class=\"process-link-properties-panel__header\">\n <span class=\"process-link-properties-panel__title-container\">\n <span class=\"process-link-properties-panel__title\">${pluginTitleTranslation}</span>\n\n <span class=\"process-link-properties-panel__title\">${pluginActionTranslation}</span>\n </span>\n\n <cds-tag\n class=\"cds--tag cds--tag--purple cds--tag--md cds--layout--size-md cds-tag--no-margin\"\n ><span class=\"cds--tag__label\">\n ${translateService.instant('processLinkType.plugin')}\n </span>\n </cds-tag>\n </div>\n\n ${linkedButtons}\n </div>`\n );\n }\n\n const uiComponentKey = processLink?.componentKey;\n\n if (uiComponentKey) {\n return wrapEntry(\n html`<div class=\"process-link-properties-panel\">\n <div class=\"process-link-properties-panel__header\">\n <span class=\"process-link-properties-panel__title\">${uiComponentKey}</span>\n\n <cds-tag\n class=\"cds--tag cds--tag--magenta cds--tag--md cds--layout--size-md cds-tag--no-margin\"\n ><span class=\"cds--tag__label\">\n ${translateService.instant('processLinkType.ui-component')}\n </span>\n </cds-tag>\n </div>\n\n ${linkedButtons}\n </div>`\n );\n }\n\n const genericLinkedPanel = html`<div class=\"process-link-properties-panel\">\n ${linkedButtons}\n </div>`;\n\n const genericCreatePanel = html`<div class=\"process-link-properties-panel\">\n <div class=\"process-link-properties-panel__buttons\">\n <button\n class=\"cds--btn cds--btn--primary cds--btn--sm cds--layout--size-md\"\n data-test-id=${PROCESS_LINK_PANEL_TEST_IDS.createButton}\n onClick=${handleCreateClick}\n >\n ${createText}\n </button>\n </div>\n </div>`;\n\n return wrapEntry(processLink ? genericLinkedPanel : genericCreatePanel);\n};\n\nconst ValidationErrorsElement = (props: {\n errors: ProcessDefinitionValidationError[];\n translateService: TranslateService;\n}): VNode => {\n const getErrorMessage = (error: ProcessDefinitionValidationError): string => {\n if (error.errorCode) {\n const translationKey = `processManagement.validationErrorCodes.${error.errorCode}`;\n const translated = props.translateService.instant(translationKey, {\n expression: error.expression ?? '',\n });\n if (translated !== translationKey) {\n return translated;\n }\n }\n return error.reason;\n };\n\n return html`<div class=\"validation-errors-panel\">\n ${props.errors.map(\n error =>\n html`<div\n class=\"validation-errors-panel__item${error.severity === 'WARNING' ? ' warning' : ''}\"\n >\n <span\n class=\"validation-errors-panel__icon${error.severity === 'WARNING' ? ' warning' : ''}\"\n >!</span\n >\n <span\n class=\"validation-errors-panel__reason${error.severity === 'WARNING' ? ' warning' : ''}\"\n >${getErrorMessage(error)}</span\n >\n </div>`\n )}\n </div>`;\n};\n\nconst AutofilledNotificationElement = (props: {\n activityId: string;\n element: BpmnElement;\n translateService: TranslateService;\n processManagementEditorService: ProcessManagementEditorService;\n processLinkService: ProcessLinkService;\n}): VNode => {\n const handleDismiss = (event: Event): void => {\n const processDefinitionId = props.processManagementEditorService.selectionProcessDefinition?.id;\n if (processDefinitionId) {\n props.processLinkService.deleteAutofill(processDefinitionId, props.activityId).subscribe();\n }\n props.processManagementEditorService.dismissAutofill(props.activityId);\n\n const target = event.currentTarget as HTMLElement;\n const panel = target.closest('.autofilled-notification-panel') as HTMLElement;\n if (panel) {\n panel.style.display = 'none';\n }\n };\n\n return html`<div class=\"autofilled-notification-panel\">\n <span class=\"autofilled-notification-panel__icon\">!</span>\n <span class=\"autofilled-notification-panel__message\">\n ${props.translateService.instant('processManagement.autofilled.sidebarMessage')}\n </span>\n <button class=\"autofilled-notification-panel__dismiss\" onClick=${handleDismiss}>×</button>\n </div>`;\n};\n\nconst ValtimoPropertiesProviderModule = {\n __init__: ['customPropertiesProvider'],\n customPropertiesProvider: ['type', ValtimoPropertiesProvider],\n};\n\nexport {ValtimoPropertiesProviderModule};\n","/*\n * Copyright 2015-2026 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 READ_ONLY_PRIORITY = 1;\n\nconst removeEditActions = (node: any): void => {\n if (!node || typeof node !== 'object') return;\n\n if (node.add) node.add = null;\n\n if (node.remove) node.remove = null;\n\n if (Array.isArray(node.entries)) {\n node.entries.forEach((entry: any) => removeEditActions(entry));\n }\n\n if (Array.isArray(node.items)) {\n node.items.forEach((item: any) => removeEditActions(item));\n }\n};\n\nclass ReadOnlyPropertiesProvider {\n static $inject = ['propertiesPanel'];\n\n constructor(propertiesPanel: any) {\n propertiesPanel.registerProvider(READ_ONLY_PRIORITY, this);\n }\n\n public getGroups(): (groups: any[]) => any[] {\n return (groups: any[]) => {\n groups.forEach(group => removeEditActions(group));\n return groups;\n };\n }\n}\n\nconst ENTRY = '.bio-properties-panel-entry';\n\nconst READ_ONLY_INPUT_TYPES = ['email', 'number', 'password', 'search', 'tel', 'text', 'url'];\n\nconst makeControlsReadOnly = (container: HTMLElement): void => {\n container.querySelectorAll<HTMLInputElement>(`${ENTRY} input`).forEach(input => {\n if (READ_ONLY_INPUT_TYPES.includes(input.type)) {\n input.readOnly = true;\n } else {\n input.disabled = true;\n }\n });\n\n container\n .querySelectorAll<HTMLTextAreaElement>(`${ENTRY} textarea`)\n .forEach(textarea => (textarea.readOnly = true));\n\n container\n .querySelectorAll<HTMLSelectElement | HTMLButtonElement>(`${ENTRY} select, ${ENTRY} button`)\n .forEach(control => (control.disabled = true));\n\n container\n .querySelectorAll(`${ENTRY} [contenteditable=\"true\"]`)\n .forEach(editor => editor.setAttribute('contenteditable', 'false'));\n};\n\nclass ReadOnlyPropertiesPanel {\n static $inject = ['config.propertiesPanel', 'eventBus'];\n\n private _observer: MutationObserver | null = null;\n\n constructor(config: any, eventBus: any) {\n const parent: HTMLElement | undefined = config?.parent;\n\n if (!parent) return;\n\n this._observer = new MutationObserver(() => makeControlsReadOnly(parent));\n this._observer.observe(parent, {childList: true, subtree: true});\n\n eventBus.on('diagram.destroy', () => this._observer?.disconnect());\n }\n}\n\nconst ReadOnlyPropertiesPanelModule = {\n __init__: ['readOnlyPropertiesProvider', 'readOnlyPropertiesPanel'],\n readOnlyPropertiesProvider: ['type', ReadOnlyPropertiesProvider],\n readOnlyPropertiesPanel: ['type', ReadOnlyPropertiesPanel],\n};\n\nexport {ReadOnlyPropertiesPanel, ReadOnlyPropertiesPanelModule, ReadOnlyPropertiesProvider};\n","/*\n * Copyright 2015-2026 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 {ProcessBeanDto} from '../../../models';\n\ninterface ParsedExpression {\n beanName: string | null;\n methodName: string | null;\n parameters: string[];\n}\n\nclass ExpressionAutocomplete {\n static $inject = ['eventBus'];\n\n private processBeans: ProcessBeanDto[] = [];\n private panelContainer: HTMLElement | null = null;\n private stylesInjected = false;\n private observer: MutationObserver | null = null;\n private documentClickHandlers: Array<(e: MouseEvent) => void> = [];\n\n constructor(eventBus: any) {\n this.injectStyles();\n\n eventBus.on('diagram.destroy', () => {\n this.dispose();\n });\n }\n\n private dispose(): void {\n this.cleanupClickHandlers();\n if (this.observer) {\n this.observer.disconnect();\n this.observer = null;\n }\n this.panelContainer = null;\n }\n\n private cleanupClickHandlers(): void {\n for (const handler of this.documentClickHandlers) {\n document.removeEventListener('click', handler);\n }\n this.documentClickHandlers = [];\n }\n\n public setProcessBeans(beans: ProcessBeanDto[]): void {\n this.processBeans = beans;\n }\n\n public setPanelContainer(container: HTMLElement): void {\n this.panelContainer = container;\n this.startObserving();\n setTimeout(() => this.scanAndAttach(), 100);\n }\n\n private startObserving(): void {\n if (!this.panelContainer || this.observer) return;\n\n this.observer = new MutationObserver(() => {\n this.scanAndAttach();\n });\n\n this.observer.observe(this.panelContainer, {\n childList: true,\n subtree: true,\n });\n }\n\n private scanAndAttach(): void {\n if (!this.panelContainer) return;\n\n const allInputs = this.panelContainer.querySelectorAll<HTMLInputElement | HTMLTextAreaElement>(\n 'input, textarea'\n );\n\n allInputs.forEach(input => {\n if (input.dataset.autocompleteAttached) return;\n if (this.isExpressionField(input)) {\n this.attachAutocomplete(input);\n input.dataset.autocompleteAttached = 'true';\n }\n });\n }\n\n private isExpressionField(input: HTMLInputElement | HTMLTextAreaElement): boolean {\n const type = input.type?.toLowerCase();\n if (input.tagName !== 'TEXTAREA' && !(input.tagName === 'INPUT' && (!type || type === 'text'))) {\n return false;\n }\n\n if (input.closest('.expression-editor-simple')) {\n return false;\n }\n\n const name = (input.name || input.id || '').toLowerCase();\n\n if (name.includes('resultvariable') || name.includes('result-variable')) {\n return false;\n }\n\n if (name.includes('expression') || name.includes('delegateexpression')) {\n return true;\n }\n\n const entry = input.closest('.bio-properties-panel-entry');\n if (entry) {\n const entryId = (entry.getAttribute('data-entry-id') || '').toLowerCase();\n\n if (entryId.includes('resultvariable') || entryId.includes('result-variable')) {\n return false;\n }\n\n if (entryId.includes('expression')) {\n return true;\n }\n }\n\n const label = input.closest('.bio-properties-panel-entry')?.querySelector('label');\n if (label) {\n const labelText = label.textContent?.toLowerCase() || '';\n\n if (labelText.includes('result variable') || labelText.includes('resultvariable')) {\n return false;\n }\n\n if (labelText.includes('expression') || labelText.includes('delegate')) {\n return true;\n }\n }\n\n return false;\n }\n\n private attachAutocomplete(input: HTMLInputElement | HTMLTextAreaElement): void {\n this.wrapWithEditor(input);\n }\n\n // --- Expression Editor (Dropdown/Manual toggle) ---\n\n private wrapWithEditor(input: HTMLInputElement | HTMLTextAreaElement): void {\n const wrapper = document.createElement('div');\n wrapper.className = 'expression-editor-wrapper';\n\n const parsed = this.parseExpression(input.value);\n const canUseDropdown = !input.value || (parsed.beanName !== null && parsed.methodName !== null);\n const initialMode = canUseDropdown ? 'simple' : 'technical';\n wrapper.dataset.mode = initialMode;\n\n input.parentNode?.insertBefore(wrapper, input);\n\n const toggle = document.createElement('div');\n toggle.className = 'expression-editor-toggle';\n toggle.innerHTML = `\n <button type=\"button\" class=\"expression-editor-toggle__btn${initialMode === 'simple' ? ' active' : ''}\" data-mode=\"simple\">Dropdown</button>\n <button type=\"button\" class=\"expression-editor-toggle__btn${initialMode === 'technical' ? ' active' : ''}\" data-mode=\"technical\">Manual</button>\n `;\n\n const technicalContainer = document.createElement('div');\n technicalContainer.className = 'expression-editor-technical';\n technicalContainer.appendChild(input);\n technicalContainer.style.display = initialMode === 'technical' ? 'block' : 'none';\n\n const simpleContainer = document.createElement('div');\n simpleContainer.className = 'expression-editor-simple';\n simpleContainer.style.display = initialMode === 'simple' ? 'block' : 'none';\n\n wrapper.appendChild(toggle);\n wrapper.appendChild(technicalContainer);\n wrapper.appendChild(simpleContainer);\n\n toggle.querySelectorAll('button').forEach(btn => {\n btn.addEventListener('click', e => {\n e.preventDefault();\n this.setEditorMode(wrapper, input, (btn as HTMLButtonElement).dataset.mode || 'technical');\n });\n });\n\n if (initialMode === 'simple') {\n this.renderSimpleMode(simpleContainer, input);\n }\n }\n\n private setEditorMode(\n wrapper: HTMLElement,\n input: HTMLInputElement | HTMLTextAreaElement,\n mode: string\n ): void {\n wrapper.dataset.mode = mode;\n\n wrapper.querySelectorAll('.expression-editor-toggle__btn').forEach(btn => {\n btn.classList.toggle('active', (btn as HTMLButtonElement).dataset.mode === mode);\n });\n\n const technicalContainer = wrapper.querySelector('.expression-editor-technical') as HTMLElement;\n const simpleContainer = wrapper.querySelector('.expression-editor-simple') as HTMLElement;\n\n const invalidArgsStr = wrapper.dataset.invalidArgs;\n const invalidArgs: number[] = invalidArgsStr ? JSON.parse(invalidArgsStr) : [];\n\n if (mode === 'simple') {\n technicalContainer.style.display = 'none';\n simpleContainer.style.display = 'block';\n input.classList.remove('validation-error-param');\n this.renderSimpleMode(simpleContainer, input);\n if (invalidArgs.length > 0) {\n setTimeout(() => {\n for (const idx of invalidArgs) {\n const paramInput = simpleContainer.querySelector(\n `.expression-editor-param input[data-param-index=\"${idx}\"]`\n );\n if (paramInput) {\n paramInput.classList.add('validation-error-param');\n }\n }\n }, 0);\n }\n } else {\n technicalContainer.style.display = 'block';\n simpleContainer.style.display = 'none';\n if (invalidArgs.length > 0) {\n input.classList.add('validation-error-param');\n }\n setTimeout(() => input.blur(), 0);\n }\n }\n\n private renderSimpleMode(container: HTMLElement, input: HTMLInputElement | HTMLTextAreaElement): void {\n this.cleanupClickHandlers();\n\n const parsed = this.parseExpression(input.value);\n\n container.innerHTML = `\n <div class=\"expression-editor-field\" data-container=\"bean\">\n <label>Service</label>\n </div>\n <div class=\"expression-editor-field\" data-container=\"method\"></div>\n <div data-container=\"params\"></div>\n `;\n\n const beanContainer = container.querySelector('[data-container=\"bean\"]') as HTMLElement;\n this.renderCustomSelect(\n beanContainer,\n this.processBeans.map(b => ({\n value: b.name,\n label: this.camelCaseToReadable(b.name),\n description: b.description,\n })),\n parsed.beanName,\n 'Select service...',\n 'bean',\n beanName => {\n this.renderMethodDropdown(container, beanName, null, input);\n this.renderParameterInputs(container, beanName, null, [], input);\n this.buildAndSetExpression(container, input);\n }\n );\n\n if (parsed.beanName) {\n this.renderMethodDropdown(container, parsed.beanName, parsed.methodName, input);\n }\n\n if (parsed.beanName && parsed.methodName) {\n this.renderParameterInputs(container, parsed.beanName, parsed.methodName, parsed.parameters, input);\n }\n }\n\n private renderCustomSelect(\n container: HTMLElement,\n options: {value: string; label: string; description?: string | null}[],\n selectedValue: string | null,\n placeholder: string,\n dataField: string,\n onChange: (value: string) => void\n ): void {\n const wrapper = document.createElement('div');\n wrapper.className = 'expression-editor-custom-select';\n wrapper.dataset.field = dataField;\n wrapper.dataset.value = selectedValue || '';\n\n const nativeSelect = document.createElement('select');\n nativeSelect.className = 'bio-properties-panel-input';\n nativeSelect.innerHTML =\n `<option value=\"\" disabled ${!selectedValue ? 'selected' : ''}>${this.escapeHtml(placeholder)}</option>` +\n options\n .map(\n opt =>\n `<option value=\"${this.escapeAttr(opt.value)}\" ${opt.value === selectedValue ? 'selected' : ''}>${this.escapeHtml(opt.label)}</option>`\n )\n .join('');\n\n const selectedOption = options.find(o => o.value === selectedValue);\n if (selectedOption?.description) {\n nativeSelect.title = selectedOption.description;\n }\n\n const dropdown = document.createElement('div');\n dropdown.className = 'expression-editor-custom-select__dropdown';\n dropdown.style.display = 'none';\n\n let selectedIndex = options.findIndex(o => o.value === selectedValue);\n if (selectedIndex < 0) selectedIndex = 0;\n\n const renderItems = () => {\n dropdown.innerHTML = options\n .map(\n (opt, i) => `\n <div class=\"expression-editor-custom-select__item${opt.value === selectedValue ? ' selected' : ''}\" data-index=\"${i}\" data-value=\"${this.escapeAttr(opt.value)}\">\n <div class=\"expression-editor-custom-select__label\">${this.escapeHtml(opt.label)}</div>\n ${opt.description ? `<div class=\"expression-editor-custom-select__desc\">${this.escapeHtml(opt.description)}</div>` : ''}\n </div>\n `\n )\n .join('');\n\n dropdown.querySelectorAll('.expression-editor-custom-select__item').forEach(item => {\n item.addEventListener('click', e => {\n e.stopPropagation();\n const value = (item as HTMLElement).dataset.value!;\n const selected = options.find(o => o.value === value);\n wrapper.dataset.value = value;\n nativeSelect.value = value;\n nativeSelect.title = selected?.description || '';\n dropdown.style.display = 'none';\n onChange(value);\n });\n });\n };\n\n renderItems();\n\n nativeSelect.addEventListener('mousedown', e => {\n e.preventDefault();\n nativeSelect.focus();\n const isOpen = dropdown.style.display !== 'none';\n dropdown.style.display = isOpen ? 'none' : 'block';\n });\n\n nativeSelect.addEventListener('keydown', e => {\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {\n e.preventDefault();\n if (dropdown.style.display === 'none') {\n dropdown.style.display = 'block';\n }\n const delta = e.key === 'ArrowDown' ? 1 : -1;\n selectedIndex = Math.max(0, Math.min(options.length - 1, selectedIndex + delta));\n dropdown.querySelectorAll('.expression-editor-custom-select__item').forEach((item, i) => {\n item.classList.toggle('highlighted', i === selectedIndex);\n });\n dropdown.children[selectedIndex]?.scrollIntoView({block: 'nearest'});\n } else if (e.key === 'Enter' && dropdown.style.display !== 'none') {\n e.preventDefault();\n const opt = options[selectedIndex];\n if (opt) {\n wrapper.dataset.value = opt.value;\n nativeSelect.value = opt.value;\n nativeSelect.title = opt.description || '';\n dropdown.style.display = 'none';\n onChange(opt.value);\n }\n } else if (e.key === 'Escape') {\n dropdown.style.display = 'none';\n } else if (e.key === ' ' && dropdown.style.display === 'none') {\n e.preventDefault();\n dropdown.style.display = 'block';\n }\n });\n\n const closeHandler = (e: MouseEvent) => {\n if (!wrapper.contains(e.target as Node)) {\n dropdown.style.display = 'none';\n }\n };\n document.addEventListener('click', closeHandler);\n this.documentClickHandlers.push(closeHandler);\n\n wrapper.appendChild(nativeSelect);\n wrapper.appendChild(dropdown);\n container.appendChild(wrapper);\n }\n\n private renderMethodDropdown(\n container: HTMLElement,\n beanName: string,\n selectedMethod: string | null,\n input: HTMLInputElement | HTMLTextAreaElement\n ): void {\n const methodContainer = container.querySelector('[data-container=\"method\"]') as HTMLElement;\n if (!methodContainer) return;\n\n const bean = this.processBeans.find(b => b.name === beanName);\n if (!bean) {\n methodContainer.innerHTML = '';\n return;\n }\n\n methodContainer.innerHTML = '<label>Method</label>';\n\n this.renderCustomSelect(\n methodContainer,\n bean.methods.map(m => ({\n value: m.name,\n label: this.camelCaseToReadable(m.name),\n description: m.description,\n })),\n selectedMethod,\n 'Select method...',\n 'method',\n methodName => {\n this.renderParameterInputs(container, beanName, methodName, [], input);\n this.buildAndSetExpression(container, input);\n }\n );\n }\n\n private renderParameterInputs(\n container: HTMLElement,\n beanName: string,\n methodName: string | null,\n values: string[],\n input: HTMLInputElement | HTMLTextAreaElement\n ): void {\n const paramsContainer = container.querySelector('[data-container=\"params\"]');\n if (!paramsContainer) return;\n\n if (!methodName) {\n paramsContainer.innerHTML = '';\n return;\n }\n\n const bean = this.processBeans.find(b => b.name === beanName);\n const method = bean?.methods.find(m => m.name === methodName);\n\n if (!method || method.parameters.length === 0) {\n paramsContainer.innerHTML = '';\n return;\n }\n\n paramsContainer.innerHTML = method.parameters\n .map(\n (p, i) => `\n <div class=\"expression-editor-param\">\n <label>${this.escapeHtml(p.name)} <span class=\"type\">(${this.escapeHtml(p.type)})</span></label>\n <input type=\"text\" class=\"expression-editor-input\" data-param-index=\"${i}\" value=\"${this.escapeAttr(values[i] || '')}\">\n </div>\n `\n )\n .join('');\n\n paramsContainer.querySelectorAll('input').forEach(paramInput => {\n paramInput.addEventListener('input', () => {\n this.buildAndSetExpression(container, input);\n });\n });\n }\n\n private buildAndSetExpression(\n simpleContainer: HTMLElement,\n input: HTMLInputElement | HTMLTextAreaElement\n ): void {\n const beanSelect = simpleContainer.querySelector('[data-field=\"bean\"]') as HTMLElement;\n const methodSelect = simpleContainer.querySelector('[data-field=\"method\"]') as HTMLElement;\n const paramInputs = simpleContainer.querySelectorAll(\n '[data-param-index]'\n ) as NodeListOf<HTMLInputElement>;\n\n const bean = beanSelect?.dataset.value;\n const method = methodSelect?.dataset.value;\n\n if (!bean || !method) {\n input.value = '';\n input.dispatchEvent(new Event('input', {bubbles: true}));\n return;\n }\n\n const params = Array.from(paramInputs).map(i => i.value);\n input.value = `\\${${bean}.${method}(${params.join(', ')})}`;\n input.dispatchEvent(new Event('input', {bubbles: true}));\n }\n\n private parseExpression(expr: string): ParsedExpression {\n const match = expr.match(/^\\$\\{([a-zA-Z_]\\w*)\\.([a-zA-Z_]\\w*)\\((.*)\\)\\}$/);\n if (!match) return {beanName: null, methodName: null, parameters: []};\n return {\n beanName: match[1],\n methodName: match[2],\n parameters: this.parseParameters(match[3]),\n };\n }\n\n private parseParameters(paramsStr: string): string[] {\n const params: string[] = [];\n let current = '';\n let depth = 0;\n let inString = false;\n let stringChar = '';\n\n for (const char of paramsStr) {\n if (!inString && (char === '\"' || char === \"'\")) {\n inString = true;\n stringChar = char;\n current += char;\n } else if (inString && char === stringChar) {\n inString = false;\n current += char;\n } else if (!inString && (char === '(' || char === '[')) {\n depth++;\n current += char;\n } else if (!inString && (char === ')' || char === ']')) {\n depth--;\n current += char;\n } else if (!inString && char === ',' && depth === 0) {\n params.push(current.trim());\n current = '';\n } else {\n current += char;\n }\n }\n if (current.trim()) params.push(current.trim());\n return params;\n }\n\n private escapeHtml(text: string): string {\n const div = document.createElement('div');\n div.textContent = text;\n return div.innerHTML;\n }\n\n private escapeAttr(text: string): string {\n return text\n .replace(/&/g, '&')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(/</g, '<')\n .replace(/>/g, '>');\n }\n\n private camelCaseToReadable(text: string): string {\n return text\n .replace(/([a-z])([A-Z])/g, '$1 $2')\n .replace(/^./, str => str.toUpperCase());\n }\n\n private injectStyles(): void {\n if (this.stylesInjected) return;\n this.stylesInjected = true;\n\n const style = document.createElement('style');\n style.textContent = `\n /* Expression Editor Toggle UI */\n .expression-editor-wrapper {\n width: 100%;\n }\n .expression-editor-toggle {\n display: flex;\n gap: 0;\n margin-bottom: 8px;\n }\n .expression-editor-toggle__btn {\n flex: 1;\n padding: 4px 8px;\n border: 1px solid #ccc;\n background: #fafafa;\n color: #333;\n cursor: pointer;\n font-size: 13px;\n font-family: inherit;\n }\n .expression-editor-toggle__btn:first-child {\n border-radius: 2px 0 0 2px;\n }\n .expression-editor-toggle__btn:last-child {\n border-radius: 0 2px 2px 0;\n border-left: none;\n }\n .expression-editor-toggle__btn.active {\n background: #2b79bd;\n color: white;\n border-color: #2b79bd;\n }\n .expression-editor-toggle__btn:hover:not(.active) {\n background: #fff;\n }\n .expression-editor-simple {\n display: flex;\n flex-direction: column;\n gap: 6px;\n }\n .expression-editor-field label,\n .expression-editor-param > label {\n display: block;\n font-size: var(--text-size-small, 12px);\n color: var(--label-color, #666);\n margin-bottom: 2px;\n }\n .expression-editor-field label .type,\n .expression-editor-param label .type {\n color: var(--description-color, #808080);\n }\n .expression-editor-select,\n .expression-editor-input {\n display: block;\n width: 100%;\n padding: 3px 6px 2px;\n border: 1px solid #ccc;\n border-radius: 2px;\n font-size: 14px;\n background-color: #fafafa;\n font-family: inherit;\n box-sizing: border-box;\n }\n .expression-editor-select:focus,\n .expression-editor-input:focus {\n outline: none;\n background-color: hsl(205, 100%, 95%);\n border-color: hsl(205, 100%, 50%);\n }\n /* Override bpmn-js input styles to prevent focus-within highlighting */\n .expression-editor-technical input,\n .expression-editor-technical textarea {\n background-color: #fafafa !important;\n border-color: #ccc !important;\n }\n /* Override native select and input styles in simple mode */\n .expression-editor-simple select.bio-properties-panel-input,\n .expression-editor-simple .expression-editor-input {\n background-color: #fafafa !important;\n border-color: #ccc !important;\n }\n .expression-editor-simple select.bio-properties-panel-input:focus,\n .expression-editor-simple .expression-editor-input:focus {\n background-color: hsl(205, 100%, 95%) !important;\n border-color: hsl(205, 100%, 50%) !important;\n }\n .expression-editor-technical input:focus,\n .expression-editor-technical textarea:focus {\n background-color: hsl(205, 100%, 95%) !important;\n border-color: hsl(205, 100%, 50%) !important;\n }\n .expression-editor-param {\n padding-left: 8px;\n border-left: 2px solid #ccc;\n margin-top: 4px;\n }\n .expression-editor-description {\n font-size: var(--text-size-small, 12px);\n color: var(--description-color, #808080);\n margin-top: 4px;\n font-style: italic;\n }\n\n /* Custom Select (Listbox) */\n .expression-editor-custom-select {\n position: relative;\n width: 100%;\n }\n .expression-editor-custom-select select {\n width: 100%;\n }\n .expression-editor-custom-select__dropdown {\n position: absolute;\n top: 100%;\n left: 0;\n right: 0;\n max-height: 200px;\n overflow-y: auto;\n background: #fff;\n border: 1px solid #ccc;\n border-radius: 2px;\n box-shadow: 0 2px 6px rgba(0,0,0,0.15);\n z-index: 1000;\n margin-top: 2px;\n }\n .expression-editor-custom-select__item {\n padding: 8px;\n cursor: pointer;\n border-bottom: 1px solid #eee;\n }\n .expression-editor-custom-select__item:last-child {\n border-bottom: none;\n }\n .expression-editor-custom-select__item:hover,\n .expression-editor-custom-select__item.selected,\n .expression-editor-custom-select__item.highlighted {\n background: hsl(205, 100%, 95%);\n }\n .expression-editor-custom-select__label {\n font-weight: 500;\n font-size: 14px;\n color: #333;\n }\n .expression-editor-custom-select__desc {\n font-size: 11px;\n color: #666;\n margin-top: 2px;\n }\n `;\n document.head.appendChild(style);\n }\n}\n\nconst ExpressionAutocompleteModule = {\n __init__: ['expressionAutocomplete'],\n expressionAutocomplete: ['type', ExpressionAutocomplete],\n};\n\nexport {ExpressionAutocompleteModule, ExpressionAutocomplete};\n","/*\n * Copyright 2015-2025 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 './valtimo-properties-provider';\nexport * from './read-only-properties-panel';\nexport * from './expression-autocomplete';\n","/*\n * Copyright 2015-2026 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 {CommonModule} from '@angular/common';\nimport {HttpErrorResponse, HttpResponse} from '@angular/common/http';\nimport {AfterViewInit, Component, ElementRef, OnDestroy, signal, ViewChild} from '@angular/core';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {\n BreadcrumbService,\n ConfirmationModalModule,\n FitPageDirective,\n ModalService,\n OverflowMenuModule,\n PageHeaderService,\n PageTitleService,\n RenderInPageHeaderDirective,\n} from '@valtimo/components';\nimport {\n BuildingBlockManagementParams,\n BuildingBlockProcessDefinitionWithLinksDto,\n CaseManagementParams,\n EditPermissionsService,\n getBuildingBlockManagementRouteParams,\n getCaseManagementRouteParams,\n GlobalNotificationService,\n ManagementContext,\n ProcessDefinitionWithPropertiesDto,\n} from '@valtimo/shared';\nimport {AutofilledElement, ProcessService} from '@valtimo/process';\nimport {\n BuildingBlockProcessDefinitionConflictResponse,\n BuildingBlockProcessLinkCreateDto,\n BuildingBlockProcessLinkUpdateDto,\n ProcessDefinitionConflictResponse,\n ProcessLinkBuildingBlockApiService,\n ProcessLinkButtonService,\n ProcessLinkCreateEvent,\n ProcessLinkModule,\n ProcessLinkService,\n ProcessLinkStateService,\n ProcessLinkStepService,\n} from '@valtimo/process-link';\nimport {\n BpmnPropertiesPanelModule,\n BpmnPropertiesProviderModule,\n CamundaPlatformPropertiesProviderModule,\n} from 'bpmn-js-properties-panel';\nimport Modeler from 'bpmn-js/lib/Modeler';\nimport NavigatedViewer from 'bpmn-js/lib/NavigatedViewer';\nimport camundaPlatformBehaviors from 'camunda-bpmn-js-behaviors/lib/camunda-platform';\nimport CamundaBpmnModdle from 'camunda-bpmn-moddle/resources/camunda.json';\nimport {\n ButtonModule,\n DropdownModule,\n IconModule,\n IconService,\n ListItem,\n LoadingModule,\n SelectModule,\n TagModule,\n ToggleModule,\n TooltipModule,\n} from 'carbon-components-angular';\nimport {isEqual} from 'lodash';\nimport {NGXLogger} from 'ngx-logger';\nimport {\n BehaviorSubject,\n combineLatest,\n filter,\n from,\n map,\n merge,\n Observable,\n of,\n startWith,\n Subject,\n Subscription,\n switchMap,\n take,\n tap,\n} from 'rxjs';\nimport {distinctUntilChanged} from 'rxjs/operators';\nimport {EMPTY_BPMN, PROCESS_MANAGEMENT_BUILDER_TEST_IDS} from '../../constants';\nimport {\n ActivityMarkerInfo,\n OpenProcessLinkModalEvent,\n ProcessDefinitionResult,\n ProcessDefinitionValidationError,\n ProcessManagementWindow,\n UpdateProcessDefinitionCaseDefinitionRequest,\n} from '../../models';\nimport {ProcessManagementEditorService, ProcessManagementService} from '../../services';\nimport {\n applyBuildingBlockCalledElement,\n clearBuildingBlockCalledElement,\n DisableBpmnWriteModule,\n disableCommands,\n getContextObservable,\n getLatestProcessDefinition,\n initBreadcrumbsForContext,\n} from '../../utils';\nimport {\n ValtimoPropertiesProviderModule,\n ReadOnlyPropertiesPanelModule,\n ExpressionAutocompleteModule,\n ExpressionAutocomplete,\n} from './panel';\nimport {PluginTranslationService} from '@valtimo/plugin';\nimport {ProcessBeanService} from '../../services';\nimport {View16, ViewOff16} from '@carbon/icons';\n\n@Component({\n selector: 'valtimo-process-management-builder',\n templateUrl: './process-management-builder.component.html',\n styleUrls: ['./process-management-builder.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n FitPageDirective,\n LoadingModule,\n RenderInPageHeaderDirective,\n DropdownModule,\n ReactiveFormsModule,\n SelectModule,\n ButtonModule,\n IconModule,\n TranslateModule,\n TagModule,\n ProcessLinkModule,\n ToggleModule,\n TooltipModule,\n ConfirmationModalModule,\n OverflowMenuModule,\n ],\n providers: [\n ProcessManagementEditorService,\n ProcessLinkStateService,\n ProcessLinkStepService,\n ProcessLinkButtonService,\n ],\n})\nexport class ProcessManagementBuilderComponent implements AfterViewInit, OnDestroy {\n @ViewChild('modeler', {static: false}) modelerElementRef!: ElementRef;\n @ViewChild('modelerPanel', {static: false}) modelerPanelElementRef!: ElementRef;\n @ViewChild('viewer', {static: false}) viewerElementRef!: ElementRef;\n @ViewChild('viewerPanel', {static: false}) viewerPanelElementRef!: ElementRef;\n\n private readonly _selectedProcess$ = new BehaviorSubject<\n ProcessDefinitionResult | BuildingBlockProcessDefinitionWithLinksDto | 'create' | null\n >(null);\n\n public readonly loading$ = new BehaviorSubject<boolean>(true);\n\n private _bpmnModeler!: Modeler;\n private _bpmnViewer!: NavigatedViewer;\n private _validationErrorElementIds: string[] = [];\n private _validationHoverHandler: ((event: any) => void) | null = null;\n private _validationOutHandler: ((event: any) => void) | null = null;\n private _selectionChangedHandler: ((event: any) => void) | null = null;\n private _fieldInputCleanupFns: (() => void)[] = [];\n private _expressionAutocomplete: ExpressionAutocomplete | null = null;\n private _activityMarkerElementIds: string[] = [];\n private _activityMarkerUpdateTimeout: any = null;\n private _autofilledElements: AutofilledElement[] = [];\n private _autofilledElementIds: string[] = [];\n private _viewerActive = false;\n\n private get activeEditor(): Modeler | NavigatedViewer {\n return this._viewerActive ? this._bpmnViewer : this._bpmnModeler;\n }\n\n private get loadedEditors(): (Modeler | NavigatedViewer)[] {\n return [this._bpmnModeler, this._bpmnViewer].filter(editor => !!editor);\n }\n\n public readonly isReadOnlyProcess$ = new BehaviorSubject<boolean>(false);\n public readonly isSystemProcess$ = new BehaviorSubject<boolean>(false);\n\n public readonly draft$ = new BehaviorSubject<boolean>(false);\n public readonly canInitializeDocument$ = new BehaviorSubject<boolean>(false);\n public readonly startableByUser$ = new BehaviorSubject<boolean>(false);\n public readonly validationErrors$ = this.processManagementEditorService.validationErrors$;\n\n public readonly $markersVisible = signal<boolean>(true);\n\n protected readonly testIds = PROCESS_MANAGEMENT_BUILDER_TEST_IDS;\n\n public readonly selectedProcessDefinitionXml$ =\n this.processManagementEditorService.selectionProcessDefinition$.pipe(\n filter(selectedProcessDefinition => !!selectedProcessDefinition?.id),\n distinctUntilChanged((previous, current) => isEqual(previous, current)),\n tap(selectedProcessDefinition => {\n this.loading$.next(true);\n this.pageTitleService.setCustomPageTitle(selectedProcessDefinition?.name || '-');\n }),\n switchMap(selectedProcessDefinition =>\n this.processService.getProcessDefinitionXml(selectedProcessDefinition.id)\n ),\n tap(result => {\n this.cleanUpListenersOnModeler();\n this._autofilledElements = result.autofilledElements ?? [];\n this.processManagementEditorService.setAutofilledElements(this._autofilledElements);\n this._bpmnModeler?.importXML(result.bpmn20Xml).then(() => {\n this.highlightAutofilledElements();\n });\n this._bpmnViewer?.importXML(result.bpmn20Xml).then(() => {\n this.highlightAutofilledElements();\n });\n this.isReadOnlyProcess$.next(result.readOnly);\n this.isSystemProcess$.next(result.systemProcess);\n this.loading$.next(false);\n })\n );\n\n public readonly changesPending$ = new BehaviorSubject<boolean>(false);\n\n public readonly editParam$: Observable<string | 'create' | null> = this.route.url.pipe(\n map(segments => {\n const lastSegment = segments[segments.length - 1]?.path;\n if (lastSegment === 'create') {\n return 'create';\n }\n const param = this.route.snapshot.paramMap.get('processDefinitionKey');\n const idParam = this.route.snapshot.paramMap.get('processDefinitionId');\n return param || idParam || null;\n }),\n filter(editParam => !!editParam)\n );\n\n public readonly context$ = getContextObservable(this.route);\n\n public readonly managementParams$ = this.context$.pipe(\n filter(context => context === 'case' || context === 'buildingBlock'),\n switchMap(context =>\n context === 'case'\n ? getCaseManagementRouteParams(this.route)\n : getBuildingBlockManagementRouteParams(this.route)\n )\n );\n\n public readonly hasEditPermissions$: Observable<boolean> = this.context$.pipe(\n switchMap(context => {\n if (context === 'independent') {\n return of(true);\n }\n\n return this.managementParams$.pipe(\n switchMap(params =>\n this.editPermissionsService.hasPermissionsToEditBasedOnContext(params, context)\n )\n );\n })\n );\n\n public readonly viewerActive$: Observable<boolean> = combineLatest([\n this.isReadOnlyProcess$,\n this.hasEditPermissions$,\n ]).pipe(\n map(([isReadOnlyProcess, hasEditPermissions]) => isReadOnlyProcess || !hasEditPermissions),\n distinctUntilChanged()\n );\n\n private readonly _reload$ = new Subject<null>();\n\n public readonly processDefinitionVersions$: Observable<ProcessDefinitionWithPropertiesDto[]> =\n combineLatest([this.editParam$, this.context$, this._reload$.pipe(startWith(null))]).pipe(\n switchMap(([editParam, context]) =>\n context === 'independent'\n ? this.processManagementService.getUnlinkedProcessDefinitionsByKey(editParam)\n : of([] as ProcessDefinitionResult[])\n ),\n map(result => result.map(resultItem => resultItem.processDefinition)),\n tap(processDefinitions => {\n this.changesPending$.next(false);\n this.setSelectedProcessDefinitionToLatest(processDefinitions);\n })\n );\n\n public readonly processDefinitionVersionsListItems$: Observable<ListItem[]> = combineLatest([\n this.processDefinitionVersions$,\n this.processManagementEditorService.selectionProcessDefinition$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([processDefinitionVersions, selectionProcessDefinition]) =>\n processDefinitionVersions\n .map(processDefinitionVersion => ({\n id: processDefinitionVersion.version,\n content: `${this.translateService.instant('processManagement.version')}${processDefinitionVersion.version}`,\n selected: selectionProcessDefinition.version === processDefinitionVersion.version,\n processDefinitionVersion,\n }))\n .sort((a, b) => b.id - a.id)\n )\n );\n\n public readonly compactMode$ = this.pageHeaderService.compactMode$;\n\n public readonly creatingNewProcess$ = new BehaviorSubject<boolean>(false);\n\n public readonly updatingProcessDefinitionCaseDefinition$ = new BehaviorSubject<boolean>(false);\n\n public readonly showWarningConfirmationModal$ = new BehaviorSubject<boolean>(false);\n private _pendingDeployAction: (() => void) | null = null;\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly breadcrumbService: BreadcrumbService,\n private readonly iconService: IconService,\n private readonly logger: NGXLogger,\n private readonly modalService: ModalService,\n private readonly notificationService: GlobalNotificationService,\n private readonly pageHeaderService: PageHeaderService,\n private readonly pageTitleService: PageTitleService,\n private readonly processLinkService: ProcessLinkService,\n private readonly processLinkStateService: ProcessLinkStateService,\n private readonly processManagementEditorService: ProcessManagementEditorService,\n private readonly processManagementService: ProcessManagementService,\n private readonly processService: ProcessService,\n private readonly route: ActivatedRoute,\n private readonly router: Router,\n private readonly translateService: TranslateService,\n private readonly pluginTranslationService: PluginTranslationService,\n private readonly editPermissionsService: EditPermissionsService,\n private readonly processLinkBuildingBlockApiService: ProcessLinkBuildingBlockApiService,\n private readonly processBeanService: ProcessBeanService\n ) {\n this.iconService.registerAll([View16, ViewOff16]);\n this.setProcessManagementWindow();\n }\n\n public ngAfterViewInit(): void {\n this.pageTitleService.disableReset();\n this.pageHeaderService.enableTitleAsBreadcrumb();\n this.openParamsAndContextSubscription();\n this.initModeler();\n this.initViewer();\n this.subscribeToOpenProcessLinkModalEvents();\n this.subscribeToProcessLinkUpdateEvents();\n this.subscribeToProcessLinkCreateEvents();\n this.subscribeToProcessLinkDeleteEvents();\n this.subscribeToAutofillDismissEvents();\n this.subscribeToViewerActive();\n this.initEditing();\n }\n\n public ngOnDestroy(): void {\n this.clearValidationErrors();\n this.clearActivityMarkers();\n if (this._activityMarkerUpdateTimeout) {\n clearTimeout(this._activityMarkerUpdateTimeout);\n }\n this._bpmnModeler?.destroy();\n this._bpmnViewer?.destroy();\n this._subscriptions.unsubscribe();\n this.pageTitleService.enableReset();\n this.pageHeaderService.disableTitleAsBreadcrumb();\n this.pageTitleService.clearPageActionsViewContainerRef();\n this.breadcrumbService.clearThirdBreadcrumb();\n this.breadcrumbService.clearFourthBreadcrumb();\n }\n\n public exportBpmn(isReadOnlyProcess: boolean): void {\n (isReadOnlyProcess ? from(this._bpmnViewer.saveXML()) : from(this._bpmnModeler.saveXML()))\n .pipe(take(1))\n .subscribe(result => {\n const file = new Blob([result.xml ?? ''], {type: 'text/xml'});\n const processDefinitionKey =\n this.processManagementEditorService.selectionProcessDefinition?.key;\n\n this.downloadFile(\n file,\n processDefinitionKey ? `${processDefinitionKey}.bpmn` : 'diagram.bpmn'\n );\n });\n }\n\n public export(): void {\n const processDefinitionId = this.processManagementEditorService.selectionProcessDefinition?.id;\n\n if (!processDefinitionId) {\n this.showNotification('exportError');\n return;\n }\n\n this.processManagementService\n .exportProcessDefinition(processDefinitionId)\n .pipe(take(1))\n .subscribe({\n next: response => {\n const blob = response.body;\n if (!blob) {\n this.showNotification('exportError');\n return;\n }\n this.downloadFile(blob, this.getFileName(response));\n },\n error: () => {\n this.showNotification('exportError');\n },\n });\n }\n\n private getFileName(response: HttpResponse<Blob>): string {\n const contentDisposition = response.headers.get('Content-Disposition') ?? '';\n return contentDisposition.split('filename=')[1]?.replace(/\"/g, '').trim() || 'process.zip';\n }\n\n private downloadFile(file: Blob, fileName: string): void {\n const link = document.createElement('a');\n link.download = fileName;\n link.href = window.URL.createObjectURL(file);\n link.click();\n window.URL.revokeObjectURL(link.href);\n link.remove();\n }\n\n public validateProcessDefinition(isReadOnlyProcess: boolean): void {\n combineLatest([\n from(isReadOnlyProcess ? this._bpmnViewer.saveXML() : this._bpmnModeler.saveXML()),\n this.processManagementEditorService.processLinksForSelectedDefinition$,\n ])\n .pipe(\n take(1),\n switchMap(([result, processLinks]) => {\n const xml = this.applyDraftState(result?.xml ?? '') ?? '';\n return this.processManagementService.validateProcessDefinition({\n bpmnXml: xml,\n processLinks: processLinks.map(link => ({\n ...link,\n processDefinitionId: '-',\n })),\n canInitializeDocument: this.canInitializeDocument$.getValue(),\n startableByUser: this.startableByUser$.getValue(),\n });\n })\n )\n .subscribe({\n next: validationResult => {\n this.highlightValidationErrors(validationResult.errors);\n if (validationResult.isValid && !validationResult.hasWarnings) {\n this.showNotification('validationSuccess');\n }\n },\n error: () => {\n this.showNotification('error');\n },\n });\n }\n\n public deployChanges(isReadOnlyProcess: boolean): void {\n this.validateAndDeploy(isReadOnlyProcess, () => this.executeDeployChanges(isReadOnlyProcess));\n }\n\n private executeDeployChanges(isReadOnlyProcess: boolean): void {\n combineLatest([\n from(isReadOnlyProcess ? this._bpmnViewer.saveXML() : this._bpmnModeler.saveXML()),\n this.processManagementEditorService.processLinksForSelectedDefinition$,\n this.processManagementEditorService.selectionProcessDefinition$,\n this.context$,\n this.managementParams$.pipe(startWith(null)),\n ])\n .pipe(\n take(1),\n switchMap(([result, processLinks, selectedProcessDefinition, context, params]) => {\n const xml = !isReadOnlyProcess ? this.applyDraftState(result?.xml ?? '') : null;\n\n if (context === 'case') {\n const caseManagementParams = params as CaseManagementParams;\n\n return this.processLinkService.updateProcessDefinitionForCase(\n processLinks as ProcessLinkCreateEvent[],\n selectedProcessDefinition.id,\n xml,\n caseManagementParams?.caseDefinitionKey ?? '',\n caseManagementParams?.caseDefinitionVersionTag ?? '',\n this.canInitializeDocument$.getValue(),\n this.startableByUser$.getValue()\n );\n }\n\n if (context === 'buildingBlock') {\n const buildingBlockManagementParams = params as BuildingBlockManagementParams;\n\n return this.processLinkService.updateProcessDefinitionForBuildingBlock(\n processLinks as ProcessLinkCreateEvent[],\n selectedProcessDefinition.id,\n this.applyDraftState(result?.xml),\n buildingBlockManagementParams.buildingBlockDefinitionKey,\n buildingBlockManagementParams.buildingBlockDefinitionVersionTag\n );\n }\n\n return this.processLinkService.updateProcessDefinition(\n processLinks as ProcessLinkCreateEvent[],\n selectedProcessDefinition.id,\n xml\n );\n }),\n switchMap(() => this.context$)\n )\n .subscribe({\n next: context => {\n this.clearValidationErrors();\n this.processManagementEditorService.clearDismissedAutofills();\n if (context === 'independent') {\n this.reload();\n this.showNotification('success');\n } else {\n this.navigateBack('success');\n }\n },\n error: (error: unknown) => {\n if (this.isValidationError(error)) {\n this.highlightValidationErrors((error as HttpErrorResponse).error.errors);\n } else {\n this.showNotification('error');\n }\n },\n });\n }\n\n public deployNewProcessDefinition(): void {\n this.validateAndDeploy(false, () => this.executeDeployNewProcessDefinition());\n }\n\n private executeDeployNewProcessDefinition(): void {\n combineLatest([\n from(this._bpmnModeler.saveXML()),\n this.processManagementEditorService.processLinksForSelectedDefinition$,\n this.context$,\n this.managementParams$.pipe(startWith(null)),\n ])\n .pipe(\n take(1),\n switchMap(([result, processLinks, context, params]) => {\n const xml = this.applyDraftState(result.xml ?? '');\n const mappedProcessLinks = processLinks.map(link => ({\n ...link,\n processDefinitionId: '-',\n })) as ProcessLinkCreateEvent[];\n\n switch (context) {\n case 'independent':\n return this.processLinkService.createProcessDefinition(mappedProcessLinks, xml\n );\n case 'buildingBlock':\n const buildingBlockParams = params as BuildingBlockManagementParams;\n return this.processLinkService.createProcessDefinitionForBuildingBlock(\n mappedProcessLinks,\n xml,\n buildingBlockParams.buildingBlockDefinitionKey,\n buildingBlockParams.buildingBlockDefinitionVersionTag\n );\n case 'case':\n const caseManagementParams = params as CaseManagementParams;\n return this.processLinkService.createProcessDefinitionForCase(\n mappedProcessLinks,\n xml,\n caseManagementParams.caseDefinitionKey,\n caseManagementParams.caseDefinitionVersionTag,\n this.canInitializeDocument$.getValue(),\n this.startableByUser$.getValue()\n );\n }\n })\n )\n .subscribe({\n next: () => {\n this.clearValidationErrors();\n this.processManagementEditorService.clearDismissedAutofills();\n this.navigateBack('success');\n },\n error: (error: unknown) => {\n if (this.isProcessDefinitionAlreadyExistsError(error)) {\n this.showNotification('alreadyExists');\n } else if (this.isValidationError(error)) {\n this.highlightValidationErrors((error as HttpErrorResponse).error.errors);\n } else {\n this.showNotification('error');\n }\n },\n });\n }\n\n public selectedVersionChange(event: {\n item: {processDefinitionVersion: ProcessDefinitionWithPropertiesDto};\n }): void {\n this.processManagementEditorService.selectionProcessDefinition$\n .pipe(take(1))\n .subscribe(selectedVersion => {\n if (selectedVersion.id !== event.item.processDefinitionVersion.id) {\n this.processManagementEditorService.setSelectedProcessDefinition(\n event?.item?.processDefinitionVersion\n );\n this.changesPending$.next(false);\n }\n });\n }\n\n public navigateBack(notification: null | 'success' | 'error'): void {\n this.router.navigate(['../'], {relativeTo: this.route});\n\n if (!notification) return;\n\n this.showNotification(notification);\n }\n\n public onProcessToggleChange(\n field: keyof UpdateProcessDefinitionCaseDefinitionRequest | 'draft',\n value: boolean\n ): void {\n if (field === 'draft') this.draft$.next(value);\n if (field === 'canInitializeDocument') this.canInitializeDocument$.next(value);\n if (field === 'startableByUser') this.startableByUser$.next(value);\n this.changesPending$.next(true);\n }\n\n public onWarningConfirmationConfirm(): void {\n if (this._pendingDeployAction) {\n this._pendingDeployAction();\n this._pendingDeployAction = null;\n }\n }\n\n public onWarningConfirmationCancel(): void {\n this._pendingDeployAction = null;\n }\n\n private validateAndDeploy(isReadOnlyProcess: boolean, deployAction: () => void): void {\n if (this.draft$.getValue()) {\n deployAction();\n return;\n }\n\n combineLatest([\n from(isReadOnlyProcess ? this._bpmnViewer.saveXML() : this._bpmnModeler.saveXML()),\n this.processManagementEditorService.processLinksForSelectedDefinition$,\n ])\n .pipe(\n take(1),\n switchMap(([result, processLinks]) => {\n const xml = this.applyDraftState(result?.xml ?? '') ?? '';\n return this.processManagementService.validateProcessDefinition({\n bpmnXml: xml,\n processLinks: processLinks.map(link => ({\n ...link,\n processDefinitionId: '-',\n })),\n canInitializeDocument: this.canInitializeDocument$.getValue(),\n startableByUser: this.startableByUser$.getValue(),\n });\n })\n )\n .subscribe({\n next: validationResult => {\n if (!validationResult.isValid) {\n this.highlightValidationErrors(validationResult.errors);\n } else if (validationResult.hasWarnings) {\n this.highlightValidationErrors(validationResult.errors);\n this._pendingDeployAction = deployAction;\n this.showWarningConfirmationModal$.next(true);\n } else {\n deployAction();\n }\n },\n error: () => {\n deployAction();\n },\n });\n }\n\n private setProcessManagementWindow(): void {\n const processManagementWindow = window as any as ProcessManagementWindow;\n\n if (!processManagementWindow) return;\n\n processManagementWindow.processManagementEditorService = this.processManagementEditorService;\n processManagementWindow.translateService = this.translateService;\n processManagementWindow.pluginTranslationService = this.pluginTranslationService;\n processManagementWindow.processLinkService = this.processLinkService;\n }\n\n private showNotification(\n notification:\n | null\n | 'success'\n | 'error'\n | 'exportError'\n | 'alreadyExists'\n | 'validationError'\n | 'validationWarning'\n | 'validationSuccess'\n ): void {\n if (!notification) return;\n\n let type: 'success' | 'error' | 'warning';\n if (\n notification === 'alreadyExists' ||\n notification === 'validationError' ||\n notification === 'exportError' ||\n notification === 'error'\n ) {\n type = 'error';\n } else if (notification === 'validationWarning') {\n type = 'warning';\n } else {\n type = 'success';\n }\n this.notificationService.showToast({\n caption: this.translateService.instant(`processManagement.${notification}Notification`),\n type,\n title: this.translateService.instant(`interface.${type}`),\n });\n }\n\n private isProcessDefinitionAlreadyExistsError(error: unknown): boolean {\n if (!(error instanceof HttpErrorResponse) || error.status !== 409) return false;\n const body = error.error;\n if ((body as ProcessDefinitionConflictResponse)?.processDefinitionId) return true;\n const bbBody = body as BuildingBlockProcessDefinitionConflictResponse;\n return (\n Array.isArray(bbBody?.duplicateProcessDefinitions) &&\n bbBody.duplicateProcessDefinitions.length > 0\n );\n }\n\n private applyDraftState(xml: string | null | undefined): string | null {\n if (!xml) return null;\n\n const doc = new DOMParser().parseFromString(xml, 'application/xml');\n if (doc.getElementsByTagName('parsererror').length > 0) return xml;\n\n const executableValue = this.draft$.getValue() ? 'false' : 'true';\n const processes = doc.getElementsByTagNameNS('*', 'process');\n for (let i = 0; i < processes.length; i++) {\n processes[i].setAttribute('isExecutable', executableValue);\n }\n return new XMLSerializer().serializeToString(doc);\n }\n\n private parseDraftFromXml(xml: string | null | undefined): boolean {\n if (!xml) return false;\n\n const doc = new DOMParser().parseFromString(xml, 'application/xml');\n if (doc.getElementsByTagName('parsererror').length > 0) return false;\n\n const processes = doc.getElementsByTagNameNS('*', 'process');\n if (processes.length === 0) return false;\n\n for (let i = 0; i < processes.length; i++) {\n if (processes[i].getAttribute('isExecutable') === 'true') return false;\n }\n return true;\n }\n\n private isValidationError(error: unknown): boolean {\n return (\n error instanceof HttpErrorResponse &&\n error.status === 422 &&\n Array.isArray(error.error?.errors)\n );\n }\n\n private highlightValidationErrors(errors: ProcessDefinitionValidationError[]): void {\n this.clearValidationErrors();\n this.processManagementEditorService.setValidationErrors(errors);\n\n const modeler = this.activeEditor;\n const canvas = modeler.get('canvas') as any;\n const overlays = modeler.get('overlays') as any;\n\n const errorElementIds = new Set<string>();\n\n const elementHasError = new Map<string, boolean>();\n const elementFirstIssue = new Map<string, ProcessDefinitionValidationError>();\n\n for (const error of errors) {\n if (error.elementType === 'Process') continue;\n\n const hasErrorAlready = elementHasError.get(error.elementId) ?? false;\n const isError = error.severity !== 'WARNING';\n\n if (!elementFirstIssue.has(error.elementId)) {\n elementFirstIssue.set(error.elementId, error);\n } else if (isError && !hasErrorAlready) {\n elementFirstIssue.set(error.elementId, error);\n }\n\n if (isError) {\n elementHasError.set(error.elementId, true);\n } else if (!hasErrorAlready) {\n elementHasError.set(error.elementId, false);\n }\n }\n\n for (const [elementId, issue] of elementFirstIssue) {\n try {\n const hasError = elementHasError.get(elementId) ?? false;\n const markerClass = hasError ? 'highlight-overlay-error' : 'highlight-overlay-warning';\n const overlayClass = hasError ? 'validation-error-overlay' : 'validation-warning-overlay';\n\n this._validationErrorElementIds.push(elementId);\n errorElementIds.add(elementId);\n canvas.addMarker(elementId, markerClass);\n\n const position =\n issue.elementType === 'Participant' ? {top: 5, left: 5} : {top: -12, left: -12};\n\n overlays.add(elementId, 'validation-error', {\n position,\n html: this.buildOverlayElement(\n overlayClass,\n elementId,\n this.getValidationErrorMessage(issue)\n ),\n });\n } catch (e) {\n // Element may not exist on the canvas\n }\n }\n\n const eventBus = modeler.get('eventBus') as any;\n this._validationHoverHandler = (event: any) => {\n const id = event.element?.id;\n if (id && errorElementIds.has(id)) {\n const errorOverlay = document.querySelector(\n `.validation-error-overlay[data-element-id=\"${id}\"]`\n );\n const warningOverlay = document.querySelector(\n `.validation-warning-overlay[data-element-id=\"${id}\"]`\n );\n errorOverlay?.classList.add('validation-error-overlay--active');\n warningOverlay?.classList.add('validation-warning-overlay--active');\n }\n };\n this._validationOutHandler = (event: any) => {\n const id = event.element?.id;\n if (id && errorElementIds.has(id)) {\n const errorOverlay = document.querySelector(\n `.validation-error-overlay[data-element-id=\"${id}\"]`\n );\n const warningOverlay = document.querySelector(\n `.validation-warning-overlay[data-element-id=\"${id}\"]`\n );\n errorOverlay?.classList.remove('validation-error-overlay--active');\n warningOverlay?.classList.remove('validation-warning-overlay--active');\n }\n };\n eventBus.on('element.hover', this._validationHoverHandler);\n eventBus.on('element.out', this._validationOutHandler);\n\n this._selectionChangedHandler = (event: any) => {\n this.highlightInvalidFieldsInPropertiesPanel(event.newSelection, errors);\n };\n eventBus.on('selection.changed', this._selectionChangedHandler);\n\n const selection = modeler.get('selection') as any;\n const selected = selection.get();\n if (selected?.length > 0) {\n const current = selected[0];\n selection.deselect(current);\n selection.select(current);\n }\n }\n\n private highlightInvalidFieldsInPropertiesPanel(\n newSelection: any[],\n errors: ProcessDefinitionValidationError[]\n ): void {\n document.querySelectorAll('.validation-error-field').forEach(el => {\n el.classList.remove('validation-error-field');\n });\n document.querySelectorAll('.validation-error-param').forEach(el => {\n el.classList.remove('validation-error-param');\n });\n\n if (!newSelection?.length) return;\n\n const selectedId = newSelection[0]?.id;\n if (!selectedId) return;\n\n const elementErrors = errors.filter(e => e.elementId === selectedId);\n\n setTimeout(() => {\n for (const error of elementErrors) {\n const listenerEntryId =\n error.listenerType != null && error.listenerIndex != null\n ? `${selectedId}-${error.listenerType}-${error.listenerIndex}`\n : null;\n\n if (error.invalidFields) {\n for (const fieldId of error.invalidFields) {\n let entry: Element | null = null;\n\n if (listenerEntryId) {\n const listenerEntry = document.querySelector(\n `[data-entry-id=\"${listenerEntryId}\"]`\n );\n if (listenerEntry) {\n entry = listenerEntry.querySelector(`[data-entry-id=\"${fieldId}\"]`);\n }\n }\n\n if (!entry) {\n entry = document.querySelector(`[data-entry-id=\"${fieldId}\"]`);\n }\n\n if (entry) {\n entry.classList.add('validation-error-field');\n const input = entry.querySelector('input, textarea, select');\n if (input) {\n const handler = (): void => {\n entry!.classList.remove('validation-error-field');\n input.removeEventListener('input', handler);\n input.removeEventListener('change', handler);\n };\n input.addEventListener('input', handler);\n input.addEventListener('change', handler);\n this._fieldInputCleanupFns.push(() => {\n input.removeEventListener('input', handler);\n input.removeEventListener('change', handler);\n });\n }\n }\n }\n }\n\n if (error.invalidArguments && error.invalidArguments.length > 0) {\n let scopeElement: Element | null = null;\n\n if (listenerEntryId) {\n scopeElement = document.querySelector(`[data-entry-id=\"${listenerEntryId}\"]`);\n }\n\n const wrapper = scopeElement\n ? scopeElement.querySelector('.expression-editor-wrapper') as HTMLElement\n : document.querySelector('.expression-editor-wrapper') as HTMLElement;\n if (wrapper) {\n wrapper.dataset.invalidArgs = JSON.stringify(error.invalidArguments);\n }\n\n for (const idx of error.invalidArguments) {\n const paramInput = scopeElement\n ? scopeElement.querySelector(`.expression-editor-param input[data-param-index=\"${idx}\"]`)\n : document.querySelector(`.expression-editor-param input[data-param-index=\"${idx}\"]`);\n\n if (paramInput) {\n paramInput.classList.add('validation-error-param');\n const handler = (): void => {\n paramInput!.classList.remove('validation-error-param');\n paramInput!.removeEventListener('input', handler);\n };\n paramInput.addEventListener('input', handler);\n this._fieldInputCleanupFns.push(() => {\n paramInput!.removeEventListener('input', handler);\n });\n }\n }\n }\n }\n }, 50);\n }\n\n private clearValidationErrors(): void {\n const modeler = this.activeEditor;\n\n if (!modeler) return;\n\n this.processManagementEditorService.setValidationErrors([]);\n\n const canvas = modeler.get('canvas') as any;\n const overlays = modeler.get('overlays') as any;\n\n const eventBus = modeler.get('eventBus') as any;\n if (this._validationHoverHandler) {\n eventBus.off('element.hover', this._validationHoverHandler);\n this._validationHoverHandler = null;\n }\n if (this._validationOutHandler) {\n eventBus.off('element.out', this._validationOutHandler);\n this._validationOutHandler = null;\n }\n if (this._selectionChangedHandler) {\n eventBus.off('selection.changed', this._selectionChangedHandler);\n this._selectionChangedHandler = null;\n }\n\n this._fieldInputCleanupFns.forEach(fn => fn());\n this._fieldInputCleanupFns = [];\n\n document.querySelectorAll('.validation-error-field').forEach(el => {\n el.classList.remove('validation-error-field');\n });\n document.querySelectorAll('.validation-error-param').forEach(el => {\n el.classList.remove('validation-error-param');\n });\n document.querySelectorAll('.expression-editor-wrapper[data-invalid-args]').forEach(el => {\n delete (el as HTMLElement).dataset.invalidArgs;\n });\n\n for (const elementId of this._validationErrorElementIds) {\n try {\n canvas.removeMarker(elementId, 'highlight-overlay-error');\n canvas.removeMarker(elementId, 'highlight-overlay-warning');\n } catch (e) {\n // ignore\n }\n }\n this._validationErrorElementIds = [];\n\n try {\n overlays.remove({type: 'validation-error'});\n } catch (e) {\n // ignore\n }\n }\n\n private highlightAutofilledElements(): void {\n this.clearAutofilledHighlights();\n\n if (!this._autofilledElements?.length) return;\n\n const modeler = this.activeEditor;\n if (!modeler) return;\n\n const overlays = modeler.get('overlays') as any;\n\n for (const element of this._autofilledElements) {\n try {\n this._autofilledElementIds.push(element.activityId);\n\n const tooltipText = this.getAutofilledTooltip();\n overlays.add(element.activityId, 'autofilled-indicator', {\n position: {top: -12, left: -12},\n html: this.buildAutofilledOverlayElement(element.activityId, tooltipText),\n });\n } catch (e) {\n // Element may not exist on the canvas\n }\n }\n }\n\n private clearAutofilledHighlights(): void {\n const modeler = this.activeEditor;\n if (!modeler) return;\n\n const overlays = modeler.get('overlays') as any;\n\n this._autofilledElementIds = [];\n\n try {\n overlays.remove({type: 'autofilled-indicator'});\n } catch (e) {\n // ignore\n }\n }\n\n private buildAutofilledOverlayElement(elementId: string, tooltipText: string): HTMLElement {\n const container = document.createElement('div');\n container.className = 'autofilled-indicator-overlay';\n container.dataset.elementId = elementId;\n\n const icon = document.createElement('span');\n icon.className = 'autofilled-indicator-icon';\n icon.innerHTML = '!';\n container.appendChild(icon);\n\n const tooltip = document.createElement('span');\n tooltip.className = 'autofilled-indicator-tooltip';\n tooltip.textContent = tooltipText;\n container.appendChild(tooltip);\n\n return container;\n }\n\n private getAutofilledTooltip(): string {\n return this.translateService.instant('processManagement.autofilled.generic');\n }\n\n private getElementListeners(element: any): {\n hasExecutionListener: boolean;\n hasTaskListener: boolean;\n executionListenerCount: number;\n taskListenerCount: number;\n } {\n const extensionElements = element?.businessObject?.extensionElements;\n const values = extensionElements?.values || [];\n\n const executionListeners = values.filter(\n (v: any) => v.$type === 'camunda:ExecutionListener'\n );\n const taskListeners = values.filter((v: any) => v.$type === 'camunda:TaskListener');\n\n return {\n hasExecutionListener: executionListeners.length > 0,\n hasTaskListener: taskListeners.length > 0,\n executionListenerCount: executionListeners.length,\n taskListenerCount: taskListeners.length,\n };\n }\n\n public toggleMarkerVisibility(): void {\n this.$markersVisible.update(v => !v);\n if (this.$markersVisible()) {\n this.updateActivityMarkers();\n } else {\n this.clearActivityMarkers();\n }\n }\n\n private updateActivityMarkers(): void {\n this.clearActivityMarkers();\n\n if (!this.$markersVisible()) return;\n\n const modeler = this.activeEditor;\n if (!modeler) return;\n\n const overlays = modeler.get('overlays') as any;\n const elementRegistry = modeler.get('elementRegistry') as any;\n\n const processLinks = this.processManagementEditorService.processLinksForSelectedDefinition;\n const processLinkActivityIds = new Set(processLinks.map(pl => pl.activityId));\n\n const elementMarkers = new Map<string, ActivityMarkerInfo>();\n\n elementRegistry.forEach((element: any) => {\n if (!element.id || element.type === 'label') return;\n\n const listeners = this.getElementListeners(element);\n const hasProcessLink = processLinkActivityIds.has(element.id);\n\n if (listeners.hasExecutionListener || listeners.hasTaskListener || hasProcessLink) {\n elementMarkers.set(element.id, {\n hasExecutionListener: listeners.hasExecutionListener,\n hasTaskListener: listeners.hasTaskListener,\n hasProcessLink,\n executionListenerCount: listeners.executionListenerCount,\n taskListenerCount: listeners.taskListenerCount,\n });\n }\n });\n\n for (const [elementId, info] of elementMarkers) {\n this._activityMarkerElementIds.push(elementId);\n\n const badges = this.buildActivityMarkerBadges(info, elementId);\n if (badges) {\n try {\n const element = elementRegistry.get(elementId);\n const position = this.calculateMarkerPosition(element);\n overlays.add(elementId, 'activity-marker', {\n position,\n html: badges,\n });\n } catch (e) {\n // Element may not exist on canvas\n }\n }\n }\n }\n\n private calculateMarkerPosition(element: any): {top: number; left?: number; right?: number} {\n if (element?.waypoints?.length > 1) {\n const waypoints = element.waypoints;\n const lastPoint = waypoints[waypoints.length - 1];\n const secondLastPoint = waypoints[waypoints.length - 2];\n\n // Compute bounding box from waypoints (same as diagram-js getBBox)\n const minX = Math.min(...waypoints.map((wp: any) => wp.x));\n const minY = Math.min(...waypoints.map((wp: any) => wp.y));\n\n // Direction of the final segment\n const dx = lastPoint.x - secondLastPoint.x;\n const dy = lastPoint.y - secondLastPoint.y;\n const len = Math.sqrt(dx * dx + dy * dy);\n\n // Offset back from arrow tip along the line\n const backOffset = 30;\n const backX = len > 0 ? (-dx / len) * backOffset : 0;\n const backY = len > 0 ? (-dy / len) * backOffset : 0;\n\n // Perpendicular offset: above for horizontal lines, right for vertical lines\n const perpOffset = 20;\n const isMoreHorizontal = Math.abs(dx) > Math.abs(dy);\n const perpX = isMoreHorizontal ? 0 : perpOffset;\n const perpY = isMoreHorizontal ? -perpOffset : 0;\n\n return {\n top: lastPoint.y - minY + backY + perpY - 11,\n left: lastPoint.x - minX + backX + perpX - 11,\n };\n }\n return {top: -12, right: 12};\n }\n\n private buildActivityMarkerBadges(info: ActivityMarkerInfo, elementId: string): HTMLElement | null {\n const container = document.createElement('div');\n container.className = 'activity-marker-overlay';\n container.dataset.elementId = elementId;\n\n if (info.hasProcessLink) {\n const tooltip = this.translateService.instant('processManagement.markers.processLink');\n container.appendChild(this.buildMarkerBadge('process-link', 'P', tooltip));\n }\n if (info.hasExecutionListener) {\n const countSuffix = info.executionListenerCount > 1 ? ` (${info.executionListenerCount})` : '';\n const tooltip =\n this.translateService.instant('processManagement.markers.executionListener') + countSuffix;\n container.appendChild(this.buildMarkerBadge('execution-listener', 'E', tooltip));\n }\n if (info.hasTaskListener) {\n const countSuffix = info.taskListenerCount > 1 ? ` (${info.taskListenerCount})` : '';\n const tooltip =\n this.translateService.instant('processManagement.markers.taskListener') + countSuffix;\n container.appendChild(this.buildMarkerBadge('task-listener', 'T', tooltip));\n }\n\n if (container.children.length === 0) return null;\n\n return container;\n }\n\n private buildMarkerBadge(type: string, label: string, tooltip: string): HTMLElement {\n const badge = document.createElement('div');\n badge.className = `activity-marker-badge activity-marker-badge--${type}`;\n\n const icon = document.createElement('span');\n icon.className = 'activity-marker-badge__icon';\n icon.textContent = label;\n badge.appendChild(icon);\n\n const text = document.createElement('span');\n text.className = 'activity-marker-badge__text';\n text.textContent = tooltip;\n badge.appendChild(text);\n\n return badge;\n }\n\n private clearActivityMarkers(): void {\n const modeler = this.activeEditor;\n if (!modeler) return;\n\n const overlays = modeler.get('overlays') as any;\n\n this._activityMarkerElementIds = [];\n\n try {\n overlays.remove({type: 'activity-marker'});\n } catch (e) {\n // ignore\n }\n }\n\n private scheduleActivityMarkerUpdate(): void {\n if (this._activityMarkerUpdateTimeout) {\n clearTimeout(this._activityMarkerUpdateTimeout);\n }\n this._activityMarkerUpdateTimeout = setTimeout(() => {\n this.updateActivityMarkers();\n this._activityMarkerUpdateTimeout = null;\n }, 300);\n }\n\n private setSelectedProcessDefinitionToLatest(\n processDefinitions: ProcessDefinitionWithPropertiesDto[]\n ): void {\n const latest = getLatestProcessDefinition(processDefinitions);\n\n if (!latest) return;\n\n this.processManagementEditorService.setSelectedProcessDefinition(latest);\n }\n\n private initModeler(): void {\n this._bpmnModeler = new Modeler({\n additionalModules: [\n BpmnPropertiesPanelModule,\n BpmnPropertiesProviderModule,\n CamundaPlatformPropertiesProviderModule,\n camundaPlatformBehaviors,\n ValtimoPropertiesProviderModule,\n ExpressionAutocompleteModule,\n ],\n moddleExtensions: {camunda: CamundaBpmnModdle},\n propertiesPanel: {parent: this.modelerPanelElementRef.nativeElement},\n });\n\n this._bpmnModeler?.attachTo(this.modelerElementRef.nativeElement);\n\n // Initialize expression autocomplete\n this._expressionAutocomplete = this._bpmnModeler.get('expressionAutocomplete') as ExpressionAutocomplete;\n this._expressionAutocomplete?.setPanelContainer(this.modelerPanelElementRef.nativeElement);\n this.loadProcessBeansForAutocomplete();\n\n this._bpmnModeler.on('commandStack.changed', () => {\n this.changesPending$.next(true);\n });\n\n this._bpmnModeler.on('import.done', () => {\n const idMap: Record<string, string> = {};\n const elementRegistry = this._bpmnModeler.get('elementRegistry') as any;\n\n elementRegistry.forEach((element: any) => {\n const activityId = element?.di?.id;\n const businessId = element?.id;\n\n if (!activityId || !businessId) return;\n\n idMap[activityId] = businessId;\n });\n\n this.processManagementEditorService.setActivityIdBusinessIdMap(idMap);\n this.listenToActivityChangesOnModeler();\n this.updateActivityMarkers();\n });\n }\n\n private loadProcessBeansForAutocomplete(): void {\n this.processBeanService.getProcessBeans().subscribe({\n next: beans => {\n this._expressionAutocomplete?.setProcessBeans(beans);\n },\n error: err => {\n this.logger.warn('Failed to load process beans for autocomplete', err);\n },\n });\n }\n\n private initViewer(): void {\n this._bpmnViewer = new Modeler({\n additionalModules: [\n DisableBpmnWriteModule,\n BpmnPropertiesPanelModule,\n BpmnPropertiesProviderModule,\n CamundaPlatformPropertiesProviderModule,\n ValtimoPropertiesProviderModule,\n ReadOnlyPropertiesPanelModule,\n ],\n moddleExtensions: {camunda: CamundaBpmnModdle},\n propertiesPanel: {parent: this.viewerPanelElementRef.nativeElement},\n });\n\n this._bpmnViewer?.attachTo(this.viewerElementRef.nativeElement);\n\n this._bpmnViewer.on('commandStack.changed', () => {\n this.changesPending$.next(true);\n });\n\n this._bpmnViewer.on('import.done', () => {\n disableCommands(this._bpmnViewer);\n this.updateActivityMarkers();\n });\n }\n\n private reload(): void {\n this._reload$.next(null);\n }\n\n private handleUpdateEvent(event: OpenProcessLinkModalEvent): void {\n this.modalService.setModalData(event?.modalParams);\n this.processLinkStateService.setModalParams(event?.modalParams);\n this.processLinkStateService.setElementName(event?.modalParams?.element?.name ?? '');\n this.processLinkStateService.selectProcessLink(event.processLink);\n this.processLinkStateService.setReadOnly(!this.processManagementEditorService.editingAllowed);\n this.processLinkStateService.showModal();\n }\n\n private handleCreateEvent(event: OpenProcessLinkModalEvent): void {\n this.processLinkService\n .getProcessLinkCandidates(event.modalParams.element.activityListenerType ?? '')\n .subscribe(candidates => {\n this.modalService.setModalData(event?.modalParams);\n this.processLinkStateService.setModalParams(event?.modalParams);\n this.processLinkStateService.setElementName(event?.modalParams?.element?.name ?? '');\n this.processLinkStateService.setAvailableProcessLinkTypes(candidates);\n this.processLinkStateService.showModal();\n });\n }\n\n private subscribeToOpenProcessLinkModalEvents(): void {\n this._subscriptions.add(\n this.processManagementEditorService.openProcessLinkModalEvents$.subscribe(event => {\n if (event.processLink) {\n this.handleUpdateEvent(event);\n } else {\n this.handleCreateEvent(event);\n }\n })\n );\n }\n\n private subscribeToProcessLinkUpdateEvents(): void {\n this._subscriptions.add(\n this.processLinkStateService.processLinkUpdateEvents$.subscribe(event => {\n this.processManagementEditorService.updateProcessLink(event);\n this.processLinkStateService.stopSaving();\n this.processLinkStateService.closeModal();\n\n const buildingBlockProcessLinkUpdateDto = event as BuildingBlockProcessLinkUpdateDto;\n\n if (\n buildingBlockProcessLinkUpdateDto.buildingBlockDefinitionKey &&\n buildingBlockProcessLinkUpdateDto.buildingBlockDefinitionVersionTag\n ) {\n this.setCalledElementForBuildingBlockProcessLink(\n buildingBlockProcessLinkUpdateDto.activityId,\n buildingBlockProcessLinkUpdateDto.buildingBlockDefinitionKey,\n buildingBlockProcessLinkUpdateDto.buildingBlockDefinitionVersionTag\n );\n }\n })\n );\n }\n\n private subscribeToProcessLinkCreateEvents(): void {\n this._subscriptions.add(\n this.processLinkStateService.processLinkCreateEvents$.subscribe(event => {\n this.processManagementEditorService.createProcessLink(event);\n this.processLinkStateService.stopSaving();\n this.processLinkStateService.closeModal();\n this.updateActivityMarkers();\n\n const buildingBlockProcessLinkCreateDto = event as BuildingBlockProcessLinkCreateDto;\n\n if (\n buildingBlockProcessLinkCreateDto.buildingBlockDefinitionKey &&\n buildingBlockProcessLinkCreateDto.buildingBlockDefinitionVersionTag\n ) {\n this.setCalledElementForBuildingBlockProcessLink(\n buildingBlockProcessLinkCreateDto.activityId,\n buildingBlockProcessLinkCreateDto.buildingBlockDefinitionKey,\n buildingBlockProcessLinkCreateDto.buildingBlockDefinitionVersionTag\n );\n }\n })\n );\n }\n\n private subscribeToProcessLinkDeleteEvents(): void {\n this._subscriptions.add(\n merge(\n this.processManagementEditorService.deleteProcessLinkEvents$,\n this.processLinkStateService.processLinkDeleteEvents$\n ).subscribe(event => {\n this.processManagementEditorService.deleteProcessLink(event);\n this.processLinkStateService.stopSaving();\n this.processLinkStateService.closeModal();\n this.updateActivityMarkers();\n\n this.unsetCalledElementForBuildingBlockProcessLink(event.activityId);\n })\n );\n }\n\n private subscribeToViewerActive(): void {\n this._subscriptions.add(\n this.viewerActive$.subscribe(viewerActive => {\n this._viewerActive = viewerActive;\n\n this.updateActivityMarkers();\n this.highlightAutofilledElements();\n })\n );\n\n this._subscriptions.add(\n this.hasEditPermissions$.subscribe(hasEditPermissions =>\n this.processManagementEditorService.setEditingAllowed(hasEditPermissions)\n )\n );\n }\n\n private subscribeToAutofillDismissEvents(): void {\n this._subscriptions.add(\n this.processManagementEditorService.autofillDismissed$.subscribe(activityId => {\n this.removeAutofillOverlay(activityId);\n })\n );\n }\n\n private removeAutofillOverlay(activityId: string): void {\n const modeler = this.activeEditor;\n if (!modeler) return;\n\n const overlays = modeler.get('overlays') as any;\n try {\n overlays.remove({element: activityId, type: 'autofilled-indicator'});\n } catch (e) {\n // ignore\n }\n\n const idx = this._autofilledElementIds.indexOf(activityId);\n if (idx > -1) {\n this._autofilledElementIds.splice(idx, 1);\n }\n }\n\n private initIfCreate(): void {\n if (this._selectedProcess$.getValue() !== 'create') return;\n\n this.creatingNewProcess$.next(true);\n this._bpmnModeler?.importXML(EMPTY_BPMN);\n this.isReadOnlyProcess$.next(false);\n this.isSystemProcess$.next(false);\n this.loading$.next(false);\n }\n\n private shapeAddedHandler = (event: any): void => {\n this.logger.debug('Shape added:', event);\n };\n\n private shapeRemovedHandler = (event: any): void => {\n this.logger.debug('Shape removed:', event);\n\n const activityId = event?.element?.id;\n\n if (!activityId) return;\n\n this.processManagementEditorService.deleteProcessLink({activityId});\n };\n\n private elementChangedHandler = (event: any): void => {\n this.logger.debug('Element changed:', event);\n\n const activityId = event?.element?.di?.id;\n const businessId = event?.element?.id;\n\n if (!activityId || !businessId) return;\n\n this.processManagementEditorService.updateProcessLinksOnIdChange(activityId, businessId);\n this.scheduleActivityMarkerUpdate();\n };\n\n private listenToActivityChangesOnModeler(): void {\n const eventBus = this._bpmnModeler.get('eventBus') as any;\n\n if (!eventBus) return;\n\n eventBus.on('shape.added', this.shapeAddedHandler);\n eventBus.on('shape.removed', this.shapeRemovedHandler);\n eventBus.on('element.changed', this.elementChangedHandler);\n }\n\n private cleanUpListenersOnModeler(): void {\n const eventBus = this._bpmnModeler.get('eventBus') as any;\n\n if (!eventBus) return;\n\n eventBus.off('shape.added', this.shapeAddedHandler);\n eventBus.off('shape.removed', this.shapeRemovedHandler);\n eventBus.off('element.changed', this.elementChangedHandler);\n }\n\n private initProcessDefinition(): void {\n this._subscriptions.add(\n this._selectedProcess$\n .pipe(\n filter(selectedProcess => selectedProcess !== null && selectedProcess !== 'create'),\n distinctUntilChanged((previous, current) => isEqual(previous, current)),\n tap(() => this.loading$.next(true))\n )\n .subscribe(result => {\n const processDefinitionResult = result as ProcessDefinitionResult;\n\n this.cleanUpListenersOnModeler();\n this._autofilledElements = processDefinitionResult.autofilledElements ?? [];\n this.processManagementEditorService.setAutofilledElements(this._autofilledElements);\n\n this._bpmnModeler?.importXML(processDefinitionResult.bpmn20Xml).then(() => {\n this.highlightAutofilledElements();\n });\n this._bpmnViewer?.importXML(processDefinitionResult.bpmn20Xml).then(() => {\n this.highlightAutofilledElements();\n });\n\n this.canInitializeDocument$.next(\n !!processDefinitionResult?.processCaseLink?.canInitializeDocument\n );\n this.startableByUser$.next(!!processDefinitionResult?.processCaseLink?.startableByUser);\n this.draft$.next(!!processDefinitionResult?.draft);\n\n this.loading$.next(false);\n })\n );\n }\n\n private openParamsAndContextSubscription(): void {\n this._subscriptions.add(\n combineLatest([\n getContextObservable(this.route),\n getCaseManagementRouteParams(this.route),\n getBuildingBlockManagementRouteParams(this.route),\n ]).subscribe(([context, caseManagementParams, buildingBlockManagementParams]) => {\n if (context) this.processManagementService.context = context;\n\n this.processLinkStateService.setContext(context);\n\n if (caseManagementParams) {\n this.processManagementService.setParams(\n caseManagementParams.caseDefinitionKey,\n caseManagementParams.caseDefinitionVersionTag\n );\n }\n\n if (buildingBlockManagementParams) {\n this.processManagementService.setParams(\n buildingBlockManagementParams.buildingBlockDefinitionKey,\n buildingBlockManagementParams.buildingBlockDefinitionVersionTag\n );\n }\n\n initBreadcrumbsForContext(\n this.breadcrumbService,\n this.translateService,\n caseManagementParams || buildingBlockManagementParams,\n context as ManagementContext\n );\n\n this.processManagementEditorService.setManagementRouteParams(\n context,\n caseManagementParams || buildingBlockManagementParams\n );\n })\n );\n }\n\n private initEditing(): void {\n combineLatest([this.editParam$, this.managementParams$.pipe(startWith(null)), this.context$])\n .pipe(\n take(1),\n switchMap(([editParam, params, context]) => {\n if (editParam === 'create') {\n this._selectedProcess$.next('create');\n this.initIfCreate();\n\n return of(null);\n }\n\n switch (context) {\n case 'case':\n const caseManagementParams = params as CaseManagementParams;\n return this.processManagementService.getProcessDefinitionForCase(\n caseManagementParams.caseDefinitionKey,\n caseManagementParams.caseDefinitionVersionTag,\n editParam\n );\n case 'independent':\n return this.processManagementService\n .getUnlinkedProcessDefinitionsByKey(editParam)\n .pipe(map(processDefinitionResults => processDefinitionResults[0]));\n case 'buildingBlock':\n const buildingBlockParams = params as BuildingBlockManagementParams;\n return this.processManagementService.getBuildingBlockProcessDefinition(\n buildingBlockParams.buildingBlockDefinitionKey,\n buildingBlockParams.buildingBlockDefinitionVersionTag,\n editParam\n );\n }\n }),\n tap(res => {\n if (res) {\n this._selectedProcess$.next(res);\n this.processManagementEditorService.setSelectedProcessDefinition(res.processDefinition);\n this.processManagementEditorService.setProcessLinksForSelectedDefinition(\n res.processLinks\n );\n this.pageTitleService.setCustomPageTitle(res.processDefinition.name || '-');\n }\n\n this.initProcessDefinition();\n })\n )\n .subscribe();\n }\n\n private setCalledElementForBuildingBlockProcessLink(\n activityId: string,\n buildingBlockDefinitionKey: string,\n buildingBlockDefinitionVersionTag: string\n ): void {\n const editors = this.loadedEditors;\n\n if (!editors.length) {\n return;\n }\n\n this.processLinkBuildingBlockApiService\n .getMainProcessDefinitionKeyForBuildingBlock(\n buildingBlockDefinitionKey,\n buildingBlockDefinitionVersionTag\n )\n .subscribe({\n next: (mainProcessDefinitionKey: string) => {\n const versionTag = `BB:${buildingBlockDefinitionKey}:${buildingBlockDefinitionVersionTag}`;\n\n editors.forEach(editor =>\n applyBuildingBlockCalledElement(editor, activityId, mainProcessDefinitionKey, versionTag)\n );\n },\n });\n }\n\n private unsetCalledElementForBuildingBlockProcessLink(activityId: string): void {\n this.loadedEditors.forEach(editor => clearBuildingBlockCalledElement(editor, activityId));\n }\n\n public onValidationErrorClick(elementId: string): void {\n const modeler = this.activeEditor;\n const canvas = modeler.get('canvas') as any;\n const selection = modeler.get('selection') as any;\n const elementRegistry = modeler.get('elementRegistry') as any;\n\n const element = elementRegistry.get(elementId);\n if (!element) return;\n\n canvas.scrollToElement(element, {top: 100, bottom: 100, left: 100, right: 100});\n selection.select(element);\n }\n\n public getValidationErrorMessage(error: {\n reason: string;\n errorCode?: string;\n expression?: string;\n }): string {\n if (error.errorCode) {\n const translationKey = `processManagement.validationErrorCodes.${error.errorCode}`;\n const translated = this.translateService.instant(translationKey, {\n expression: error.expression ?? '',\n });\n if (translated !== translationKey) {\n return translated;\n }\n }\n return error.reason;\n }\n\n private buildOverlayElement(\n overlayClass: string,\n elementId: string,\n message: string\n ): HTMLElement {\n const container = document.createElement('div');\n container.className = overlayClass;\n container.dataset.elementId = elementId;\n\n const icon = document.createElement('span');\n icon.className = `${overlayClass}__icon`;\n icon.textContent = '!';\n container.appendChild(icon);\n\n const text = document.createElement('span');\n text.className = `${overlayClass}__text`;\n text.textContent = message;\n container.appendChild(text);\n\n return container;\n }\n}\n","<!--\n ~ Copyright 2015-2026 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<div\n fitPage\n [disableOverflow]=\"true\"\n *ngIf=\"{\n processDefinitionVersions: processDefinitionVersions$ | async,\n selectedProcessDefinitionXml: selectedProcessDefinitionXml$ | async,\n loading: loading$ | async,\n isReadOnlyProcess: isReadOnlyProcess$ | async,\n hasEditPermissions: hasEditPermissions$ | async,\n } as obs\"\n data-carbon-theme=\"g10\"\n class=\"bpmn__container\"\n>\n <div\n class=\"bpmn__modeler\"\n [style.display]=\"obs.isReadOnlyProcess || !obs.hasEditPermissions ? 'none' : 'flex'\"\n >\n <div class=\"bpmn__modeler-canvas\" #modeler>\n <cds-tooltip\n align=\"top-right\"\n [autoAlign]=\"true\"\n [description]=\"'processManagement.markers.toggleTooltip' | translate\"\n class=\"markers-visibility-toggle-wrapper\"\n >\n <button\n type=\"button\"\n class=\"markers-visibility-toggle\"\n (click)=\"toggleMarkerVisibility()\"\n [attr.data-test-id]=\"testIds.markersVisibilityToggle\"\n >\n <svg cdsIcon=\"view\" *ngIf=\"$markersVisible()\" size=\"16\"></svg>\n <svg cdsIcon=\"view--off\" *ngIf=\"!$markersVisible()\" size=\"16\"></svg>\n <span class=\"markers-visibility-toggle__label\">\n {{\n ($markersVisible()\n ? 'processManagement.markers.hide'\n : 'processManagement.markers.show'\n ) | translate\n }}\n </span>\n </button>\n </cds-tooltip>\n\n <div\n class=\"validation-errors-list\"\n *ngIf=\"validationErrors$ | async as validationErrors\"\n [style.display]=\"validationErrors.length > 0 ? '' : 'none'\"\n [attr.data-test-id]=\"testIds.validationErrors\"\n >\n <details open>\n <summary class=\"validation-errors-list__header\">\n <span>{{\n 'processManagement.validationErrorsCount'\n | translate: {count: validationErrors.length}\n }}</span>\n <svg\n class=\"validation-errors-list__arrow\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n >\n <path\n fill-rule=\"evenodd\"\n d=\"m11.657 8-4.95 4.95a1 1 0 0 1-1.414-1.414L8.828 8 5.293 4.464A1 1 0 1 1 6.707 3.05L11.657 8Z\"\n />\n </svg>\n </summary>\n\n <div class=\"validation-errors-list__items\">\n <button\n *ngFor=\"let error of validationErrors\"\n class=\"validation-errors-list__item\"\n [class.warning]=\"error.severity === 'WARNING'\"\n (click)=\"onValidationErrorClick(error.elementId)\"\n >\n <span\n class=\"validation-errors-list__icon\"\n [class.warning]=\"error.severity === 'WARNING'\"\n >{{ error.severity === 'WARNING' ? '!' : '!' }}</span\n >\n\n <span class=\"validation-errors-list__details\">\n <span class=\"validation-errors-list__element\">{{\n error.elementName || error.elementId\n }}</span>\n\n <span\n class=\"validation-errors-list__reason\"\n [class.warning]=\"error.severity === 'WARNING'\"\n >{{ getValidationErrorMessage(error) }}</span\n >\n </span>\n </button>\n </div>\n </details>\n </div>\n </div>\n\n <div class=\"bpmn__modeler-panel\" #modelerPanel></div>\n </div>\n\n <div\n class=\"bpmn__modeler\"\n [style.display]=\"obs.isReadOnlyProcess || !obs.hasEditPermissions ? 'flex' : 'none'\"\n >\n <div class=\"bpmn__modeler-canvas\" #viewer>\n <cds-tooltip\n align=\"top-right\"\n [autoAlign]=\"true\"\n [description]=\"'processManagement.markers.toggleTooltip' | translate\"\n class=\"markers-visibility-toggle-wrapper\"\n >\n <button\n type=\"button\"\n class=\"markers-visibility-toggle\"\n (click)=\"toggleMarkerVisibility()\"\n [attr.data-test-id]=\"testIds.markersVisibilityToggle\"\n >\n <svg cdsIcon=\"view\" *ngIf=\"$markersVisible()\" size=\"16\"></svg>\n <svg cdsIcon=\"view--off\" *ngIf=\"!$markersVisible()\" size=\"16\"></svg>\n <span class=\"markers-visibility-toggle__label\">\n {{\n ($markersVisible()\n ? 'processManagement.markers.hide'\n : 'processManagement.markers.show'\n ) | translate\n }}\n </span>\n </button>\n </cds-tooltip>\n </div>\n\n <div class=\"bpmn__modeler-panel bpmn__modeler-panel--read-only\" #viewerPanel></div>\n </div>\n</div>\n\n<valtimo-process-link-modal></valtimo-process-link-modal>\n\n<valtimo-confirmation-modal\n [showModalSubject$]=\"showWarningConfirmationModal$\"\n [titleTranslationKey]=\"'processManagement.warningConfirmation.title'\"\n [contentTranslationKey]=\"'processManagement.warningConfirmation.content'\"\n [confirmButtonTextTranslationKey]=\"'processManagement.warningConfirmation.confirm'\"\n [cancelButtonTextTranslationKey]=\"'interface.cancel'\"\n (confirmEvent)=\"onWarningConfirmationConfirm()\"\n (cancelEvent)=\"onWarningConfirmationCancel()\"\n></valtimo-confirmation-modal>\n\n<ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <div\n class=\"page-header-actions\"\n *ngIf=\"{\n processDefinitionVersionsListItems: processDefinitionVersionsListItems$ | async,\n loading: loading$ | async,\n changesPending: changesPending$ | async,\n isReadOnlyProcess: isReadOnlyProcess$ | async,\n isSystemProcess: isSystemProcess$ | async,\n compactMode: compactMode$ | async,\n creatingNewProcess: creatingNewProcess$ | async,\n context: context$ | async,\n hasEditPermissions: hasEditPermissions$ | async,\n draft: draft$ | async,\n canInitializeDocument: canInitializeDocument$ | async,\n startableByUser: startableByUser$ | async,\n updatingProcessDefinitionCaseDefinition: updatingProcessDefinitionCaseDefinition$ | async,\n } as actionsObs\"\n >\n <div class=\"page-header-actions__left-container\">\n <cds-dropdown\n *ngIf=\"!actionsObs.creatingNewProcess && actionsObs?.context === 'independent'\"\n class=\"page-header-actions__version-dropdown\"\n [attr.data-test-id]=\"testIds.versionDropdown\"\n (selected)=\"selectedVersionChange($event)\"\n [disabled]=\"\n actionsObs.loading ||\n (actionsObs.processDefinitionVersionsListItems || []).length === 0 ||\n (actionsObs.processDefinitionVersionsListItems || []).length === 1\n \"\n [size]=\"actionsObs.compactMode ? 'sm' : 'md'\"\n >\n <cds-dropdown-list\n [items]=\"actionsObs.processDefinitionVersionsListItems || []\"\n ></cds-dropdown-list>\n </cds-dropdown>\n\n <div\n class=\"page-header-actions__tags\"\n *ngIf=\"\n actionsObs.isReadOnlyProcess ||\n !actionsObs.hasEditPermissions ||\n actionsObs.isSystemProcess\n \"\n >\n <cds-tag\n *ngIf=\"actionsObs.isReadOnlyProcess || !actionsObs.hasEditPermissions\"\n type=\"blue\"\n [attr.data-test-id]=\"testIds.readOnlyTag\"\n >{{ 'processManagement.readOnly' | translate }}</cds-tag\n >\n\n <cds-tag\n *ngIf=\"actionsObs.isSystemProcess\"\n type=\"blue\"\n [attr.data-test-id]=\"testIds.systemProcessTag\"\n >{{ 'processManagement.systemProcess' | translate }}</cds-tag\n >\n </div>\n\n <div class=\"page-header-actions__toggles\">\n <cds-tooltip\n align=\"bottom-left\"\n [autoAlign]=\"true\"\n [description]=\"'processManagement.draftTooltip' | translate\"\n >\n <cds-toggle\n size=\"sm\"\n [onText]=\"'processManagement.draft' | translate\"\n [offText]=\"'processManagement.draft' | translate\"\n [checked]=\"actionsObs.draft\"\n [disabled]=\"actionsObs.loading || !actionsObs.hasEditPermissions\"\n (checkedChange)=\"onProcessToggleChange('draft', $event)\"\n [attr.data-test-id]=\"testIds.draftToggle\"\n ></cds-toggle>\n </cds-tooltip>\n\n @if (actionsObs.context === 'case') {\n <cds-tooltip\n align=\"bottom-left\"\n [autoAlign]=\"true\"\n [description]=\"'processCaseConnection.processCreatesCaseTooltip' | translate\"\n >\n <cds-toggle\n size=\"sm\"\n [onText]=\"'processManagement.canInitializeDocument' | translate\"\n [offText]=\"'processManagement.canInitializeDocument' | translate\"\n [checked]=\"actionsObs.canInitializeDocument\"\n [disabled]=\"\n actionsObs.loading ||\n actionsObs.updatingProcessDefinitionCaseDefinition ||\n !actionsObs.hasEditPermissions\n \"\n (checkedChange)=\"onProcessToggleChange('canInitializeDocument', $event)\"\n [attr.data-test-id]=\"testIds.startsCaseToggle\"\n ></cds-toggle>\n </cds-tooltip>\n\n <cds-tooltip\n align=\"bottom-left\"\n [autoAlign]=\"true\"\n [description]=\"'processCaseConnection.startableWithinCaseTooltip' | translate\"\n >\n <cds-toggle\n size=\"sm\"\n [onText]=\"'processManagement.startableByUser' | translate\"\n [offText]=\"'processManagement.startableByUser' | translate\"\n [checked]=\"actionsObs.startableByUser\"\n [disabled]=\"\n actionsObs.loading ||\n actionsObs.updatingProcessDefinitionCaseDefinition ||\n !actionsObs.hasEditPermissions\n \"\n (checkedChange)=\"onProcessToggleChange('startableByUser', $event)\"\n [attr.data-test-id]=\"testIds.startableByUserToggle\"\n ></cds-toggle\n ></cds-tooltip>\n }\n </div>\n </div>\n\n <div class=\"page-header-actions__buttons\">\n <v-overflow-menu class=\"overflow-button\" placement=\"bottom-end\">\n <v-overflow-menu-trigger\n overflowTrigger\n [attr.data-test-id]=\"testIds.moreButton\"\n ></v-overflow-menu-trigger>\n <v-overflow-menu-option\n *ngIf=\"actionsObs.context !== 'case'\"\n [disabled]=\"actionsObs.loading\"\n [attr.data-test-id]=\"testIds.exportOption\"\n (selected)=\"export()\"\n >{{ 'interface.export' | translate }}\n </v-overflow-menu-option>\n\n <v-overflow-menu-option\n [disabled]=\"actionsObs.loading\"\n (selected)=\"exportBpmn(actionsObs.isReadOnlyProcess)\"\n >{{ 'processManagement.exportBpmn' | translate }}\n </v-overflow-menu-option>\n </v-overflow-menu>\n\n <button\n *ngIf=\"actionsObs.context === 'case'\"\n cdsButton=\"tertiary\"\n [size]=\"actionsObs.compactMode ? 'sm' : 'md'\"\n (click)=\"navigateBack(null)\"\n >\n {{ 'interface.back' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"return\" size=\"16\"></svg>\n </button>\n\n <button\n cdsButton=\"secondary\"\n [size]=\"actionsObs.compactMode ? 'sm' : 'md'\"\n [disabled]=\"actionsObs.loading || !actionsObs.hasEditPermissions\"\n [attr.data-test-id]=\"testIds.validateButton\"\n (click)=\"validateProcessDefinition(actionsObs.isReadOnlyProcess)\"\n >\n {{ 'processManagement.validate' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"list--checked\" size=\"16\"></svg>\n </button>\n\n <button\n [disabled]=\"!actionsObs.changesPending || !actionsObs.hasEditPermissions\"\n cdsButton=\"primary\"\n (click)=\"\n !actionsObs.creatingNewProcess\n ? deployChanges(actionsObs.isReadOnlyProcess)\n : deployNewProcessDefinition()\n \"\n [size]=\"actionsObs.compactMode ? 'sm' : 'md'\"\n [attr.data-test-id]=\"testIds.deployButton\"\n >\n {{ 'processManagement.deploy' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"deploy\" size=\"16\"></svg>\n </button>\n </div>\n </div>\n </ng-template>\n</ng-container>\n","/*\n * Copyright 2015-2025 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 {ChangeDetectionStrategy, Component, EventEmitter, Output} from '@angular/core';\nimport {Upload16} from '@carbon/icons';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {\n ActionItem,\n CarbonListModule,\n ColumnConfig,\n ConfirmationModalModule,\n ViewType,\n} from '@valtimo/components';\nimport {\n EditPermissionsService,\n EnvironmentService,\n getCaseManagementRouteParams,\n GlobalNotificationService,\n ProcessDefinitionWithPropertiesDto,\n} from '@valtimo/shared';\nimport {ProcessDefinition} from '@valtimo/process';\nimport {ButtonModule, IconModule, IconService} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, map, Observable, switchMap, tap} from 'rxjs';\nimport {ProcessDefinitionResult} from '../../models';\nimport {ProcessManagementService, ProcessManagementStateService} from '../../services';\nimport {ActivatedRoute} from '@angular/router';\nimport {getContextObservable} from '../../utils';\nimport {PROCESS_MANAGEMENT_LIST_TEST_IDS} from '../../constants';\n\n@Component({\n selector: 'valtimo-process-management-list',\n templateUrl: './process-management-list.component.html',\n styleUrls: ['./process-management-list.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n ButtonModule,\n CarbonListModule,\n IconModule,\n IconModule,\n TranslateModule,\n ConfirmationModalModule,\n ],\n})\nexport class ProcessManagementListComponent {\n @Output() public readonly processSelected = new EventEmitter<\n ProcessDefinitionResult | 'create'\n >();\n\n public readonly $context = this.processManagementService.$context;\n public readonly processToDelete$ = new BehaviorSubject<ProcessDefinitionWithPropertiesDto | null>(\n null\n );\n public readonly showDeleteModal$ = new BehaviorSubject<boolean>(false);\n public readonly loading$ = new BehaviorSubject<boolean>(true);\n public readonly testIds = PROCESS_MANAGEMENT_LIST_TEST_IDS;\n\n public readonly ACTION_ITEMS: ActionItem[] = [\n {label: 'Delete', callback: this.onDeleteProcess.bind(this), type: 'danger'},\n ];\n\n public readonly context$ = getContextObservable(this.route);\n\n public readonly processDefinitions$ = combineLatest([\n this.processManagementStateService.reloadDefinitions$.pipe(\n tap(() => this.loading$.next(true)),\n switchMap(() => this.processManagementService.processes$),\n tap(() => this.loading$.next(false))\n ),\n this.translateService.stream('key'),\n ]).pipe(\n map(([definitions]) =>\n definitions.map(def => {\n const tags: Array<{content: string; type: string}> = [];\n if (def.draft) {\n tags.push({content: this.translateService.instant('processManagement.draft'), type: 'red'});\n }\n if (def.processDefinition?.systemProcess) {\n tags.push({\n content: this.translateService.instant('processManagement.systemProcess'),\n type: 'blue',\n });\n }\n return {...def, statusTags: tags};\n })\n )\n );\n\n public readonly hasEditPermissions$: Observable<boolean> = combineLatest([\n getCaseManagementRouteParams(this.route),\n this.context$,\n ]).pipe(\n switchMap(([params, context]) => {\n return this.editPermissionsService.hasPermissionsToEditBasedOnContext(params, context);\n })\n );\n\n public readonly FIELDS: ColumnConfig[] = [\n {key: 'processDefinition.name', label: 'processManagement.name'},\n {key: 'processDefinition.key', label: 'processManagement.key'},\n ...(this.processManagementService.$context() === 'case'\n ? [\n {\n key: 'processCaseLink.canInitializeDocument',\n label: 'processManagement.canInitializeDocument',\n viewType: ViewType.BOOLEAN,\n },\n {\n key: 'processCaseLink.startableByUser',\n label: 'processManagement.startableByUser',\n viewType: ViewType.BOOLEAN,\n },\n ]\n : []),\n {\n key: 'statusTags',\n label: 'processManagement.status',\n viewType: ViewType.TAGS,\n tagAmount: 2,\n },\n ];\n\n constructor(\n private readonly iconService: IconService,\n private readonly notificationService: GlobalNotificationService,\n private readonly processManagementService: ProcessManagementService,\n private readonly processManagementStateService: ProcessManagementStateService,\n private readonly translateService: TranslateService,\n private readonly environmentService: EnvironmentService,\n private readonly route: ActivatedRoute,\n private readonly editPermissionsService: EditPermissionsService\n ) {\n this.iconService.registerAll([Upload16]);\n }\n\n public editProcessDefinition(processDefinition: ProcessDefinitionResult): void {\n this.processSelected.emit(processDefinition);\n }\n\n public openModal(): void {\n this.processManagementStateService.openModal();\n }\n\n public onCreateProcess(): void {\n this.processSelected.emit('create');\n }\n\n public onDeleteConfirm(processDefinition: ProcessDefinition): void {\n (this.$context() === 'case'\n ? this.processManagementService.deleteProcess(processDefinition.key)\n : this.processManagementService.deleteUnlinkedProcess(processDefinition.key)\n ).subscribe(() => {\n this.processManagementStateService.reloadDefinitions();\n\n this.notificationService.showToast({\n title: this.translateService.instant(`interface.delete`),\n caption: this.translateService.instant(`processManagement.deleteNotification`),\n type: 'success',\n });\n });\n }\n\n public onDeleteProcess(process: ProcessDefinitionResult): void {\n this.processToDelete$.next(process.processDefinition);\n this.showDeleteModal$.next(true);\n }\n}\n","<!--\n ~ Copyright 2015-2025 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 [actionItems]=\"ACTION_ITEMS\"\n [showActionItems]=\"hasEditPermissions$ | async\"\n [fields]=\"FIELDS\"\n [header]=\"false\"\n [items]=\"processDefinitions$ | async\"\n [loading]=\"loading$ | async\"\n (rowClicked)=\"editProcessDefinition($event)\"\n>\n <ng-container carbonToolbarContent>\n <button\n *ngIf=\"hasEditPermissions$ | async\"\n cdsButton=\"ghost\"\n iconOnly=\"true\"\n [attr.data-test-id]=\"testIds.uploadButton\"\n (click)=\"openModal()\"\n >\n <svg cdsIcon=\"upload\" size=\"16\"></svg>\n </button>\n\n <ng-container [ngTemplateOutlet]=\"createProcess\"></ng-container>\n </ng-container>\n\n <valtimo-no-results\n [action]=\"createProcess\"\n [title]=\"'processManagement.noResults.title' | translate\"\n [description]=\"'processManagement.noResults.' + $context() + 'Description' | translate\"\n ></valtimo-no-results>\n</valtimo-carbon-list>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"processManagement.deleteModal.content\"\n [outputOnConfirm]=\"processToDelete$ | async\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"processManagement.deleteModal.title\"\n (confirmEvent)=\"onDeleteConfirm($event)\"\n></valtimo-confirmation-modal>\n\n<ng-template #createProcess>\n <button *ngIf=\"hasEditPermissions$ | async\" cdsButton=\"primary\" [attr.data-test-id]=\"testIds.createProcessButton\" (click)=\"onCreateProcess()\">\n {{ 'processManagement.createProcess' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n</ng-template>\n","/*\n * Copyright 2015-2025 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 {HttpErrorResponse} from '@angular/common/http';\nimport {ChangeDetectionStrategy, ChangeDetectorRef, Component, ViewChild} from '@angular/core';\nimport {FormBuilder, ReactiveFormsModule, Validators} from '@angular/forms';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {\n CARBON_CONSTANTS,\n ConfirmationModalModule,\n RenderInBodyComponent,\n ValtimoCdsModalDirective,\n} from '@valtimo/components';\nimport {GlobalNotificationService} from '@valtimo/shared';\nimport {PluginConfigurationMappingComponent} from '@valtimo/plugin';\nimport {ProcessDefinitionConflictResponse, ProcessLinkService} from '@valtimo/process-link';\nimport {\n ButtonModule,\n FileItem,\n FileUploaderModule,\n LayerModule,\n ModalModule,\n NotificationModule,\n} from 'carbon-components-angular';\nimport {BehaviorSubject, from, map, startWith, switchMap, take} from 'rxjs';\nimport {\n MissingReference,\n MissingReferenceType,\n ProcessDefinitionImportPreview,\n ReplacedElement,\n ReplacedElementType,\n} from '../../models';\nimport {PROCESS_MANAGEMENT_UPLOAD_TEST_IDS} from '../../constants';\nimport {ProcessManagementService, ProcessManagementStateService} from '../../services';\n\nenum UPLOAD_STEP {\n FILE_SELECT = 'fileSelect',\n REVIEW = 'review',\n SUMMARY = 'summary',\n}\n\n@Component({\n selector: 'valtimo-process-management-upload',\n templateUrl: './process-management-upload.component.html',\n styleUrls: ['./process-management-upload.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n FileUploaderModule,\n ModalModule,\n LayerModule,\n ReactiveFormsModule,\n ButtonModule,\n ConfirmationModalModule,\n RenderInBodyComponent,\n ValtimoCdsModalDirective,\n NotificationModule,\n PluginConfigurationMappingComponent,\n ],\n})\nexport class ProcessManagementUploadComponent {\n public readonly modalOpen$ = this.processManagementStateService.openModal$;\n public readonly showReplaceConfirmationModal$ = new BehaviorSubject<boolean>(false);\n public replaceModalContent = '';\n\n private _conflictingProcessDefinitionId: string | null = null;\n\n // Extensions need a leading dot: the file dialog only filters on valid accept tokens, and Carbon\n // matches a dropped file on its dot-prefixed extension\n public readonly ACCEPTED_FILES: string[] = ['.bpmn', '.zip'];\n\n public readonly UPLOAD_STEP = UPLOAD_STEP;\n\n public readonly testIds = PROCESS_MANAGEMENT_UPLOAD_TEST_IDS;\n\n public readonly form = this.formBuilder.group({\n file: this.formBuilder.control(new Set<any>(), [Validators.required]),\n });\n\n // The current control value is read instead of the emitted one, so this also reports the selection\n // correctly when the footer is re-created after going back to the file select step\n public readonly fileSelected$ = this.form.get('file')?.valueChanges.pipe(\n startWith(null),\n map(() => {\n const value = this.form.get('file')?.value;\n return !!(value instanceof Set && value.size > 0);\n })\n );\n\n public readonly activeStep$ = new BehaviorSubject<UPLOAD_STEP>(UPLOAD_STEP.FILE_SELECT);\n public readonly preview$ = new BehaviorSubject<ProcessDefinitionImportPreview | null>(null);\n public readonly missingReferences$ = new BehaviorSubject<MissingReference[]>([]);\n public readonly importing$ = new BehaviorSubject<boolean>(false);\n\n @ViewChild(PluginConfigurationMappingComponent)\n private _pluginConfigurationMapping?: PluginConfigurationMappingComponent;\n\n /**\n * Leaving the file select step destroys cds-file-uploader, which empties the form control: every\n * cds-file emits (remove) from its own ngOnDestroy. So the selection is kept here to import it\n * afterwards, and to restore it when the user goes back.\n */\n private _selectedFile: File | null = null;\n private _selectedFileItems: Set<FileItem> | null = null;\n\n constructor(\n private readonly formBuilder: FormBuilder,\n private readonly notificationService: GlobalNotificationService,\n private readonly processManagementService: ProcessManagementService,\n private readonly processManagementStateService: ProcessManagementStateService,\n private readonly processLinkService: ProcessLinkService,\n private readonly translateService: TranslateService,\n private readonly changeDetectorRef: ChangeDetectorRef\n ) {}\n\n public closeModal(): void {\n this.processManagementStateService.closeModal();\n\n setTimeout(() => {\n this.form.reset();\n this.activeStep$.next(UPLOAD_STEP.FILE_SELECT);\n this.preview$.next(null);\n this.missingReferences$.next([]);\n this.importing$.next(false);\n this._selectedFile = null;\n this._selectedFileItems = null;\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n\n public uploadProcessBpmn(): void {\n const file = this.form.value?.file?.values()?.next()?.value?.file;\n\n if (!file) return;\n\n // A package of an earlier selection must not be imported when another file is uploaded\n this._selectedFile = null;\n this._selectedFileItems = null;\n\n if (this.isZip(file)) {\n this.previewProcessPackage(file);\n return;\n }\n\n if (this.processManagementService.$context() === 'case') {\n this.uploadForCase(file);\n } else {\n this.uploadIndependent(file);\n }\n }\n\n public importProcessPackage(): void {\n const existingProcessDefinitionKeys = this.preview$.value?.existingProcessDefinitionKeys ?? [];\n\n // Ask before replacing, the same way uploading a single bpmn file does\n if (existingProcessDefinitionKeys.length > 0) {\n this.showReplaceConfirmation(\n this.translateService.instant('processManagement.upload.replaceContentWithDuplicates', {\n duplicates: existingProcessDefinitionKeys.join(', '),\n })\n );\n return;\n }\n\n this.executeImportProcessPackage();\n }\n\n private showReplaceConfirmation(content: string): void {\n this.replaceModalContent = content;\n // The content is bound from a plain field, so this OnPush component has to be checked again.\n // The bpmn flow sets it from an http error callback, which does not mark this view dirty itself.\n this.changeDetectorRef.markForCheck();\n this.showReplaceConfirmationModal$.next(true);\n }\n\n private executeImportProcessPackage(): void {\n const file = this._selectedFile;\n if (!file) return;\n\n this.importing$.next(true);\n this.processManagementService\n .importProcessDefinition(\n this.toFormData(file),\n this._pluginConfigurationMapping?.getMappings()\n )\n .pipe(take(1))\n .subscribe({\n next: result => {\n this.importing$.next(false);\n this.processManagementStateService.reloadDefinitions();\n\n if (result.missingReferences.length > 0) {\n // Keep the summary on screen: a toast disappears before it can be read\n this.missingReferences$.next(result.missingReferences);\n this.activeStep$.next(UPLOAD_STEP.SUMMARY);\n return;\n }\n\n this.notificationService.showNotification({\n type: 'success',\n title: this.translateService.instant('processManagement.upload.success'),\n });\n this.closeModal();\n },\n error: () => {\n this.importing$.next(false);\n this.notificationService.showNotification({\n type: 'error',\n title: this.translateService.instant('processManagement.upload.failure'),\n });\n },\n });\n }\n\n public onBackClick(): void {\n this.activeStep$.next(UPLOAD_STEP.FILE_SELECT);\n // Restore the selection the file uploader dropped when it was destroyed\n if (this._selectedFileItems) {\n this.form.get('file')?.setValue(this._selectedFileItems);\n }\n }\n\n public getMissingReferenceGroups(\n missingReferences: MissingReference[]\n ): {type: MissingReferenceType; references: string[]}[] {\n return missingReferences.reduce(\n (groups, missingReference) => {\n const group = groups.find(({type}) => type === missingReference.type);\n if (group) {\n group.references = [...new Set([...group.references, missingReference.reference])];\n return groups;\n }\n return [...groups, {type: missingReference.type, references: [missingReference.reference]}];\n },\n [] as {type: MissingReferenceType; references: string[]}[]\n );\n }\n\n public getReplacedElementGroups(\n elementsToReplace: ReplacedElement[]\n ): {type: ReplacedElementType; keys: string[]}[] {\n return (elementsToReplace ?? []).reduce(\n (groups, element) => {\n const group = groups.find(({type}) => type === element.type);\n if (group) {\n group.keys = [...new Set([...group.keys, element.key])];\n return groups;\n }\n return [...groups, {type: element.type, keys: [element.key]}];\n },\n [] as {type: ReplacedElementType; keys: string[]}[]\n );\n }\n\n private previewProcessPackage(file: File): void {\n const fileItem: FileItem | undefined = this.form.value?.file?.values()?.next()?.value;\n\n this.processManagementService\n .previewProcessDefinitionImport(this.toFormData(file))\n .pipe(take(1))\n .subscribe({\n next: preview => {\n this._selectedFile = file;\n this._selectedFileItems = this.form.value?.file ?? null;\n this.preview$.next(preview);\n this.missingReferences$.next(preview.missingReferences);\n\n // Nothing to review, so the package can be imported straight away. Elements that will be\n // replaced are shown in the review step first, so the replacement is a conscious choice.\n if (\n preview.pluginConfigurations.length === 0 &&\n preview.missingReferences.length === 0 &&\n preview.elementsToReplace.length === 0\n ) {\n this.importProcessPackage();\n return;\n }\n\n this.activeStep$.next(UPLOAD_STEP.REVIEW);\n },\n error: () => {\n if (fileItem) {\n fileItem.invalid = true;\n fileItem.invalidTitle = this.translateService.instant(\n 'processManagement.upload.invalidZip.title'\n );\n fileItem.invalidText = this.translateService.instant(\n 'processManagement.upload.invalidZip.text'\n );\n }\n },\n });\n }\n\n private isZip(file: File): boolean {\n return file.name.toLowerCase().endsWith('.zip');\n }\n\n private toFormData(file: File): FormData {\n const formData = new FormData();\n formData.append('file', file, file.name);\n return formData;\n }\n\n public confirmReplace(): void {\n const processDefinitionId = this._conflictingProcessDefinitionId;\n this.replaceModalContent = '';\n this._conflictingProcessDefinitionId = null;\n\n // A selected package is only set while importing a zip, which replaces through the import itself\n if (this._selectedFile) {\n this.executeImportProcessPackage();\n return;\n }\n\n if (!processDefinitionId) {\n this.notificationService.showNotification({\n type: 'error',\n title: this.translateService.instant('processManagement.upload.failure'),\n });\n return;\n }\n\n const bpmnFile = this.form.value?.file?.values()?.next()?.value?.file;\n if (!bpmnFile) return;\n\n const isCase = this.processManagementService.$context() === 'case';\n\n from(bpmnFile.text())\n .pipe(\n switchMap(bpmnXml =>\n isCase\n ? this.processLinkService.updateProcessDefinitionForCase(\n [],\n processDefinitionId,\n `${bpmnXml}`,\n this.processManagementService.caseDefinitionKey,\n this.processManagementService.caseDefinitionVersionTag\n )\n : this.processLinkService.updateProcessDefinition([], processDefinitionId, `${bpmnXml}`)\n )\n )\n .subscribe({\n next: () => {\n this.notificationService.showNotification({\n type: 'success',\n title: this.translateService.instant('processManagement.upload.success'),\n });\n this.closeModal();\n this.processManagementStateService.reloadDefinitions();\n },\n error: () => {\n this.notificationService.showNotification({\n type: 'error',\n title: this.translateService.instant('processManagement.upload.failure'),\n });\n },\n });\n }\n\n public clearReplaceModal(): void {\n this.replaceModalContent = '';\n }\n\n private uploadForCase(bpmnFile: File): void {\n from(bpmnFile.text())\n .pipe(\n switchMap(bpmnXml =>\n this.processLinkService.createProcessDefinitionForCase(\n [],\n `${bpmnXml}`,\n this.processManagementService.caseDefinitionKey,\n this.processManagementService.caseDefinitionVersionTag\n )\n )\n )\n .subscribe({\n next: () => {\n this.notificationService.showNotification({\n type: 'success',\n title: this.translateService.instant('processManagement.upload.success'),\n });\n this.closeModal();\n this.processManagementStateService.reloadDefinitions();\n },\n error: (error: unknown) => {\n const isConflict = error instanceof HttpErrorResponse && error.status === 409;\n if (isConflict) {\n const body = (error as HttpErrorResponse).error as ProcessDefinitionConflictResponse;\n this._conflictingProcessDefinitionId = body?.processDefinitionId ?? null;\n this.showReplaceConfirmation(this.buildReplaceModalContent(body));\n return;\n }\n\n this.notificationService.showNotification({\n type: 'error',\n title: this.translateService.instant('processManagement.upload.failure'),\n });\n },\n });\n }\n\n private uploadIndependent(bpmnFile: File): void {\n from(bpmnFile.text())\n .pipe(switchMap(bpmnXml => this.processLinkService.createProcessDefinition([], `${bpmnXml}`)))\n .subscribe({\n next: () => {\n this.notificationService.showNotification({\n type: 'success',\n title: this.translateService.instant('processManagement.upload.success'),\n });\n this.closeModal();\n this.processManagementStateService.reloadDefinitions();\n },\n error: (error: unknown) => {\n const isConflict = error instanceof HttpErrorResponse && error.status === 409;\n if (isConflict) {\n const body = (error as HttpErrorResponse).error as ProcessDefinitionConflictResponse;\n this._conflictingProcessDefinitionId = body?.processDefinitionId ?? null;\n this.showReplaceConfirmation(this.buildReplaceModalContent(body));\n return;\n }\n\n this.notificationService.showNotification({\n type: 'error',\n title: this.translateService.instant('processManagement.upload.failure'),\n });\n },\n });\n }\n\n private buildReplaceModalContent(body: ProcessDefinitionConflictResponse): string {\n if (body?.processDefinitionKey) {\n const label = body.processDefinitionName\n ? `${body.processDefinitionKey} (${body.processDefinitionName})`\n : body.processDefinitionKey;\n return this.translateService.instant(\n 'processManagement.upload.replaceContentWithDuplicates',\n {duplicates: label}\n );\n }\n\n return this.translateService.instant('processManagement.upload.replaceContent');\n }\n}\n","<!--\n ~ Copyright 2015-2026 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 valtimoCdsModal [open]=\"modalOpen$ | async\" size=\"sm\" (close)=\"closeModal()\">\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>{{ 'processManagement.upload.modalTitle' | translate }}</h3>\n </cds-modal-header>\n\n <ng-container\n *ngIf=\"{\n activeStep: activeStep$ | async,\n preview: preview$ | async,\n missingReferences: missingReferences$ | async,\n importing: importing$ | async,\n } as obs\"\n >\n <section cdsModalContent [cdsLayer]=\"1\" [formGroup]=\"form\" [ngSwitch]=\"obs.activeStep\">\n <cds-file-uploader\n *ngSwitchCase=\"UPLOAD_STEP.FILE_SELECT\"\n [accept]=\"ACCEPTED_FILES\"\n [buttonText]=\"'processManagement.upload.buttonText' | translate\"\n [description]=\"'processManagement.upload.description' | translate\"\n [multiple]=\"false\"\n [title]=\"'processManagement.upload.title' | translate\"\n buttonType=\"primary\"\n formControlName=\"file\"\n [attr.data-test-id]=\"testIds.fileUploader\"\n >\n </cds-file-uploader>\n\n <div *ngSwitchCase=\"UPLOAD_STEP.REVIEW\" class=\"process-management-upload__review\">\n <ng-container *ngFor=\"let group of getMissingReferenceGroups(obs.missingReferences)\">\n <cds-inline-notification\n [notificationObj]=\"{\n type:\n group.type === 'SUB_PROCESS' || group.type === 'DECISION_DEFINITION'\n ? 'warning'\n : 'error',\n title:\n 'processManagement.upload.missingReference.' + group.type + '.title' | translate,\n message:\n ('processManagement.upload.missingReference.' + group.type + '.message'\n | translate) +\n ' ' +\n group.references.join(', '),\n showClose: false,\n lowContrast: true,\n }\"\n ></cds-inline-notification>\n </ng-container>\n\n <ng-container\n *ngFor=\"let group of getReplacedElementGroups(obs.preview?.elementsToReplace ?? [])\"\n >\n <cds-inline-notification\n [notificationObj]=\"{\n type: 'warning',\n title: 'processManagement.upload.willBeReplaced.' + group.type + '.title' | translate,\n message:\n ('processManagement.upload.willBeReplaced.' + group.type + '.message' | translate) +\n ' ' +\n group.keys.join(', '),\n showClose: false,\n lowContrast: true,\n }\"\n ></cds-inline-notification>\n </ng-container>\n\n <ng-container *ngIf=\"obs.preview?.pluginConfigurations?.length\">\n <p class=\"process-management-upload__description\">\n {{ 'processManagement.upload.pluginsDescription' | translate }}\n </p>\n\n <valtimo-plugin-configuration-mapping\n [pluginConfigurations]=\"obs.preview.pluginConfigurations\"\n ></valtimo-plugin-configuration-mapping>\n </ng-container>\n </div>\n\n <div *ngSwitchCase=\"UPLOAD_STEP.SUMMARY\" class=\"process-management-upload__review\">\n <cds-inline-notification\n [notificationObj]=\"{\n type: 'success',\n title: 'processManagement.upload.success' | translate,\n message: 'processManagement.upload.summaryDescription' | translate,\n showClose: false,\n lowContrast: true,\n }\"\n ></cds-inline-notification>\n\n <ng-container *ngFor=\"let group of getMissingReferenceGroups(obs.missingReferences)\">\n <cds-inline-notification\n [notificationObj]=\"{\n type: 'warning',\n title:\n 'processManagement.upload.missingReference.' + group.type + '.title' | translate,\n message:\n ('processManagement.upload.missingReference.' + group.type + '.message'\n | translate) +\n ' ' +\n group.references.join(', '),\n showClose: false,\n lowContrast: true,\n }\"\n ></cds-inline-notification>\n </ng-container>\n </div>\n </section>\n\n <cds-modal-footer>\n <ng-container *ngIf=\"obs.activeStep === UPLOAD_STEP.FILE_SELECT\">\n <button\n cdsButton=\"secondary\"\n [attr.data-test-id]=\"testIds.cancelButton\"\n (click)=\"closeModal()\"\n >\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button\n cdsButton=\"primary\"\n [disabled]=\"(fileSelected$ | async) === false || obs.importing\"\n [attr.data-test-id]=\"testIds.submitButton\"\n (click)=\"uploadProcessBpmn()\"\n >\n {{ 'interface.upload' | translate }}\n </button>\n </ng-container>\n\n <ng-container *ngIf=\"obs.activeStep === UPLOAD_STEP.REVIEW\">\n <button\n cdsButton=\"secondary\"\n [attr.data-test-id]=\"testIds.backButton\"\n (click)=\"onBackClick()\"\n >\n {{ 'interface.back' | translate }}\n </button>\n\n <button\n cdsButton=\"primary\"\n [disabled]=\"obs.preview?.canImport === false || obs.importing\"\n [attr.data-test-id]=\"testIds.importButton\"\n (click)=\"importProcessPackage()\"\n >\n {{ 'interface.upload' | translate }}\n </button>\n </ng-container>\n\n <button\n *ngIf=\"obs.activeStep === UPLOAD_STEP.SUMMARY\"\n cdsButton=\"primary\"\n [attr.data-test-id]=\"testIds.closeButton\"\n (click)=\"closeModal()\"\n >\n {{ 'interface.close' | translate }}\n </button>\n </cds-modal-footer>\n </ng-container>\n</cds-modal>\n\n<valtimo-render-in-body>\n <valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"processManagement.upload.replaceConfirm\"\n confirmButtonType=\"danger\"\n cancelButtonTextTranslationKey=\"interface.cancel\"\n [content]=\"replaceModalContent\"\n [showModalSubject$]=\"showReplaceConfirmationModal$\"\n titleTranslationKey=\"processManagement.upload.replaceTitle\"\n (confirmEvent)=\"confirmReplace()\"\n (cancelEvent)=\"clearReplaceModal()\"\n ></valtimo-confirmation-modal>\n</valtimo-render-in-body>\n","/*\n * Copyright 2015-2025 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 {ChangeDetectionStrategy, Component, OnDestroy, OnInit} from '@angular/core';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {TranslateService} from '@ngx-translate/core';\nimport {getCaseManagementRouteParams} from '@valtimo/shared';\nimport {LoadingModule, NotificationModule} from 'carbon-components-angular';\nimport {isEqual} from 'lodash';\nimport {BehaviorSubject, combineLatest, startWith, Subscription, switchMap} from 'rxjs';\nimport {distinctUntilChanged, filter} from 'rxjs/operators';\nimport {ProcessDefinitionResult} from '../../models';\nimport {ProcessManagementService} from '../../services';\nimport {getContextObservable} from '../../utils';\nimport {ProcessManagementListComponent} from '../process-management-list/process-management-list.component';\nimport {ProcessManagementUploadComponent} from '../process-management-upload/process-management-upload.component';\n\n@Component({\n selector: 'valtimo-process-management',\n templateUrl: './process-management.component.html',\n styleUrls: ['./process-management.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n ProcessManagementListComponent,\n ProcessManagementUploadComponent,\n LoadingModule,\n NotificationModule,\n ],\n providers: [TranslateService],\n})\nexport class ProcessManagementComponent implements OnInit, OnDestroy {\n public readonly context$ = getContextObservable(this.route);\n\n public readonly params$ = this.context$.pipe(\n filter(context => context === 'case'),\n switchMap(() => getCaseManagementRouteParams(this.route)),\n distinctUntilChanged((previous, current) => isEqual(previous, current))\n );\n\n public readonly paramsAreSet$ = new BehaviorSubject<boolean>(false);\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly processManagementService: ProcessManagementService,\n private readonly route: ActivatedRoute,\n private readonly router: Router\n ) {}\n\n public ngOnInit(): void {\n this.openParamsAndContextSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public onProcessSelected(selectedProcessEvent: ProcessDefinitionResult | 'create'): void {\n const editParam =\n selectedProcessEvent === 'create' ? 'create' : selectedProcessEvent?.processDefinition?.key;\n\n this.router.navigate([editParam], {\n relativeTo: this.route,\n });\n }\n\n private openParamsAndContextSubscription(): void {\n this._subscriptions.add(\n combineLatest([this.context$, this.params$.pipe(startWith(null))]).subscribe(\n ([context, params]) => {\n if (context) this.processManagementService.context = context;\n\n if (params) {\n this.processManagementService.setParams(\n params.caseDefinitionKey,\n params.caseDefinitionVersionTag\n );\n }\n\n this.paramsAreSet$.next(true);\n }\n )\n );\n }\n}\n","<!--\n ~ Copyright 2015-2025 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 paramsAreSet: paramsAreSet$ | async,\n } as obs\"\n>\n @if (obs.paramsAreSet) {\n <valtimo-process-management-list\n (processSelected)=\"onProcessSelected($event)\"\n ></valtimo-process-management-list>\n\n <valtimo-process-management-upload></valtimo-process-management-upload>\n } @else {\n <cds-loading></cds-loading>\n }\n</ng-container>\n","/*\n * Copyright 2015-2025 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 './process-management-builder/process-management-builder.component';\nexport * from './process-management/process-management.component';\n","/*\n * Copyright 2015-2025 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 {RouterModule, Routes} from '@angular/router';\nimport {CommonModule} from '@angular/common';\nimport {AuthGuardService} from '@valtimo/security';\nimport {ROLE_ADMIN} from '@valtimo/shared';\nimport {ProcessManagementBuilderComponent, ProcessManagementComponent} from './components';\nimport {ProcessManagementRouteData} from './models';\nimport {pendingChangesGuard} from '@valtimo/components';\n\nconst routes: Routes = [\n {\n path: 'processes',\n component: ProcessManagementComponent,\n canActivate: [AuthGuardService],\n data: {\n title: 'Processes',\n roles: [ROLE_ADMIN],\n context: 'independent',\n } as ProcessManagementRouteData,\n },\n {\n path: 'processes/create',\n component: ProcessManagementBuilderComponent,\n canActivate: [AuthGuardService],\n //TODO: Re-enable when pending changes is fixed\n // canDeactivate: [pendingChangesGuard],\n data: {\n title: 'Create new Process',\n roles: [ROLE_ADMIN],\n context: 'independent',\n } as ProcessManagementRouteData,\n },\n {\n path: 'processes/:processDefinitionKey',\n component: ProcessManagementBuilderComponent,\n canActivate: [AuthGuardService],\n //TODO: Re-enable when pending changes is fixed\n // canDeactivate: [pendingChangesGuard],\n data: {\n title: 'Process details',\n roles: [ROLE_ADMIN],\n customPageTitle: true,\n context: 'independent',\n } as ProcessManagementRouteData,\n },\n];\n\n@NgModule({\n declarations: [],\n imports: [CommonModule, RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class ProcessManagementRoutingModule {}\n","/*\n * Copyright 2015-2025 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 {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {CarbonListModule, WidgetModule} from '@valtimo/components';\nimport {ProcessLinkModule} from '@valtimo/process-link';\nimport {\n ButtonModule,\n DropdownModule,\n FileUploaderModule,\n IconModule,\n LayerModule,\n ModalModule,\n NotificationModule,\n RadioModule,\n} from 'carbon-components-angular';\nimport {ProcessManagementBuilderComponent, ProcessManagementComponent} from './components';\nimport {ProcessManagementRoutingModule} from './process-management-routing.module';\n\n@NgModule({\n imports: [\n CommonModule,\n ProcessManagementRoutingModule,\n WidgetModule,\n FormsModule,\n TranslateModule,\n ProcessLinkModule,\n ProcessManagementComponent,\n ProcessManagementBuilderComponent,\n CarbonListModule,\n ButtonModule,\n IconModule,\n DropdownModule,\n ModalModule,\n NotificationModule,\n RadioModule,\n ReactiveFormsModule,\n ModalModule,\n FileUploaderModule,\n LayerModule,\n ],\n})\nexport class ProcessManagementModule {}\n","/*\n * Copyright 2015-2025 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 process-management\n */\n\nexport * from './lib/process-management.module';\nexport * from './lib/services/process-management-state.service';\nexport * from './lib/components/process-management/process-management.component';\nexport * from './lib/components/process-management-builder/process-management-builder.component';\nexport * from './lib/models';\nexport * from './lib/constants/process-management.test-ids';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","map","i4","i6.ProcessManagementEditorService","i6.ProcessManagementService","i6.ProcessBeanService","i11","i3.ProcessManagementService","i3.ProcessManagementStateService","i5","i7","i8","filter","i1.ProcessManagementService","i3"],"mappings":"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"}
|