@acorex/modules 21.0.0-next.57 → 21.0.0-next.59
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.
- package/fesm2022/{acorex-modules-assessment-management-acorex-modules-assessment-management-DcPnI9fZ.mjs → acorex-modules-assessment-management-acorex-modules-assessment-management-o8aFazwA.mjs} +72 -78
- package/fesm2022/acorex-modules-assessment-management-acorex-modules-assessment-management-o8aFazwA.mjs.map +1 -0
- package/fesm2022/{acorex-modules-assessment-management-assessment-case.entity-D880d_qz.mjs → acorex-modules-assessment-management-assessment-case.entity-yrc_Yybq.mjs} +67 -71
- package/fesm2022/acorex-modules-assessment-management-assessment-case.entity-yrc_Yybq.mjs.map +1 -0
- package/fesm2022/acorex-modules-assessment-management-assessment-session-answers-view.util-BUQa_TSY.mjs +47 -0
- package/fesm2022/acorex-modules-assessment-management-assessment-session-answers-view.util-BUQa_TSY.mjs.map +1 -0
- package/fesm2022/{acorex-modules-assessment-management-assessment-session.entity-DvbocIN1.mjs → acorex-modules-assessment-management-assessment-session.entity-Cwf30iuu.mjs} +5 -41
- package/fesm2022/acorex-modules-assessment-management-assessment-session.entity-Cwf30iuu.mjs.map +1 -0
- package/fesm2022/{acorex-modules-assessment-management-fill-assessment-session.command-BMJ54EPO.mjs → acorex-modules-assessment-management-fill-assessment-session.command-CJieLR5g.mjs} +32 -7
- package/fesm2022/acorex-modules-assessment-management-fill-assessment-session.command-CJieLR5g.mjs.map +1 -0
- package/fesm2022/{acorex-modules-assessment-management-index-XdJCIYG3.mjs → acorex-modules-assessment-management-index-D8KjfHAH.mjs} +4 -4
- package/fesm2022/{acorex-modules-assessment-management-index-XdJCIYG3.mjs.map → acorex-modules-assessment-management-index-D8KjfHAH.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-preview-question.command-CO8NfjEb.mjs → acorex-modules-assessment-management-preview-question.command-D0-FB1HH.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-preview-question.command-CO8NfjEb.mjs.map → acorex-modules-assessment-management-preview-question.command-D0-FB1HH.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-preview-questionnaire.command-DSzbtU0e.mjs → acorex-modules-assessment-management-preview-questionnaire.command-wqPNgv7q.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-preview-questionnaire.command-DSzbtU0e.mjs.map → acorex-modules-assessment-management-preview-questionnaire.command-wqPNgv7q.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-DbvxAUgb.mjs → acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-DYyUhSWd.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-DbvxAUgb.mjs.map → acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-DYyUhSWd.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-question-bank-item.entity-DBfQhSKR.mjs → acorex-modules-assessment-management-question-bank-item.entity-DUf2ceKY.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-question-bank-item.entity-DBfQhSKR.mjs.map → acorex-modules-assessment-management-question-bank-item.entity-DUf2ceKY.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-calculation.entity-CL9s20qR.mjs → acorex-modules-assessment-management-questionnaire-calculation.entity-CYF0k42_.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-calculation.entity-CL9s20qR.mjs.map → acorex-modules-assessment-management-questionnaire-calculation.entity-CYF0k42_.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer-popup.component-CH_cJlSf.mjs → acorex-modules-assessment-management-questionnaire-viewer-popup.component-Cy5ElBmU.mjs} +111 -28
- package/fesm2022/acorex-modules-assessment-management-questionnaire-viewer-popup.component-Cy5ElBmU.mjs.map +1 -0
- package/fesm2022/{acorex-modules-assessment-management-questionnaire.entity-CrryBMC2.mjs → acorex-modules-assessment-management-questionnaire.entity-RWSkzNbA.mjs} +3 -3
- package/fesm2022/{acorex-modules-assessment-management-questionnaire.entity-CrryBMC2.mjs.map → acorex-modules-assessment-management-questionnaire.entity-RWSkzNbA.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-save-questionnaire-questions.command-Dq5VComh.mjs → acorex-modules-assessment-management-save-questionnaire-questions.command-koGmUbNE.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-save-questionnaire-questions.command-Dq5VComh.mjs.map → acorex-modules-assessment-management-save-questionnaire-questions.command-koGmUbNE.mjs.map} +1 -1
- package/fesm2022/acorex-modules-assessment-management-view-case-last-session-answers.command-NTuDdoYk.mjs +157 -0
- package/fesm2022/acorex-modules-assessment-management-view-case-last-session-answers.command-NTuDdoYk.mjs.map +1 -0
- package/fesm2022/acorex-modules-assessment-management-view-session-answers.command-0btGV66_.mjs +172 -0
- package/fesm2022/acorex-modules-assessment-management-view-session-answers.command-0btGV66_.mjs.map +1 -0
- package/fesm2022/acorex-modules-assessment-management.mjs +1 -1
- package/fesm2022/{acorex-modules-auth-acorex-modules-auth-wfCSNwXC.mjs → acorex-modules-auth-acorex-modules-auth-D4IBi_VD.mjs} +39 -30
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-D4IBi_VD.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-app-chooser.component-BY281-Cl.mjs → acorex-modules-auth-app-chooser.component-BEktaBWD.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-app-chooser.component-BY281-Cl.mjs.map → acorex-modules-auth-app-chooser.component-BEktaBWD.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-login.module-CjgYlyOv.mjs → acorex-modules-auth-login.module-aAwHzXPj.mjs} +4 -4
- package/fesm2022/{acorex-modules-auth-login.module-CjgYlyOv.mjs.map → acorex-modules-auth-login.module-aAwHzXPj.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-master.layout-Clx8QDYW.mjs → acorex-modules-auth-master.layout-BapDYFZ_.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-master.layout-Clx8QDYW.mjs.map → acorex-modules-auth-master.layout-BapDYFZ_.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-oauth-callback.component-CGnGAPJ2.mjs → acorex-modules-auth-oauth-callback.component-Cyu2vqyK.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-oauth-callback.component-CGnGAPJ2.mjs.map → acorex-modules-auth-oauth-callback.component-Cyu2vqyK.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-password.component-8eEX0lRP.mjs → acorex-modules-auth-password.component-DB-ac0Rn.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-password.component-8eEX0lRP.mjs.map → acorex-modules-auth-password.component-DB-ac0Rn.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-password.component-CUxwThnN.mjs → acorex-modules-auth-password.component-cPmwNpuq.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-password.component-CUxwThnN.mjs.map → acorex-modules-auth-password.component-cPmwNpuq.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-routes-CYLKJm9g.mjs → acorex-modules-auth-routes-r72zIRTa.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-routes-CYLKJm9g.mjs.map → acorex-modules-auth-routes-r72zIRTa.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-tenant-chooser.component-DDK1KW-8.mjs → acorex-modules-auth-tenant-chooser.component-AQA2o6Ty.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-tenant-chooser.component-DDK1KW-8.mjs.map → acorex-modules-auth-tenant-chooser.component-AQA2o6Ty.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-two-factor.module-Iw2U7Cy5.mjs → acorex-modules-auth-two-factor.module-Dx0CC5ic.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-two-factor.module-Iw2U7Cy5.mjs.map → acorex-modules-auth-two-factor.module-Dx0CC5ic.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-user-sessions.component-sKDANprs.mjs → acorex-modules-auth-user-sessions.component-3Wr7DUDQ.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-user-sessions.component-sKDANprs.mjs.map → acorex-modules-auth-user-sessions.component-3Wr7DUDQ.mjs.map} +1 -1
- package/fesm2022/acorex-modules-auth.mjs +1 -1
- package/fesm2022/acorex-modules-common.mjs +7 -3
- package/fesm2022/acorex-modules-common.mjs.map +1 -1
- package/fesm2022/{acorex-modules-conversation-acorex-modules-conversation-DlteA_jC.mjs → acorex-modules-conversation-acorex-modules-conversation-DkdNLMKa.mjs} +8 -7
- package/fesm2022/acorex-modules-conversation-acorex-modules-conversation-DkdNLMKa.mjs.map +1 -0
- package/fesm2022/{acorex-modules-conversation-assist-delegated-agent-detail-popup.component-BAgBuxlz.mjs → acorex-modules-conversation-assist-delegated-agent-detail-popup.component-VKPbkRqI.mjs} +2 -2
- package/fesm2022/{acorex-modules-conversation-assist-delegated-agent-detail-popup.component-BAgBuxlz.mjs.map → acorex-modules-conversation-assist-delegated-agent-detail-popup.component-VKPbkRqI.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-conversation-comments-page.component-BrwP9l7M.mjs → acorex-modules-conversation-comments-page.component-ehUCjoFD.mjs} +2 -2
- package/fesm2022/{acorex-modules-conversation-comments-page.component-BrwP9l7M.mjs.map → acorex-modules-conversation-comments-page.component-ehUCjoFD.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-conversation-send-assist-chat-message.command-BzKawEoN.mjs → acorex-modules-conversation-send-assist-chat-message.command-ZNcVi54N.mjs} +2 -2
- package/fesm2022/{acorex-modules-conversation-send-assist-chat-message.command-BzKawEoN.mjs.map → acorex-modules-conversation-send-assist-chat-message.command-ZNcVi54N.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-conversation-start-assist-chat.command-BUOGUMl0.mjs → acorex-modules-conversation-start-assist-chat.command-CX6lm1lG.mjs} +2 -2
- package/fesm2022/{acorex-modules-conversation-start-assist-chat.command-BUOGUMl0.mjs.map → acorex-modules-conversation-start-assist-chat.command-CX6lm1lG.mjs.map} +1 -1
- package/fesm2022/acorex-modules-conversation.mjs +1 -1
- package/fesm2022/acorex-modules-customer-management.mjs +2 -0
- package/fesm2022/acorex-modules-customer-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-data-management.mjs +6 -5
- package/fesm2022/acorex-modules-data-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-help-desk-acorex-modules-help-desk-Bfjo-ENr.mjs → acorex-modules-help-desk-acorex-modules-help-desk-DVlO9JZw.mjs} +3 -2
- package/fesm2022/acorex-modules-help-desk-acorex-modules-help-desk-DVlO9JZw.mjs.map +1 -0
- package/fesm2022/{acorex-modules-help-desk-capture-screen.component-CsACFkPq.mjs → acorex-modules-help-desk-capture-screen.component-rNPehEf8.mjs} +2 -2
- package/fesm2022/{acorex-modules-help-desk-capture-screen.component-CsACFkPq.mjs.map → acorex-modules-help-desk-capture-screen.component-rNPehEf8.mjs.map} +1 -1
- package/fesm2022/acorex-modules-help-desk.mjs +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-acorex-modules-human-capital-management-XhV2JQXs.mjs → acorex-modules-human-capital-management-acorex-modules-human-capital-management-BWezAea1.mjs} +131 -112
- package/fesm2022/acorex-modules-human-capital-management-acorex-modules-human-capital-management-BWezAea1.mjs.map +1 -0
- package/fesm2022/{acorex-modules-human-capital-management-approve-leave-request.command-Cre30Kp7.mjs → acorex-modules-human-capital-management-approve-leave-request.command-Bh_Bbq5-.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-approve-leave-request.command-Cre30Kp7.mjs.map → acorex-modules-human-capital-management-approve-leave-request.command-Bh_Bbq5-.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-assign-position-assignment.command-NYgddiaD.mjs → acorex-modules-human-capital-management-assign-position-assignment.command-BpDdDG9i.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-assign-position-assignment.command-NYgddiaD.mjs.map → acorex-modules-human-capital-management-assign-position-assignment.command-BpDdDG9i.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-cancel-leave-request.command-DPh-KQgN.mjs → acorex-modules-human-capital-management-cancel-leave-request.command-CjtKaKFw.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-cancel-leave-request.command-DPh-KQgN.mjs.map → acorex-modules-human-capital-management-cancel-leave-request.command-CjtKaKFw.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-employee.entity-znCbbQUd.mjs → acorex-modules-human-capital-management-employee.entity-Cx_oY2aK.mjs} +8 -8
- package/fesm2022/acorex-modules-human-capital-management-employee.entity-Cx_oY2aK.mjs.map +1 -0
- package/fesm2022/{acorex-modules-human-capital-management-employment-type.entity-DUNB3zAB.mjs → acorex-modules-human-capital-management-employment-type.entity-B20Taa5x.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-employment-type.entity-DUNB3zAB.mjs.map → acorex-modules-human-capital-management-employment-type.entity-B20Taa5x.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-leave-request.entity-JyFrrCGE.mjs → acorex-modules-human-capital-management-leave-request.entity-BO8QXpZE.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-leave-request.entity-JyFrrCGE.mjs.map → acorex-modules-human-capital-management-leave-request.entity-BO8QXpZE.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-leave-type.entity-B61MiEPu.mjs → acorex-modules-human-capital-management-leave-type.entity-CQwSWqSh.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-leave-type.entity-B61MiEPu.mjs.map → acorex-modules-human-capital-management-leave-type.entity-CQwSWqSh.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-lifecycle-process-type.entity-DJqo2kTG.mjs → acorex-modules-human-capital-management-lifecycle-event-type.entity-BPWJrvbN.mjs} +13 -13
- package/fesm2022/acorex-modules-human-capital-management-lifecycle-event-type.entity-BPWJrvbN.mjs.map +1 -0
- package/fesm2022/{acorex-modules-human-capital-management-employee-lifecycle-process.entity-LX68KORg.mjs → acorex-modules-human-capital-management-lifecycle-event.entity-ZZuPu9KQ.mjs} +45 -56
- package/fesm2022/acorex-modules-human-capital-management-lifecycle-event.entity-ZZuPu9KQ.mjs.map +1 -0
- package/fesm2022/{acorex-modules-human-capital-management-position-assignment.entity-CKCC6bKg.mjs → acorex-modules-human-capital-management-position-assignment.entity-BN1y0qhi.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-position-assignment.entity-CKCC6bKg.mjs.map → acorex-modules-human-capital-management-position-assignment.entity-BN1y0qhi.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-reject-leave-request.command-Blv08UQZ.mjs → acorex-modules-human-capital-management-reject-leave-request.command-LczqOHP-.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-reject-leave-request.command-Blv08UQZ.mjs.map → acorex-modules-human-capital-management-reject-leave-request.command-LczqOHP-.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-revoke-position-assignment.command-lgEAbxYH.mjs → acorex-modules-human-capital-management-revoke-position-assignment.command-Dm8YacDI.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-revoke-position-assignment.command-lgEAbxYH.mjs.map → acorex-modules-human-capital-management-revoke-position-assignment.command-Dm8YacDI.mjs.map} +1 -1
- package/fesm2022/acorex-modules-human-capital-management-start-lifecycle-event-flow.command-DPwuyFz2.mjs +237 -0
- package/fesm2022/acorex-modules-human-capital-management-start-lifecycle-event-flow.command-DPwuyFz2.mjs.map +1 -0
- package/fesm2022/acorex-modules-human-capital-management.mjs +1 -1
- package/fesm2022/{acorex-modules-learning-management-enrollment.entity-B53AQq_9.mjs → acorex-modules-learning-management-enrollment.entity-CdJafrUh.mjs} +4 -22
- package/fesm2022/acorex-modules-learning-management-enrollment.entity-CdJafrUh.mjs.map +1 -0
- package/fesm2022/acorex-modules-learning-management.mjs +1 -1
- package/fesm2022/acorex-modules-learning-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-location-management.mjs +1 -0
- package/fesm2022/acorex-modules-location-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-5DJoQkx2.mjs → acorex-modules-platform-management-acorex-modules-platform-management-Cbf1rlEK.mjs} +4 -4
- package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-5DJoQkx2.mjs.map → acorex-modules-platform-management-acorex-modules-platform-management-Cbf1rlEK.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-platform-management-menu-list.component-C3WBYbOt.mjs → acorex-modules-platform-management-menu-list.component-DIf_-oaM.mjs} +2 -2
- package/fesm2022/{acorex-modules-platform-management-menu-list.component-C3WBYbOt.mjs.map → acorex-modules-platform-management-menu-list.component-DIf_-oaM.mjs.map} +1 -1
- package/fesm2022/acorex-modules-platform-management.mjs +1 -1
- package/fesm2022/acorex-modules-security-management.mjs +3 -0
- package/fesm2022/acorex-modules-security-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-supplier-management.mjs +1 -0
- package/fesm2022/acorex-modules-supplier-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-task-management-acorex-modules-task-management-CrybKNgo.mjs → acorex-modules-task-management-acorex-modules-task-management--mdNdYIs.mjs} +32 -2
- package/fesm2022/acorex-modules-task-management-acorex-modules-task-management--mdNdYIs.mjs.map +1 -0
- package/fesm2022/{acorex-modules-task-management-task-board.page-B2xxXscG.mjs → acorex-modules-task-management-task-board.page-BIZ1qH7m.mjs} +33 -3
- package/fesm2022/acorex-modules-task-management-task-board.page-BIZ1qH7m.mjs.map +1 -0
- package/fesm2022/acorex-modules-task-management.mjs +1 -1
- package/fesm2022/{acorex-modules-workflow-management-activity-command-configurator-widget-edit.component-OLbCD-7P.mjs → acorex-modules-workflow-management-activity-command-configurator-widget-edit.component-B4DLmioy.mjs} +3 -3
- package/fesm2022/{acorex-modules-workflow-management-activity-command-configurator-widget-edit.component-OLbCD-7P.mjs.map → acorex-modules-workflow-management-activity-command-configurator-widget-edit.component-B4DLmioy.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-workflow-management-index-RRzkvrNM.mjs → acorex-modules-workflow-management-index-BhVZ1Bcw.mjs} +3 -3
- package/fesm2022/{acorex-modules-workflow-management-index-RRzkvrNM.mjs.map → acorex-modules-workflow-management-index-BhVZ1Bcw.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-workflow-management-index-Eh5DDK-V.mjs → acorex-modules-workflow-management-index-DC_9M9dk.mjs} +3 -3
- package/fesm2022/{acorex-modules-workflow-management-index-Eh5DDK-V.mjs.map → acorex-modules-workflow-management-index-DC_9M9dk.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-workflow-management-workflow-instance.entity-B_V3uMSI.mjs → acorex-modules-workflow-management-workflow-instance.entity-BnKT3Wgh.mjs} +2 -2
- package/fesm2022/{acorex-modules-workflow-management-workflow-instance.entity-B_V3uMSI.mjs.map → acorex-modules-workflow-management-workflow-instance.entity-BnKT3Wgh.mjs.map} +1 -1
- package/fesm2022/acorex-modules-workflow-management-workflow-task-popover.component-DjYDwHWU.mjs +255 -0
- package/fesm2022/acorex-modules-workflow-management-workflow-task-popover.component-DjYDwHWU.mjs.map +1 -0
- package/fesm2022/acorex-modules-workflow-management.mjs +1819 -745
- package/fesm2022/acorex-modules-workflow-management.mjs.map +1 -1
- package/package.json +2 -2
- package/types/acorex-modules-assessment-management.d.ts +4 -7
- package/types/acorex-modules-common.d.ts +1 -0
- package/types/acorex-modules-human-capital-management.d.ts +31 -30
- package/types/acorex-modules-learning-management.d.ts +0 -1
- package/types/acorex-modules-task-management.d.ts +41 -2
- package/types/acorex-modules-workflow-management.d.ts +280 -34
- package/fesm2022/acorex-modules-assessment-management-acorex-modules-assessment-management-DcPnI9fZ.mjs.map +0 -1
- package/fesm2022/acorex-modules-assessment-management-assessment-case.entity-D880d_qz.mjs.map +0 -1
- package/fesm2022/acorex-modules-assessment-management-assessment-session.entity-DvbocIN1.mjs.map +0 -1
- package/fesm2022/acorex-modules-assessment-management-fill-assessment-session.command-BMJ54EPO.mjs.map +0 -1
- package/fesm2022/acorex-modules-assessment-management-questionnaire-viewer-popup.component-CH_cJlSf.mjs.map +0 -1
- package/fesm2022/acorex-modules-assessment-management-view-session-answers.command-DpppXekm.mjs +0 -112
- package/fesm2022/acorex-modules-assessment-management-view-session-answers.command-DpppXekm.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-wfCSNwXC.mjs.map +0 -1
- package/fesm2022/acorex-modules-conversation-acorex-modules-conversation-DlteA_jC.mjs.map +0 -1
- package/fesm2022/acorex-modules-help-desk-acorex-modules-help-desk-Bfjo-ENr.mjs.map +0 -1
- package/fesm2022/acorex-modules-human-capital-management-acorex-modules-human-capital-management-XhV2JQXs.mjs.map +0 -1
- package/fesm2022/acorex-modules-human-capital-management-employee-lifecycle-process.entity-LX68KORg.mjs.map +0 -1
- package/fesm2022/acorex-modules-human-capital-management-employee.entity-znCbbQUd.mjs.map +0 -1
- package/fesm2022/acorex-modules-human-capital-management-lifecycle-process-type.entity-DJqo2kTG.mjs.map +0 -1
- package/fesm2022/acorex-modules-learning-management-enrollment.entity-B53AQq_9.mjs.map +0 -1
- package/fesm2022/acorex-modules-task-management-acorex-modules-task-management-CrybKNgo.mjs.map +0 -1
- package/fesm2022/acorex-modules-task-management-task-board.page-B2xxXscG.mjs.map +0 -1
- package/fesm2022/acorex-modules-workflow-management-workflow-task-popover.component-DMszilef.mjs +0 -356
- package/fesm2022/acorex-modules-workflow-management-workflow-task-popover.component-DMszilef.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-modules-workflow-management-index-RRzkvrNM.mjs","sources":["../../../../libs/modules/workflow-management/src/lib/features/workflow-definition-activities-page/workflow-definition-activities-page-component.provider.ts","../../../../libs/modules/workflow-management/src/lib/features/workflow-definition-activities-page/workflow-definition-activities-page.types.ts","../../../../libs/modules/workflow-management/src/lib/features/workflow-definition-activities-page/workflow-definition-activities-page.component.ts","../../../../libs/modules/workflow-management/src/lib/features/workflow-definition-activities-page/workflow-definition-activities-page.component.html"],"sourcesContent":["import { AXPPageComponentDefinition, AXPPageComponentProvider } from '@acorex/platform/layout/components';\nimport { Injectable } from '@angular/core';\nimport { WORKFLOW_DEFINITION_ACTIVITIES_PAGE_COMPONENT_KEY } from './WORKFLOW_DEFINITION_ACTIVITIES_PAGE_COMPONENT_KEY';\n\n//#region ---- Workflow Definition Activities Page Provider ----\n\n@Injectable()\nexport class AXMWorkflowDefinitionActivitiesPageComponentProvider implements AXPPageComponentProvider {\n async components(): Promise<AXPPageComponentDefinition[]> {\n return [\n {\n key: WORKFLOW_DEFINITION_ACTIVITIES_PAGE_COMPONENT_KEY,\n loader: () =>\n import('./workflow-definition-activities-page.component').then(\n (m) => m.AXMWorkflowDefinitionActivitiesPageComponent,\n ),\n },\n ];\n }\n}\n\n//#endregion\n","//#region ---- Types ----\n\nimport type { AXPWorkflowActivityPaletteItem } from '@acorex/modules/platform-management';\nimport type { AXPActivityDefinition, AXPWorkflowGraph } from '@acorex/platform/workflow';\n\nexport interface AXMWorkflowActivityEditorRow {\n id: string;\n name: string;\n inputs: Record<string, unknown>;\n extensions?: Record<string, unknown>;\n}\n\nexport interface AXMWorkflowActivitySelectItem {\n value: string;\n text: string;\n description: string;\n icon: string;\n categoryId: string;\n categoryTitle: string;\n}\n\nexport interface AXMWorkflowActivityPaletteGroup {\n id: string;\n title: string;\n items: AXPWorkflowActivityPaletteItem[];\n}\n\nexport interface AXMWorkflowActivityCatalogRow extends AXPActivityDefinition {\n id: string;\n}\n\nexport interface AXMWorkflowOutcomePortRow {\n port: string;\n label: string;\n}\n\nexport interface AXMWorkflowActivityNodeInfoRow {\n title: string;\n content: string;\n}\n\n/** Persisted coordinates for workflow designer nodes (see {@link AXPWorkflowGraph.designer}). */\nexport interface AXMWorkflowDesignerNodeLayout {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\n//#endregion\n\n//#region ---- Designer layout helpers ----\n\nexport function isDesignerLayoutArranged(graph: AXPWorkflowGraph | null | undefined): boolean {\n return graph?.designer?.layoutArranged === true;\n}\n\n/** True when every activity has persisted designer node coordinates. */\nexport function graphHasPersistedDesignerLayout(graph: AXPWorkflowGraph | null | undefined): boolean {\n const activities = graph?.activities ?? [];\n if (activities.length === 0) {\n return false;\n }\n const nodes = graph?.designer?.nodes;\n if (nodes == null || Object.keys(nodes).length === 0) {\n return false;\n }\n return activities.every((a) => {\n const n = nodes[a.id];\n return n != null && typeof n.x === 'number' && typeof n.y === 'number';\n });\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXAccordionCdkModule } from '@acorex/cdk/accordion';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXFormModule } from '@acorex/components/form';\nimport {\n AXContextMenuComponent,\n AXContextMenuItemsClickEvent,\n AXContextMenuOpeningEvent,\n AXMenuItem,\n AXMenuModule,\n} from '@acorex/components/menu';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport {\n arrangeWorkflowDiagram,\n AXPWorkflowDesignerComponent,\n AXPWorkflowPaletteItemDragDirective,\n type AXPWorkflowActivityPaletteItem,\n type AXPWorkflowDesignerActivation,\n type AXPWorkflowDiagramModel,\n type AXPWorkflowNode,\n} from '@acorex/modules/platform-management';\nimport {\n AXPActionMenuItem,\n AXPDataGenerator,\n AXPExecuteCommand,\n AXPExecuteCommandResult,\n type AXPMultiLanguageString,\n type AXPProperty,\n} from '@acorex/platform/core';\nimport {\n AXPLayoutFloatingZoomBarComponent,\n AXPLayoutSideDetailPanelComponent,\n AXPPropertyViewerChangedEvent,\n AXPPropertyViewerComponent,\n AXPPropertyViewerTab,\n buildPropertyViewerTabsFromProperties,\n type AXPLayoutSideDetailPanelEmptyState,\n type AXPLayoutSideDetailPanelHeader,\n type AXPLayoutSideDetailPanelRow,\n} from '@acorex/platform/layout/components';\nimport { AXPEntityService } from '@acorex/platform/layout/entity';\nimport { AXPPageLayoutBase, AXPPageLayoutBaseComponent } from '@acorex/platform/layout/views';\nimport { mapAXPPropertyToWidgetProperty, type AXPWidgetPropertyGroup } from '@acorex/platform/layout/widget-core';\nimport { AXPCommandService } from '@acorex/platform/runtime';\nimport {\n AXPActivityDefinitionService,\n type AXPActivityDefinition,\n type AXPActivityDefinitionCategoryRef,\n type AXPActivityDefinitionQueryResult,\n type AXPConnection,\n type AXPWorkflowActivityInstance,\n type AXPWorkflowGraph,\n} from '@acorex/platform/workflow';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n inject,\n input,\n NgZone,\n signal,\n untracked,\n viewChild,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { cloneDeep, isEqual } from 'lodash-es';\nimport { RootConfig } from '../../const';\nimport {\n SaveWorkflowDefinitionActivitiesInput,\n WORKFLOW_DEFINITION_ACTIVITIES_SAVE_COMMAND,\n} from '../../entities/workflow-definition/commands/save-workflow-definition-activities.command';\nimport {\n graphHasPersistedDesignerLayout,\n isDesignerLayoutArranged,\n type AXMWorkflowActivityCatalogRow,\n type AXMWorkflowActivityEditorRow,\n type AXMWorkflowActivityNodeInfoRow,\n type AXMWorkflowActivityPaletteGroup,\n type AXMWorkflowActivitySelectItem,\n type AXMWorkflowDesignerNodeLayout,\n type AXMWorkflowOutcomePortRow,\n} from './workflow-definition-activities-page.types';\n\n//#endregion\n\n//#region ---- Constants ----\n\nconst DEFAULT_NODE_W = 240;\nconst DEFAULT_NODE_H = 96;\nconst DESIGNER_GRID_SIZE = 20;\n/** Debounce window before persisting designer edits (drag emits many modelChange events). */\nconst AUTO_SAVE_DEBOUNCE_MS = 500;\n\nconst DISCARD_COMMAND = 'WorkflowManagement.WorkflowDefinition:Activities:Discard';\nconst ADD_STEP_COMMAND = 'WorkflowManagement.WorkflowDefinition:Activities:AddStep';\nconst ARRANGE_LAYOUT_COMMAND = 'WorkflowManagement.WorkflowDefinition:Activities:ArrangeLayout';\n\nconst TOGGLE_DETAIL_PANEL_ACTION_ID = 'workflow-management.activities.toggle-detail-panel';\n\nconst ADD_ACTIVITY_ACTION_ID = 'workflow-management.activities.add-activity';\n\nconst TOGGLE_DETAIL_PANEL_ACTION_TITLE_KEY =\n '@workflow-management:workflow-definitions.entities.workflow-definition.pages.activities.node-actions.toggle-detail-panel';\n\nconst ADD_ACTIVITY_ACTION_TITLE_KEY =\n '@workflow-management:workflow-definitions.entities.workflow-definition.pages.activities.node-actions.add-activity';\n\nconst ARRANGE_LAYOUT_ACTION_TITLE_KEY =\n '@workflow-management:workflow-definitions.entities.workflow-definition.pages.activities.node-actions.arrange-layout';\n\n//#endregion\n\n//#region ---- Helpers ----\n\nfunction normalizeActivityDefinitionInputs(raw: unknown): AXPProperty[] {\n if (Array.isArray(raw)) {\n return raw as AXPProperty[];\n }\n if (typeof raw === 'string' && raw.trim().length > 0) {\n try {\n const parsed = JSON.parse(raw) as unknown;\n return Array.isArray(parsed) ? (parsed as AXPProperty[]) : [];\n } catch {\n return [];\n }\n }\n return [];\n}\n\nfunction portKey(port: string | null | undefined): string {\n return port == null || port === '' ? 'Done' : port;\n}\n\nfunction rowFromInstance(a: AXPWorkflowActivityInstance): AXMWorkflowActivityEditorRow {\n const inputs =\n a.inputs != null && typeof a.inputs === 'object' && !Array.isArray(a.inputs)\n ? { ...(a.inputs as Record<string, unknown>) }\n : {};\n const extRaw = a.extensions;\n const extensions =\n extRaw != null && typeof extRaw === 'object' && !Array.isArray(extRaw)\n ? { ...(extRaw as Record<string, unknown>) }\n : undefined;\n return {\n id: a.id,\n name: typeof a.name === 'string' ? a.name : '',\n inputs,\n ...(extensions != null && Object.keys(extensions).length > 0 ? { extensions } : {}),\n };\n}\n\nfunction instanceFromRow(r: AXMWorkflowActivityEditorRow): AXPWorkflowActivityInstance {\n const out: AXPWorkflowActivityInstance = { id: r.id, name: r.name, inputs: { ...r.inputs } };\n if (r.extensions != null && Object.keys(r.extensions).length > 0) {\n out.extensions = { ...r.extensions };\n }\n return out;\n}\n\nfunction emptyGraph(): AXPWorkflowGraph {\n return { startActivityId: '', activities: [], connections: [] };\n}\n\nfunction graphFingerprint(g: AXPWorkflowGraph | null): unknown {\n if (g == null) {\n return null;\n }\n return {\n startActivityId: g.startActivityId,\n activities: g.activities,\n connections: g.connections,\n designer: g.designer,\n };\n}\n\n//#endregion\n\n//#region ---- Component ----\n\n@Component({\n selector: 'axm-workflow-definition-activities-page',\n imports: [\n CommonModule,\n FormsModule,\n AXAccordionCdkModule,\n AXButtonModule,\n AXMenuModule,\n AXDecoratorModule,\n AXDropdownModule,\n AXFormModule,\n AXSearchBoxModule,\n AXSelectBoxModule,\n AXTranslationModule,\n AXPLayoutFloatingZoomBarComponent,\n AXPLayoutSideDetailPanelComponent,\n AXPWorkflowDesignerComponent,\n AXPWorkflowPaletteItemDragDirective,\n ],\n host: {\n style: 'display: block; width: 100%; height: 100%;',\n },\n templateUrl: './workflow-definition-activities-page.component.html',\n styleUrl: './workflow-definition-activities-page.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: AXPPageLayoutBase, useExisting: AXMWorkflowDefinitionActivitiesPageComponent }],\n})\nexport class AXMWorkflowDefinitionActivitiesPageComponent extends AXPPageLayoutBaseComponent {\n //#region ---- Inputs ----\n\n rootContext = input<Record<string, unknown>>();\n pageConfig = input<Record<string, unknown>>();\n\n //#endregion\n\n //#region ---- Services ----\n\n private readonly commandService = inject(AXPCommandService);\n private readonly entityService = inject(AXPEntityService);\n private readonly activityDefService = inject(AXPActivityDefinitionService);\n private readonly mlResolver = inject(AXTranslationService);\n private readonly hostPageLayout = inject(AXPPageLayoutBase, { optional: true, skipSelf: true });\n private readonly ngZone = inject(NgZone);\n private readonly destroyRef = inject(DestroyRef);\n\n //#endregion\n\n //#region ---- Auto-save ----\n\n private autoSaveTimer: ReturnType<typeof setTimeout> | null = null;\n private autoSaveInFlight = false;\n private autoSavePending = false;\n private suppressAutoSave = false;\n\n //#region ---- View refs ----\n\n private readonly propertyViewerRef = viewChild(AXPPropertyViewerComponent);\n private readonly workflowDesignerRef = viewChild(AXPWorkflowDesignerComponent);\n private readonly contextMenu = viewChild(AXContextMenuComponent);\n\n //#endregion\n\n //#region ---- State ----\n\n private readonly baselineGraph = signal<AXPWorkflowGraph | null>(null);\n /** Persisted on `graph.designer.layoutArranged` after the first auto-arrange (or layout migration). */\n private readonly layoutArrangedFlag = signal(false);\n private initialLayoutArrangeInFlight = false;\n private readonly activityCatalogLoaded = signal(false);\n private readonly activityDefCache = signal<Record<string, AXPActivityDefinition>>({});\n\n protected readonly activitySelectItems = signal<AXMWorkflowActivitySelectItem[]>([]);\n protected readonly activities = signal<AXMWorkflowActivityEditorRow[]>([]);\n protected readonly connections = signal<AXPConnection[]>([]);\n protected readonly startActivityId = signal('');\n protected readonly selectedRowId = signal<string | null>(null);\n protected readonly viewerTabs = signal<AXPPropertyViewerTab[]>([]);\n protected readonly selectedActivityOutcomeRows = signal<AXMWorkflowOutcomePortRow[]>([]);\n protected readonly isDirty = signal(false);\n protected readonly backgroundPattern = signal<'line' | 'dots'>('dots');\n protected readonly zoomLevel = signal(100);\n protected readonly isFullscreen = signal(false);\n protected readonly isInfoPanelOpen = signal(false);\n protected readonly isPaletteOpen = signal(false);\n protected readonly paletteSearchTerm = signal('');\n\n /** Canvas layout keyed by activity instance id; kept in sync with designer `modelChange` and saved on `graph.designer`. */\n private readonly designerLayout = signal<Record<string, AXMWorkflowDesignerNodeLayout>>({});\n\n //#endregion\n\n //#region ---- Computed ----\n\n private readonly context = computed(() => this.rootContext() ?? {});\n\n protected readonly selectedRow = computed(() => this.activities().find((x) => x.id === this.selectedRowId()) ?? null);\n\n protected readonly startActivityItems = computed(() =>\n this.activities().map((r) => ({ value: r.id, text: this.formatActivityStepLabel(r) })),\n );\n\n protected readonly activitySelectOptions = computed<AXMWorkflowActivitySelectItem[]>(() => {\n const graphTitleByName = new Map<string, string>();\n for (const r of this.activities()) {\n const n = r.name?.trim();\n if (!n) {\n continue;\n }\n const ext = r.extensions;\n const dt = ext && typeof ext['displayTitle'] === 'string' ? ext['displayTitle'].trim() : '';\n if (dt) {\n graphTitleByName.set(n, dt);\n }\n }\n const byValue = new Map<string, AXMWorkflowActivitySelectItem>();\n for (const x of this.activitySelectItems()) {\n byValue.set(x.value, {\n value: x.value,\n description: x.description,\n icon: x.icon,\n text: graphTitleByName.get(x.value) ?? x.text,\n categoryId: x.categoryId,\n categoryTitle: x.categoryTitle,\n });\n }\n for (const r of this.activities()) {\n const n = r.name?.trim();\n if (!n || byValue.has(n)) {\n continue;\n }\n byValue.set(n, {\n value: n,\n description: '',\n icon: '',\n text: graphTitleByName.get(n) ?? n,\n categoryId: 'uncategorized',\n categoryTitle: 'Uncategorized',\n });\n }\n return [...byValue.values()].sort((a, b) => a.text.localeCompare(b.text));\n });\n\n protected readonly paletteItems = computed<AXPWorkflowActivityPaletteItem[]>(() =>\n this.activitySelectOptions().map((x) => ({\n type: x.value,\n title: x.text,\n shape: 'rounded-rectangle',\n size: { width: 230, height: 90 },\n inboundPorts: [{ side: 'left', ratio: 0.5, key: 'in', label: 'in' }],\n outboundPorts: [{ side: 'right', ratio: 0.5, key: 'Done', label: 'Done' }],\n data: { category: 'activity-definition' },\n })),\n );\n\n protected readonly paletteGroups = computed<AXMWorkflowActivityPaletteGroup[]>(() => {\n const groupsById = new Map<string, AXMWorkflowActivityPaletteGroup>();\n for (const item of this.activitySelectOptions()) {\n const groupId = item.categoryId.trim() || 'uncategorized';\n const groupTitle = item.categoryTitle.trim() || 'Uncategorized';\n const existing = groupsById.get(groupId);\n const paletteItem: AXPWorkflowActivityPaletteItem = {\n type: item.value,\n title: item.text,\n description: item.description,\n icon: item.icon,\n shape: 'rounded-rectangle',\n size: { width: 230, height: 90 },\n inboundPorts: [{ side: 'left', ratio: 0.5, key: 'in', label: 'in' }],\n outboundPorts: [{ side: 'right', ratio: 0.5, key: 'Done', label: 'Done' }],\n data: { category: 'activity-definition' },\n };\n if (existing) {\n existing.items.push(paletteItem);\n continue;\n }\n groupsById.set(groupId, { id: groupId, title: groupTitle, items: [paletteItem] });\n }\n return [...groupsById.values()]\n .map((group) => ({\n ...group,\n items: [...group.items].sort((a, b) => a.title.localeCompare(b.title)),\n }))\n .sort((a, b) => a.title.localeCompare(b.title));\n });\n\n protected readonly filteredPaletteGroups = computed<AXMWorkflowActivityPaletteGroup[]>(() => {\n const searchTerm = this.paletteSearchTerm().trim().toLowerCase();\n const groups = this.paletteGroups();\n if (!searchTerm) {\n return groups;\n }\n return groups\n .map((group) => {\n const items = group.items.filter((item) => {\n const title = item.title?.toLowerCase() ?? '';\n const description = item.description?.toLowerCase() ?? '';\n return title.includes(searchTerm) || description.includes(searchTerm);\n });\n return { ...group, items };\n })\n .filter((group) => group.items.length > 0);\n });\n\n protected readonly designerModel = computed<AXPWorkflowDiagramModel>(() => {\n const rows = this.activities();\n const conns = this.connections();\n const cache = this.activityDefCache();\n const layout = this.designerLayout();\n const nodes = rows.map((r, i) => {\n const def = r.name ? cache[r.name] : undefined;\n const outcomes = this.buildOutcomeRows(r.id, r, def);\n const L = layout[r.id];\n const pos = L ? { x: L.x, y: L.y } : this.gridFallbackPosition(i);\n const size = L ? { width: L.width, height: L.height } : { width: DEFAULT_NODE_W, height: DEFAULT_NODE_H };\n return {\n id: r.id,\n type: r.name,\n title: this.resolveNodeTitle(r),\n shape: 'rounded-rectangle' as const,\n size,\n position: pos,\n color: this.startActivityId() === r.id ? ('success' as const) : ('secondary' as const),\n inboundPorts: [\n { id: `${r.id}:in`, kind: 'inbound' as const, side: 'left' as const, ratio: 0.5, key: 'in', label: 'in' },\n ],\n outboundPorts: outcomes.map((o, oi, arr) => ({\n id: `${r.id}:out:${o.port}`,\n kind: 'outbound' as const,\n side: 'right' as const,\n ratio: arr.length === 1 ? 0.5 : (oi + 1) / (arr.length + 1),\n key: o.port,\n label: o.label,\n })),\n };\n });\n const outPortByKey = new Map<string, string>();\n for (const n of nodes) {\n for (const p of n.outboundPorts) {\n outPortByKey.set(`${n.id}:${portKey(p.key)}`, p.id);\n }\n }\n const connectors = conns\n .map((c, i) => {\n const sourcePortKey = portKey(c.source.port);\n const sourcePortId = outPortByKey.get(`${c.source.activtyName}:${sourcePortKey}`);\n if (!sourcePortId) {\n return null;\n }\n return {\n id: `c-${i}-${c.source.activtyName}-${c.target.activtyName}-${sourcePortKey}`,\n sourceNodeId: c.source.activtyName,\n sourcePortId,\n targetNodeId: c.target.activtyName,\n targetPortId: `${c.target.activtyName}:in`,\n };\n })\n .filter((x): x is NonNullable<typeof x> => x != null);\n return { nodes, connectors };\n });\n\n protected readonly selectedNodeInfoRows = computed<AXMWorkflowActivityNodeInfoRow[]>(() => {\n const selected = this.selectedRow();\n if (!selected) {\n return [];\n }\n const selectOption = this.activitySelectOptions().find((x) => x.value === selected.name);\n return [\n { title: 'Title', content: this.resolveNodeTitle(selected) || '---' },\n { title: 'Type', content: selected.name || '---' },\n { title: 'Id', content: selected.id || '---' },\n { title: 'Category', content: selectOption?.categoryTitle || '---' },\n { title: 'Inputs', content: `${Object.keys(selected.inputs ?? {}).length}` },\n { title: 'Outcomes', content: `${this.selectedActivityOutcomeRows().length}` },\n ];\n });\n\n protected readonly workflowDetailPanelCopy = signal({\n panelTitle: 'Activity details',\n emptyMessage: 'Select a node to see details.',\n });\n\n protected readonly workflowDetailPanelHeader = computed((): AXPLayoutSideDetailPanelHeader | null => {\n const selected = this.selectedRow();\n if (selected == null) {\n return null;\n }\n const selectOption = this.activitySelectOptions().find((x) => x.value === selected.name);\n const iconGlyph = selectOption?.icon?.trim();\n return {\n primaryTitle: this.resolveNodeTitle(selected) || '---',\n icon: iconGlyph ? { iconClass: `fa-light fa-lg fa-fw ${iconGlyph}` } : undefined,\n };\n });\n\n protected readonly workflowDetailPanelRows = computed((): AXPLayoutSideDetailPanelRow[] => {\n if (this.selectedRow() == null) {\n return [];\n }\n return this.selectedNodeInfoRows().map((row) => ({\n label: row.title,\n value: row.content,\n }));\n });\n\n protected readonly workflowDetailPanelEmptyState = computed((): AXPLayoutSideDetailPanelEmptyState | null => {\n if (this.selectedRow() != null) {\n return null;\n }\n const copy = this.workflowDetailPanelCopy();\n return {\n primaryTitle: copy.panelTitle,\n message: copy.emptyMessage,\n icon: { iconClass: 'fa-solid fa-lg fa-fw fa-diagram-project' },\n };\n });\n\n //#endregion\n\n //#region ---- Lifecycle ----\n\n constructor() {\n super();\n let previousRootId: unknown = undefined;\n effect(() => {\n const ctx = this.rootContext();\n const currentId = ctx != null && typeof ctx === 'object' ? ctx['id'] : undefined;\n if (currentId !== previousRootId) {\n previousRootId = currentId;\n untracked(() => this.hydrateFromServerContext(ctx as Record<string, unknown> | undefined));\n }\n });\n effect(() => {\n const ctx = this.context();\n const id = typeof ctx['id'] === 'string' ? ctx['id'] : undefined;\n const arranged = this.layoutArrangedFlag();\n const activityCount = this.activities().length;\n if (!id || arranged || activityCount === 0) {\n return;\n }\n untracked(() => void this.maybeApplyInitialArrangedLayout());\n });\n this.destroyRef.onDestroy(() => this.clearAutoSaveTimer());\n }\n\n //#endregion\n\n //#region ---- Page chrome / commands ----\n\n // override async getPrimaryMenuItems(): Promise<AXPActionMenuItem[]> {\n // const addTitle =\n // (await this.translateService.translateAsync(\n // '@workflow-management:workflow-definitions.entities.workflow-definition.pages.activities.add-step',\n // )) || 'Add step';\n // const discardTitle = (await this.translateService.translateAsync('@general:actions.discard.title')) || 'Discard';\n // const saveTitle = (await this.translateService.translateAsync('@general:actions.save.title')) || 'Save';\n // const addAction: AXPLayoutDetailsViewAction = {\n // title: addTitle,\n // icon: 'fa-light fa-plus',\n // zone: 'header',\n // priority: 'primary',\n // color: 'primary',\n // command: { name: ADD_STEP_COMMAND, options: {} },\n // };\n // const discardAction: AXPLayoutDetailsViewAction = {\n // title: discardTitle,\n // icon: 'fa-light fa-rotate-left',\n // zone: 'footer',\n // priority: 'secondary',\n // color: 'default',\n // visible: this.isDirty(),\n // command: { name: DISCARD_COMMAND, options: {} },\n // };\n // const saveAction: AXPLayoutDetailsViewAction = {\n // title: saveTitle,\n // icon: 'fa-light fa-floppy-disk',\n // zone: 'footer',\n // priority: 'primary',\n // color: 'primary',\n // visible: this.isDirty(),\n // command: { name: WORKFLOW_DEFINITION_ACTIVITIES_SAVE_COMMAND, options: {} },\n // };\n // return [addAction, discardAction, saveAction];\n // }\n\n override async getSecondaryMenuItems(): Promise<AXPActionMenuItem[]> {\n const title = await this.mlResolver.translateAsync(ARRANGE_LAYOUT_ACTION_TITLE_KEY);\n return [\n {\n title,\n icon: 'fa-light fa-sitemap',\n command: { name: ARRANGE_LAYOUT_COMMAND, options: {} },\n disabled: this.activities().length === 0,\n },\n ];\n }\n\n override execute(command: AXPExecuteCommand): void | Promise<void> {\n if (command.name === DISCARD_COMMAND) {\n this.applyBaselineGraph();\n return;\n }\n if (command.name === ADD_STEP_COMMAND) {\n this.addStep();\n return;\n }\n if (command.name === ARRANGE_LAYOUT_COMMAND) {\n this.applyArrangedLayout();\n return;\n }\n if (command.name === WORKFLOW_DEFINITION_ACTIVITIES_SAVE_COMMAND) {\n return this.handleSaveExecute() as unknown as Promise<void>;\n }\n }\n\n //#endregion\n\n //#region ---- Designer handlers ----\n\n protected onDesignerModelChange(model: AXPWorkflowDiagramModel): void {\n const previousNodeCount = this.activities().length;\n const oldById = new Map(this.activities().map((x) => [x.id, x]));\n const nextRows: AXMWorkflowActivityEditorRow[] = model.nodes.map((n) => {\n const prev = oldById.get(n.id);\n const title = n.title?.trim();\n const extensions = { ...(prev?.extensions ?? {}) };\n if (title) {\n extensions['displayTitle'] = title;\n } else {\n delete extensions['displayTitle'];\n }\n return {\n id: n.id,\n name: n.type?.trim() ? n.type : (prev?.name ?? ''),\n inputs: { ...(prev?.inputs ?? {}) },\n ...(Object.keys(extensions).length > 0 ? { extensions } : {}),\n };\n });\n const outgoingByPortId = new Map<string, string>();\n for (const n of model.nodes) {\n for (const p of n.outboundPorts) {\n outgoingByPortId.set(p.id, portKey(p.key));\n }\n }\n const nextConnections: AXPConnection[] = [];\n for (const c of model.connectors) {\n const pk = outgoingByPortId.get(c.sourcePortId);\n if (!pk) {\n continue;\n }\n nextConnections.push({\n source: { activtyName: c.sourceNodeId, port: pk === 'Done' ? null : pk },\n target: { activtyName: c.targetNodeId, port: null },\n });\n }\n this.activities.set(nextRows);\n this.connections.set(nextConnections);\n if (!nextRows.some((x) => x.id === this.startActivityId())) {\n this.startActivityId.set(nextRows[0]?.id ?? '');\n }\n if (!nextRows.some((x) => x.id === this.selectedRowId())) {\n this.selectedRowId.set(nextRows[0]?.id ?? null);\n }\n for (const r of nextRows) {\n void this.ensureDefinition(r.name);\n }\n this.syncDesignerLayoutFromModel(model);\n void this.refreshPropertyViewer();\n this.recomputeDirty();\n if (nextRows.length > previousNodeCount) {\n this.closePalette();\n }\n }\n\n protected onDesignerActivationChange(a: AXPWorkflowDesignerActivation | null): void {\n if (a?.kind !== 'node') {\n return;\n }\n this.selectedRowId.set(a.id);\n void this.refreshPropertyViewer();\n }\n\n //#region ---- Context Menu ----\n\n protected onDesignerNodeContextMenu(payload: { node: AXPWorkflowNode; event: MouseEvent }): void {\n const anchor =\n payload.event.currentTarget instanceof HTMLElement\n ? payload.event.currentTarget\n : payload.event.target instanceof HTMLElement\n ? payload.event.target.closest('.axp-workflow-designer__node')\n : null;\n if (!(anchor instanceof HTMLElement)) {\n return;\n }\n void this.openWorkflowContextMenuAt(payload.event.clientX, payload.event.clientY, anchor, [\n ADD_ACTIVITY_ACTION_ID,\n TOGGLE_DETAIL_PANEL_ACTION_ID,\n ]);\n }\n\n protected onDesignerSurfaceContextMenu(event: MouseEvent): void {\n if (event.target instanceof HTMLElement && event.target.closest('.axp-workflow-designer__node')) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n const anchor =\n event.target instanceof HTMLElement\n ? (event.target.closest('.axp-workflow-designer__surface') ?? event.target)\n : null;\n if (!(anchor instanceof HTMLElement)) {\n return;\n }\n void this.openWorkflowContextMenuAt(event.clientX, event.clientY, anchor, [ADD_ACTIVITY_ACTION_ID]);\n }\n\n protected handleWorkflowContextMenuItemClick(e: AXContextMenuItemsClickEvent): void {\n if (e.item.name === TOGGLE_DETAIL_PANEL_ACTION_ID) {\n this.toggleInfoPanel();\n return;\n }\n if (e.item.name === ADD_ACTIVITY_ACTION_ID) {\n this.openPalette();\n }\n }\n\n protected openPalette(): void {\n this.isPaletteOpen.set(true);\n this.paletteSearchTerm.set('');\n }\n\n protected closePalette(): void {\n this.isPaletteOpen.set(false);\n }\n\n private async openWorkflowContextMenuAt(\n clientX: number,\n clientY: number,\n targetElement: HTMLElement,\n actionIds: string[],\n ): Promise<void> {\n const items: AXMenuItem[] = [];\n for (const actionId of actionIds) {\n const item = await this.buildWorkflowContextMenuItem(actionId);\n if (item != null) {\n items.push(item);\n }\n }\n if (items.length === 0) {\n return;\n }\n const menu = this.contextMenu();\n if (menu == null) {\n return;\n }\n this.ngZone.run(() => {\n const openingEvent = {\n sender: menu,\n canceled: false,\n targetElement,\n items,\n } as AXContextMenuOpeningEvent;\n menu.showAt({ x: clientX, y: clientY }, targetElement, openingEvent);\n });\n }\n\n private async buildWorkflowContextMenuItem(actionId: string): Promise<AXMenuItem | null> {\n if (actionId === ADD_ACTIVITY_ACTION_ID) {\n return {\n name: ADD_ACTIVITY_ACTION_ID,\n text: (await this.translateService.translateAsync(ADD_ACTIVITY_ACTION_TITLE_KEY)) ?? 'Add Activity',\n icon: 'fa-light fa-plus',\n };\n }\n if (actionId === TOGGLE_DETAIL_PANEL_ACTION_ID) {\n return {\n name: TOGGLE_DETAIL_PANEL_ACTION_ID,\n text:\n (await this.translateService.translateAsync(TOGGLE_DETAIL_PANEL_ACTION_TITLE_KEY)) ?? 'Toggle Details Panel',\n icon: 'fa-light fa-sidebar',\n };\n }\n return null;\n }\n\n //#endregion\n\n protected onBackgroundPatternChange(event: Event): void {\n const value = (event.target as HTMLSelectElement).value;\n if (value === 'line' || value === 'dots') {\n this.backgroundPattern.set(value);\n }\n }\n\n protected onDesignerZoomChange(value: number): void {\n this.zoomLevel.set(this.clampZoomLevel(value));\n }\n\n protected onPaletteSearchChange(event: { value?: string | null } | null): void {\n this.paletteSearchTerm.set(event?.value ?? '');\n }\n\n protected zoomIn(): void {\n this.workflowDesignerRef()?.zoomIn();\n this.zoomLevel.set(this.clampZoomLevel(this.workflowDesignerRef()?.getZoomLevel() ?? this.zoomLevel()));\n }\n\n protected zoomOut(): void {\n this.workflowDesignerRef()?.zoomOut();\n this.zoomLevel.set(this.clampZoomLevel(this.workflowDesignerRef()?.getZoomLevel() ?? this.zoomLevel()));\n }\n\n protected zoomReset(): void {\n this.workflowDesignerRef()?.zoomReset();\n this.zoomLevel.set(this.clampZoomLevel(this.workflowDesignerRef()?.getZoomLevel() ?? 100));\n }\n\n protected toggleFullscreen(): void {\n const next = !this.isFullscreen();\n this.isFullscreen.set(next);\n const doc = globalThis.document;\n if (!doc) {\n return;\n }\n if (next) {\n void doc.documentElement.requestFullscreen?.();\n return;\n }\n void doc.exitFullscreen?.();\n }\n\n protected toggleInfoPanel(): void {\n this.isInfoPanelOpen.update((open) => !open);\n }\n\n protected onStartActivityChange(event: { value?: string | null }): void {\n this.startActivityId.set(event.value != null ? String(event.value) : '');\n this.recomputeDirty();\n }\n\n protected onSelectedActivityTypeChange(event: { value?: string | null }): void {\n const row = this.selectedRow();\n if (!row) {\n return;\n }\n const name = event.value != null ? String(event.value) : '';\n const rowId = row.id;\n this.activities.update((rows) =>\n rows.map((r) => (r.id !== rowId ? r : { ...r, name, inputs: {}, extensions: undefined })),\n );\n void this.ensureDefinition(name);\n void this.activityDefService.getActivityByName(name).then((def) => {\n const rowNow = this.activities().find((r) => r.id === rowId) ?? null;\n const allowed = new Set(this.buildOutcomeRows(rowId, rowNow, def).map((o) => o.port));\n this.pruneOutgoingConnections(rowId, allowed);\n void this.refreshPropertyViewer();\n this.recomputeDirty();\n });\n void this.refreshPropertyViewer();\n this.recomputeDirty();\n }\n\n protected onViewerChanged(ev: AXPPropertyViewerChangedEvent): void {\n if (ev.mode === 'init') {\n return;\n }\n const id = this.selectedRowId();\n if (id == null || ev.values == null) {\n return;\n }\n const inputs = (ev.values as { inputs?: Record<string, unknown> }).inputs ?? {};\n this.activities.update((rows) => rows.map((r) => (r.id === id ? { ...r, inputs: { ...inputs } } : r)));\n const sel = this.activities().find((r) => r.id === id);\n if (sel?.name?.trim()) {\n void this.activityDefService.getActivityByName(sel.name).then((def) => {\n this.selectedActivityOutcomeRows.set(this.buildOutcomeRows(sel.id, sel, def));\n });\n }\n this.recomputeDirty();\n }\n\n //#endregion\n\n //#region ---- Graph persistence ----\n\n private gridFallbackPosition(index: number): { x: number; y: number } {\n return { x: 80 + (index % 4) * 320, y: 80 + Math.floor(index / 4) * 190 };\n }\n\n private clampZoomLevel(value: number): number {\n if (Number.isNaN(value)) {\n return 100;\n }\n return Math.max(20, Math.min(300, Math.round(value)));\n }\n\n private initDesignerLayoutFromGraph(graph: AXPWorkflowGraph | null | undefined): void {\n const activities = graph?.activities ?? [];\n const raw = graph?.designer?.nodes;\n const next: Record<string, AXMWorkflowDesignerNodeLayout> = {};\n if (raw != null) {\n for (const [id, v] of Object.entries(raw)) {\n if (v != null && typeof v.x === 'number' && typeof v.y === 'number') {\n next[id] = {\n x: v.x,\n y: v.y,\n width: typeof v.width === 'number' && v.width > 0 ? v.width : DEFAULT_NODE_W,\n height: typeof v.height === 'number' && v.height > 0 ? v.height : DEFAULT_NODE_H,\n };\n }\n }\n }\n activities.forEach((a, i) => {\n if (!next[a.id]) {\n const p = this.gridFallbackPosition(i);\n next[a.id] = { x: p.x, y: p.y, width: DEFAULT_NODE_W, height: DEFAULT_NODE_H };\n }\n });\n this.designerLayout.set(next);\n }\n\n private syncDesignerLayoutFromModel(model: AXPWorkflowDiagramModel): void {\n const next: Record<string, AXMWorkflowDesignerNodeLayout> = {};\n for (const n of model.nodes) {\n next[n.id] = {\n x: n.position.x,\n y: n.position.y,\n width: n.size.width > 0 ? n.size.width : DEFAULT_NODE_W,\n height: n.size.height > 0 ? n.size.height : DEFAULT_NODE_H,\n };\n }\n this.designerLayout.set(next);\n }\n\n /** Updates persisted node coordinates only (no activity/connection graph rewrite). */\n private applyArrangedLayout(): void {\n if (this.activities().length === 0) {\n return;\n }\n const startId = this.startActivityId().trim();\n const arranged = arrangeWorkflowDiagram(this.designerModel(), {\n startNodeId: startId.length > 0 ? startId : undefined,\n gridSize: DESIGNER_GRID_SIZE,\n });\n this.syncDesignerLayoutFromModel(arranged);\n this.layoutArrangedFlag.set(true);\n this.recomputeDirty();\n }\n\n private buildDesignerNodesForSave(): NonNullable<AXPWorkflowGraph['designer']>['nodes'] {\n const layout = this.designerLayout();\n const out: NonNullable<AXPWorkflowGraph['designer']>['nodes'] = {};\n for (const [id, L] of Object.entries(layout)) {\n out[id] = {\n x: L.x,\n y: L.y,\n nodeId: id,\n width: L.width,\n height: L.height,\n };\n }\n return out;\n }\n\n private buildCurrentGraph(): AXPWorkflowGraph {\n const base = this.baselineGraph();\n const layoutArranged = this.layoutArrangedFlag() || isDesignerLayoutArranged(base ?? undefined);\n return {\n startActivityId: this.startActivityId(),\n activities: this.activities().map((r) => instanceFromRow(r)),\n connections: cloneDeep(this.connections()),\n designer: {\n ...base?.designer,\n layoutArranged: layoutArranged ? true : undefined,\n nodes: this.buildDesignerNodesForSave(),\n },\n };\n }\n\n private recomputeDirty(): void {\n this.isDirty.set(!isEqual(graphFingerprint(this.buildCurrentGraph()), graphFingerprint(this.baselineGraph())));\n this.recompute();\n this.scheduleAutoSave();\n }\n\n private clearAutoSaveTimer(): void {\n if (this.autoSaveTimer != null) {\n clearTimeout(this.autoSaveTimer);\n this.autoSaveTimer = null;\n }\n }\n\n /** Debounced persist for designer moves, connections, arrange, and property edits. */\n private scheduleAutoSave(): void {\n if (this.suppressAutoSave || !this.isDirty()) {\n return;\n }\n const ctx = this.context();\n const id = typeof ctx['id'] === 'string' ? ctx['id'] : undefined;\n if (!id) {\n return;\n }\n this.clearAutoSaveTimer();\n this.autoSaveTimer = setTimeout(() => {\n this.autoSaveTimer = null;\n void this.runAutoSave();\n }, AUTO_SAVE_DEBOUNCE_MS);\n }\n\n private async runAutoSave(): Promise<void> {\n if (this.suppressAutoSave || !this.isDirty()) {\n return;\n }\n if (this.autoSaveInFlight) {\n this.autoSavePending = true;\n return;\n }\n this.autoSaveInFlight = true;\n try {\n await this.handleSaveExecute({ silent: true });\n } finally {\n this.autoSaveInFlight = false;\n if (this.autoSavePending) {\n this.autoSavePending = false;\n if (this.isDirty()) {\n this.scheduleAutoSave();\n }\n }\n }\n }\n\n private async handleSaveExecute(options?: { silent?: boolean }): Promise<AXPExecuteCommandResult> {\n this.clearAutoSaveTimer();\n const ctx = this.context();\n const id = typeof ctx['id'] === 'string' ? ctx['id'] : undefined;\n if (!id) {\n return {\n success: false,\n message: { text: await this.translateService.translateAsync('@general:messages.entity.invalid-data') },\n };\n }\n const graph = this.buildCurrentGraph();\n const result = await this.commandService.execute<SaveWorkflowDefinitionActivitiesInput, unknown>(\n WORKFLOW_DEFINITION_ACTIVITIES_SAVE_COMMAND,\n { id, graph, silent: options?.silent },\n );\n const execResult = (result ?? { success: false }) as AXPExecuteCommandResult;\n if (execResult.success) {\n this.baselineGraph.set(cloneDeep(graph));\n this.isDirty.set(false);\n if (!options?.silent) {\n this.recompute();\n }\n }\n return execResult;\n }\n\n private hydrateFromServerContext(ctx: Record<string, unknown> | undefined): void {\n this.clearAutoSaveTimer();\n this.suppressAutoSave = true;\n try {\n const graph = (ctx?.['graph'] as AXPWorkflowGraph | undefined) ?? emptyGraph();\n this.baselineGraph.set(cloneDeep(graph));\n this.layoutArrangedFlag.set(isDesignerLayoutArranged(graph));\n this.initDesignerLayoutFromGraph(graph);\n this.activities.set((graph.activities ?? []).map((a) => rowFromInstance(a)));\n this.connections.set(cloneDeep(graph.connections ?? []));\n let start = graph.startActivityId ?? '';\n const rows = this.activities();\n if (!start && rows.length > 0) {\n start = rows[0]!.id;\n }\n this.startActivityId.set(start);\n this.selectedRowId.set(rows[0]?.id ?? null);\n this.isDirty.set(false);\n void this.ensureActivityCatalogLoaded();\n for (const r of rows) {\n void this.ensureDefinition(r.name);\n }\n void this.refreshPropertyViewer();\n } finally {\n this.suppressAutoSave = false;\n }\n }\n\n /**\n * Runs auto-arrange once per workflow definition, then persists `graph.designer.layoutArranged`.\n * Definitions that already have saved node positions are marked arranged without moving nodes.\n */\n private async maybeApplyInitialArrangedLayout(): Promise<void> {\n if (this.layoutArrangedFlag() || this.initialLayoutArrangeInFlight) {\n return;\n }\n const ctx = this.context();\n const id = typeof ctx['id'] === 'string' ? ctx['id'] : undefined;\n if (!id) {\n return;\n }\n if (this.activities().length === 0) {\n return;\n }\n\n this.initialLayoutArrangeInFlight = true;\n this.suppressAutoSave = true;\n try {\n const base = this.baselineGraph();\n if (graphHasPersistedDesignerLayout(base ?? undefined)) {\n this.layoutArrangedFlag.set(true);\n this.recomputeDirty();\n if (this.isDirty()) {\n await this.handleSaveExecute({ silent: true });\n }\n return;\n }\n\n this.applyArrangedLayout();\n if (this.isDirty()) {\n await this.handleSaveExecute({ silent: true });\n }\n } finally {\n this.suppressAutoSave = false;\n this.initialLayoutArrangeInFlight = false;\n }\n }\n\n private applyBaselineGraph(): void {\n this.clearAutoSaveTimer();\n this.suppressAutoSave = true;\n try {\n const base = this.baselineGraph();\n this.layoutArrangedFlag.set(isDesignerLayoutArranged(base ?? undefined));\n this.initDesignerLayoutFromGraph(base ?? undefined);\n const rows = (base?.activities ?? []).map((a) => rowFromInstance(a));\n this.activities.set(rows);\n this.connections.set(cloneDeep(base?.connections ?? []));\n let start = base?.startActivityId ?? '';\n if (!start && rows.length > 0) {\n start = rows[0]!.id;\n }\n this.startActivityId.set(start);\n this.selectedRowId.set(rows[0]?.id ?? null);\n this.isDirty.set(false);\n for (const r of rows) {\n void this.ensureDefinition(r.name);\n }\n void this.refreshPropertyViewer();\n this.recompute();\n } finally {\n this.suppressAutoSave = false;\n }\n }\n\n private addStep(): void {\n const catalog = this.activitySelectOptions();\n const defaultName = catalog[0]?.value ?? '';\n const row: AXMWorkflowActivityEditorRow = { id: AXPDataGenerator.uuid(), name: defaultName, inputs: {} };\n this.activities.update((list) => [...list, row]);\n const idx = this.activities().length - 1;\n const p = this.gridFallbackPosition(idx);\n this.designerLayout.update((L) => ({\n ...L,\n [row.id]: { x: p.x, y: p.y, width: DEFAULT_NODE_W, height: DEFAULT_NODE_H },\n }));\n this.selectedRowId.set(row.id);\n if (!this.startActivityId() && row.id) {\n this.startActivityId.set(row.id);\n }\n void this.ensureDefinition(row.name);\n void this.refreshPropertyViewer();\n this.recomputeDirty();\n }\n\n //#endregion\n\n //#region ---- Outcomes & labels ----\n\n private formatActivityStepLabel(r: AXMWorkflowActivityEditorRow): string {\n const shortId = r.id.length >= 8 ? r.id.slice(0, 8) : r.id;\n const typePart = r.name?.trim() ? r.name : '…';\n return `${typePart} (${shortId})`;\n }\n\n protected resolveNodeTitle(r: AXMWorkflowActivityEditorRow): string {\n const ext = r.extensions;\n const display = ext && typeof ext['displayTitle'] === 'string' ? ext['displayTitle'].trim() : '';\n if (display) {\n return display;\n }\n return this.activitySelectOptions().find((x) => x.value === r.name)?.text ?? r.name;\n }\n\n private outcomeRowsFromRawDefinition(raw: unknown): AXMWorkflowOutcomePortRow[] {\n if (raw == null) {\n return [];\n }\n let items: unknown[] = [];\n if (Array.isArray(raw)) {\n items = raw;\n } else if (typeof raw === 'string' && raw.trim().length > 0) {\n try {\n const parsed = JSON.parse(raw) as unknown;\n items = Array.isArray(parsed) ? parsed : [];\n } catch {\n return [];\n }\n } else {\n return [];\n }\n const rows: AXMWorkflowOutcomePortRow[] = [];\n for (const item of items) {\n if (typeof item === 'string' && item.trim()) {\n rows.push({ port: item, label: item });\n continue;\n }\n if (item != null && typeof item === 'object' && !Array.isArray(item)) {\n const o = item as Record<string, unknown>;\n const portVal = o['name'] ?? o['value'] ?? o['outcome'] ?? o['port'];\n if (typeof portVal !== 'string' || !portVal.trim()) {\n continue;\n }\n const titleRaw = o['title'];\n let label = portVal;\n if (typeof titleRaw === 'string' && titleRaw.trim()) {\n label = titleRaw;\n } else if (titleRaw != null && typeof titleRaw === 'object') {\n label = this.mlResolver.resolve(titleRaw as AXPMultiLanguageString) ?? portVal;\n }\n rows.push({ port: portVal, label });\n }\n }\n return rows;\n }\n\n private outcomePortsFromConnections(activityId: string): string[] {\n const ports = new Set<string>();\n for (const c of this.connections()) {\n if (c.source.activtyName === activityId) {\n ports.add(portKey(c.source.port));\n }\n }\n return [...ports];\n }\n\n private outcomePortsFromTaskActions(inputs: Record<string, unknown>): string[] {\n const actions = inputs['actions'];\n if (actions == null) {\n return [];\n }\n let root: unknown = actions;\n if (typeof actions === 'string' && actions.trim().length > 0) {\n try {\n root = JSON.parse(actions) as unknown;\n } catch {\n return [];\n }\n }\n if (typeof root !== 'object' || root === null) {\n return [];\n }\n const names: string[] = [];\n const obj = root as Record<string, unknown>;\n for (const key of ['suffix', 'prefix'] as const) {\n const list = obj[key];\n if (!Array.isArray(list)) {\n continue;\n }\n for (const entry of list) {\n if (!entry || typeof entry !== 'object') {\n continue;\n }\n const cmd = (entry as Record<string, unknown>)['command'];\n if (cmd && typeof cmd === 'object') {\n const n = (cmd as Record<string, unknown>)['name'];\n if (typeof n === 'string' && n.trim()) {\n names.push(n);\n }\n }\n }\n }\n return names;\n }\n\n private buildOutcomeRows(\n activityId: string,\n row: AXMWorkflowActivityEditorRow | null,\n def?: AXPActivityDefinition,\n ): AXMWorkflowOutcomePortRow[] {\n const map = new Map<string, AXMWorkflowOutcomePortRow>();\n for (const o of this.outcomeRowsFromRawDefinition(def?.outcomes)) {\n map.set(o.port, o);\n }\n for (const p of this.outcomePortsFromConnections(activityId)) {\n if (!map.has(p)) {\n map.set(p, { port: p, label: p });\n }\n }\n if (row) {\n for (const p of this.outcomePortsFromTaskActions(row.inputs)) {\n if (!map.has(p)) {\n map.set(p, { port: p, label: p });\n }\n }\n }\n if (map.size === 0) {\n map.set('Done', { port: 'Done', label: 'Done' });\n }\n return [...map.values()].sort((a, b) => a.port.localeCompare(b.port));\n }\n\n private pruneOutgoingConnections(sourceActivityId: string, allowedPorts: Set<string>): void {\n this.connections.update((list) =>\n list.filter((c) => {\n if (c.source.activtyName !== sourceActivityId) {\n return true;\n }\n return allowedPorts.has(portKey(c.source.port));\n }),\n );\n }\n\n //#endregion\n\n //#region ---- Catalog & property viewer ----\n\n private async ensureActivityCatalogLoaded(): Promise<void> {\n if (this.activityCatalogLoaded()) {\n return;\n }\n try {\n const data = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.activityDefinition.name)\n .data<string, AXMWorkflowActivityCatalogRow>();\n const res = (await data.query({ skip: 0, take: 1000 })) as unknown as AXPActivityDefinitionQueryResult;\n const items = (res.items ?? [])\n .map((row) => {\n const n = row.name;\n const typeFallback = row.type;\n const valueKey =\n typeof n === 'string' && n.trim()\n ? n.trim()\n : typeof n === 'number'\n ? String(n)\n : typeof typeFallback === 'string' && typeFallback.trim()\n ? typeFallback.trim()\n : typeof typeFallback === 'number'\n ? String(typeFallback)\n : '';\n if (!valueKey) {\n return null;\n }\n const titleRaw = row.title;\n let text = valueKey;\n if (typeof titleRaw === 'string' && titleRaw.trim()) {\n text = titleRaw.trim();\n } else if (titleRaw != null && typeof titleRaw === 'object') {\n text = this.mlResolver.resolve(titleRaw as AXPMultiLanguageString) ?? valueKey;\n }\n\n const descriptionRaw = row.description;\n let description = descriptionRaw;\n if (typeof descriptionRaw === 'string' && descriptionRaw.trim()) {\n description = descriptionRaw.trim();\n } else if (descriptionRaw != null && typeof descriptionRaw === 'object') {\n description = this.mlResolver.resolve(descriptionRaw as AXPMultiLanguageString) ?? descriptionRaw;\n }\n const categoryRaw = row.category as AXPActivityDefinitionCategoryRef | undefined;\n const categoryTitleResolved =\n categoryRaw?.title != null\n ? (this.mlResolver.resolve(categoryRaw.title) ?? categoryRaw.name)\n : 'Uncategorized';\n const icon = row.icon;\n return {\n value: valueKey,\n text: String(text).trim() || valueKey,\n description: description,\n categoryId: categoryRaw?.id ?? 'uncategorized',\n categoryTitle: categoryTitleResolved,\n icon: icon,\n };\n })\n .filter((x): x is AXMWorkflowActivitySelectItem => x != null);\n items.sort((a, b) => a.text.localeCompare(b.text));\n this.activitySelectItems.set(items);\n } catch {\n this.activitySelectItems.set([]);\n } finally {\n this.activityCatalogLoaded.set(true);\n }\n }\n\n private async ensureDefinition(name: string): Promise<void> {\n if (!name?.trim()) {\n return;\n }\n if (this.activityDefCache()[name]) {\n return;\n }\n const def = await this.activityDefService.getActivityByName(name);\n if (def) {\n this.activityDefCache.update((c) => ({ ...c, [name]: def }));\n }\n }\n\n private async refreshPropertyViewer(): Promise<void> {\n const row = this.selectedRow();\n if (row == null || row.name.trim() === '') {\n this.viewerTabs.set([]);\n this.selectedActivityOutcomeRows.set([]);\n setTimeout(() => this.propertyViewerRef()?.initializeContext({ inputs: {} }), 0);\n return;\n }\n const def = await this.activityDefService.getActivityByName(row.name);\n if (def) {\n this.activityDefCache.update((c) => ({ ...c, [row.name]: def }));\n }\n const rowLatest = this.activities().find((r) => r.id === row.id) ?? row;\n this.selectedActivityOutcomeRows.set(this.buildOutcomeRows(row.id, rowLatest, def));\n const inputProps = normalizeActivityDefinitionInputs(def?.inputs);\n const group: AXPWidgetPropertyGroup = { name: 'activity-inputs', title: 'Inputs', order: 0 };\n const widgetProps = inputProps.map((p, index) =>\n mapAXPPropertyToWidgetProperty(p, {\n group,\n order: index,\n valuePathPrefix: 'inputs',\n resolveTitle: (prop) =>\n typeof prop.title === 'string' ? prop.title : (this.mlResolver.resolve(prop.title) ?? prop.name),\n resolveDescription: (prop) =>\n prop.description === undefined\n ? undefined\n : typeof prop.description === 'string'\n ? prop.description\n : this.mlResolver.resolve(prop.description),\n }),\n );\n this.viewerTabs.set(buildPropertyViewerTabsFromProperties(widgetProps));\n setTimeout(() => {\n const current = this.activities().find((r) => r.id === row.id);\n this.propertyViewerRef()?.initializeContext({ inputs: cloneDeep(current?.inputs ?? {}) });\n }, 0);\n }\n\n //#endregion\n\n //#region ---- Utilities ----\n\n protected override recompute(): void {\n super.recompute();\n const maybeLayout = this.hostPageLayout as unknown as { recompute?: () => void };\n maybeLayout.recompute?.();\n }\n\n //#endregion\n}\n","<!-- <axp-page-toolbar>\n <axp-layout-suffix>\n <div class=\"axm-workflow-definition-activities__toolbar-group\">\n <ax-button>\n <ax-icon icon=\"fa-light fa-sliders\"></ax-icon>\n <ax-dropdown-panel>\n <div class=\"axm-workflow-definition-activities__appearance-panel\">\n <label class=\"axm-workflow-definition-activities__pattern-label\" for=\"background-pattern-select\"\n >Background Pattern</label\n >\n <select\n id=\"background-pattern-select\"\n class=\"axm-workflow-definition-activities__pattern-select\"\n [value]=\"backgroundPattern()\"\n (change)=\"onBackgroundPatternChange($event)\"\n >\n <option value=\"dots\">Dots</option>\n <option value=\"line\">Lines</option>\n </select>\n </div>\n </ax-dropdown-panel>\n </ax-button>\n <ax-button (onClick)=\"toggleFullscreen()\">\n <ax-icon>\n <i class=\"fa-solid\" [class]=\"isFullscreen() ? 'fa-compress' : 'fa-expand'\"></i>\n </ax-icon>\n </ax-button>\n <ax-button (onClick)=\"toggleInfoPanel()\">\n <ax-icon [icon]=\"isInfoPanelOpen() ? 'fa-solid fa-square-info' : 'fa-light fa-square-info'\"></ax-icon>\n </ax-button>\n </div>\n </axp-layout-suffix>\n </axp-page-toolbar> -->\n\n<div\n class=\"axm-workflow-definition-activities\"\n [class.axm-workflow-definition-activities--with-palette]=\"isPaletteOpen()\"\n [class.axm-workflow-definition-activities--with-info]=\"isInfoPanelOpen()\"\n>\n @if (isPaletteOpen()) {\n <aside class=\"axm-workflow-definition-activities__palette\">\n <div class=\"axm-workflow-definition-activities__palette-head\">\n <div class=\"axm-workflow-definition-activities__palette-head-row\">\n <h3 class=\"axm-workflow-definition-activities__title\">\n {{\n ('@workflow-management:workflow-definitions.entities.workflow-definition.pages.activities.add-step'\n | translate\n | async) ?? 'Activities'\n }}\n </h3>\n <ax-button [look]=\"'blank'\" class=\"ax-sm ax-rounded-full\" (onClick)=\"closePalette()\">\n <ax-icon icon=\"fa-solid fa-xmark\"></ax-icon>\n </ax-button>\n </div>\n <p class=\"axm-workflow-definition-activities__palette-sub\">\n {{\n ('@workflow-management:workflow-definitions.entities.workflow-definition.pages.activities.connections.hint'\n | translate\n | async) ?? ''\n }}\n </p>\n <ax-search-box\n class=\"axm-workflow-definition-activities__palette-search ax-sm\"\n [value]=\"paletteSearchTerm()\"\n (onValueChanged)=\"onPaletteSearchChange($event)\"\n [placeholder]=\"'@general:search.title' | translate | async\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n </div>\n <div class=\"axm-workflow-definition-activities__palette-list\">\n <div class=\"axm-workflow-definition-activities__accordion-group\" axAccordionGroup [accordion]=\"false\">\n @for (group of filteredPaletteGroups(); track group.id) {\n @if (group.items.length > 0) {\n <section\n class=\"axm-workflow-definition-activities__accordion-item\"\n axAccordionItem\n [isCollapsed]=\"false\"\n #acc=\"axAccordionItem\"\n >\n <header\n class=\"axm-workflow-definition-activities__accordion-header\"\n axAccordionItemHeader\n role=\"button\"\n >\n <div class=\"axm-workflow-definition-activities__accordion-header-main\">\n <span class=\"axm-workflow-definition-activities__accordion-title\">{{ group.title }}</span>\n </div>\n <span class=\"axm-workflow-definition-activities__accordion-chevron\">\n <i [class]=\"acc.isCollapsed() ? 'fa-light fa-chevron-down' : 'fa-light fa-chevron-up'\"></i>\n </span>\n </header>\n <div class=\"axm-workflow-definition-activities__accordion-content\" axAccordionItemContent>\n @for (item of group.items; track item.type) {\n <button\n type=\"button\"\n class=\"axm-workflow-definition-activities__palette-item\"\n [axpWorkflowPaletteItem]=\"item\"\n >\n <span class=\"axm-workflow-definition-activities__palette-item-icon\" aria-hidden=\"true\">\n <i [class]=\"'fa-light ' + item.icon\"></i>\n </span>\n <span class=\"axm-workflow-definition-activities__palette-item-body\">\n <span class=\"axm-workflow-definition-activities__palette-item-title\">{{ item.title }}</span>\n <span class=\"axm-workflow-definition-activities__palette-item-meta\">{{\n item.description\n }}</span>\n </span>\n </button>\n }\n </div>\n </section>\n }\n }\n </div>\n </div>\n </aside>\n }\n\n <div class=\"axm-workflow-definition-activities__main\">\n <section class=\"axm-workflow-definition-activities__canvas\" (contextmenu)=\"onDesignerSurfaceContextMenu($event)\">\n <axp-workflow-designer\n [model]=\"designerModel()\"\n [backgroundPattern]=\"backgroundPattern()\"\n (zoomChange)=\"onDesignerZoomChange($event)\"\n (modelChange)=\"onDesignerModelChange($event)\"\n (activationChange)=\"onDesignerActivationChange($event)\"\n (nodeContextMenu)=\"onDesignerNodeContextMenu($event)\"\n ></axp-workflow-designer>\n <ax-context-menu\n [orientation]=\"'vertical'\"\n [closeOn]=\"'leave'\"\n (onItemClick)=\"handleWorkflowContextMenuItemClick($event)\"\n />\n <axp-layout-floating-zoom-bar\n [zoomLevel]=\"zoomLevel()\"\n (zoomIn)=\"zoomIn()\"\n (zoomOut)=\"zoomOut()\"\n (zoomReset)=\"zoomReset()\"\n />\n </section>\n </div>\n @if (isInfoPanelOpen()) {\n <axp-layout-side-detail-panel\n class=\"axm-workflow-definition-activities__info ax-sticky ax-top-0 ax-z-10 ax-max-h-full ax-flex-none\"\n [header]=\"workflowDetailPanelHeader()\"\n [rows]=\"workflowDetailPanelRows()\"\n [emptyState]=\"workflowDetailPanelEmptyState()\"\n (panelClose)=\"toggleInfoPanel()\"\n />\n }\n</div>\n"],"names":["i5","i6","i7"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-modules-workflow-management-index-BhVZ1Bcw.mjs","sources":["../../../../libs/modules/workflow-management/src/lib/features/workflow-definition-activities-page/workflow-definition-activities-page-component.provider.ts","../../../../libs/modules/workflow-management/src/lib/features/workflow-definition-activities-page/workflow-definition-activities-page.types.ts","../../../../libs/modules/workflow-management/src/lib/features/workflow-definition-activities-page/workflow-definition-activities-page.component.ts","../../../../libs/modules/workflow-management/src/lib/features/workflow-definition-activities-page/workflow-definition-activities-page.component.html"],"sourcesContent":["import { AXPPageComponentDefinition, AXPPageComponentProvider } from '@acorex/platform/layout/components';\nimport { Injectable } from '@angular/core';\nimport { WORKFLOW_DEFINITION_ACTIVITIES_PAGE_COMPONENT_KEY } from './WORKFLOW_DEFINITION_ACTIVITIES_PAGE_COMPONENT_KEY';\n\n//#region ---- Workflow Definition Activities Page Provider ----\n\n@Injectable()\nexport class AXMWorkflowDefinitionActivitiesPageComponentProvider implements AXPPageComponentProvider {\n async components(): Promise<AXPPageComponentDefinition[]> {\n return [\n {\n key: WORKFLOW_DEFINITION_ACTIVITIES_PAGE_COMPONENT_KEY,\n loader: () =>\n import('./workflow-definition-activities-page.component').then(\n (m) => m.AXMWorkflowDefinitionActivitiesPageComponent,\n ),\n },\n ];\n }\n}\n\n//#endregion\n","//#region ---- Types ----\n\nimport type { AXPWorkflowActivityPaletteItem } from '@acorex/modules/platform-management';\nimport type { AXPActivityDefinition, AXPWorkflowGraph } from '@acorex/platform/workflow';\n\nexport interface AXMWorkflowActivityEditorRow {\n id: string;\n name: string;\n inputs: Record<string, unknown>;\n extensions?: Record<string, unknown>;\n}\n\nexport interface AXMWorkflowActivitySelectItem {\n value: string;\n text: string;\n description: string;\n icon: string;\n categoryId: string;\n categoryTitle: string;\n}\n\nexport interface AXMWorkflowActivityPaletteGroup {\n id: string;\n title: string;\n items: AXPWorkflowActivityPaletteItem[];\n}\n\nexport interface AXMWorkflowActivityCatalogRow extends AXPActivityDefinition {\n id: string;\n}\n\nexport interface AXMWorkflowOutcomePortRow {\n port: string;\n label: string;\n}\n\nexport interface AXMWorkflowActivityNodeInfoRow {\n title: string;\n content: string;\n}\n\n/** Persisted coordinates for workflow designer nodes (see {@link AXPWorkflowGraph.designer}). */\nexport interface AXMWorkflowDesignerNodeLayout {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\n//#endregion\n\n//#region ---- Designer layout helpers ----\n\nexport function isDesignerLayoutArranged(graph: AXPWorkflowGraph | null | undefined): boolean {\n return graph?.designer?.layoutArranged === true;\n}\n\n/** True when every activity has persisted designer node coordinates. */\nexport function graphHasPersistedDesignerLayout(graph: AXPWorkflowGraph | null | undefined): boolean {\n const activities = graph?.activities ?? [];\n if (activities.length === 0) {\n return false;\n }\n const nodes = graph?.designer?.nodes;\n if (nodes == null || Object.keys(nodes).length === 0) {\n return false;\n }\n return activities.every((a) => {\n const n = nodes[a.id];\n return n != null && typeof n.x === 'number' && typeof n.y === 'number';\n });\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXAccordionCdkModule } from '@acorex/cdk/accordion';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXFormModule } from '@acorex/components/form';\nimport {\n AXContextMenuComponent,\n AXContextMenuItemsClickEvent,\n AXContextMenuOpeningEvent,\n AXMenuItem,\n AXMenuModule,\n} from '@acorex/components/menu';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport {\n arrangeWorkflowDiagram,\n AXPWorkflowDesignerComponent,\n AXPWorkflowPaletteItemDragDirective,\n type AXPWorkflowActivityPaletteItem,\n type AXPWorkflowDesignerActivation,\n type AXPWorkflowDiagramModel,\n type AXPWorkflowNode,\n} from '@acorex/modules/platform-management';\nimport {\n AXPActionMenuItem,\n AXPDataGenerator,\n AXPExecuteCommand,\n AXPExecuteCommandResult,\n type AXPMultiLanguageString,\n type AXPProperty,\n} from '@acorex/platform/core';\nimport {\n AXPLayoutFloatingZoomBarComponent,\n AXPLayoutSideDetailPanelComponent,\n AXPPropertyViewerChangedEvent,\n AXPPropertyViewerComponent,\n AXPPropertyViewerTab,\n buildPropertyViewerTabsFromProperties,\n type AXPLayoutSideDetailPanelEmptyState,\n type AXPLayoutSideDetailPanelHeader,\n type AXPLayoutSideDetailPanelRow,\n} from '@acorex/platform/layout/components';\nimport { AXPEntityService } from '@acorex/platform/layout/entity';\nimport { AXPPageLayoutBase, AXPPageLayoutBaseComponent } from '@acorex/platform/layout/views';\nimport { mapAXPPropertyToWidgetProperty, type AXPWidgetPropertyGroup } from '@acorex/platform/layout/widget-core';\nimport { AXPCommandService } from '@acorex/platform/runtime';\nimport {\n AXPActivityDefinitionService,\n type AXPActivityDefinition,\n type AXPActivityDefinitionCategoryRef,\n type AXPActivityDefinitionQueryResult,\n type AXPConnection,\n type AXPWorkflowActivityInstance,\n type AXPWorkflowGraph,\n} from '@acorex/platform/workflow';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n inject,\n input,\n NgZone,\n signal,\n untracked,\n viewChild,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { cloneDeep, isEqual } from 'lodash-es';\nimport { RootConfig } from '../../const';\nimport {\n SaveWorkflowDefinitionActivitiesInput,\n WORKFLOW_DEFINITION_ACTIVITIES_SAVE_COMMAND,\n} from '../../entities/workflow-definition/commands/save-workflow-definition-activities.command';\nimport {\n graphHasPersistedDesignerLayout,\n isDesignerLayoutArranged,\n type AXMWorkflowActivityCatalogRow,\n type AXMWorkflowActivityEditorRow,\n type AXMWorkflowActivityNodeInfoRow,\n type AXMWorkflowActivityPaletteGroup,\n type AXMWorkflowActivitySelectItem,\n type AXMWorkflowDesignerNodeLayout,\n type AXMWorkflowOutcomePortRow,\n} from './workflow-definition-activities-page.types';\n\n//#endregion\n\n//#region ---- Constants ----\n\nconst DEFAULT_NODE_W = 240;\nconst DEFAULT_NODE_H = 96;\nconst DESIGNER_GRID_SIZE = 20;\n/** Debounce window before persisting designer edits (drag emits many modelChange events). */\nconst AUTO_SAVE_DEBOUNCE_MS = 500;\n\nconst DISCARD_COMMAND = 'WorkflowManagement.WorkflowDefinition:Activities:Discard';\nconst ADD_STEP_COMMAND = 'WorkflowManagement.WorkflowDefinition:Activities:AddStep';\nconst ARRANGE_LAYOUT_COMMAND = 'WorkflowManagement.WorkflowDefinition:Activities:ArrangeLayout';\n\nconst TOGGLE_DETAIL_PANEL_ACTION_ID = 'workflow-management.activities.toggle-detail-panel';\n\nconst ADD_ACTIVITY_ACTION_ID = 'workflow-management.activities.add-activity';\n\nconst TOGGLE_DETAIL_PANEL_ACTION_TITLE_KEY =\n '@workflow-management:workflow-definitions.entities.workflow-definition.pages.activities.node-actions.toggle-detail-panel';\n\nconst ADD_ACTIVITY_ACTION_TITLE_KEY =\n '@workflow-management:workflow-definitions.entities.workflow-definition.pages.activities.node-actions.add-activity';\n\nconst ARRANGE_LAYOUT_ACTION_TITLE_KEY =\n '@workflow-management:workflow-definitions.entities.workflow-definition.pages.activities.node-actions.arrange-layout';\n\n//#endregion\n\n//#region ---- Helpers ----\n\nfunction normalizeActivityDefinitionInputs(raw: unknown): AXPProperty[] {\n if (Array.isArray(raw)) {\n return raw as AXPProperty[];\n }\n if (typeof raw === 'string' && raw.trim().length > 0) {\n try {\n const parsed = JSON.parse(raw) as unknown;\n return Array.isArray(parsed) ? (parsed as AXPProperty[]) : [];\n } catch {\n return [];\n }\n }\n return [];\n}\n\nfunction portKey(port: string | null | undefined): string {\n return port == null || port === '' ? 'Done' : port;\n}\n\nfunction rowFromInstance(a: AXPWorkflowActivityInstance): AXMWorkflowActivityEditorRow {\n const inputs =\n a.inputs != null && typeof a.inputs === 'object' && !Array.isArray(a.inputs)\n ? { ...(a.inputs as Record<string, unknown>) }\n : {};\n const extRaw = a.extensions;\n const extensions =\n extRaw != null && typeof extRaw === 'object' && !Array.isArray(extRaw)\n ? { ...(extRaw as Record<string, unknown>) }\n : undefined;\n return {\n id: a.id,\n name: typeof a.name === 'string' ? a.name : '',\n inputs,\n ...(extensions != null && Object.keys(extensions).length > 0 ? { extensions } : {}),\n };\n}\n\nfunction instanceFromRow(r: AXMWorkflowActivityEditorRow): AXPWorkflowActivityInstance {\n const out: AXPWorkflowActivityInstance = { id: r.id, name: r.name, inputs: { ...r.inputs } };\n if (r.extensions != null && Object.keys(r.extensions).length > 0) {\n out.extensions = { ...r.extensions };\n }\n return out;\n}\n\nfunction emptyGraph(): AXPWorkflowGraph {\n return { startActivityId: '', activities: [], connections: [] };\n}\n\nfunction graphFingerprint(g: AXPWorkflowGraph | null): unknown {\n if (g == null) {\n return null;\n }\n return {\n startActivityId: g.startActivityId,\n activities: g.activities,\n connections: g.connections,\n designer: g.designer,\n };\n}\n\n//#endregion\n\n//#region ---- Component ----\n\n@Component({\n selector: 'axm-workflow-definition-activities-page',\n imports: [\n CommonModule,\n FormsModule,\n AXAccordionCdkModule,\n AXButtonModule,\n AXMenuModule,\n AXDecoratorModule,\n AXDropdownModule,\n AXFormModule,\n AXSearchBoxModule,\n AXSelectBoxModule,\n AXTranslationModule,\n AXPLayoutFloatingZoomBarComponent,\n AXPLayoutSideDetailPanelComponent,\n AXPWorkflowDesignerComponent,\n AXPWorkflowPaletteItemDragDirective,\n ],\n host: {\n style: 'display: block; width: 100%; height: 100%;',\n },\n templateUrl: './workflow-definition-activities-page.component.html',\n styleUrl: './workflow-definition-activities-page.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: AXPPageLayoutBase, useExisting: AXMWorkflowDefinitionActivitiesPageComponent }],\n})\nexport class AXMWorkflowDefinitionActivitiesPageComponent extends AXPPageLayoutBaseComponent {\n //#region ---- Inputs ----\n\n rootContext = input<Record<string, unknown>>();\n pageConfig = input<Record<string, unknown>>();\n\n //#endregion\n\n //#region ---- Services ----\n\n private readonly commandService = inject(AXPCommandService);\n private readonly entityService = inject(AXPEntityService);\n private readonly activityDefService = inject(AXPActivityDefinitionService);\n private readonly mlResolver = inject(AXTranslationService);\n private readonly hostPageLayout = inject(AXPPageLayoutBase, { optional: true, skipSelf: true });\n private readonly ngZone = inject(NgZone);\n private readonly destroyRef = inject(DestroyRef);\n\n //#endregion\n\n //#region ---- Auto-save ----\n\n private autoSaveTimer: ReturnType<typeof setTimeout> | null = null;\n private autoSaveInFlight = false;\n private autoSavePending = false;\n private suppressAutoSave = false;\n\n //#region ---- View refs ----\n\n private readonly propertyViewerRef = viewChild(AXPPropertyViewerComponent);\n private readonly workflowDesignerRef = viewChild(AXPWorkflowDesignerComponent);\n private readonly contextMenu = viewChild(AXContextMenuComponent);\n\n //#endregion\n\n //#region ---- State ----\n\n private readonly baselineGraph = signal<AXPWorkflowGraph | null>(null);\n /** Persisted on `graph.designer.layoutArranged` after the first auto-arrange (or layout migration). */\n private readonly layoutArrangedFlag = signal(false);\n private initialLayoutArrangeInFlight = false;\n private readonly activityCatalogLoaded = signal(false);\n private readonly activityDefCache = signal<Record<string, AXPActivityDefinition>>({});\n\n protected readonly activitySelectItems = signal<AXMWorkflowActivitySelectItem[]>([]);\n protected readonly activities = signal<AXMWorkflowActivityEditorRow[]>([]);\n protected readonly connections = signal<AXPConnection[]>([]);\n protected readonly startActivityId = signal('');\n protected readonly selectedRowId = signal<string | null>(null);\n protected readonly viewerTabs = signal<AXPPropertyViewerTab[]>([]);\n protected readonly selectedActivityOutcomeRows = signal<AXMWorkflowOutcomePortRow[]>([]);\n protected readonly isDirty = signal(false);\n protected readonly backgroundPattern = signal<'line' | 'dots'>('dots');\n protected readonly zoomLevel = signal(100);\n protected readonly isFullscreen = signal(false);\n protected readonly isInfoPanelOpen = signal(false);\n protected readonly isPaletteOpen = signal(false);\n protected readonly paletteSearchTerm = signal('');\n\n /** Canvas layout keyed by activity instance id; kept in sync with designer `modelChange` and saved on `graph.designer`. */\n private readonly designerLayout = signal<Record<string, AXMWorkflowDesignerNodeLayout>>({});\n\n //#endregion\n\n //#region ---- Computed ----\n\n private readonly context = computed(() => this.rootContext() ?? {});\n\n protected readonly selectedRow = computed(() => this.activities().find((x) => x.id === this.selectedRowId()) ?? null);\n\n protected readonly startActivityItems = computed(() =>\n this.activities().map((r) => ({ value: r.id, text: this.formatActivityStepLabel(r) })),\n );\n\n protected readonly activitySelectOptions = computed<AXMWorkflowActivitySelectItem[]>(() => {\n const graphTitleByName = new Map<string, string>();\n for (const r of this.activities()) {\n const n = r.name?.trim();\n if (!n) {\n continue;\n }\n const ext = r.extensions;\n const dt = ext && typeof ext['displayTitle'] === 'string' ? ext['displayTitle'].trim() : '';\n if (dt) {\n graphTitleByName.set(n, dt);\n }\n }\n const byValue = new Map<string, AXMWorkflowActivitySelectItem>();\n for (const x of this.activitySelectItems()) {\n byValue.set(x.value, {\n value: x.value,\n description: x.description,\n icon: x.icon,\n text: graphTitleByName.get(x.value) ?? x.text,\n categoryId: x.categoryId,\n categoryTitle: x.categoryTitle,\n });\n }\n for (const r of this.activities()) {\n const n = r.name?.trim();\n if (!n || byValue.has(n)) {\n continue;\n }\n byValue.set(n, {\n value: n,\n description: '',\n icon: '',\n text: graphTitleByName.get(n) ?? n,\n categoryId: 'uncategorized',\n categoryTitle: 'Uncategorized',\n });\n }\n return [...byValue.values()].sort((a, b) => a.text.localeCompare(b.text));\n });\n\n protected readonly paletteItems = computed<AXPWorkflowActivityPaletteItem[]>(() =>\n this.activitySelectOptions().map((x) => ({\n type: x.value,\n title: x.text,\n shape: 'rounded-rectangle',\n size: { width: 230, height: 90 },\n inboundPorts: [{ side: 'left', ratio: 0.5, key: 'in', label: 'in' }],\n outboundPorts: [{ side: 'right', ratio: 0.5, key: 'Done', label: 'Done' }],\n data: { category: 'activity-definition' },\n })),\n );\n\n protected readonly paletteGroups = computed<AXMWorkflowActivityPaletteGroup[]>(() => {\n const groupsById = new Map<string, AXMWorkflowActivityPaletteGroup>();\n for (const item of this.activitySelectOptions()) {\n const groupId = item.categoryId.trim() || 'uncategorized';\n const groupTitle = item.categoryTitle.trim() || 'Uncategorized';\n const existing = groupsById.get(groupId);\n const paletteItem: AXPWorkflowActivityPaletteItem = {\n type: item.value,\n title: item.text,\n description: item.description,\n icon: item.icon,\n shape: 'rounded-rectangle',\n size: { width: 230, height: 90 },\n inboundPorts: [{ side: 'left', ratio: 0.5, key: 'in', label: 'in' }],\n outboundPorts: [{ side: 'right', ratio: 0.5, key: 'Done', label: 'Done' }],\n data: { category: 'activity-definition' },\n };\n if (existing) {\n existing.items.push(paletteItem);\n continue;\n }\n groupsById.set(groupId, { id: groupId, title: groupTitle, items: [paletteItem] });\n }\n return [...groupsById.values()]\n .map((group) => ({\n ...group,\n items: [...group.items].sort((a, b) => a.title.localeCompare(b.title)),\n }))\n .sort((a, b) => a.title.localeCompare(b.title));\n });\n\n protected readonly filteredPaletteGroups = computed<AXMWorkflowActivityPaletteGroup[]>(() => {\n const searchTerm = this.paletteSearchTerm().trim().toLowerCase();\n const groups = this.paletteGroups();\n if (!searchTerm) {\n return groups;\n }\n return groups\n .map((group) => {\n const items = group.items.filter((item) => {\n const title = item.title?.toLowerCase() ?? '';\n const description = item.description?.toLowerCase() ?? '';\n return title.includes(searchTerm) || description.includes(searchTerm);\n });\n return { ...group, items };\n })\n .filter((group) => group.items.length > 0);\n });\n\n protected readonly designerModel = computed<AXPWorkflowDiagramModel>(() => {\n const rows = this.activities();\n const conns = this.connections();\n const cache = this.activityDefCache();\n const layout = this.designerLayout();\n const nodes = rows.map((r, i) => {\n const def = r.name ? cache[r.name] : undefined;\n const outcomes = this.buildOutcomeRows(r.id, r, def);\n const L = layout[r.id];\n const pos = L ? { x: L.x, y: L.y } : this.gridFallbackPosition(i);\n const size = L ? { width: L.width, height: L.height } : { width: DEFAULT_NODE_W, height: DEFAULT_NODE_H };\n return {\n id: r.id,\n type: r.name,\n title: this.resolveNodeTitle(r),\n shape: 'rounded-rectangle' as const,\n size,\n position: pos,\n color: this.startActivityId() === r.id ? ('success' as const) : ('secondary' as const),\n inboundPorts: [\n { id: `${r.id}:in`, kind: 'inbound' as const, side: 'left' as const, ratio: 0.5, key: 'in', label: 'in' },\n ],\n outboundPorts: outcomes.map((o, oi, arr) => ({\n id: `${r.id}:out:${o.port}`,\n kind: 'outbound' as const,\n side: 'right' as const,\n ratio: arr.length === 1 ? 0.5 : (oi + 1) / (arr.length + 1),\n key: o.port,\n label: o.label,\n })),\n };\n });\n const outPortByKey = new Map<string, string>();\n for (const n of nodes) {\n for (const p of n.outboundPorts) {\n outPortByKey.set(`${n.id}:${portKey(p.key)}`, p.id);\n }\n }\n const connectors = conns\n .map((c, i) => {\n const sourcePortKey = portKey(c.source.port);\n const sourcePortId = outPortByKey.get(`${c.source.activtyName}:${sourcePortKey}`);\n if (!sourcePortId) {\n return null;\n }\n return {\n id: `c-${i}-${c.source.activtyName}-${c.target.activtyName}-${sourcePortKey}`,\n sourceNodeId: c.source.activtyName,\n sourcePortId,\n targetNodeId: c.target.activtyName,\n targetPortId: `${c.target.activtyName}:in`,\n };\n })\n .filter((x): x is NonNullable<typeof x> => x != null);\n return { nodes, connectors };\n });\n\n protected readonly selectedNodeInfoRows = computed<AXMWorkflowActivityNodeInfoRow[]>(() => {\n const selected = this.selectedRow();\n if (!selected) {\n return [];\n }\n const selectOption = this.activitySelectOptions().find((x) => x.value === selected.name);\n return [\n { title: 'Title', content: this.resolveNodeTitle(selected) || '---' },\n { title: 'Type', content: selected.name || '---' },\n { title: 'Id', content: selected.id || '---' },\n { title: 'Category', content: selectOption?.categoryTitle || '---' },\n { title: 'Inputs', content: `${Object.keys(selected.inputs ?? {}).length}` },\n { title: 'Outcomes', content: `${this.selectedActivityOutcomeRows().length}` },\n ];\n });\n\n protected readonly workflowDetailPanelCopy = signal({\n panelTitle: 'Activity details',\n emptyMessage: 'Select a node to see details.',\n });\n\n protected readonly workflowDetailPanelHeader = computed((): AXPLayoutSideDetailPanelHeader | null => {\n const selected = this.selectedRow();\n if (selected == null) {\n return null;\n }\n const selectOption = this.activitySelectOptions().find((x) => x.value === selected.name);\n const iconGlyph = selectOption?.icon?.trim();\n return {\n primaryTitle: this.resolveNodeTitle(selected) || '---',\n icon: iconGlyph ? { iconClass: `fa-light fa-lg fa-fw ${iconGlyph}` } : undefined,\n };\n });\n\n protected readonly workflowDetailPanelRows = computed((): AXPLayoutSideDetailPanelRow[] => {\n if (this.selectedRow() == null) {\n return [];\n }\n return this.selectedNodeInfoRows().map((row) => ({\n label: row.title,\n value: row.content,\n }));\n });\n\n protected readonly workflowDetailPanelEmptyState = computed((): AXPLayoutSideDetailPanelEmptyState | null => {\n if (this.selectedRow() != null) {\n return null;\n }\n const copy = this.workflowDetailPanelCopy();\n return {\n primaryTitle: copy.panelTitle,\n message: copy.emptyMessage,\n icon: { iconClass: 'fa-solid fa-lg fa-fw fa-diagram-project' },\n };\n });\n\n //#endregion\n\n //#region ---- Lifecycle ----\n\n constructor() {\n super();\n let previousRootId: unknown = undefined;\n effect(() => {\n const ctx = this.rootContext();\n const currentId = ctx != null && typeof ctx === 'object' ? ctx['id'] : undefined;\n if (currentId !== previousRootId) {\n previousRootId = currentId;\n untracked(() => this.hydrateFromServerContext(ctx as Record<string, unknown> | undefined));\n }\n });\n effect(() => {\n const ctx = this.context();\n const id = typeof ctx['id'] === 'string' ? ctx['id'] : undefined;\n const arranged = this.layoutArrangedFlag();\n const activityCount = this.activities().length;\n if (!id || arranged || activityCount === 0) {\n return;\n }\n untracked(() => void this.maybeApplyInitialArrangedLayout());\n });\n this.destroyRef.onDestroy(() => this.clearAutoSaveTimer());\n }\n\n //#endregion\n\n //#region ---- Page chrome / commands ----\n\n // override async getPrimaryMenuItems(): Promise<AXPActionMenuItem[]> {\n // const addTitle =\n // (await this.translateService.translateAsync(\n // '@workflow-management:workflow-definitions.entities.workflow-definition.pages.activities.add-step',\n // )) || 'Add step';\n // const discardTitle = (await this.translateService.translateAsync('@general:actions.discard.title')) || 'Discard';\n // const saveTitle = (await this.translateService.translateAsync('@general:actions.save.title')) || 'Save';\n // const addAction: AXPLayoutDetailsViewAction = {\n // title: addTitle,\n // icon: 'fa-light fa-plus',\n // zone: 'header',\n // priority: 'primary',\n // color: 'primary',\n // command: { name: ADD_STEP_COMMAND, options: {} },\n // };\n // const discardAction: AXPLayoutDetailsViewAction = {\n // title: discardTitle,\n // icon: 'fa-light fa-rotate-left',\n // zone: 'footer',\n // priority: 'secondary',\n // color: 'default',\n // visible: this.isDirty(),\n // command: { name: DISCARD_COMMAND, options: {} },\n // };\n // const saveAction: AXPLayoutDetailsViewAction = {\n // title: saveTitle,\n // icon: 'fa-light fa-floppy-disk',\n // zone: 'footer',\n // priority: 'primary',\n // color: 'primary',\n // visible: this.isDirty(),\n // command: { name: WORKFLOW_DEFINITION_ACTIVITIES_SAVE_COMMAND, options: {} },\n // };\n // return [addAction, discardAction, saveAction];\n // }\n\n override async getSecondaryMenuItems(): Promise<AXPActionMenuItem[]> {\n const title = await this.mlResolver.translateAsync(ARRANGE_LAYOUT_ACTION_TITLE_KEY);\n return [\n {\n title,\n icon: 'fa-light fa-sitemap',\n command: { name: ARRANGE_LAYOUT_COMMAND, options: {} },\n disabled: this.activities().length === 0,\n },\n ];\n }\n\n override execute(command: AXPExecuteCommand): void | Promise<void> {\n if (command.name === DISCARD_COMMAND) {\n this.applyBaselineGraph();\n return;\n }\n if (command.name === ADD_STEP_COMMAND) {\n this.addStep();\n return;\n }\n if (command.name === ARRANGE_LAYOUT_COMMAND) {\n this.applyArrangedLayout();\n return;\n }\n if (command.name === WORKFLOW_DEFINITION_ACTIVITIES_SAVE_COMMAND) {\n return this.handleSaveExecute() as unknown as Promise<void>;\n }\n }\n\n //#endregion\n\n //#region ---- Designer handlers ----\n\n protected onDesignerModelChange(model: AXPWorkflowDiagramModel): void {\n const previousNodeCount = this.activities().length;\n const oldById = new Map(this.activities().map((x) => [x.id, x]));\n const nextRows: AXMWorkflowActivityEditorRow[] = model.nodes.map((n) => {\n const prev = oldById.get(n.id);\n const title = n.title?.trim();\n const extensions = { ...(prev?.extensions ?? {}) };\n if (title) {\n extensions['displayTitle'] = title;\n } else {\n delete extensions['displayTitle'];\n }\n return {\n id: n.id,\n name: n.type?.trim() ? n.type : (prev?.name ?? ''),\n inputs: { ...(prev?.inputs ?? {}) },\n ...(Object.keys(extensions).length > 0 ? { extensions } : {}),\n };\n });\n const outgoingByPortId = new Map<string, string>();\n for (const n of model.nodes) {\n for (const p of n.outboundPorts) {\n outgoingByPortId.set(p.id, portKey(p.key));\n }\n }\n const nextConnections: AXPConnection[] = [];\n for (const c of model.connectors) {\n const pk = outgoingByPortId.get(c.sourcePortId);\n if (!pk) {\n continue;\n }\n nextConnections.push({\n source: { activtyName: c.sourceNodeId, port: pk === 'Done' ? null : pk },\n target: { activtyName: c.targetNodeId, port: null },\n });\n }\n this.activities.set(nextRows);\n this.connections.set(nextConnections);\n if (!nextRows.some((x) => x.id === this.startActivityId())) {\n this.startActivityId.set(nextRows[0]?.id ?? '');\n }\n if (!nextRows.some((x) => x.id === this.selectedRowId())) {\n this.selectedRowId.set(nextRows[0]?.id ?? null);\n }\n for (const r of nextRows) {\n void this.ensureDefinition(r.name);\n }\n this.syncDesignerLayoutFromModel(model);\n void this.refreshPropertyViewer();\n this.recomputeDirty();\n if (nextRows.length > previousNodeCount) {\n this.closePalette();\n }\n }\n\n protected onDesignerActivationChange(a: AXPWorkflowDesignerActivation | null): void {\n if (a?.kind !== 'node') {\n return;\n }\n this.selectedRowId.set(a.id);\n void this.refreshPropertyViewer();\n }\n\n //#region ---- Context Menu ----\n\n protected onDesignerNodeContextMenu(payload: { node: AXPWorkflowNode; event: MouseEvent }): void {\n const anchor =\n payload.event.currentTarget instanceof HTMLElement\n ? payload.event.currentTarget\n : payload.event.target instanceof HTMLElement\n ? payload.event.target.closest('.axp-workflow-designer__node')\n : null;\n if (!(anchor instanceof HTMLElement)) {\n return;\n }\n void this.openWorkflowContextMenuAt(payload.event.clientX, payload.event.clientY, anchor, [\n ADD_ACTIVITY_ACTION_ID,\n TOGGLE_DETAIL_PANEL_ACTION_ID,\n ]);\n }\n\n protected onDesignerSurfaceContextMenu(event: MouseEvent): void {\n if (event.target instanceof HTMLElement && event.target.closest('.axp-workflow-designer__node')) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n const anchor =\n event.target instanceof HTMLElement\n ? (event.target.closest('.axp-workflow-designer__surface') ?? event.target)\n : null;\n if (!(anchor instanceof HTMLElement)) {\n return;\n }\n void this.openWorkflowContextMenuAt(event.clientX, event.clientY, anchor, [ADD_ACTIVITY_ACTION_ID]);\n }\n\n protected handleWorkflowContextMenuItemClick(e: AXContextMenuItemsClickEvent): void {\n if (e.item.name === TOGGLE_DETAIL_PANEL_ACTION_ID) {\n this.toggleInfoPanel();\n return;\n }\n if (e.item.name === ADD_ACTIVITY_ACTION_ID) {\n this.openPalette();\n }\n }\n\n protected openPalette(): void {\n this.isPaletteOpen.set(true);\n this.paletteSearchTerm.set('');\n }\n\n protected closePalette(): void {\n this.isPaletteOpen.set(false);\n }\n\n private async openWorkflowContextMenuAt(\n clientX: number,\n clientY: number,\n targetElement: HTMLElement,\n actionIds: string[],\n ): Promise<void> {\n const items: AXMenuItem[] = [];\n for (const actionId of actionIds) {\n const item = await this.buildWorkflowContextMenuItem(actionId);\n if (item != null) {\n items.push(item);\n }\n }\n if (items.length === 0) {\n return;\n }\n const menu = this.contextMenu();\n if (menu == null) {\n return;\n }\n this.ngZone.run(() => {\n const openingEvent = {\n sender: menu,\n canceled: false,\n targetElement,\n items,\n } as AXContextMenuOpeningEvent;\n menu.showAt({ x: clientX, y: clientY }, targetElement, openingEvent);\n });\n }\n\n private async buildWorkflowContextMenuItem(actionId: string): Promise<AXMenuItem | null> {\n if (actionId === ADD_ACTIVITY_ACTION_ID) {\n return {\n name: ADD_ACTIVITY_ACTION_ID,\n text: (await this.translateService.translateAsync(ADD_ACTIVITY_ACTION_TITLE_KEY)) ?? 'Add Activity',\n icon: 'fa-light fa-plus',\n };\n }\n if (actionId === TOGGLE_DETAIL_PANEL_ACTION_ID) {\n return {\n name: TOGGLE_DETAIL_PANEL_ACTION_ID,\n text:\n (await this.translateService.translateAsync(TOGGLE_DETAIL_PANEL_ACTION_TITLE_KEY)) ?? 'Toggle Details Panel',\n icon: 'fa-light fa-sidebar',\n };\n }\n return null;\n }\n\n //#endregion\n\n protected onBackgroundPatternChange(event: Event): void {\n const value = (event.target as HTMLSelectElement).value;\n if (value === 'line' || value === 'dots') {\n this.backgroundPattern.set(value);\n }\n }\n\n protected onDesignerZoomChange(value: number): void {\n this.zoomLevel.set(this.clampZoomLevel(value));\n }\n\n protected onPaletteSearchChange(event: { value?: string | null } | null): void {\n this.paletteSearchTerm.set(event?.value ?? '');\n }\n\n protected zoomIn(): void {\n this.workflowDesignerRef()?.zoomIn();\n this.zoomLevel.set(this.clampZoomLevel(this.workflowDesignerRef()?.getZoomLevel() ?? this.zoomLevel()));\n }\n\n protected zoomOut(): void {\n this.workflowDesignerRef()?.zoomOut();\n this.zoomLevel.set(this.clampZoomLevel(this.workflowDesignerRef()?.getZoomLevel() ?? this.zoomLevel()));\n }\n\n protected zoomReset(): void {\n this.workflowDesignerRef()?.zoomReset();\n this.zoomLevel.set(this.clampZoomLevel(this.workflowDesignerRef()?.getZoomLevel() ?? 100));\n }\n\n protected toggleFullscreen(): void {\n const next = !this.isFullscreen();\n this.isFullscreen.set(next);\n const doc = globalThis.document;\n if (!doc) {\n return;\n }\n if (next) {\n void doc.documentElement.requestFullscreen?.();\n return;\n }\n void doc.exitFullscreen?.();\n }\n\n protected toggleInfoPanel(): void {\n this.isInfoPanelOpen.update((open) => !open);\n }\n\n protected onStartActivityChange(event: { value?: string | null }): void {\n this.startActivityId.set(event.value != null ? String(event.value) : '');\n this.recomputeDirty();\n }\n\n protected onSelectedActivityTypeChange(event: { value?: string | null }): void {\n const row = this.selectedRow();\n if (!row) {\n return;\n }\n const name = event.value != null ? String(event.value) : '';\n const rowId = row.id;\n this.activities.update((rows) =>\n rows.map((r) => (r.id !== rowId ? r : { ...r, name, inputs: {}, extensions: undefined })),\n );\n void this.ensureDefinition(name);\n void this.activityDefService.getActivityByName(name).then((def) => {\n const rowNow = this.activities().find((r) => r.id === rowId) ?? null;\n const allowed = new Set(this.buildOutcomeRows(rowId, rowNow, def).map((o) => o.port));\n this.pruneOutgoingConnections(rowId, allowed);\n void this.refreshPropertyViewer();\n this.recomputeDirty();\n });\n void this.refreshPropertyViewer();\n this.recomputeDirty();\n }\n\n protected onViewerChanged(ev: AXPPropertyViewerChangedEvent): void {\n if (ev.mode === 'init') {\n return;\n }\n const id = this.selectedRowId();\n if (id == null || ev.values == null) {\n return;\n }\n const inputs = (ev.values as { inputs?: Record<string, unknown> }).inputs ?? {};\n this.activities.update((rows) => rows.map((r) => (r.id === id ? { ...r, inputs: { ...inputs } } : r)));\n const sel = this.activities().find((r) => r.id === id);\n if (sel?.name?.trim()) {\n void this.activityDefService.getActivityByName(sel.name).then((def) => {\n this.selectedActivityOutcomeRows.set(this.buildOutcomeRows(sel.id, sel, def));\n });\n }\n this.recomputeDirty();\n }\n\n //#endregion\n\n //#region ---- Graph persistence ----\n\n private gridFallbackPosition(index: number): { x: number; y: number } {\n return { x: 80 + (index % 4) * 320, y: 80 + Math.floor(index / 4) * 190 };\n }\n\n private clampZoomLevel(value: number): number {\n if (Number.isNaN(value)) {\n return 100;\n }\n return Math.max(20, Math.min(300, Math.round(value)));\n }\n\n private initDesignerLayoutFromGraph(graph: AXPWorkflowGraph | null | undefined): void {\n const activities = graph?.activities ?? [];\n const raw = graph?.designer?.nodes;\n const next: Record<string, AXMWorkflowDesignerNodeLayout> = {};\n if (raw != null) {\n for (const [id, v] of Object.entries(raw)) {\n if (v != null && typeof v.x === 'number' && typeof v.y === 'number') {\n next[id] = {\n x: v.x,\n y: v.y,\n width: typeof v.width === 'number' && v.width > 0 ? v.width : DEFAULT_NODE_W,\n height: typeof v.height === 'number' && v.height > 0 ? v.height : DEFAULT_NODE_H,\n };\n }\n }\n }\n activities.forEach((a, i) => {\n if (!next[a.id]) {\n const p = this.gridFallbackPosition(i);\n next[a.id] = { x: p.x, y: p.y, width: DEFAULT_NODE_W, height: DEFAULT_NODE_H };\n }\n });\n this.designerLayout.set(next);\n }\n\n private syncDesignerLayoutFromModel(model: AXPWorkflowDiagramModel): void {\n const next: Record<string, AXMWorkflowDesignerNodeLayout> = {};\n for (const n of model.nodes) {\n next[n.id] = {\n x: n.position.x,\n y: n.position.y,\n width: n.size.width > 0 ? n.size.width : DEFAULT_NODE_W,\n height: n.size.height > 0 ? n.size.height : DEFAULT_NODE_H,\n };\n }\n this.designerLayout.set(next);\n }\n\n /** Updates persisted node coordinates only (no activity/connection graph rewrite). */\n private applyArrangedLayout(): void {\n if (this.activities().length === 0) {\n return;\n }\n const startId = this.startActivityId().trim();\n const arranged = arrangeWorkflowDiagram(this.designerModel(), {\n startNodeId: startId.length > 0 ? startId : undefined,\n gridSize: DESIGNER_GRID_SIZE,\n });\n this.syncDesignerLayoutFromModel(arranged);\n this.layoutArrangedFlag.set(true);\n this.recomputeDirty();\n }\n\n private buildDesignerNodesForSave(): NonNullable<AXPWorkflowGraph['designer']>['nodes'] {\n const layout = this.designerLayout();\n const out: NonNullable<AXPWorkflowGraph['designer']>['nodes'] = {};\n for (const [id, L] of Object.entries(layout)) {\n out[id] = {\n x: L.x,\n y: L.y,\n nodeId: id,\n width: L.width,\n height: L.height,\n };\n }\n return out;\n }\n\n private buildCurrentGraph(): AXPWorkflowGraph {\n const base = this.baselineGraph();\n const layoutArranged = this.layoutArrangedFlag() || isDesignerLayoutArranged(base ?? undefined);\n return {\n startActivityId: this.startActivityId(),\n activities: this.activities().map((r) => instanceFromRow(r)),\n connections: cloneDeep(this.connections()),\n designer: {\n ...base?.designer,\n layoutArranged: layoutArranged ? true : undefined,\n nodes: this.buildDesignerNodesForSave(),\n },\n };\n }\n\n private recomputeDirty(): void {\n this.isDirty.set(!isEqual(graphFingerprint(this.buildCurrentGraph()), graphFingerprint(this.baselineGraph())));\n this.recompute();\n this.scheduleAutoSave();\n }\n\n private clearAutoSaveTimer(): void {\n if (this.autoSaveTimer != null) {\n clearTimeout(this.autoSaveTimer);\n this.autoSaveTimer = null;\n }\n }\n\n /** Debounced persist for designer moves, connections, arrange, and property edits. */\n private scheduleAutoSave(): void {\n if (this.suppressAutoSave || !this.isDirty()) {\n return;\n }\n const ctx = this.context();\n const id = typeof ctx['id'] === 'string' ? ctx['id'] : undefined;\n if (!id) {\n return;\n }\n this.clearAutoSaveTimer();\n this.autoSaveTimer = setTimeout(() => {\n this.autoSaveTimer = null;\n void this.runAutoSave();\n }, AUTO_SAVE_DEBOUNCE_MS);\n }\n\n private async runAutoSave(): Promise<void> {\n if (this.suppressAutoSave || !this.isDirty()) {\n return;\n }\n if (this.autoSaveInFlight) {\n this.autoSavePending = true;\n return;\n }\n this.autoSaveInFlight = true;\n try {\n await this.handleSaveExecute({ silent: true });\n } finally {\n this.autoSaveInFlight = false;\n if (this.autoSavePending) {\n this.autoSavePending = false;\n if (this.isDirty()) {\n this.scheduleAutoSave();\n }\n }\n }\n }\n\n private async handleSaveExecute(options?: { silent?: boolean }): Promise<AXPExecuteCommandResult> {\n this.clearAutoSaveTimer();\n const ctx = this.context();\n const id = typeof ctx['id'] === 'string' ? ctx['id'] : undefined;\n if (!id) {\n return {\n success: false,\n message: { text: await this.translateService.translateAsync('@general:messages.entity.invalid-data') },\n };\n }\n const graph = this.buildCurrentGraph();\n const result = await this.commandService.execute<SaveWorkflowDefinitionActivitiesInput, unknown>(\n WORKFLOW_DEFINITION_ACTIVITIES_SAVE_COMMAND,\n { id, graph, silent: options?.silent },\n );\n const execResult = (result ?? { success: false }) as AXPExecuteCommandResult;\n if (execResult.success) {\n this.baselineGraph.set(cloneDeep(graph));\n this.isDirty.set(false);\n if (!options?.silent) {\n this.recompute();\n }\n }\n return execResult;\n }\n\n private hydrateFromServerContext(ctx: Record<string, unknown> | undefined): void {\n this.clearAutoSaveTimer();\n this.suppressAutoSave = true;\n try {\n const graph = (ctx?.['graph'] as AXPWorkflowGraph | undefined) ?? emptyGraph();\n this.baselineGraph.set(cloneDeep(graph));\n this.layoutArrangedFlag.set(isDesignerLayoutArranged(graph));\n this.initDesignerLayoutFromGraph(graph);\n this.activities.set((graph.activities ?? []).map((a) => rowFromInstance(a)));\n this.connections.set(cloneDeep(graph.connections ?? []));\n let start = graph.startActivityId ?? '';\n const rows = this.activities();\n if (!start && rows.length > 0) {\n start = rows[0]!.id;\n }\n this.startActivityId.set(start);\n this.selectedRowId.set(rows[0]?.id ?? null);\n this.isDirty.set(false);\n void this.ensureActivityCatalogLoaded();\n for (const r of rows) {\n void this.ensureDefinition(r.name);\n }\n void this.refreshPropertyViewer();\n } finally {\n this.suppressAutoSave = false;\n }\n }\n\n /**\n * Runs auto-arrange once per workflow definition, then persists `graph.designer.layoutArranged`.\n * Definitions that already have saved node positions are marked arranged without moving nodes.\n */\n private async maybeApplyInitialArrangedLayout(): Promise<void> {\n if (this.layoutArrangedFlag() || this.initialLayoutArrangeInFlight) {\n return;\n }\n const ctx = this.context();\n const id = typeof ctx['id'] === 'string' ? ctx['id'] : undefined;\n if (!id) {\n return;\n }\n if (this.activities().length === 0) {\n return;\n }\n\n this.initialLayoutArrangeInFlight = true;\n this.suppressAutoSave = true;\n try {\n const base = this.baselineGraph();\n if (graphHasPersistedDesignerLayout(base ?? undefined)) {\n this.layoutArrangedFlag.set(true);\n this.recomputeDirty();\n if (this.isDirty()) {\n await this.handleSaveExecute({ silent: true });\n }\n return;\n }\n\n this.applyArrangedLayout();\n if (this.isDirty()) {\n await this.handleSaveExecute({ silent: true });\n }\n } finally {\n this.suppressAutoSave = false;\n this.initialLayoutArrangeInFlight = false;\n }\n }\n\n private applyBaselineGraph(): void {\n this.clearAutoSaveTimer();\n this.suppressAutoSave = true;\n try {\n const base = this.baselineGraph();\n this.layoutArrangedFlag.set(isDesignerLayoutArranged(base ?? undefined));\n this.initDesignerLayoutFromGraph(base ?? undefined);\n const rows = (base?.activities ?? []).map((a) => rowFromInstance(a));\n this.activities.set(rows);\n this.connections.set(cloneDeep(base?.connections ?? []));\n let start = base?.startActivityId ?? '';\n if (!start && rows.length > 0) {\n start = rows[0]!.id;\n }\n this.startActivityId.set(start);\n this.selectedRowId.set(rows[0]?.id ?? null);\n this.isDirty.set(false);\n for (const r of rows) {\n void this.ensureDefinition(r.name);\n }\n void this.refreshPropertyViewer();\n this.recompute();\n } finally {\n this.suppressAutoSave = false;\n }\n }\n\n private addStep(): void {\n const catalog = this.activitySelectOptions();\n const defaultName = catalog[0]?.value ?? '';\n const row: AXMWorkflowActivityEditorRow = { id: AXPDataGenerator.uuid(), name: defaultName, inputs: {} };\n this.activities.update((list) => [...list, row]);\n const idx = this.activities().length - 1;\n const p = this.gridFallbackPosition(idx);\n this.designerLayout.update((L) => ({\n ...L,\n [row.id]: { x: p.x, y: p.y, width: DEFAULT_NODE_W, height: DEFAULT_NODE_H },\n }));\n this.selectedRowId.set(row.id);\n if (!this.startActivityId() && row.id) {\n this.startActivityId.set(row.id);\n }\n void this.ensureDefinition(row.name);\n void this.refreshPropertyViewer();\n this.recomputeDirty();\n }\n\n //#endregion\n\n //#region ---- Outcomes & labels ----\n\n private formatActivityStepLabel(r: AXMWorkflowActivityEditorRow): string {\n const shortId = r.id.length >= 8 ? r.id.slice(0, 8) : r.id;\n const typePart = r.name?.trim() ? r.name : '…';\n return `${typePart} (${shortId})`;\n }\n\n protected resolveNodeTitle(r: AXMWorkflowActivityEditorRow): string {\n const ext = r.extensions;\n const display = ext && typeof ext['displayTitle'] === 'string' ? ext['displayTitle'].trim() : '';\n if (display) {\n return display;\n }\n return this.activitySelectOptions().find((x) => x.value === r.name)?.text ?? r.name;\n }\n\n private outcomeRowsFromRawDefinition(raw: unknown): AXMWorkflowOutcomePortRow[] {\n if (raw == null) {\n return [];\n }\n let items: unknown[] = [];\n if (Array.isArray(raw)) {\n items = raw;\n } else if (typeof raw === 'string' && raw.trim().length > 0) {\n try {\n const parsed = JSON.parse(raw) as unknown;\n items = Array.isArray(parsed) ? parsed : [];\n } catch {\n return [];\n }\n } else {\n return [];\n }\n const rows: AXMWorkflowOutcomePortRow[] = [];\n for (const item of items) {\n if (typeof item === 'string' && item.trim()) {\n rows.push({ port: item, label: item });\n continue;\n }\n if (item != null && typeof item === 'object' && !Array.isArray(item)) {\n const o = item as Record<string, unknown>;\n const portVal = o['name'] ?? o['value'] ?? o['outcome'] ?? o['port'];\n if (typeof portVal !== 'string' || !portVal.trim()) {\n continue;\n }\n const titleRaw = o['title'];\n let label = portVal;\n if (typeof titleRaw === 'string' && titleRaw.trim()) {\n label = titleRaw;\n } else if (titleRaw != null && typeof titleRaw === 'object') {\n label = this.mlResolver.resolve(titleRaw as AXPMultiLanguageString) ?? portVal;\n }\n rows.push({ port: portVal, label });\n }\n }\n return rows;\n }\n\n private outcomePortsFromConnections(activityId: string): string[] {\n const ports = new Set<string>();\n for (const c of this.connections()) {\n if (c.source.activtyName === activityId) {\n ports.add(portKey(c.source.port));\n }\n }\n return [...ports];\n }\n\n private outcomePortsFromTaskActions(inputs: Record<string, unknown>): string[] {\n const actions = inputs['actions'];\n if (actions == null) {\n return [];\n }\n let root: unknown = actions;\n if (typeof actions === 'string' && actions.trim().length > 0) {\n try {\n root = JSON.parse(actions) as unknown;\n } catch {\n return [];\n }\n }\n if (typeof root !== 'object' || root === null) {\n return [];\n }\n const names: string[] = [];\n const obj = root as Record<string, unknown>;\n for (const key of ['suffix', 'prefix'] as const) {\n const list = obj[key];\n if (!Array.isArray(list)) {\n continue;\n }\n for (const entry of list) {\n if (!entry || typeof entry !== 'object') {\n continue;\n }\n const cmd = (entry as Record<string, unknown>)['command'];\n if (cmd && typeof cmd === 'object') {\n const n = (cmd as Record<string, unknown>)['name'];\n if (typeof n === 'string' && n.trim()) {\n names.push(n);\n }\n }\n }\n }\n return names;\n }\n\n private buildOutcomeRows(\n activityId: string,\n row: AXMWorkflowActivityEditorRow | null,\n def?: AXPActivityDefinition,\n ): AXMWorkflowOutcomePortRow[] {\n const map = new Map<string, AXMWorkflowOutcomePortRow>();\n for (const o of this.outcomeRowsFromRawDefinition(def?.outcomes)) {\n map.set(o.port, o);\n }\n for (const p of this.outcomePortsFromConnections(activityId)) {\n if (!map.has(p)) {\n map.set(p, { port: p, label: p });\n }\n }\n if (row) {\n for (const p of this.outcomePortsFromTaskActions(row.inputs)) {\n if (!map.has(p)) {\n map.set(p, { port: p, label: p });\n }\n }\n }\n if (map.size === 0) {\n map.set('Done', { port: 'Done', label: 'Done' });\n }\n return [...map.values()].sort((a, b) => a.port.localeCompare(b.port));\n }\n\n private pruneOutgoingConnections(sourceActivityId: string, allowedPorts: Set<string>): void {\n this.connections.update((list) =>\n list.filter((c) => {\n if (c.source.activtyName !== sourceActivityId) {\n return true;\n }\n return allowedPorts.has(portKey(c.source.port));\n }),\n );\n }\n\n //#endregion\n\n //#region ---- Catalog & property viewer ----\n\n private async ensureActivityCatalogLoaded(): Promise<void> {\n if (this.activityCatalogLoaded()) {\n return;\n }\n try {\n const data = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.activityDefinition.name)\n .data<string, AXMWorkflowActivityCatalogRow>();\n const res = (await data.query({ skip: 0, take: 1000 })) as unknown as AXPActivityDefinitionQueryResult;\n const items = (res.items ?? [])\n .map((row) => {\n const n = row.name;\n const typeFallback = row.type;\n const valueKey =\n typeof n === 'string' && n.trim()\n ? n.trim()\n : typeof n === 'number'\n ? String(n)\n : typeof typeFallback === 'string' && typeFallback.trim()\n ? typeFallback.trim()\n : typeof typeFallback === 'number'\n ? String(typeFallback)\n : '';\n if (!valueKey) {\n return null;\n }\n const titleRaw = row.title;\n let text = valueKey;\n if (typeof titleRaw === 'string' && titleRaw.trim()) {\n text = titleRaw.trim();\n } else if (titleRaw != null && typeof titleRaw === 'object') {\n text = this.mlResolver.resolve(titleRaw as AXPMultiLanguageString) ?? valueKey;\n }\n\n const descriptionRaw = row.description;\n let description = descriptionRaw;\n if (typeof descriptionRaw === 'string' && descriptionRaw.trim()) {\n description = descriptionRaw.trim();\n } else if (descriptionRaw != null && typeof descriptionRaw === 'object') {\n description = this.mlResolver.resolve(descriptionRaw as AXPMultiLanguageString) ?? descriptionRaw;\n }\n const categoryRaw = row.category as AXPActivityDefinitionCategoryRef | undefined;\n const categoryTitleResolved =\n categoryRaw?.title != null\n ? (this.mlResolver.resolve(categoryRaw.title) ?? categoryRaw.name)\n : 'Uncategorized';\n const icon = row.icon;\n return {\n value: valueKey,\n text: String(text).trim() || valueKey,\n description: description,\n categoryId: categoryRaw?.id ?? 'uncategorized',\n categoryTitle: categoryTitleResolved,\n icon: icon,\n };\n })\n .filter((x): x is AXMWorkflowActivitySelectItem => x != null);\n items.sort((a, b) => a.text.localeCompare(b.text));\n this.activitySelectItems.set(items);\n } catch {\n this.activitySelectItems.set([]);\n } finally {\n this.activityCatalogLoaded.set(true);\n }\n }\n\n private async ensureDefinition(name: string): Promise<void> {\n if (!name?.trim()) {\n return;\n }\n if (this.activityDefCache()[name]) {\n return;\n }\n const def = await this.activityDefService.getActivityByName(name);\n if (def) {\n this.activityDefCache.update((c) => ({ ...c, [name]: def }));\n }\n }\n\n private async refreshPropertyViewer(): Promise<void> {\n const row = this.selectedRow();\n if (row == null || row.name.trim() === '') {\n this.viewerTabs.set([]);\n this.selectedActivityOutcomeRows.set([]);\n setTimeout(() => this.propertyViewerRef()?.initializeContext({ inputs: {} }), 0);\n return;\n }\n const def = await this.activityDefService.getActivityByName(row.name);\n if (def) {\n this.activityDefCache.update((c) => ({ ...c, [row.name]: def }));\n }\n const rowLatest = this.activities().find((r) => r.id === row.id) ?? row;\n this.selectedActivityOutcomeRows.set(this.buildOutcomeRows(row.id, rowLatest, def));\n const inputProps = normalizeActivityDefinitionInputs(def?.inputs);\n const group: AXPWidgetPropertyGroup = { name: 'activity-inputs', title: 'Inputs', order: 0 };\n const widgetProps = inputProps.map((p, index) =>\n mapAXPPropertyToWidgetProperty(p, {\n group,\n order: index,\n valuePathPrefix: 'inputs',\n resolveTitle: (prop) =>\n typeof prop.title === 'string' ? prop.title : (this.mlResolver.resolve(prop.title) ?? prop.name),\n resolveDescription: (prop) =>\n prop.description === undefined\n ? undefined\n : typeof prop.description === 'string'\n ? prop.description\n : this.mlResolver.resolve(prop.description),\n }),\n );\n this.viewerTabs.set(buildPropertyViewerTabsFromProperties(widgetProps));\n setTimeout(() => {\n const current = this.activities().find((r) => r.id === row.id);\n this.propertyViewerRef()?.initializeContext({ inputs: cloneDeep(current?.inputs ?? {}) });\n }, 0);\n }\n\n //#endregion\n\n //#region ---- Utilities ----\n\n protected override recompute(): void {\n super.recompute();\n const maybeLayout = this.hostPageLayout as unknown as { recompute?: () => void };\n maybeLayout.recompute?.();\n }\n\n //#endregion\n}\n","<!-- <axp-page-toolbar>\n <axp-layout-suffix>\n <div class=\"axm-workflow-definition-activities__toolbar-group\">\n <ax-button>\n <ax-icon icon=\"fa-light fa-sliders\"></ax-icon>\n <ax-dropdown-panel>\n <div class=\"axm-workflow-definition-activities__appearance-panel\">\n <label class=\"axm-workflow-definition-activities__pattern-label\" for=\"background-pattern-select\"\n >Background Pattern</label\n >\n <select\n id=\"background-pattern-select\"\n class=\"axm-workflow-definition-activities__pattern-select\"\n [value]=\"backgroundPattern()\"\n (change)=\"onBackgroundPatternChange($event)\"\n >\n <option value=\"dots\">Dots</option>\n <option value=\"line\">Lines</option>\n </select>\n </div>\n </ax-dropdown-panel>\n </ax-button>\n <ax-button (onClick)=\"toggleFullscreen()\">\n <ax-icon>\n <i class=\"fa-solid\" [class]=\"isFullscreen() ? 'fa-compress' : 'fa-expand'\"></i>\n </ax-icon>\n </ax-button>\n <ax-button (onClick)=\"toggleInfoPanel()\">\n <ax-icon [icon]=\"isInfoPanelOpen() ? 'fa-solid fa-square-info' : 'fa-light fa-square-info'\"></ax-icon>\n </ax-button>\n </div>\n </axp-layout-suffix>\n </axp-page-toolbar> -->\n\n<div\n class=\"axm-workflow-definition-activities\"\n [class.axm-workflow-definition-activities--with-palette]=\"isPaletteOpen()\"\n [class.axm-workflow-definition-activities--with-info]=\"isInfoPanelOpen()\"\n>\n @if (isPaletteOpen()) {\n <aside class=\"axm-workflow-definition-activities__palette\">\n <div class=\"axm-workflow-definition-activities__palette-head\">\n <div class=\"axm-workflow-definition-activities__palette-head-row\">\n <h3 class=\"axm-workflow-definition-activities__title\">\n {{\n ('@workflow-management:workflow-definitions.entities.workflow-definition.pages.activities.add-step'\n | translate\n | async) ?? 'Activities'\n }}\n </h3>\n <ax-button [look]=\"'blank'\" class=\"ax-sm ax-rounded-full\" (onClick)=\"closePalette()\">\n <ax-icon icon=\"fa-solid fa-xmark\"></ax-icon>\n </ax-button>\n </div>\n <p class=\"axm-workflow-definition-activities__palette-sub\">\n {{\n ('@workflow-management:workflow-definitions.entities.workflow-definition.pages.activities.connections.hint'\n | translate\n | async) ?? ''\n }}\n </p>\n <ax-search-box\n class=\"axm-workflow-definition-activities__palette-search ax-sm\"\n [value]=\"paletteSearchTerm()\"\n (onValueChanged)=\"onPaletteSearchChange($event)\"\n [placeholder]=\"'@general:search.title' | translate | async\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n </div>\n <div class=\"axm-workflow-definition-activities__palette-list\">\n <div class=\"axm-workflow-definition-activities__accordion-group\" axAccordionGroup [accordion]=\"false\">\n @for (group of filteredPaletteGroups(); track group.id) {\n @if (group.items.length > 0) {\n <section\n class=\"axm-workflow-definition-activities__accordion-item\"\n axAccordionItem\n [isCollapsed]=\"false\"\n #acc=\"axAccordionItem\"\n >\n <header\n class=\"axm-workflow-definition-activities__accordion-header\"\n axAccordionItemHeader\n role=\"button\"\n >\n <div class=\"axm-workflow-definition-activities__accordion-header-main\">\n <span class=\"axm-workflow-definition-activities__accordion-title\">{{ group.title }}</span>\n </div>\n <span class=\"axm-workflow-definition-activities__accordion-chevron\">\n <i [class]=\"acc.isCollapsed() ? 'fa-light fa-chevron-down' : 'fa-light fa-chevron-up'\"></i>\n </span>\n </header>\n <div class=\"axm-workflow-definition-activities__accordion-content\" axAccordionItemContent>\n @for (item of group.items; track item.type) {\n <button\n type=\"button\"\n class=\"axm-workflow-definition-activities__palette-item\"\n [axpWorkflowPaletteItem]=\"item\"\n >\n <span class=\"axm-workflow-definition-activities__palette-item-icon\" aria-hidden=\"true\">\n <i [class]=\"'fa-light ' + item.icon\"></i>\n </span>\n <span class=\"axm-workflow-definition-activities__palette-item-body\">\n <span class=\"axm-workflow-definition-activities__palette-item-title\">{{ item.title }}</span>\n <span class=\"axm-workflow-definition-activities__palette-item-meta\">{{\n item.description\n }}</span>\n </span>\n </button>\n }\n </div>\n </section>\n }\n }\n </div>\n </div>\n </aside>\n }\n\n <div class=\"axm-workflow-definition-activities__main\">\n <section class=\"axm-workflow-definition-activities__canvas\" (contextmenu)=\"onDesignerSurfaceContextMenu($event)\">\n <axp-workflow-designer\n [model]=\"designerModel()\"\n [backgroundPattern]=\"backgroundPattern()\"\n (zoomChange)=\"onDesignerZoomChange($event)\"\n (modelChange)=\"onDesignerModelChange($event)\"\n (activationChange)=\"onDesignerActivationChange($event)\"\n (nodeContextMenu)=\"onDesignerNodeContextMenu($event)\"\n ></axp-workflow-designer>\n <ax-context-menu\n [orientation]=\"'vertical'\"\n [closeOn]=\"'leave'\"\n (onItemClick)=\"handleWorkflowContextMenuItemClick($event)\"\n />\n <axp-layout-floating-zoom-bar\n [zoomLevel]=\"zoomLevel()\"\n (zoomIn)=\"zoomIn()\"\n (zoomOut)=\"zoomOut()\"\n (zoomReset)=\"zoomReset()\"\n />\n </section>\n </div>\n @if (isInfoPanelOpen()) {\n <axp-layout-side-detail-panel\n class=\"axm-workflow-definition-activities__info ax-sticky ax-top-0 ax-z-10 ax-max-h-full ax-flex-none\"\n [header]=\"workflowDetailPanelHeader()\"\n [rows]=\"workflowDetailPanelRows()\"\n [emptyState]=\"workflowDetailPanelEmptyState()\"\n (panelClose)=\"toggleInfoPanel()\"\n />\n }\n</div>\n"],"names":["i5","i6"],"mappings":"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"}
|