@acorex/modules 21.0.0-next.56 → 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.
Files changed (188) hide show
  1. package/fesm2022/acorex-modules-application-management.mjs +1 -1
  2. package/fesm2022/acorex-modules-application-management.mjs.map +1 -1
  3. package/fesm2022/{acorex-modules-assessment-management-acorex-modules-assessment-management-DcPnI9fZ.mjs → acorex-modules-assessment-management-acorex-modules-assessment-management-o8aFazwA.mjs} +72 -78
  4. package/fesm2022/acorex-modules-assessment-management-acorex-modules-assessment-management-o8aFazwA.mjs.map +1 -0
  5. package/fesm2022/{acorex-modules-assessment-management-assessment-case.entity-D880d_qz.mjs → acorex-modules-assessment-management-assessment-case.entity-yrc_Yybq.mjs} +67 -71
  6. package/fesm2022/acorex-modules-assessment-management-assessment-case.entity-yrc_Yybq.mjs.map +1 -0
  7. package/fesm2022/acorex-modules-assessment-management-assessment-session-answers-view.util-BUQa_TSY.mjs +47 -0
  8. package/fesm2022/acorex-modules-assessment-management-assessment-session-answers-view.util-BUQa_TSY.mjs.map +1 -0
  9. package/fesm2022/{acorex-modules-assessment-management-assessment-session.entity-DvbocIN1.mjs → acorex-modules-assessment-management-assessment-session.entity-Cwf30iuu.mjs} +5 -41
  10. package/fesm2022/acorex-modules-assessment-management-assessment-session.entity-Cwf30iuu.mjs.map +1 -0
  11. package/fesm2022/{acorex-modules-assessment-management-fill-assessment-session.command-BMJ54EPO.mjs → acorex-modules-assessment-management-fill-assessment-session.command-CJieLR5g.mjs} +32 -7
  12. package/fesm2022/acorex-modules-assessment-management-fill-assessment-session.command-CJieLR5g.mjs.map +1 -0
  13. package/fesm2022/{acorex-modules-assessment-management-index-XdJCIYG3.mjs → acorex-modules-assessment-management-index-D8KjfHAH.mjs} +4 -4
  14. package/fesm2022/{acorex-modules-assessment-management-index-XdJCIYG3.mjs.map → acorex-modules-assessment-management-index-D8KjfHAH.mjs.map} +1 -1
  15. package/fesm2022/{acorex-modules-assessment-management-preview-question.command-CO8NfjEb.mjs → acorex-modules-assessment-management-preview-question.command-D0-FB1HH.mjs} +2 -2
  16. 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
  17. package/fesm2022/{acorex-modules-assessment-management-preview-questionnaire.command-DSzbtU0e.mjs → acorex-modules-assessment-management-preview-questionnaire.command-wqPNgv7q.mjs} +2 -2
  18. package/fesm2022/{acorex-modules-assessment-management-preview-questionnaire.command-DSzbtU0e.mjs.map → acorex-modules-assessment-management-preview-questionnaire.command-wqPNgv7q.mjs.map} +1 -1
  19. 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
  20. 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
  21. package/fesm2022/{acorex-modules-assessment-management-question-bank-item.entity-DBfQhSKR.mjs → acorex-modules-assessment-management-question-bank-item.entity-DUf2ceKY.mjs} +2 -2
  22. 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
  23. package/fesm2022/{acorex-modules-assessment-management-questionnaire-calculation.entity-CL9s20qR.mjs → acorex-modules-assessment-management-questionnaire-calculation.entity-CYF0k42_.mjs} +2 -2
  24. package/fesm2022/{acorex-modules-assessment-management-questionnaire-calculation.entity-CL9s20qR.mjs.map → acorex-modules-assessment-management-questionnaire-calculation.entity-CYF0k42_.mjs.map} +1 -1
  25. 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
  26. package/fesm2022/acorex-modules-assessment-management-questionnaire-viewer-popup.component-Cy5ElBmU.mjs.map +1 -0
  27. package/fesm2022/{acorex-modules-assessment-management-questionnaire.entity-CrryBMC2.mjs → acorex-modules-assessment-management-questionnaire.entity-RWSkzNbA.mjs} +3 -3
  28. package/fesm2022/{acorex-modules-assessment-management-questionnaire.entity-CrryBMC2.mjs.map → acorex-modules-assessment-management-questionnaire.entity-RWSkzNbA.mjs.map} +1 -1
  29. package/fesm2022/{acorex-modules-assessment-management-save-questionnaire-questions.command-Dq5VComh.mjs → acorex-modules-assessment-management-save-questionnaire-questions.command-koGmUbNE.mjs} +2 -2
  30. 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
  31. package/fesm2022/acorex-modules-assessment-management-view-case-last-session-answers.command-NTuDdoYk.mjs +157 -0
  32. package/fesm2022/acorex-modules-assessment-management-view-case-last-session-answers.command-NTuDdoYk.mjs.map +1 -0
  33. package/fesm2022/acorex-modules-assessment-management-view-session-answers.command-0btGV66_.mjs +172 -0
  34. package/fesm2022/acorex-modules-assessment-management-view-session-answers.command-0btGV66_.mjs.map +1 -0
  35. package/fesm2022/acorex-modules-assessment-management.mjs +1 -1
  36. package/fesm2022/{acorex-modules-auth-acorex-modules-auth-NPUjHz-F.mjs → acorex-modules-auth-acorex-modules-auth-D4IBi_VD.mjs} +42 -33
  37. package/fesm2022/acorex-modules-auth-acorex-modules-auth-D4IBi_VD.mjs.map +1 -0
  38. package/fesm2022/{acorex-modules-auth-app-chooser.component-h61xNtRT.mjs → acorex-modules-auth-app-chooser.component-BEktaBWD.mjs} +2 -2
  39. package/fesm2022/{acorex-modules-auth-app-chooser.component-h61xNtRT.mjs.map → acorex-modules-auth-app-chooser.component-BEktaBWD.mjs.map} +1 -1
  40. package/fesm2022/{acorex-modules-auth-login.module-DF5AHqYe.mjs → acorex-modules-auth-login.module-aAwHzXPj.mjs} +4 -4
  41. package/fesm2022/{acorex-modules-auth-login.module-DF5AHqYe.mjs.map → acorex-modules-auth-login.module-aAwHzXPj.mjs.map} +1 -1
  42. package/fesm2022/{acorex-modules-auth-master.layout-00ZTMhc3.mjs → acorex-modules-auth-master.layout-BapDYFZ_.mjs} +2 -2
  43. package/fesm2022/{acorex-modules-auth-master.layout-00ZTMhc3.mjs.map → acorex-modules-auth-master.layout-BapDYFZ_.mjs.map} +1 -1
  44. package/fesm2022/{acorex-modules-auth-oauth-callback.component-Ce5Fw8Qd.mjs → acorex-modules-auth-oauth-callback.component-Cyu2vqyK.mjs} +2 -2
  45. package/fesm2022/{acorex-modules-auth-oauth-callback.component-Ce5Fw8Qd.mjs.map → acorex-modules-auth-oauth-callback.component-Cyu2vqyK.mjs.map} +1 -1
  46. package/fesm2022/{acorex-modules-auth-password.component-DQYCm8wg.mjs → acorex-modules-auth-password.component-DB-ac0Rn.mjs} +2 -2
  47. package/fesm2022/{acorex-modules-auth-password.component-DQYCm8wg.mjs.map → acorex-modules-auth-password.component-DB-ac0Rn.mjs.map} +1 -1
  48. package/fesm2022/{acorex-modules-auth-password.component-CU0AY-Ia.mjs → acorex-modules-auth-password.component-cPmwNpuq.mjs} +2 -2
  49. package/fesm2022/{acorex-modules-auth-password.component-CU0AY-Ia.mjs.map → acorex-modules-auth-password.component-cPmwNpuq.mjs.map} +1 -1
  50. package/fesm2022/{acorex-modules-auth-routes-CM4fRaWb.mjs → acorex-modules-auth-routes-r72zIRTa.mjs} +2 -2
  51. package/fesm2022/{acorex-modules-auth-routes-CM4fRaWb.mjs.map → acorex-modules-auth-routes-r72zIRTa.mjs.map} +1 -1
  52. package/fesm2022/{acorex-modules-auth-tenant-chooser.component-BBztdcvq.mjs → acorex-modules-auth-tenant-chooser.component-AQA2o6Ty.mjs} +2 -2
  53. package/fesm2022/{acorex-modules-auth-tenant-chooser.component-BBztdcvq.mjs.map → acorex-modules-auth-tenant-chooser.component-AQA2o6Ty.mjs.map} +1 -1
  54. package/fesm2022/{acorex-modules-auth-two-factor.module-C9AafF86.mjs → acorex-modules-auth-two-factor.module-Dx0CC5ic.mjs} +2 -2
  55. package/fesm2022/{acorex-modules-auth-two-factor.module-C9AafF86.mjs.map → acorex-modules-auth-two-factor.module-Dx0CC5ic.mjs.map} +1 -1
  56. package/fesm2022/{acorex-modules-auth-user-sessions.component-Qw2sgsEe.mjs → acorex-modules-auth-user-sessions.component-3Wr7DUDQ.mjs} +2 -2
  57. package/fesm2022/{acorex-modules-auth-user-sessions.component-Qw2sgsEe.mjs.map → acorex-modules-auth-user-sessions.component-3Wr7DUDQ.mjs.map} +1 -1
  58. package/fesm2022/acorex-modules-auth.mjs +1 -1
  59. package/fesm2022/{acorex-modules-common-audit-info-column.component-SiqKcBMQ.mjs → acorex-modules-common-audit-info-column.component-MSYPMPZJ.mjs} +2 -2
  60. package/fesm2022/{acorex-modules-common-audit-info-column.component-SiqKcBMQ.mjs.map → acorex-modules-common-audit-info-column.component-MSYPMPZJ.mjs.map} +1 -1
  61. package/fesm2022/acorex-modules-common.mjs +8 -4
  62. package/fesm2022/acorex-modules-common.mjs.map +1 -1
  63. package/fesm2022/{acorex-modules-conversation-acorex-modules-conversation-UNhA-qi5.mjs → acorex-modules-conversation-acorex-modules-conversation-DkdNLMKa.mjs} +344 -1008
  64. package/fesm2022/acorex-modules-conversation-acorex-modules-conversation-DkdNLMKa.mjs.map +1 -0
  65. package/fesm2022/{acorex-modules-conversation-assist-delegated-agent-detail-popup.component-Be58gcns.mjs → acorex-modules-conversation-assist-delegated-agent-detail-popup.component-VKPbkRqI.mjs} +2 -2
  66. package/fesm2022/{acorex-modules-conversation-assist-delegated-agent-detail-popup.component-Be58gcns.mjs.map → acorex-modules-conversation-assist-delegated-agent-detail-popup.component-VKPbkRqI.mjs.map} +1 -1
  67. package/fesm2022/{acorex-modules-conversation-comments-page.component-3XBLeMW8.mjs → acorex-modules-conversation-comments-page.component-ehUCjoFD.mjs} +2 -2
  68. package/fesm2022/{acorex-modules-conversation-comments-page.component-3XBLeMW8.mjs.map → acorex-modules-conversation-comments-page.component-ehUCjoFD.mjs.map} +1 -1
  69. package/fesm2022/{acorex-modules-conversation-send-assist-chat-message.command-CSu-lJuu.mjs → acorex-modules-conversation-send-assist-chat-message.command-ZNcVi54N.mjs} +2 -2
  70. package/fesm2022/{acorex-modules-conversation-send-assist-chat-message.command-CSu-lJuu.mjs.map → acorex-modules-conversation-send-assist-chat-message.command-ZNcVi54N.mjs.map} +1 -1
  71. package/fesm2022/{acorex-modules-conversation-start-assist-chat.command-CyoncQB1.mjs → acorex-modules-conversation-start-assist-chat.command-CX6lm1lG.mjs} +2 -2
  72. package/fesm2022/{acorex-modules-conversation-start-assist-chat.command-CyoncQB1.mjs.map → acorex-modules-conversation-start-assist-chat.command-CX6lm1lG.mjs.map} +1 -1
  73. package/fesm2022/acorex-modules-conversation.mjs +1 -1
  74. package/fesm2022/acorex-modules-customer-management.mjs +2 -0
  75. package/fesm2022/acorex-modules-customer-management.mjs.map +1 -1
  76. package/fesm2022/acorex-modules-data-management.mjs +6 -5
  77. package/fesm2022/acorex-modules-data-management.mjs.map +1 -1
  78. 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
  79. package/fesm2022/acorex-modules-help-desk-acorex-modules-help-desk-DVlO9JZw.mjs.map +1 -0
  80. package/fesm2022/{acorex-modules-help-desk-capture-screen.component-CsACFkPq.mjs → acorex-modules-help-desk-capture-screen.component-rNPehEf8.mjs} +2 -2
  81. package/fesm2022/{acorex-modules-help-desk-capture-screen.component-CsACFkPq.mjs.map → acorex-modules-help-desk-capture-screen.component-rNPehEf8.mjs.map} +1 -1
  82. package/fesm2022/acorex-modules-help-desk.mjs +1 -1
  83. 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
  84. package/fesm2022/acorex-modules-human-capital-management-acorex-modules-human-capital-management-BWezAea1.mjs.map +1 -0
  85. 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
  86. 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
  87. 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
  88. 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
  89. 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
  90. 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
  91. package/fesm2022/{acorex-modules-human-capital-management-employee.entity-znCbbQUd.mjs → acorex-modules-human-capital-management-employee.entity-Cx_oY2aK.mjs} +8 -8
  92. package/fesm2022/acorex-modules-human-capital-management-employee.entity-Cx_oY2aK.mjs.map +1 -0
  93. package/fesm2022/{acorex-modules-human-capital-management-employment-type.entity-DUNB3zAB.mjs → acorex-modules-human-capital-management-employment-type.entity-B20Taa5x.mjs} +2 -2
  94. 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
  95. package/fesm2022/{acorex-modules-human-capital-management-leave-request.entity-JyFrrCGE.mjs → acorex-modules-human-capital-management-leave-request.entity-BO8QXpZE.mjs} +2 -2
  96. 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
  97. package/fesm2022/{acorex-modules-human-capital-management-leave-type.entity-B61MiEPu.mjs → acorex-modules-human-capital-management-leave-type.entity-CQwSWqSh.mjs} +2 -2
  98. 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
  99. 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
  100. package/fesm2022/acorex-modules-human-capital-management-lifecycle-event-type.entity-BPWJrvbN.mjs.map +1 -0
  101. 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
  102. package/fesm2022/acorex-modules-human-capital-management-lifecycle-event.entity-ZZuPu9KQ.mjs.map +1 -0
  103. package/fesm2022/{acorex-modules-human-capital-management-position-assignment.entity-CKCC6bKg.mjs → acorex-modules-human-capital-management-position-assignment.entity-BN1y0qhi.mjs} +2 -2
  104. 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
  105. 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
  106. 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
  107. 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
  108. 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
  109. package/fesm2022/acorex-modules-human-capital-management-start-lifecycle-event-flow.command-DPwuyFz2.mjs +237 -0
  110. package/fesm2022/acorex-modules-human-capital-management-start-lifecycle-event-flow.command-DPwuyFz2.mjs.map +1 -0
  111. package/fesm2022/acorex-modules-human-capital-management.mjs +1 -1
  112. package/fesm2022/{acorex-modules-learning-management-enrollment.entity-B53AQq_9.mjs → acorex-modules-learning-management-enrollment.entity-CdJafrUh.mjs} +4 -22
  113. package/fesm2022/acorex-modules-learning-management-enrollment.entity-CdJafrUh.mjs.map +1 -0
  114. package/fesm2022/acorex-modules-learning-management.mjs +1 -1
  115. package/fesm2022/acorex-modules-learning-management.mjs.map +1 -1
  116. package/fesm2022/acorex-modules-locale-management.mjs +27 -22
  117. package/fesm2022/acorex-modules-locale-management.mjs.map +1 -1
  118. package/fesm2022/acorex-modules-location-management.mjs +1 -0
  119. package/fesm2022/acorex-modules-location-management.mjs.map +1 -1
  120. package/fesm2022/acorex-modules-notification-management.mjs +1 -1
  121. package/fesm2022/acorex-modules-notification-management.mjs.map +1 -1
  122. package/fesm2022/acorex-modules-platform-dev-tools.mjs +2 -2
  123. package/fesm2022/acorex-modules-platform-dev-tools.mjs.map +1 -1
  124. package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-5DJoQkx2.mjs → acorex-modules-platform-management-acorex-modules-platform-management-Cbf1rlEK.mjs} +4 -4
  125. 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
  126. package/fesm2022/{acorex-modules-platform-management-menu-list.component-C3WBYbOt.mjs → acorex-modules-platform-management-menu-list.component-DIf_-oaM.mjs} +2 -2
  127. 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
  128. package/fesm2022/acorex-modules-platform-management.mjs +1 -1
  129. package/fesm2022/acorex-modules-report-management.mjs +1 -1
  130. package/fesm2022/acorex-modules-report-management.mjs.map +1 -1
  131. package/fesm2022/acorex-modules-security-management.mjs +3 -0
  132. package/fesm2022/acorex-modules-security-management.mjs.map +1 -1
  133. package/fesm2022/{acorex-modules-settings-management-acorex-modules-settings-management-Di6Sxtq3.mjs → acorex-modules-settings-management-acorex-modules-settings-management-B4Ee8USF.mjs} +6 -6
  134. package/fesm2022/{acorex-modules-settings-management-acorex-modules-settings-management-Di6Sxtq3.mjs.map → acorex-modules-settings-management-acorex-modules-settings-management-B4Ee8USF.mjs.map} +1 -1
  135. package/fesm2022/{acorex-modules-settings-management-permission-definition.provider-Bml5VZUT.mjs → acorex-modules-settings-management-permission-definition.provider-nNhEFyc-.mjs} +2 -2
  136. package/fesm2022/{acorex-modules-settings-management-permission-definition.provider-Bml5VZUT.mjs.map → acorex-modules-settings-management-permission-definition.provider-nNhEFyc-.mjs.map} +1 -1
  137. package/fesm2022/{acorex-modules-settings-management-setting-page.component-lN-7sTpD.mjs → acorex-modules-settings-management-setting-page.component-CEvWwS_a.mjs} +2 -2
  138. package/fesm2022/{acorex-modules-settings-management-setting-page.component-lN-7sTpD.mjs.map → acorex-modules-settings-management-setting-page.component-CEvWwS_a.mjs.map} +1 -1
  139. package/fesm2022/{acorex-modules-settings-management-setting-view.component-D17G4RNQ.mjs → acorex-modules-settings-management-setting-view.component-C6ftmjuK.mjs} +2 -2
  140. package/fesm2022/{acorex-modules-settings-management-setting-view.component-D17G4RNQ.mjs.map → acorex-modules-settings-management-setting-view.component-C6ftmjuK.mjs.map} +1 -1
  141. package/fesm2022/acorex-modules-settings-management.mjs +1 -1
  142. package/fesm2022/acorex-modules-supplier-management.mjs +1 -0
  143. package/fesm2022/acorex-modules-supplier-management.mjs.map +1 -1
  144. package/fesm2022/{acorex-modules-task-management-acorex-modules-task-management-LQn5gZ6p.mjs → acorex-modules-task-management-acorex-modules-task-management--mdNdYIs.mjs} +32 -2
  145. package/fesm2022/acorex-modules-task-management-acorex-modules-task-management--mdNdYIs.mjs.map +1 -0
  146. package/fesm2022/{acorex-modules-task-management-task-board.page-BokG-G6Z.mjs → acorex-modules-task-management-task-board.page-BIZ1qH7m.mjs} +35 -5
  147. package/fesm2022/acorex-modules-task-management-task-board.page-BIZ1qH7m.mjs.map +1 -0
  148. package/fesm2022/acorex-modules-task-management.mjs +1 -1
  149. 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
  150. 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
  151. package/fesm2022/{acorex-modules-workflow-management-index-BxqOP8AA.mjs → acorex-modules-workflow-management-index-BhVZ1Bcw.mjs} +104 -23
  152. package/fesm2022/acorex-modules-workflow-management-index-BhVZ1Bcw.mjs.map +1 -0
  153. package/fesm2022/{acorex-modules-workflow-management-index-Eh5DDK-V.mjs → acorex-modules-workflow-management-index-DC_9M9dk.mjs} +3 -3
  154. package/fesm2022/{acorex-modules-workflow-management-index-Eh5DDK-V.mjs.map → acorex-modules-workflow-management-index-DC_9M9dk.mjs.map} +1 -1
  155. package/fesm2022/{acorex-modules-workflow-management-workflow-instance.entity-B_V3uMSI.mjs → acorex-modules-workflow-management-workflow-instance.entity-BnKT3Wgh.mjs} +2 -2
  156. 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
  157. package/fesm2022/acorex-modules-workflow-management-workflow-task-popover.component-DjYDwHWU.mjs +255 -0
  158. package/fesm2022/acorex-modules-workflow-management-workflow-task-popover.component-DjYDwHWU.mjs.map +1 -0
  159. package/fesm2022/acorex-modules-workflow-management.mjs +1819 -745
  160. package/fesm2022/acorex-modules-workflow-management.mjs.map +1 -1
  161. package/package.json +2 -2
  162. package/types/acorex-modules-assessment-management.d.ts +4 -7
  163. package/types/acorex-modules-common.d.ts +1 -0
  164. package/types/acorex-modules-conversation.d.ts +35 -198
  165. package/types/acorex-modules-human-capital-management.d.ts +31 -30
  166. package/types/acorex-modules-learning-management.d.ts +0 -1
  167. package/types/acorex-modules-task-management.d.ts +41 -2
  168. package/types/acorex-modules-workflow-management.d.ts +280 -34
  169. package/fesm2022/acorex-modules-assessment-management-acorex-modules-assessment-management-DcPnI9fZ.mjs.map +0 -1
  170. package/fesm2022/acorex-modules-assessment-management-assessment-case.entity-D880d_qz.mjs.map +0 -1
  171. package/fesm2022/acorex-modules-assessment-management-assessment-session.entity-DvbocIN1.mjs.map +0 -1
  172. package/fesm2022/acorex-modules-assessment-management-fill-assessment-session.command-BMJ54EPO.mjs.map +0 -1
  173. package/fesm2022/acorex-modules-assessment-management-questionnaire-viewer-popup.component-CH_cJlSf.mjs.map +0 -1
  174. package/fesm2022/acorex-modules-assessment-management-view-session-answers.command-DpppXekm.mjs +0 -112
  175. package/fesm2022/acorex-modules-assessment-management-view-session-answers.command-DpppXekm.mjs.map +0 -1
  176. package/fesm2022/acorex-modules-auth-acorex-modules-auth-NPUjHz-F.mjs.map +0 -1
  177. package/fesm2022/acorex-modules-conversation-acorex-modules-conversation-UNhA-qi5.mjs.map +0 -1
  178. package/fesm2022/acorex-modules-help-desk-acorex-modules-help-desk-Bfjo-ENr.mjs.map +0 -1
  179. package/fesm2022/acorex-modules-human-capital-management-acorex-modules-human-capital-management-XhV2JQXs.mjs.map +0 -1
  180. package/fesm2022/acorex-modules-human-capital-management-employee-lifecycle-process.entity-LX68KORg.mjs.map +0 -1
  181. package/fesm2022/acorex-modules-human-capital-management-employee.entity-znCbbQUd.mjs.map +0 -1
  182. package/fesm2022/acorex-modules-human-capital-management-lifecycle-process-type.entity-DJqo2kTG.mjs.map +0 -1
  183. package/fesm2022/acorex-modules-learning-management-enrollment.entity-B53AQq_9.mjs.map +0 -1
  184. package/fesm2022/acorex-modules-task-management-acorex-modules-task-management-LQn5gZ6p.mjs.map +0 -1
  185. package/fesm2022/acorex-modules-task-management-task-board.page-BokG-G6Z.mjs.map +0 -1
  186. package/fesm2022/acorex-modules-workflow-management-index-BxqOP8AA.mjs.map +0 -1
  187. package/fesm2022/acorex-modules-workflow-management-workflow-task-popover.component-DMszilef.mjs +0 -356
  188. package/fesm2022/acorex-modules-workflow-management-workflow-task-popover.component-DMszilef.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-modules-platform-management-acorex-modules-platform-management-5DJoQkx2.mjs","sources":["../../../../libs/modules/platform-management/src/lib/const.ts","../../../../libs/modules/platform-management/src/lib/entity.provider.ts","../../../../libs/modules/platform-management/src/lib/features.keys.ts","../../../../libs/modules/platform-management/src/lib/feature-definition.provider.ts","../../../../libs/modules/platform-management/src/lib/features/menu-management/menu-customization.const.ts","../../../../libs/modules/platform-management/src/lib/features/menu-management/custom-menu.middleware.ts","../../../../libs/modules/platform-management/src/lib/features/menu-management/menu-management.service.ts","../../../../libs/modules/platform-management/src/lib/features/menu-management/components/menu-customizer-popup/menu-customizer-popup.component.ts","../../../../libs/modules/platform-management/src/lib/features/menu-management/workflows/customize-menu.workflow.ts","../../../../libs/modules/platform-management/src/lib/features/menu-management/menu-management.module.ts","../../../../libs/modules/platform-management/src/lib/features/token/token.provider.ts","../../../../libs/modules/platform-management/src/lib/entities/token/tokens.service.ts","../../../../libs/modules/platform-management/src/lib/features/token/dynamic-token.provider.ts","../../../../libs/modules/platform-management/src/lib/features/token/token-refresh.provider.ts","../../../../libs/modules/platform-management/src/lib/features/token/token.module.ts","../../../../libs/modules/platform-management/src/lib/features/updater/updater.service.ts","../../../../libs/modules/platform-management/src/lib/features/updater/updater.module.ts","../../../../libs/modules/platform-management/src/lib/manifest.ts","../../../../libs/modules/platform-management/src/lib/menu.keys.ts","../../../../libs/modules/platform-management/src/lib/permission.keys.ts","../../../../libs/modules/platform-management/src/lib/menu.provider.ts","../../../../libs/modules/platform-management/src/lib/permission-definition.provider.ts","../../../../libs/modules/platform-management/src/lib/entities/token/token.module.ts","../../../../libs/modules/platform-management/src/lib/platform-management.module.ts","../../../../libs/modules/platform-management/src/lib/entities/aggregate-definition/aggregate-definition.entity.ts","../../../../libs/modules/platform-management/src/lib/entities/schema-interface-field-map.ts","../../../../libs/modules/platform-management/src/lib/entities/command/command.entity.ts","../../../../libs/modules/platform-management/src/lib/entities/query/query.entity.ts","../../../../libs/modules/platform-management/src/lib/entities/entity-definition/index.ts","../../../../libs/modules/platform-management/src/lib/entities/interface-definition/interface-definition.entity.ts","../../../../libs/modules/platform-management/src/lib/entities/menu-definition/menu-definition.entity.ts","../../../../libs/modules/platform-management/src/lib/entities/module-definition/module-definition.entity.ts","../../../../libs/modules/platform-management/src/lib/entities/permission-definition/permission-definition.entity.ts","../../../../libs/modules/platform-management/src/lib/entities/plugin-definition/plugin-definition.entity.ts","../../../../libs/modules/platform-management/src/lib/entities/relation-definition/relation-definition.entity.ts","../../../../libs/modules/platform-management/src/lib/entities/token/token.entity.ts","../../../../libs/modules/platform-management/src/lib/entities/validation-definition/validation-definition.entity.ts","../../../../libs/modules/platform-management/src/lib/features/workflow-designer/workflow-designer.const.ts","../../../../libs/modules/platform-management/src/lib/features/workflow-designer/workflow-designer.utils.ts","../../../../libs/modules/platform-management/src/lib/features/workflow-designer/axp-workflow-designer.component.ts","../../../../libs/modules/platform-management/src/lib/features/workflow-designer/axp-workflow-designer.component.html","../../../../libs/modules/platform-management/src/lib/features/workflow-designer/axp-workflow-palette-item-drag.directive.ts","../../../../libs/modules/platform-management/src/lib/features/workflow-designer/workflow-designer.types.ts","../../../../libs/modules/platform-management/src/index.ts","../../../../libs/modules/platform-management/src/acorex-modules-platform-management.ts"],"sourcesContent":["const config = {\n i18n: 'platform-management',\n};\n\nexport const RootConfig = {\n config,\n module: {\n route: 'platform-management',\n name: 'PlatformManagement',\n title: `@${config.i18n}:module.title`,\n icon: 'fa-light fa-cogs',\n },\n entities: {\n localizationManagement: {\n name: 'Localization Management',\n title: `@${config.i18n}:localization-management.entities.localization-management.title`,\n icon: 'fa-light fa-globe',\n },\n token: {\n name: 'Tokens',\n title: `@${config.i18n}:tokens.entities.token.title`,\n icon: 'fa-light fa-object-exclude',\n },\n moduleDefinition: {\n name: 'ModuleDefinitions',\n title: `@${config.i18n}:definitions.modules.title`,\n icon: 'fa-light fa-cubes',\n },\n aggregateDefinition: {\n name: 'AggregateDefinitions',\n title: `@${config.i18n}:definitions.aggregates.title`,\n icon: 'fa-light fa-layer-group',\n },\n entityDefinition: {\n name: 'EntityDefinitions',\n title: `@${config.i18n}:definitions.entities.title`,\n icon: 'fa-light fa-database',\n },\n interfaceDefinition: {\n name: 'InterfaceDefinitions',\n title: `@${config.i18n}:definitions.interfaces.title`,\n icon: 'fa-light fa-puzzle-piece',\n },\n pluginDefinition: {\n name: 'PluginDefinitions',\n title: `@${config.i18n}:definitions.plugins.title`,\n icon: 'fa-light fa-plug',\n },\n relationDefinition: {\n name: 'RelationDefinitions',\n title: `@${config.i18n}:definitions.relations.title`,\n icon: 'fa-light fa-link',\n },\n validationDefinition: {\n name: 'ValidationDefinitions',\n title: `@${config.i18n}:definitions.validations.title`,\n icon: 'fa-light fa-check-double',\n },\n menuDefinition: {\n name: 'MenuDefinitions',\n title: `@${config.i18n}:definitions.menus.title`,\n icon: 'fa-light fa-bars',\n },\n permissionGroupDefinition: {\n name: 'PermissionGroupDefinitions',\n title: `@${config.i18n}:definitions.permissionGroups.title`,\n icon: 'fa-light fa-key',\n },\n commandDefinition: {\n name: 'Commands',\n title: `@${config.i18n}:definitions.commands.title`,\n icon: 'fa-light fa-terminal',\n },\n queryDefinition: {\n name: 'Queries',\n title: `@${config.i18n}:definitions.queries.title`,\n icon: 'fa-light fa-database',\n },\n },\n};\n","import { AXPEntity } from '@acorex/platform/common';\nimport {\n AXPEntityDefinitionLoader,\n AXPEntityDefinitionPreloader,\n AXPEntityPreloadEntity,\n} from '@acorex/platform/layout/entity';\nimport { Injectable, Injector, inject } from '@angular/core';\nimport { RootConfig } from './const';\n\n@Injectable()\nexport class AXMEntityLoader implements AXPEntityDefinitionLoader, AXPEntityDefinitionPreloader {\n preload(): AXPEntityPreloadEntity[] {\n const module = RootConfig.module.name;\n return Array.from(Object.values(RootConfig.entities)).map((entity: any) => ({\n module: module,\n entity: entity.name,\n }));\n }\n private injector = inject(Injector);\n\n async get(moduleName: string, entityName: string): Promise<AXPEntity | null> {\n if (moduleName === RootConfig.module.name) {\n return new Promise(async (resolve) => {\n switch (entityName) {\n case RootConfig.entities.token.name: {\n const { tokenEntityFactory } = await import('./entities');\n resolve(tokenEntityFactory(this.injector));\n break;\n }\n case RootConfig.entities.moduleDefinition.name: {\n const { moduleDefinitionEntityFactory } =\n await import('./entities/module-definition/module-definition.entity');\n resolve(moduleDefinitionEntityFactory(this.injector));\n break;\n }\n case RootConfig.entities.aggregateDefinition.name: {\n const { aggregateDefinitionEntityFactory } =\n await import('./entities/aggregate-definition/aggregate-definition.entity');\n resolve(aggregateDefinitionEntityFactory(this.injector));\n break;\n }\n // case RootConfig.entities.entityDefinition.name: {\n // const { entityDefinitionEntityFactory } = await import('./entities');\n // resolve(entityDefinitionEntityFactory(this.injector));\n // break;\n // }\n case RootConfig.entities.relationDefinition.name: {\n const { relationDefinitionEntityFactory } = await import('./entities');\n resolve(relationDefinitionEntityFactory(this.injector));\n break;\n }\n case RootConfig.entities.interfaceDefinition.name: {\n const { interfaceDefinitionEntityFactory } = await import('./entities');\n resolve(interfaceDefinitionEntityFactory(this.injector));\n break;\n }\n case RootConfig.entities.pluginDefinition.name: {\n const { pluginDefinitionEntityFactory } = await import('./entities');\n resolve(pluginDefinitionEntityFactory(this.injector));\n break;\n }\n case RootConfig.entities.validationDefinition.name: {\n const { validationDefinitionEntityFactory } = await import('./entities');\n resolve(validationDefinitionEntityFactory(this.injector));\n break;\n }\n case RootConfig.entities.menuDefinition.name: {\n const { menuDefinitionEntityFactory } = await import('./entities/menu-definition/menu-definition.entity');\n resolve(menuDefinitionEntityFactory(this.injector));\n break;\n }\n case RootConfig.entities.permissionGroupDefinition.name: {\n const { permissionGroupDefinitionEntityFactory } =\n await import('./entities/permission-definition/permission-definition.entity');\n resolve(permissionGroupDefinitionEntityFactory(this.injector));\n break;\n }\n case RootConfig.entities.commandDefinition.name: {\n const { commandDefinitionEntityFactory } = await import('./entities/command/command.entity');\n resolve(commandDefinitionEntityFactory(this.injector));\n break;\n }\n case RootConfig.entities.queryDefinition.name: {\n const { queryDefinitionEntityFactory } = await import('./entities/query/query.entity');\n resolve(queryDefinitionEntityFactory(this.injector));\n break;\n }\n default:\n resolve(null);\n }\n });\n }\n return null;\n }\n\n async list(): Promise<{ name: string; module: string }[]> {\n const m = RootConfig.module.name;\n return Promise.resolve(Object.values(RootConfig.entities).map((e) => ({ name: e.name, module: m })));\n }\n}\n","export const AXPPlatformManagementFeatureKeys = {\n MenuCustomization: 'PlatformManagement:Feature:menu-customization',\n AutoCheckUpdates: 'PlatformManagement:Feature:auto-check-updates',\n MaxTokens: 'PlatformManagement:Feature:max-tokens',\n} as const;\n\n","//#region ---- Imports ----\n\nimport {\n AXPFeatureDefinitionProvider,\n AXPFeatureDefinitionProviderContext,\n} from '@acorex/platform/core';\nimport { AXPPlatformManagementFeatureKeys } from './features.keys';\n\n//#endregion\n\n//#region ---- Feature Definition Provider ----\n\n/**\n * Platform Management Feature Definition Provider.\n * Provides feature definitions for the Platform Management module.\n */\nexport class AXPPlatformManagementFeatureDefinitionProvider implements AXPFeatureDefinitionProvider {\n async provide(context: AXPFeatureDefinitionProviderContext): Promise<void> {\n context.addFeature(AXPPlatformManagementFeatureKeys.MenuCustomization, {\n title: '@platform-management:features.menu-customization.title',\n description: '@platform-management:features.menu-customization.description',\n defaultValue: true,\n type: 'boolean',\n });\n\n context.addFeature(AXPPlatformManagementFeatureKeys.AutoCheckUpdates, {\n title: '@platform-management:features.auto-check-updates.title',\n description: '@platform-management:features.auto-check-updates.description',\n defaultValue: true,\n type: 'boolean',\n });\n\n context.addFeature(AXPPlatformManagementFeatureKeys.MaxTokens, {\n title: '@platform-management:features.max-tokens.title',\n description: '@platform-management:features.max-tokens.description',\n defaultValue: 100,\n type: 'number',\n interface: {\n type: 'number-editor',\n options: {\n min: 1,\n max: 1000,\n step: 1,\n },\n },\n });\n }\n}\n\n//#endregion\n\n","import { RootConfig } from '../../const';\n\n//#region ---- Menu Customization Constants ----\n\n/**\n * Setting key for menu customizations\n */\nexport const AXP_MENU_CUSTOMIZATION_KEY = 'axp.platform-management.menu-customization';\n\n/**\n * Current version of menu customization schema\n */\nexport const AXP_MENU_CUSTOMIZATION_VERSION = '1.0.0';\n\n/**\n * Default menu customization\n */\nexport const AXP_MENU_CUSTOMIZATION_DEFAULT = {\n version: AXP_MENU_CUSTOMIZATION_VERSION,\n overrides: {},\n customItems: [],\n};\n\n/**\n * Menu management feature configuration\n */\nexport const MenuManagementConfig = {\n route: 'menus',\n title: `@${RootConfig.config.i18n}:menu-management.components.menu-list.title`,\n icon: 'fa-light fa-bars',\n};\n\n//#endregion\n\n","import { AXPMenuMiddleware, AXPMenuMiddlewareContext, AXPSettingsService } from '@acorex/platform/common';\nimport { AXPPlatformScope } from '@acorex/platform/core';\nimport { inject } from '@angular/core';\nimport { AXP_MENU_CUSTOMIZATION_DEFAULT, AXP_MENU_CUSTOMIZATION_KEY } from './menu-customization.const';\nimport { AXPMenuCustomization } from './menu-customization.types';\n\n//#region ---- Custom Menu Middleware ----\n\n/**\n * Middleware that applies menu customizations using the enhanced context API\n * Applies user/tenant customizations from settings with priority support\n */\nexport class AXPCustomMenuMiddleware implements AXPMenuMiddleware {\n //#region ---- Middleware Properties ----\n\n readonly name = 'menu-customization';\n readonly priority = 100; // High priority to apply customizations early\n\n //#endregion\n\n //#region ---- Dependencies ----\n\n private settingsService = inject(AXPSettingsService);\n\n //#endregion\n\n //#region ---- Middleware Implementation ----\n\n async process(context: AXPMenuMiddlewareContext): Promise<void> {\n try {\n // Load menu customization from settings\n const customization = await this.loadCustomization();\n\n // Apply overrides to existing menu items using context API\n this.applyOverrides(context, customization);\n\n // Add custom menu items\n this.addCustomItems(context, customization);\n\n // Re-sort after applying priority overrides\n context.sort();\n } catch (error) {\n console.error('Error applying menu customizations:', error);\n }\n }\n\n //#endregion\n\n //#region ---- Private Methods ----\n\n /**\n * Load menu customization from settings\n * Merges Tenant and User scope customizations (User overrides Tenant)\n */\n private async loadCustomization(): Promise<AXPMenuCustomization> {\n try {\n // Load both scopes\n const tenantSettings = this.settingsService.scope(AXPPlatformScope.Tenant);\n const userSettings = this.settingsService.scope(AXPPlatformScope.User);\n\n const tenantCustomization = await tenantSettings.get<AXPMenuCustomization>(AXP_MENU_CUSTOMIZATION_KEY);\n const userCustomization = await userSettings.get<AXPMenuCustomization>(AXP_MENU_CUSTOMIZATION_KEY);\n\n // Merge customizations: Tenant as base, User overrides\n const merged: AXPMenuCustomization = {\n version: userCustomization?.version || tenantCustomization?.version || AXP_MENU_CUSTOMIZATION_DEFAULT.version,\n overrides: {\n ...(tenantCustomization?.overrides || {}),\n ...(userCustomization?.overrides || {}), // User overrides win\n },\n customItems: [...(tenantCustomization?.customItems || []), ...(userCustomization?.customItems || [])],\n };\n\n // Return merged result or default if both are empty\n const hasCustomizations = Object.keys(merged.overrides).length > 0 || merged.customItems.length > 0;\n return hasCustomizations ? merged : AXP_MENU_CUSTOMIZATION_DEFAULT;\n } catch (error) {\n console.error('Failed to load menu customization:', error);\n return AXP_MENU_CUSTOMIZATION_DEFAULT;\n }\n }\n\n /**\n * Apply overrides to existing menu items using enhanced context API\n */\n private applyOverrides(context: AXPMenuMiddlewareContext, customization: AXPMenuCustomization): void {\n Object.entries(customization.overrides).forEach(([menuName, override]) => {\n const finder = context.findByName(menuName);\n\n if (!finder.exists()) {\n return;\n }\n\n // Hide menu item\n if (override.hidden) {\n finder.remove();\n return;\n }\n\n // Apply priority override\n if (override.priority !== undefined) {\n finder.setPriority(override.priority);\n }\n\n // Apply property overrides\n if (override.properties) {\n finder.update(override.properties);\n }\n\n // Move to different parent\n if (override.parentName !== undefined) {\n finder.moveTo(override.parentName);\n }\n });\n }\n\n /**\n * Add custom menu items using context API\n */\n private addCustomItems(context: AXPMenuMiddlewareContext, customization: AXPMenuCustomization): void {\n if (customization.customItems && customization.customItems.length > 0) {\n context.add(...customization.customItems);\n }\n }\n\n //#endregion\n}\n\n//#endregion\n\n","import { AXTreeViewNode } from '@acorex/components/tree-view';\nimport { AXPMenuItem, AXPMenuProviderService, AXPSettingsService } from '@acorex/platform/common';\nimport { AXPPlatformScope } from '@acorex/platform/core';\nimport { AXPMenuCustomizerItem, AXPMenuCustomizerService } from '@acorex/platform/layout/components';\nimport { inject, Injectable } from '@angular/core';\nimport { cloneDeep } from 'lodash-es';\nimport { AXP_MENU_CUSTOMIZATION_DEFAULT, AXP_MENU_CUSTOMIZATION_KEY } from './menu-customization.const';\nimport { AXPMenuCustomization } from './menu-customization.types';\n\n/**\n * Builds a customization key from a scope key\n * @param scopeKey The scope key (e.g., 'edition:123', 'tenant:456')\n * @returns The full customization storage key\n */\nfunction buildCustomizationKey(scopeKey: string): string {\n return `${AXP_MENU_CUSTOMIZATION_KEY}.${scopeKey}`;\n}\n\n/**\n * Data structure for tree node combining menu item with metadata\n */\nexport interface AXPMenuTreeNodeData {\n menuItem: AXPMenuItem;\n metadata: {\n isBuiltIn: boolean;\n isCustom: boolean;\n isHidden: boolean;\n originalPriority?: number;\n originalParentName?: string;\n };\n}\n\n//#region ---- Menu Management Service ----\n\n/**\n * Constants for priority calculation\n */\nconst PRIORITY_BASE_ROOT = 0;\nconst PRIORITY_BASE_NESTED = 1000;\nconst PRIORITY_STEP = 10;\n\n@Injectable({ providedIn: 'root' })\nexport class AXPMenuManagementService extends AXPMenuCustomizerService {\n //#region ---- Dependencies ----\n\n private settingsService = inject(AXPSettingsService);\n private menuProviderService = inject(AXPMenuProviderService);\n\n //#endregion\n\n //#region ---- AXPMenuCustomizerService Interface Implementation ----\n\n /**\n * Interface implementation: Get menu tree for the given scope key\n */\n override async getMenuTree(scopeKey: string): Promise<AXTreeViewNode[]> {\n return this.getMenuTreeByKey(scopeKey);\n }\n\n /**\n * Interface implementation: Sync tree changes\n */\n override async syncTreeChanges(scopeKey: string, treeNodes: AXTreeViewNode[]): Promise<void> {\n return this.syncTreeChangesByKey(scopeKey, treeNodes);\n }\n\n /**\n * Interface implementation: Show menu item\n */\n override async showMenuItem(scopeKey: string, menuName: string): Promise<void> {\n return this.showMenuItemByKey(scopeKey, menuName);\n }\n\n /**\n * Interface implementation: Hide menu item\n */\n override async hideMenuItem(scopeKey: string, menuName: string): Promise<void> {\n return this.hideMenuItemByKey(scopeKey, menuName);\n }\n\n /**\n * Interface implementation: Add custom menu item\n */\n override async addCustomMenuItem(\n scopeKey: string,\n menuItem: AXPMenuCustomizerItem,\n parentName: string | null,\n ): Promise<void> {\n return this.addCustomMenuItemByKey(scopeKey, menuItem as AXPMenuItem, parentName);\n }\n\n /**\n * Interface implementation: Update custom menu item\n */\n override async updateCustomMenuItem(\n scopeKey: string,\n menuName: string,\n menuItem: AXPMenuCustomizerItem,\n ): Promise<void> {\n return this.updateCustomMenuItemByKey(scopeKey, menuName, menuItem as AXPMenuItem);\n }\n\n /**\n * Interface implementation: Update menu properties\n */\n override async updateMenuProperties(\n scopeKey: string,\n menuName: string,\n properties: Partial<AXPMenuCustomizerItem>,\n ): Promise<void> {\n return this.updateMenuPropertiesByKey(scopeKey, menuName, properties as Partial<AXPMenuItem>);\n }\n\n /**\n * Interface implementation: Delete custom menu item\n */\n override async deleteCustomMenuItem(scopeKey: string, menuName: string): Promise<void> {\n return this.deleteCustomMenuItemByKey(scopeKey, menuName);\n }\n\n /**\n * Interface implementation: Reset customizations\n */\n override async resetCustomizations(scopeKey: string): Promise<void> {\n return this.resetCustomizationsByKey(scopeKey);\n }\n\n //#endregion\n\n //#region ---- Scope-Based Public Methods ----\n\n /**\n * Get menu tree as AXTreeViewNode[] for ax-tree-view component (scope-based)\n */\n async getMenuTreeByScope(scope: AXPPlatformScope): Promise<AXTreeViewNode[]> {\n // Get RAW menu items WITHOUT middleware (for management purposes)\n const baseItems = await this.menuProviderService.rawItems();\n\n // Load customizations for the given scope\n const customization = await this.loadCustomization(scope);\n\n // Merge custom items with base items\n const allItems = [...baseItems, ...customization.customItems];\n\n // Apply parent overrides to restructure items BEFORE building tree\n const restructuredItems = this.applyParentOverrides(allItems, customization);\n\n // Convert to tree nodes with metadata\n return this.convertToTreeNodes(restructuredItems, customization);\n }\n\n /**\n * Sync tree changes back to customization (scope-based)\n * Called automatically when tree structure changes via drag-drop\n */\n async syncTreeChangesByScope(scope: AXPPlatformScope, treeNodes: AXTreeViewNode[]): Promise<void> {\n const customization = await this.loadCustomization(scope);\n\n // Extract and update priorities and parent relationships from tree structure\n this.updateCustomizationFromTree(treeNodes, customization);\n\n await this.saveCustomization(scope, customization);\n }\n\n /**\n * Load menu customization for a specific scope\n */\n async loadCustomization(scope: AXPPlatformScope): Promise<AXPMenuCustomization> {\n try {\n const scopedSettings = this.settingsService.scope(scope);\n const saved = await scopedSettings.get<AXPMenuCustomization>(AXP_MENU_CUSTOMIZATION_KEY);\n\n if (saved && saved.version) {\n return saved;\n }\n\n return cloneDeep(AXP_MENU_CUSTOMIZATION_DEFAULT);\n } catch {\n return cloneDeep(AXP_MENU_CUSTOMIZATION_DEFAULT);\n }\n }\n\n /**\n * Save menu customization for a specific scope\n */\n async saveCustomization(scope: AXPPlatformScope, customization: AXPMenuCustomization): Promise<void> {\n const scopedSettings = this.settingsService.scope(scope);\n await scopedSettings.set(AXP_MENU_CUSTOMIZATION_KEY, customization);\n\n // Clear menu cache to force reload\n this.menuProviderService.clearCache();\n }\n\n /**\n * Hide a menu item (scope-based)\n */\n async hideMenuItemByScope(scope: AXPPlatformScope, menuName: string): Promise<void> {\n this.validateMenuName(menuName, 'hide');\n\n const customization = await this.loadCustomization(scope);\n this.ensureOverrideExists(customization, menuName);\n customization.overrides[menuName].hidden = true;\n\n await this.saveCustomization(scope, customization);\n }\n\n /**\n * Show a menu item (scope-based)\n */\n async showMenuItemByScope(scope: AXPPlatformScope, menuName: string): Promise<void> {\n this.validateMenuName(menuName, 'show');\n\n const customization = await this.loadCustomization(scope);\n\n if (customization.overrides[menuName]) {\n delete customization.overrides[menuName].hidden;\n this.cleanupEmptyOverride(customization, menuName);\n }\n\n await this.saveCustomization(scope, customization);\n }\n\n /**\n * Update menu item priority (scope-based)\n */\n async updateMenuPriorityByScope(scope: AXPPlatformScope, menuName: string, priority: number): Promise<void> {\n this.validateMenuName(menuName, 'update priority for');\n\n const customization = await this.loadCustomization(scope);\n this.ensureOverrideExists(customization, menuName);\n customization.overrides[menuName].priority = priority;\n\n await this.saveCustomization(scope, customization);\n }\n\n /**\n * Update menu item properties (scope-based)\n */\n async updateMenuPropertiesByScope(\n scope: AXPPlatformScope,\n menuName: string,\n properties: Partial<AXPMenuItem>,\n ): Promise<void> {\n this.validateMenuName(menuName, 'update properties for');\n\n const customization = await this.loadCustomization(scope);\n this.ensureOverrideExists(customization, menuName);\n\n customization.overrides[menuName].properties = {\n ...customization.overrides[menuName].properties,\n ...properties,\n };\n\n await this.saveCustomization(scope, customization);\n }\n\n /**\n * Add custom menu item (scope-based)\n */\n async addCustomMenuItemByScope(scope: AXPPlatformScope, menuItem: AXPMenuItem, parent: any): Promise<void> {\n const customization = await this.loadCustomization(scope);\n\n // Generate unique name if not provided\n if (!menuItem.name) {\n menuItem.name = `custom-menu-${Date.now()}`;\n }\n\n customization.customItems.push(menuItem);\n\n await this.saveCustomization(scope, customization);\n }\n\n /**\n * Update custom menu item (scope-based)\n */\n async updateCustomMenuItemByScope(scope: AXPPlatformScope, menuName: string, menuItem: AXPMenuItem): Promise<void> {\n this.validateMenuName(menuName, 'update');\n\n const customization = await this.loadCustomization(scope);\n\n const index = customization.customItems.findIndex((item) => item.name === menuName);\n\n if (index === -1) {\n throw new Error(`Custom menu item '${menuName}' not found`);\n }\n\n customization.customItems[index] = menuItem;\n await this.saveCustomization(scope, customization);\n }\n\n /**\n * Delete custom menu item (scope-based)\n */\n async deleteCustomMenuItemByScope(scope: AXPPlatformScope, menuName: string): Promise<void> {\n this.validateMenuName(menuName, 'delete');\n\n const customization = await this.loadCustomization(scope);\n\n const initialLength = customization.customItems.length;\n customization.customItems = customization.customItems.filter((item) => item.name !== menuName);\n\n if (customization.customItems.length === initialLength) {\n throw new Error(`Custom menu item '${menuName}' not found`);\n }\n\n await this.saveCustomization(scope, customization);\n }\n\n /**\n * Reset all customizations for a scope (scope-based)\n */\n async resetCustomizationsByScope(scope: AXPPlatformScope): Promise<void> {\n await this.saveCustomization(scope, cloneDeep(AXP_MENU_CUSTOMIZATION_DEFAULT));\n }\n\n //#endregion\n\n //#region ---- Key-Based Public Methods ----\n\n /**\n * Get menu tree using a generic scope key (e.g., 'edition:123', 'tenant:456')\n */\n async getMenuTreeByKey(scopeKey: string): Promise<AXTreeViewNode[]> {\n // Get RAW menu items WITHOUT middleware (for management purposes)\n const baseItems = await this.menuProviderService.rawItems();\n\n // Load customizations for the given scope key\n const customization = await this.loadCustomizationByKey(scopeKey);\n\n // Merge custom items with base items\n const allItems = [...baseItems, ...customization.customItems];\n\n // Apply parent overrides to restructure items BEFORE building tree\n const restructuredItems = this.applyParentOverrides(allItems, customization);\n\n // Convert to tree nodes with metadata\n return this.convertToTreeNodes(restructuredItems, customization);\n }\n\n /**\n * Sync tree changes using a generic scope key\n */\n async syncTreeChangesByKey(scopeKey: string, treeNodes: AXTreeViewNode[]): Promise<void> {\n const customization = await this.loadCustomizationByKey(scopeKey);\n\n // Extract and update priorities and parent relationships from tree structure\n this.updateCustomizationFromTree(treeNodes, customization);\n\n await this.saveCustomizationByKey(scopeKey, customization);\n }\n\n /**\n * Load menu customization using a generic scope key\n */\n async loadCustomizationByKey(scopeKey: string): Promise<AXPMenuCustomization> {\n try {\n const storageKey = buildCustomizationKey(scopeKey);\n const scopedSettings = this.settingsService.scope(AXPPlatformScope.Tenant);\n const saved = await scopedSettings.get<AXPMenuCustomization>(storageKey);\n\n if (saved && saved.version) {\n return saved;\n }\n\n return cloneDeep(AXP_MENU_CUSTOMIZATION_DEFAULT);\n } catch {\n return cloneDeep(AXP_MENU_CUSTOMIZATION_DEFAULT);\n }\n }\n\n /**\n * Save menu customization using a generic scope key\n */\n async saveCustomizationByKey(scopeKey: string, customization: AXPMenuCustomization): Promise<void> {\n const storageKey = buildCustomizationKey(scopeKey);\n const scopedSettings = this.settingsService.scope(AXPPlatformScope.Tenant);\n await scopedSettings.set(storageKey, customization);\n\n // Clear menu cache to force reload\n this.menuProviderService.clearCache();\n }\n\n /**\n * Hide a menu item using a generic scope key\n */\n async hideMenuItemByKey(scopeKey: string, menuName: string): Promise<void> {\n this.validateMenuName(menuName, 'hide');\n\n const customization = await this.loadCustomizationByKey(scopeKey);\n this.ensureOverrideExists(customization, menuName);\n customization.overrides[menuName].hidden = true;\n\n await this.saveCustomizationByKey(scopeKey, customization);\n }\n\n /**\n * Show a menu item using a generic scope key\n */\n async showMenuItemByKey(scopeKey: string, menuName: string): Promise<void> {\n this.validateMenuName(menuName, 'show');\n\n const customization = await this.loadCustomizationByKey(scopeKey);\n\n if (customization.overrides[menuName]) {\n delete customization.overrides[menuName].hidden;\n this.cleanupEmptyOverride(customization, menuName);\n }\n\n await this.saveCustomizationByKey(scopeKey, customization);\n }\n\n /**\n * Update menu item properties using a generic scope key\n */\n async updateMenuPropertiesByKey(scopeKey: string, menuName: string, properties: Partial<AXPMenuItem>): Promise<void> {\n this.validateMenuName(menuName, 'update properties for');\n\n const customization = await this.loadCustomizationByKey(scopeKey);\n this.ensureOverrideExists(customization, menuName);\n\n customization.overrides[menuName].properties = {\n ...customization.overrides[menuName].properties,\n ...properties,\n };\n\n await this.saveCustomizationByKey(scopeKey, customization);\n }\n\n /**\n * Add custom menu item using a generic scope key\n */\n async addCustomMenuItemByKey(scopeKey: string, menuItem: AXPMenuItem, parent: any): Promise<void> {\n const customization = await this.loadCustomizationByKey(scopeKey);\n\n // Generate unique name if not provided\n if (!menuItem.name) {\n menuItem.name = `custom-menu-${Date.now()}`;\n }\n\n customization.customItems.push(menuItem);\n\n await this.saveCustomizationByKey(scopeKey, customization);\n }\n\n /**\n * Update custom menu item using a generic scope key\n */\n async updateCustomMenuItemByKey(scopeKey: string, menuName: string, menuItem: AXPMenuItem): Promise<void> {\n this.validateMenuName(menuName, 'update');\n\n const customization = await this.loadCustomizationByKey(scopeKey);\n\n const index = customization.customItems.findIndex((item) => item.name === menuName);\n\n if (index === -1) {\n throw new Error(`Custom menu item '${menuName}' not found`);\n }\n\n customization.customItems[index] = menuItem;\n await this.saveCustomizationByKey(scopeKey, customization);\n }\n\n /**\n * Delete custom menu item using a generic scope key\n */\n async deleteCustomMenuItemByKey(scopeKey: string, menuName: string): Promise<void> {\n this.validateMenuName(menuName, 'delete');\n\n const customization = await this.loadCustomizationByKey(scopeKey);\n\n const initialLength = customization.customItems.length;\n customization.customItems = customization.customItems.filter((item) => item.name !== menuName);\n\n if (customization.customItems.length === initialLength) {\n throw new Error(`Custom menu item '${menuName}' not found`);\n }\n\n await this.saveCustomizationByKey(scopeKey, customization);\n }\n\n /**\n * Reset all customizations using a generic scope key\n */\n async resetCustomizationsByKey(scopeKey: string): Promise<void> {\n await this.saveCustomizationByKey(scopeKey, cloneDeep(AXP_MENU_CUSTOMIZATION_DEFAULT));\n }\n\n //#endregion\n\n //#region ---- Private Methods ----\n\n /**\n * Apply parent overrides from customization to restructure menu items\n * This ensures the tree reflects saved parent changes (moves)\n */\n private applyParentOverrides(items: AXPMenuItem[], customization: AXPMenuCustomization): AXPMenuItem[] {\n // First, flatten all items into a map for easy lookup\n const itemMap = this.flattenMenuItems(items);\n\n // Build new structure based on effective parent relationships\n const rootItems: AXPMenuItem[] = [];\n const childrenMap = new Map<string, AXPMenuItem[]>();\n\n for (const [itemName, item] of itemMap.entries()) {\n const override = customization.overrides[itemName];\n\n // Determine effective parent (override takes precedence)\n let effectiveParent: string | null | undefined;\n if (override?.parentName !== undefined) {\n // parentName is explicitly set (could be null for root, or a parent name)\n effectiveParent = override.parentName;\n } else {\n // No override - find original parent by searching original structure\n effectiveParent = this.findOriginalParent(items, itemName);\n }\n\n if (effectiveParent === null || effectiveParent === undefined) {\n // Root level item\n rootItems.push(item);\n } else {\n // Child item - add to parent's children\n if (!childrenMap.has(effectiveParent)) {\n childrenMap.set(effectiveParent, []);\n }\n childrenMap.get(effectiveParent)!.push(item);\n }\n }\n\n // Attach children to their parents recursively\n const attachChildren = (item: AXPMenuItem) => {\n if (item.name && childrenMap.has(item.name)) {\n item.children = childrenMap.get(item.name);\n item.children?.forEach(attachChildren);\n }\n };\n\n rootItems.forEach(attachChildren);\n\n return rootItems;\n }\n\n /**\n * Find the original parent name of an item in the original structure\n * Returns undefined for root items, string for items with parents, null for not found\n */\n private findOriginalParent(\n items: AXPMenuItem[],\n targetName: string,\n currentParent?: string,\n ): string | undefined | null {\n for (const item of items) {\n if (item.name === targetName) {\n return currentParent; // undefined if root, string if has parent\n }\n if (item.children) {\n const found = this.findOriginalParent(item.children, targetName, item.name);\n if (found !== null) {\n // Found in children (could be undefined for root of subtree, or string for nested item)\n return found;\n }\n // found === null means not found in this subtree, continue searching\n }\n }\n return null; // Not found in this level or any children\n }\n\n /**\n * Convert menu items to AXTreeNode[] with metadata\n */\n private convertToTreeNodes(\n items: AXPMenuItem[],\n customization: AXPMenuCustomization,\n parentName?: string,\n ): AXTreeViewNode[] {\n const nodes = items.map((item) => {\n const itemName = item.name;\n const override = itemName ? customization.overrides[itemName] : undefined;\n const isCustom = itemName ? customization.customItems.some((ci) => ci.name === itemName) : false;\n\n // Create metadata\n const metadata = {\n isBuiltIn: !isCustom,\n isCustom,\n isHidden: override?.hidden || false,\n originalPriority: item.priority,\n originalParentName: parentName,\n };\n\n // Apply ALL overrides: priority AND properties (text, icon, description, etc.)\n const effectivePriority = override?.priority !== undefined ? override.priority : item.priority;\n const effectiveItem: AXPMenuItem = {\n ...item,\n ...override?.properties, // Apply property overrides (text, icon, description)\n priority: effectivePriority,\n };\n\n // Create tree node data with effective (overridden) values\n const nodeData: AXPMenuTreeNodeData = {\n menuItem: effectiveItem,\n metadata,\n };\n\n // Create tree node using effective (overridden) values\n const treeNode: AXTreeViewNode = {\n id: itemName || item.path || this.generateNodeId(),\n title: effectiveItem.text || effectiveItem.path || 'Unnamed',\n icon: effectiveItem.icon,\n expanded: false,\n selected: false,\n ['children']: item.children ? this.convertToTreeNodes(item.children, customization, itemName) : undefined,\n childrenCount: item.children?.length,\n data: nodeData,\n };\n\n return treeNode;\n });\n\n // Sort by priority\n nodes.sort((a, b) => {\n const aPriority = (a['data'] as AXPMenuTreeNodeData)?.menuItem.priority ?? 0;\n const bPriority = (b['data'] as AXPMenuTreeNodeData)?.menuItem.priority ?? 0;\n return aPriority - bPriority;\n });\n\n return nodes;\n }\n\n /**\n * Update customization from tree structure\n * Extracts priorities and parent relationships from tree nodes\n */\n private updateCustomizationFromTree(\n treeNodes: AXTreeViewNode[],\n customization: AXPMenuCustomization,\n parentName?: string,\n ): void {\n // Calculate base priority for this level to maintain relative ordering\n const basePriority = parentName ? PRIORITY_BASE_NESTED : PRIORITY_BASE_ROOT;\n const priorityStep = PRIORITY_STEP;\n\n treeNodes.forEach((node, index) => {\n const nodeData = (node['data'] as AXPMenuTreeNodeData) || null;\n const menuItem = nodeData?.menuItem;\n\n if (menuItem?.name) {\n this.ensureOverrideExists(customization, menuItem.name);\n\n // Calculate new priority based on current position\n const newPriority = basePriority + index * priorityStep;\n\n // Get current effective priority (considering existing overrides)\n const currentEffectivePriority =\n customization.overrides[menuItem.name]?.priority ?? nodeData.metadata.originalPriority ?? 0;\n\n // Always update priority to reflect current position in tree\n // This ensures reordering works correctly even after multiple moves\n if (newPriority !== currentEffectivePriority) {\n customization.overrides[menuItem.name].priority = newPriority;\n }\n\n // Determine current effective parent (considering existing overrides)\n const currentEffectiveParent =\n customization.overrides[menuItem.name]?.parentName ?? nodeData.metadata.originalParentName;\n\n // Update parent relationship if it changed from current effective parent\n if (parentName !== currentEffectiveParent) {\n if (parentName) {\n customization.overrides[menuItem.name].parentName = parentName;\n } else {\n // Moving to root - set to null (not undefined) so middleware will process it\n // moveTo(null) moves the item to root level\n customization.overrides[menuItem.name].parentName = null;\n }\n }\n\n // Clean up empty overrides\n this.cleanupEmptyOverride(customization, menuItem.name);\n\n // Recursively process children\n const nodeChildren = node['children'] as AXTreeViewNode[] | undefined;\n if (nodeChildren && nodeChildren.length > 0) {\n this.updateCustomizationFromTree(nodeChildren, customization, menuItem.name);\n }\n }\n });\n }\n\n /**\n * Validate menu name before operations\n */\n private validateMenuName(menuName: string, operation: string): void {\n if (!menuName) {\n throw new Error(`Menu item must have a name to be ${operation}`);\n }\n }\n\n /**\n * Ensure override object exists for a menu item\n */\n private ensureOverrideExists(customization: AXPMenuCustomization, menuName: string): void {\n if (!customization.overrides[menuName]) {\n customization.overrides[menuName] = {};\n }\n }\n\n /**\n * Clean up empty override objects\n */\n private cleanupEmptyOverride(customization: AXPMenuCustomization, menuName: string): void {\n if (Object.keys(customization.overrides[menuName] || {}).length === 0) {\n delete customization.overrides[menuName];\n }\n }\n\n /**\n * Flatten menu items recursively into a map\n */\n private flattenMenuItems(items: AXPMenuItem[]): Map<string, AXPMenuItem> {\n const itemMap = new Map<string, AXPMenuItem>();\n\n const flatten = (itemList: AXPMenuItem[]) => {\n for (const item of itemList) {\n if (item.name) {\n // Clone item without children to rebuild structure\n itemMap.set(item.name, { ...item, children: undefined });\n }\n if (item.children) {\n flatten(item.children);\n }\n }\n };\n\n flatten(items);\n return itemMap;\n }\n\n /**\n * Generate unique ID for tree nodes\n */\n private generateNodeId(): string {\n return `node-${Date.now()}-${Math.floor(Math.random() * 10000)}`;\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXTreeViewDragArea, AXTreeViewDragBehavior } from '@acorex/components/tree-view';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPActionMenuItem, AXPExecuteCommand } from '@acorex/platform/core';\nimport { AXPMenuCustomizerComponent, AXPThemeLayoutBlockComponent } from '@acorex/platform/layout/components';\nimport {\n AXPPopupLayoutBase,\n AXPPopupLayoutBaseComponent,\n AXPPopupLayoutComponent,\n} from '@acorex/platform/layout/views';\n\nimport { Component, computed, signal, viewChild, ViewEncapsulation } from '@angular/core';\n\n//#endregion\n\n//#region ---- Menu Customizer Popup Component ----\n\n/**\n * Popup wrapper for the menu customizer component.\n * Provides a popup layout with actions for managing menu customizations.\n *\n * Pass the following data when opening the popup:\n * - scopeKey: string - The scope key for menu customizations\n * - showToolbar?: boolean - Whether to show the toolbar (default: true)\n * - allowAddItems?: boolean - Whether to allow adding items (default: true)\n * - dragBehavior?: AXTreeViewDragBehavior - Drag behavior (default: 'move')\n * - dragArea?: AXTreeViewDragArea - Drag area (default: 'handler')\n */\n@Component({\n selector: 'axp-menu-customizer-popup',\n template: `\n <axp-popup-layout>\n <axp-page-content>\n @if (isReady()) {\n <axp-menu-customizer\n [scopeKey]=\"scopeKey()\"\n [showToolbar]=\"showToolbar()\"\n [allowAddItems]=\"allowAddItems()\"\n [dragBehavior]=\"dragBehavior()\"\n [dragArea]=\"dragArea()\"\n (saved)=\"onSaved()\"\n (cancelled)=\"onCancelled()\"\n ></axp-menu-customizer>\n }\n </axp-page-content>\n </axp-popup-layout>\n `,\n imports: [\n AXTranslationModule,\n AXPPopupLayoutComponent,\n AXPThemeLayoutBlockComponent,\n AXPMenuCustomizerComponent\n],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: AXPPopupLayoutBase,\n useExisting: AXPMenuCustomizerPopupComponent,\n },\n ],\n host: { class: 'axp-menu-customizer-popup' },\n})\nexport class AXPMenuCustomizerPopupComponent extends AXPPopupLayoutBaseComponent {\n //#region ---- Component State ----\n\n /** Reference to the menu customizer component */\n protected menuCustomizer = viewChild(AXPMenuCustomizerComponent);\n\n /** The scope key for menu customizations (set by popup service) */\n scopeKey = signal<string>('');\n\n /** Whether to show the toolbar */\n showToolbar = signal<boolean>(true);\n\n /** Whether to allow adding custom items */\n allowAddItems = signal<boolean>(true);\n\n /** Drag behavior for the tree view */\n dragBehavior = signal<AXTreeViewDragBehavior>('both');\n\n /** Drag area for the tree view */\n dragArea = signal<AXTreeViewDragArea>('handler');\n\n /** Whether the component is ready to render (scopeKey is set) */\n protected isReady = computed(() => this.scopeKey() !== '');\n\n //#endregion\n\n //#region ---- Lifecycle Methods ----\n\n override async ngOnInit(): Promise<void> {\n await super.ngOnInit();\n // Popup-specific initialization can go here\n }\n\n //#endregion\n\n //#region ---- UI Handlers ----\n\n /**\n * Returns the primary menu items for the popup layout.\n */\n protected override getPrimaryMenuItems(): AXPActionMenuItem[] | Promise<AXPActionMenuItem[]> {\n return [\n {\n title: '@general:actions.close.title',\n icon: 'fa-solid fa-xmark',\n command: {\n name: 'close',\n },\n },\n ];\n }\n\n /**\n * Handles when changes are saved\n */\n protected onSaved(): void {\n this.close(true);\n }\n\n /**\n * Handles when customization is cancelled\n */\n protected onCancelled(): void {\n this.close(false);\n }\n\n /**\n * Executes popup commands\n */\n override execute(command: AXPExecuteCommand): void | Promise<void> {\n if (command.name === 'close') {\n this.close(false);\n }\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPopupService } from '@acorex/components/popup';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPWorkflow, AXPWorkflowAction, AXPWorkflowContext } from '@acorex/platform/workflow';\nimport { inject, Injectable, signal } from '@angular/core';\nimport { AXPMenuCustomizerPopupComponent } from '../components/menu-customizer-popup/menu-customizer-popup.component';\n\n//#endregion\n\n//#region ---- Open Menu Customizer Action ----\n\n/**\n * Workflow action that opens the menu customizer popup.\n * Expects the context to contain:\n * - data: The entity data (must have an 'id' property)\n * - options.scopePrefix: The prefix for the scope key (e.g., 'edition', 'tenant')\n * - options.title: Optional custom title for the popup\n * - options.showToolbar: Whether to show toolbar (default: true)\n * - options.allowAddItems: Whether to allow adding items (default: true)\n * - options.dragBehavior: Drag behavior - 'none' | 'move' | 'copy' (default: 'move')\n * - options.dragArea: Drag area - 'node' | 'handler' (default: 'handler')\n */\n@Injectable()\nexport class AXMOpenMenuCustomizerAction extends AXPWorkflowAction {\n //#region ---- Dependencies ----\n\n private popupService = inject(AXPopupService);\n private translateService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- Execute ----\n\n async execute(context: AXPWorkflowContext): Promise<void> {\n // Get entity data\n const data = context.getVariable('data');\n const entityId = data?.id;\n\n if (!entityId) {\n console.error('Menu customizer requires entity data with an id property');\n context.setOutput('result', false);\n return;\n }\n\n // Get scope configuration\n const scopePrefix = context.getVariable('options.scopePrefix') || 'entity';\n const scopeKey = `${scopePrefix}:${entityId}`;\n\n // Get optional title\n const customTitle = context.getVariable('options.title');\n const defaultTitle = await this.translateService.translateAsync(\n '@platform-management:menu-management.components.menu-customizer-popup.title',\n );\n const entityTitle = data?.title || data?.name || entityId;\n const title = customTitle || `${defaultTitle} - ${entityTitle}`;\n\n // Open popup using the component from platform/layout/components\n // Pass signals to properly bind to the popup component's signal properties\n const result = await this.popupService.open(AXPMenuCustomizerPopupComponent, {\n title,\n size: 'lg',\n data: {\n scopeKey: signal(scopeKey),\n showToolbar: signal(context.getVariable('options.showToolbar') ?? true),\n allowAddItems: signal(context.getVariable('options.allowAddItems') ?? true),\n dragBehavior: signal(context.getVariable('options.dragBehavior') ?? 'both'),\n dragArea: signal(context.getVariable('options.dragArea') ?? 'handler'),\n },\n });\n\n // Set result based on popup outcome\n context.setOutput('result', result?.data === true);\n }\n\n //#endregion\n}\n\n//#endregion\n\n//#region ---- Customize Menu Workflow ----\n\n/**\n * Workflow definition for customizing menus.\n * Opens the menu customizer popup and handles the result.\n */\nexport const AXMCustomizeMenuWorkflow: AXPWorkflow = {\n startStepId: 'open-customizer',\n steps: {\n 'open-customizer': {\n action: 'open-menu-customizer',\n nextSteps: [\n {\n conditions: [{ type: 'SINGLE', expression: 'context.getOutput(\"result\") == true' }],\n nextStepId: 'show-success-toast',\n },\n ],\n },\n 'show-success-toast': {\n action: 'AXPToastAction',\n input: {\n color: 'success',\n title: '@platform-management:menu-management.messages.success.customization-saved',\n },\n },\n },\n};\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXP_MENU_CUSTOMIZER_SERVICE } from '@acorex/platform/layout/components';\nimport { AXPWorkflowModule } from '@acorex/platform/workflow';\nimport { NgModule } from '@angular/core';\nimport { AXPMenuManagementService } from './menu-management.service';\nimport { AXMCustomizeMenuWorkflow, AXMOpenMenuCustomizerAction } from './workflows/customize-menu.workflow';\n\n//#endregion\n\n//#region ---- Module ----\n\n/**\n * Module for menu management features including the menu customizer\n * and related workflows.\n */\n@NgModule({\n imports: [\n AXPWorkflowModule.forChild({\n workflows: {\n 'customize-menu': AXMCustomizeMenuWorkflow,\n },\n actions: {\n 'open-menu-customizer': AXMOpenMenuCustomizerAction,\n },\n }),\n ],\n providers: [\n {\n provide: AXP_MENU_CUSTOMIZER_SERVICE,\n useExisting: AXPMenuManagementService,\n },\n ],\n})\nexport class AXMMenuManagementModule {}\n\n//#endregion\n","import { AXPTokenDefinitionProvider } from \"@acorex/platform/common\";\n\n/**\n * Token that returns current ISO date-time string.\n */\nexport class AXMTokenProvider implements AXPTokenDefinitionProvider<string> {\n name = 'now';\n title = 'Now';\n description = 'Current date and time in ISO format';\n\n execute(): Promise<string> {\n return Promise.resolve(new Date().toISOString());\n }\n}\n\n","import { AXMEntityCrudServiceImpl } from '@acorex/platform/layout/entity';\nimport { Injectable } from '@angular/core';\nimport { RootConfig } from '../../const';\nimport { AXMTokenEntityModel } from './tokens.types';\n\nexport abstract class AXMTokensService extends AXMEntityCrudServiceImpl<\n string,\n AXMTokenEntityModel\n> { }\n\n@Injectable()\nexport class AXMTokensServiceImpl extends AXMEntityCrudServiceImpl<string, AXMTokenEntityModel> {\n constructor() {\n super(`${RootConfig.module.name}.${RootConfig.entities.token.name}`);\n }\n}\n","//#region ---- Imports ----\n\nimport { AXPTokenDefinitionProvider } from '@acorex/platform/common';\nimport { AXPExpressionEvaluatorService } from '@acorex/platform/core';\nimport { Injector } from '@angular/core';\nimport { AXMTokensService } from '../../entities/token/tokens.service';\nimport { AXMTokenEntityModel } from '../../entities/token/tokens.types';\nimport { RootConfig } from '../../const';\nimport { AXPEntityDefinitionRegistryService } from '@acorex/platform/layout/entity';\n\n//#endregion\n\n//#region ---- Factory Cache ----\n\n/**\n * Global cache for loaded token providers.\n * Cleared when token entity changes occur.\n */\nlet cachedProviders: Promise<AXPTokenDefinitionProvider[]> | null = null;\n\n/**\n * Clears the cached providers, forcing reload on next access.\n */\nexport function clearDynamicTokenProvidersCache(): void {\n cachedProviders = null;\n}\n\n//#endregion\n\n//#region ---- Factory Function ----\n\n/**\n * Factory function that loads tokens from backend and creates providers for each.\n * Uses global caching - tokens are loaded once and cached until invalidated.\n * \n * @param injector Angular injector to resolve dependencies\n * @returns Promise that resolves to an array of token providers\n */\nexport async function createDynamicTokenProviders(\n injector: Injector\n): Promise<AXPTokenDefinitionProvider[]> {\n // Return cached providers if available\n if (cachedProviders) {\n return cachedProviders;\n }\n\n // Load providers and cache the promise\n cachedProviders = loadTokenProviders(injector);\n return cachedProviders;\n}\n\n/**\n * Internal function that loads tokens from backend and creates providers.\n */\nasync function loadTokenProviders(\n injector: Injector\n): Promise<AXPTokenDefinitionProvider[]> {\n const tokensService = injector.get(AXMTokensService);\n // const entityResolver = injector.get(AXPEntityDefinitionRegistryService);\n // const tokenEntityDef = await entityResolver.exists(RootConfig.module.name, RootConfig.entities.token.name);\n // if (!tokenEntityDef) {\n // return [];\n // }\n\n try {\n // Load all tokens from backend\n const queryResult = await tokensService.query({\n skip: 0,\n take: 1000, // Load all tokens (adjust if needed)\n });\n\n if (!queryResult || !queryResult.items || queryResult.items.length === 0) {\n return [];\n }\n\n // Convert each token entity to a provider\n // Pass injector instead of expressionEvaluator to avoid circular dependency\n return queryResult.items.map((token: AXMTokenEntityModel) => {\n return createTokenProvider(token, injector);\n });\n } catch (error) {\n console.error('[DynamicTokenProvider] Failed to load tokens from backend:', error);\n throw error; // Throw error as requested\n }\n}\n\n/**\n * Creates a token provider from a token entity model.\n * Uses lazy injection for expression evaluator to avoid circular dependency.\n * Reloads token data from backend on each execution to ensure fresh data.\n */\nfunction createTokenProvider(\n token: AXMTokenEntityModel,\n injector: Injector\n): AXPTokenDefinitionProvider {\n const tokenName = token.name;\n\n return {\n name: tokenName,\n title: token.title,\n description: token.description,\n\n async execute(): Promise<any> {\n // Reload token from backend to get fresh data\n // This ensures we always have the latest token configuration\n\n // const entityResolver = injector.get(AXPEntityDefinitionRegistryService);\n // const tokenEntityDef = await entityResolver.exists(RootConfig.module.name, RootConfig.entities.token.name);\n // if (!tokenEntityDef) {\n // return;\n // }\n const tokensService = injector.get(AXMTokensService);\n let currentToken: AXMTokenEntityModel | null = null;\n\n try {\n // Try to get the token by name (assuming name is unique)\n const queryResult = await tokensService.query({\n skip: 0,\n take: 1000,\n filter: {\n field: 'name',\n operator: { type: 'equal' },\n value: tokenName,\n },\n });\n\n if (queryResult?.items && queryResult.items.length > 0) {\n currentToken = queryResult.items[0] as AXMTokenEntityModel;\n }\n } catch (error) {\n console.warn(`[DynamicTokenProvider] Failed to reload token \"${tokenName}\", using cached data:`, error);\n // Fallback to original token data if reload fails\n currentToken = token;\n }\n\n // Use reloaded token if available, otherwise fallback to original\n const tokenToUse = currentToken || token;\n\n if (!tokenToUse.expression) {\n throw new Error(`Token \"${tokenName}\" has no expression defined`);\n }\n\n // Context or Computed kind: evaluate expression. Otherwise use raw value.\n const kind = tokenToUse.kind ?? (tokenToUse as any).kind;\n const shouldEvaluate = kind === 'Context' || kind === 'Computed';\n\n if (shouldEvaluate) {\n // Evaluate the expression using expression evaluator\n try {\n const expressionEvaluator = injector.get(AXPExpressionEvaluatorService);\n return await expressionEvaluator.evaluate(tokenToUse.expression);\n } catch (error) {\n console.error(`[DynamicTokenProvider] Error evaluating token \"${tokenName}\":`, error);\n throw error;\n }\n }\n\n // Normalize dataType for static/computed value conversion\n const dataTypeValue = tokenToUse.dataType ?? (tokenToUse as any).type;\n const normalizedDataType = normalizeDataType(dataTypeValue);\n\n {\n // Static types (String, Integer, Boolean): return direct value from expression field (no evaluation)\n // Optionally convert to appropriate type\n const expressionValue = tokenToUse.expression;\n\n if (normalizedDataType === 'Integer') {\n const numValue = parseInt(expressionValue, 10);\n if (isNaN(numValue)) {\n throw new Error(`Token \"${tokenName}\" expression is not a valid integer: ${expressionValue}`);\n }\n return numValue;\n } else if (normalizedDataType === 'Boolean') {\n const lowerValue = expressionValue.toLowerCase().trim();\n if (lowerValue === 'true' || lowerValue === '1' || lowerValue === 'yes') {\n return true;\n } else if (lowerValue === 'false' || lowerValue === '0' || lowerValue === 'no') {\n return false;\n }\n throw new Error(`Token \"${tokenName}\" expression is not a valid boolean: ${expressionValue}`);\n } else if (normalizedDataType === 'Decimal') {\n const numValue = parseFloat(expressionValue);\n if (isNaN(numValue)) {\n throw new Error(`Token \"${tokenName}\" expression is not a valid decimal: ${expressionValue}`);\n }\n return numValue;\n } else if (normalizedDataType === 'DateTime') {\n const date = new Date(expressionValue);\n return isNaN(date.getTime()) ? expressionValue : date;\n } else if (normalizedDataType === 'Json') {\n try {\n return JSON.parse(expressionValue);\n } catch {\n return expressionValue;\n }\n } else {\n // String type: return as-is\n return expressionValue;\n }\n }\n },\n };\n}\n\n/** Valid token data types for value conversion */\ntype TokenDataType = 'String' | 'Integer' | 'Boolean' | 'Decimal' | 'DateTime' | 'Json';\n\n/**\n * Normalizes the dataType field to a string value.\n * Handles cases where select box widgets return objects instead of strings.\n */\nfunction normalizeDataType(dataType: any): TokenDataType {\n const validTypes: TokenDataType[] = ['String', 'Integer', 'Boolean', 'Decimal', 'DateTime', 'Json'];\n\n if (typeof dataType === 'string' && validTypes.includes(dataType as TokenDataType)) {\n return dataType as TokenDataType;\n }\n\n if (dataType && typeof dataType === 'object' && 'value' in dataType) {\n if (validTypes.includes(dataType.value as TokenDataType)) {\n return dataType.value as TokenDataType;\n }\n }\n\n const typeString = String(dataType);\n if (validTypes.includes(typeString as TokenDataType)) {\n return typeString as TokenDataType;\n }\n\n throw new Error(`Invalid dataType value: ${JSON.stringify(dataType)}. Must be one of: ${validTypes.join(', ')}`);\n}\n\n//#endregion\n\n","//#region ---- Imports ----\n\nimport { AXPTokenDefinitionService } from '@acorex/platform/common';\nimport { AXPDistributedEventListenerProvider } from '@acorex/platform/core';\nimport { Injectable, inject } from '@angular/core';\nimport { clearDynamicTokenProvidersCache } from './dynamic-token.provider';\nimport { RootConfig } from '../../const';\n\n//#endregion\n\n//#region ---- Token Refresh Event Listener ----\n\n/**\n * Event listener provider that listens to token entity changes\n * and clears the token cache when tokens are updated, inserted, or deleted.\n */\n@Injectable()\nexport class AXMTokenRefreshProvider implements AXPDistributedEventListenerProvider {\n private readonly tokenService = inject(AXPTokenDefinitionService);\n\n /**\n * Event keys to listen to for token entity changes.\n * Supports wildcard patterns for entity events.\n * Format: entity.{operation}.{ModuleName}.{EntityName}\n * Example: entity.updated.PlatformManagement.Tokens\n */\n key = `entity.*.${RootConfig.module.name}.${RootConfig.entities.token.name}`;\n\n /**\n * Executes when a token entity event occurs (inserted, updated, or deleted).\n * Clears both the token definition service cache and the dynamic providers cache.\n */\n async execute(data: any): Promise<void> {\n // Clear token definition service cache\n this.tokenService.clearDefinitionsCache();\n\n // Clear dynamic token providers cache to force reload\n clearDynamicTokenProvidersCache();\n }\n}\n\n//#endregion\n\n","//#region ---- Imports ----\n\nimport { AXP_TOKEN_DEFINITION_PROVIDER } from '@acorex/platform/common';\nimport { AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER } from '@acorex/platform/core';\nimport { provideCommandSetups } from '@acorex/platform/runtime';\nimport { NgModule, Injector } from '@angular/core';\nimport { AXMTokenProvider } from './token.provider';\nimport { createDynamicTokenProviders } from './dynamic-token.provider';\nimport { AXMTokenRefreshProvider } from './token-refresh.provider';\nimport { RootConfig } from '../../const';\n\n//#endregion\n\n//#region ---- Token Module ----\n\n/**\n * Token feature module.\n * Provides token definition providers (static and dynamic) and refresh listeners.\n */\n@NgModule({\n imports: [],\n exports: [],\n declarations: [],\n providers: [\n // Static token provider (built-in tokens)\n {\n provide: AXP_TOKEN_DEFINITION_PROVIDER,\n useClass: AXMTokenProvider,\n multi: true,\n },\n // Dynamic token provider (tokens from backend)\n {\n provide: AXP_TOKEN_DEFINITION_PROVIDER,\n useFactory: (injector: Injector) => createDynamicTokenProviders(injector),\n deps: [Injector],\n multi: true,\n },\n // Token refresh listener (clears cache on entity changes)\n {\n provide: AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER,\n useClass: AXMTokenRefreshProvider,\n multi: true,\n },\n // Execute token command\n provideCommandSetups([\n {\n key: `${RootConfig.module.name}.${RootConfig.entities.token.name}:Execute`,\n command: () => import('./commands/execute-token.command').then((c) => c.ExecuteTokenCommand),\n },\n ]),\n ],\n})\nexport class AXMTokenModule { }\n\n//#endregion\n\n","import { AXDialogService } from '@acorex/components/dialog';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { inject, Injectable, Optional } from '@angular/core';\nimport { SwUpdate } from '@angular/service-worker';\nimport { RootConfig } from '../../const';\n\n@Injectable({ providedIn: 'root' })\nexport class AXPUpdaterService {\n constructor() {\n const swUpdate = inject(SwUpdate, { optional: true });\n const dialogService = inject(AXDialogService);\n const translateService = inject(AXTranslationService);\n\n if (swUpdate?.isEnabled) {\n swUpdate.versionUpdates.subscribe((event) => {\n if (event.type === 'VERSION_READY') {\n console.log('New version available');\n const scope = RootConfig.config.i18n;\n const dialog = dialogService.open({\n icon: 'fa-regular fa-info',\n content: translateService.translateSync('updater.content', { scope: scope }),\n title: translateService.translateSync('updater.title', { scope: scope }),\n type: 'primary',\n orientation: 'horizontal',\n buttons: [\n {\n text: translateService.translateSync('updater.update', { scope: scope }),\n color: 'primary',\n onClick: async (e: any) => {\n try {\n document.location.reload();\n dialog.close();\n } catch (error) {\n console.error(error);\n }\n },\n },\n {\n text: translateService.translateSync('updater.cancel', { scope: scope }),\n color: 'default',\n autofocus: true,\n onClick: (e) => {\n dialog.close();\n },\n },\n ],\n closeButton: false,\n });\n }\n });\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { AXPUpdaterService } from './updater.service';\n\n@NgModule({\n imports: [],\n exports: [],\n declarations: [],\n providers: [AXPUpdaterService],\n})\nexport class AXMUpdaterModule {\n constructor(private updaterService: AXPUpdaterService) {}\n}\n","//#region ---- Imports ----\n\nimport { AXPModuleManifest } from '@acorex/platform/core';\nimport { RootConfig } from './const';\n\n\n//#endregion\n\n//#region ---- Manifest Definition ----\n\n/**\n * Platform Management Module Manifest.\n * Defines module metadata, features, and provider references.\n */\nexport const PlatformManagementManifest: AXPModuleManifest = {\n name: RootConfig.module.name,\n version: '1.0.0',\n title: RootConfig.module.title,\n icon: RootConfig.module.icon,\n i18n: RootConfig.config.i18n,\n\n dependencies: [\n 'SecurityManagement',\n 'ApplicationManagement',\n 'SystemInsight',\n 'TenantManagement',\n 'SubscriptionManagement',\n ],\n};\n\n//#endregion\n\n","export const AXPPlatformManagementMenuKeys = {\n AdministrationGroup: 'administration:group',\n Root: 'platform-management:menu',\n Tokens: 'platform-management:menu:tokens',\n /** Parent menu for definition entities (modules, entities, interfaces, …) */\n Definitions: 'platform-management:menu:definitions',\n Modules: 'platform-management:menu:modules',\n Interfaces: 'platform-management:menu:interfaces',\n Relations: 'platform-management:menu:relations',\n Plugins: 'platform-management:menu:plugins',\n Validations: 'platform-management:menu:validations',\n PermissionGroupDefinitions: 'platform-management:menu:permission-group-definitions',\n Commands: 'platform-management:menu:commands',\n Queries: 'platform-management:menu:queries',\n /** @deprecated Use Definitions > Entities instead */\n EntityDefinitions: 'platform-management:menu:entity-definitions',\n Glossary: 'platform-management:menu:glossary',\n UserMenuManagement: 'platform-management:user:menus',\n MenuManagement: 'platform-management:menus',\n} as const;\n\n","export const AXPPlatformManagementPermissionKeys = {\n PlatformManagement: {\n Management: 'PlatformManagement:Permission:Management',\n Administration: 'PlatformManagement:Permission:Administration',\n Token: {\n Management: 'PlatformManagement:Permission:Token.Management',\n View: 'PlatformManagement:Permission:Token.View',\n Edit: 'PlatformManagement:Permission:Token.Edit',\n Delete: 'PlatformManagement:Permission:Token.Delete',\n Create: 'PlatformManagement:Permission:Token.Create',\n },\n MenuManagement: {\n Management: 'PlatformManagement:Permission:MenuManagement.Management',\n View: 'PlatformManagement:Permission:MenuManagement.View',\n Edit: 'PlatformManagement:Permission:MenuManagement.Edit',\n Delete: 'PlatformManagement:Permission:MenuManagement.Delete',\n Create: 'PlatformManagement:Permission:MenuManagement.Create',\n },\n EntityDefinition: {\n Management: 'PlatformManagement:Permission:EntityDefinition.Management',\n View: 'PlatformManagement:Permission:EntityDefinition.View',\n Edit: 'PlatformManagement:Permission:EntityDefinition.Edit',\n Delete: 'PlatformManagement:Permission:EntityDefinition.Delete',\n Create: 'PlatformManagement:Permission:EntityDefinition.Create',\n },\n },\n};\n","import { AXPCommonMenuKeys } from '@acorex/modules/common';\nimport { AXPMenuProvider, AXPMenuProviderContext } from '@acorex/platform/common';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPEntityService } from '@acorex/platform/layout/entity';\nimport { inject } from '@angular/core';\n\nimport { RootConfig } from './const';\nimport { AXPPlatformManagementMenuKeys } from './menu.keys';\nimport { AXPPlatformManagementPermissionKeys } from './permission.keys';\n\nexport class AXMMenuProvider implements AXPMenuProvider {\n private entityService = inject(AXPEntityService);\n private sessionService = inject(AXPSessionService);\n\n async provide(context: AXPMenuProviderContext): Promise<void> {\n const scope = RootConfig.config.i18n;\n const moduleName = RootConfig.module.name;\n\n // Add Tokens and Definitions (Entities, Plugins, Interfaces, …) under Data and Content\n context.find(AXPCommonMenuKeys.DataAndContent).addItems([\n {\n name: AXPPlatformManagementMenuKeys.Tokens,\n priority: 14,\n text: `@${scope}:tokens.terms.tokens`,\n path: this.entityService.createPath(moduleName, RootConfig.entities.token.name),\n icon: RootConfig.entities.token.icon,\n policy: {\n features: [moduleName],\n permissions: [AXPPlatformManagementPermissionKeys.PlatformManagement.Token.Management],\n },\n },\n {\n name: AXPPlatformManagementMenuKeys.Definitions,\n priority: 15,\n text: `@${scope}:definitions.terms.title`,\n icon: 'fa-light fa-file-code',\n type: 'menu',\n policy: {\n features: [moduleName],\n permissions: [AXPPlatformManagementPermissionKeys.PlatformManagement.EntityDefinition.Management],\n },\n children: [\n {\n name: AXPPlatformManagementMenuKeys.Modules,\n priority: 1,\n text: `@${scope}:definitions.modules.title`,\n path: this.entityService.createPath(moduleName, RootConfig.entities.moduleDefinition.name),\n icon: RootConfig.entities.moduleDefinition.icon,\n policy: {\n features: [moduleName],\n permissions: [AXPPlatformManagementPermissionKeys.PlatformManagement.EntityDefinition.Management],\n },\n },\n {\n name: AXPPlatformManagementMenuKeys.Relations,\n priority: 2,\n text: `@${scope}:definitions.relations.title`,\n path: this.entityService.createPath(moduleName, RootConfig.entities.relationDefinition.name),\n icon: RootConfig.entities.relationDefinition.icon,\n policy: {\n features: [moduleName],\n permissions: [AXPPlatformManagementPermissionKeys.PlatformManagement.EntityDefinition.Management],\n },\n },\n {\n name: AXPPlatformManagementMenuKeys.Plugins,\n priority: 3,\n text: `@${scope}:definitions.plugins.title`,\n path: this.entityService.createPath(moduleName, RootConfig.entities.pluginDefinition.name),\n icon: RootConfig.entities.pluginDefinition.icon,\n policy: {\n features: [moduleName],\n permissions: [AXPPlatformManagementPermissionKeys.PlatformManagement.EntityDefinition.Management],\n },\n },\n {\n name: AXPPlatformManagementMenuKeys.Interfaces,\n priority: 4,\n text: `@${scope}:definitions.interfaces.title`,\n path: this.entityService.createPath(moduleName, RootConfig.entities.interfaceDefinition.name),\n icon: RootConfig.entities.interfaceDefinition.icon,\n policy: {\n features: [moduleName],\n permissions: [AXPPlatformManagementPermissionKeys.PlatformManagement.EntityDefinition.Management],\n },\n },\n {\n name: AXPPlatformManagementMenuKeys.Validations,\n priority: 5,\n text: `@${scope}:definitions.validations.title`,\n path: this.entityService.createPath(moduleName, RootConfig.entities.validationDefinition.name),\n icon: RootConfig.entities.validationDefinition.icon,\n policy: {\n features: [moduleName],\n permissions: [AXPPlatformManagementPermissionKeys.PlatformManagement.EntityDefinition.Management],\n },\n },\n {\n name: AXPPlatformManagementMenuKeys.PermissionGroupDefinitions,\n priority: 6,\n text: `@${scope}:definitions.permissionGroups.title`,\n path: this.entityService.createPath(moduleName, RootConfig.entities.permissionGroupDefinition.name),\n icon: RootConfig.entities.permissionGroupDefinition.icon,\n policy: {\n features: [moduleName],\n permissions: [AXPPlatformManagementPermissionKeys.PlatformManagement.EntityDefinition.Management],\n },\n },\n {\n name: AXPPlatformManagementMenuKeys.Commands,\n priority: 7,\n text: `@${scope}:definitions.commands.title`,\n path: this.entityService.createPath(moduleName, RootConfig.entities.commandDefinition.name),\n icon: RootConfig.entities.commandDefinition.icon,\n policy: {\n features: [moduleName],\n permissions: [AXPPlatformManagementPermissionKeys.PlatformManagement.EntityDefinition.Management],\n },\n },\n {\n name: AXPPlatformManagementMenuKeys.Queries,\n priority: 8,\n text: `@${scope}:definitions.queries.title`,\n path: this.entityService.createPath(moduleName, RootConfig.entities.queryDefinition.name),\n icon: RootConfig.entities.queryDefinition.icon,\n policy: {\n features: [moduleName],\n permissions: [AXPPlatformManagementPermissionKeys.PlatformManagement.EntityDefinition.Management],\n },\n },\n ],\n },\n ]);\n }\n}\n","import { AXTranslationService } from '@acorex/core/translation';\nimport { AXPPermissionDefinitionProvider, AXPPermissionDefinitionProviderContext } from '@acorex/platform/auth';\nimport { Injectable, Injector } from '@angular/core';\nimport { AXPPlatformManagementPermissionKeys } from './permission.keys';\nimport { AXPPlatformManagementFeatureKeys } from './features.keys';\nimport { RootConfig } from './const';\n\n@Injectable()\nexport class AXMPermissionDefinitionProvider implements AXPPermissionDefinitionProvider {\n private readonly translateService: AXTranslationService;\n\n constructor(private injector: Injector) {\n this.translateService = this.injector.get(AXTranslationService);\n }\n\n async define(context: AXPPermissionDefinitionProviderContext): Promise<void> {\n const keys = AXPPlatformManagementPermissionKeys.PlatformManagement;\n\n context.addGroup(\n RootConfig.module.name,\n await this.translateService.translateAsync('@platform-management:permissions.manage.title'),\n await this.translateService.translateAsync('@platform-management:permissions.manage.description')\n )\n //\n .addPermission(\n keys.Token.Management,\n await this.translateService.translateAsync('@platform-management:tokens.permissions.token.manage.title'),\n await this.translateService.translateAsync('@platform-management:tokens.permissions.token.manage.description')\n )\n .addChild(\n keys.Token.View,\n await this.translateService.translateAsync('@platform-management:tokens.permissions.token.view.title'),\n await this.translateService.translateAsync('@platform-management:tokens.permissions.token.view.description')\n )\n .addChild(\n keys.Token.Create,\n await this.translateService.translateAsync('@platform-management:tokens.permissions.token.create.title'),\n await this.translateService.translateAsync('@platform-management:tokens.permissions.token.create.description')\n )\n .addChild(\n keys.Token.Edit,\n await this.translateService.translateAsync('@platform-management:tokens.permissions.token.edit.title'),\n await this.translateService.translateAsync('@platform-management:tokens.permissions.token.edit.description')\n )\n .addChild(\n keys.Token.Delete,\n await this.translateService.translateAsync('@platform-management:tokens.permissions.token.delete.title'),\n await this.translateService.translateAsync('@platform-management:tokens.permissions.token.delete.description')\n )\n .endPermission()\n //\n .addPermission(\n keys.MenuManagement.Management,\n await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.manage.title'),\n await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.manage.description'),\n [AXPPlatformManagementFeatureKeys.MenuCustomization] // Require menu-customization feature\n )\n .addChild(\n keys.MenuManagement.View,\n await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.view.title'),\n await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.view.description')\n )\n .addChild(\n keys.MenuManagement.Create,\n await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.create.title'),\n await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.create.description')\n )\n .addChild(\n keys.MenuManagement.Edit,\n await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.edit.title'),\n await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.edit.description')\n )\n .addChild(\n keys.MenuManagement.Delete,\n await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.delete.title'),\n await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.delete.description')\n )\n .endPermission()\n //\n .addPermission(\n keys.EntityDefinition.Management,\n await this.translateService.translateAsync('@platform-management:entity-definitions.permissions.manage.title'),\n await this.translateService.translateAsync('@platform-management:entity-definitions.permissions.manage.description')\n )\n .addChild(\n keys.EntityDefinition.View,\n await this.translateService.translateAsync('@platform-management:entity-definitions.permissions.view.title'),\n await this.translateService.translateAsync('@platform-management:entity-definitions.permissions.view.description')\n )\n .addChild(\n keys.EntityDefinition.Create,\n await this.translateService.translateAsync('@platform-management:entity-definitions.permissions.create.title'),\n await this.translateService.translateAsync('@platform-management:entity-definitions.permissions.create.description')\n )\n .addChild(\n keys.EntityDefinition.Edit,\n await this.translateService.translateAsync('@platform-management:entity-definitions.permissions.edit.title'),\n await this.translateService.translateAsync('@platform-management:entity-definitions.permissions.edit.description')\n )\n .addChild(\n keys.EntityDefinition.Delete,\n await this.translateService.translateAsync('@platform-management:entity-definitions.permissions.delete.title'),\n await this.translateService.translateAsync('@platform-management:entity-definitions.permissions.delete.description')\n )\n .endPermission()\n //\n .endGroup();\n }\n}\n\n","import { NgModule } from '@angular/core';\nimport { AXMTokensService, AXMTokensServiceImpl } from './tokens.service';\n\n@NgModule({\n imports: [],\n exports: [],\n declarations: [],\n providers: [\n {\n provide: AXMTokensService,\n useClass: AXMTokensServiceImpl,\n },\n ],\n})\nexport class AXMTokenEntityModule { }\n","import { AXP_PERMISSION_DEFINITION_PROVIDER, AXPAuthGuard } from '@acorex/platform/auth';\nimport { AXP_MENU_MIDDLEWARE, AXP_MENU_PROVIDER } from '@acorex/platform/common';\nimport { AXP_FEATURE_DEFINITION_PROVIDER, AXP_MODULE_MANIFEST_PROVIDER } from '@acorex/platform/core';\nimport { AXP_ENTITY_DEFINITION_LOADER } from '@acorex/platform/layout/entity';\nimport { AXPRootLayoutComponent } from '@acorex/platform/themes/default';\nimport { provideCommandSetups, provideQuerySetups } from '@acorex/platform/runtime';\nimport { NgModule } from '@angular/core';\nimport { ROUTES, Routes } from '@angular/router';\nimport { AXMEntityLoader } from './entity.provider';\nimport { AXPPlatformManagementFeatureDefinitionProvider } from './feature-definition.provider';\nimport { AXPCustomMenuMiddleware } from './features/menu-management/custom-menu.middleware';\nimport { AXMMenuManagementModule } from './features/menu-management/menu-management.module';\nimport { AXMTokenModule } from './features/token/token.module';\nimport { AXMUpdaterModule } from './features/updater/updater.module';\nimport { PlatformManagementManifest } from './manifest';\nimport { AXMMenuProvider } from './menu.provider';\nimport { AXMPermissionDefinitionProvider } from './permission-definition.provider';\n\n// Entity Modules\nimport { AXMTokenEntityModule } from './entities/token/token.module';\n\n//#region ---- Routes Factory ----\n\nfunction routesFactory(): Routes {\n return [\n {\n path: ':app/platform-management/menus/:scope',\n canActivate: [AXPAuthGuard],\n loadComponent: () => AXPRootLayoutComponent,\n children: [\n {\n path: '',\n loadComponent: () =>\n import('./features/menu-management/pages/menu-list/menu-list.component').then(\n (c) => c.AXMMenuListComponent,\n ),\n data: { reuse: true },\n },\n ],\n },\n ];\n}\n\n//#endregion\n\n@NgModule({\n imports: [\n AXMUpdaterModule,\n AXMTokenModule,\n AXMMenuManagementModule,\n // Entity Modules\n AXMTokenEntityModule,\n ],\n exports: [],\n declarations: [],\n providers: [\n // Module-specific providers (not part of manifest system)\n {\n provide: AXP_MENU_MIDDLEWARE,\n useClass: AXPCustomMenuMiddleware,\n multi: true,\n },\n {\n provide: ROUTES,\n multi: true,\n useFactory: routesFactory,\n },\n // Module Manifest Provider\n {\n provide: AXP_MODULE_MANIFEST_PROVIDER,\n useValue: PlatformManagementManifest,\n multi: true,\n },\n // Provider references (now using tokens)\n {\n provide: AXP_PERMISSION_DEFINITION_PROVIDER,\n useClass: AXMPermissionDefinitionProvider,\n multi: true,\n },\n {\n provide: AXP_MENU_PROVIDER,\n useClass: AXMMenuProvider,\n multi: true,\n },\n {\n provide: AXP_ENTITY_DEFINITION_LOADER,\n useClass: AXMEntityLoader,\n multi: true,\n },\n {\n provide: AXP_FEATURE_DEFINITION_PROVIDER,\n useClass: AXPPlatformManagementFeatureDefinitionProvider,\n multi: true,\n },\n provideCommandSetups([\n {\n key: 'PlatformManagement:DataListPickEntityItem',\n command: () =>\n import('./commands/data-list-pick-entity-item.command').then((c) => c.AXPDataListPickEntityItemCommand),\n },\n ]),\n provideQuerySetups([\n {\n key: 'PlatformManagement:ListRegisteredEntities',\n loader: () =>\n import('./features/queries/list-registered-entities.query').then((c) => c.AXMListRegisteredEntitiesQuery),\n },\n {\n key: 'PlatformManagement:ListRegisteredDataSources',\n loader: () =>\n import('./features/queries/list-registered-data-sources.query').then(\n (c) => c.AXMListRegisteredDataSourcesQuery,\n ),\n },\n {\n key: 'PlatformManagement:ListPlatformNavigationForAi',\n loader: () =>\n import('./features/queries/list-platform-navigation-for-ai.query').then(\n (c) => c.AXMListPlatformNavigationForAiQuery,\n ),\n },\n ]),\n ],\n})\nexport class AXMPlatformManagementModule {}\n","import { AXDataSourceFilterOption } from '@acorex/cdk/common';\nimport {\n AXPEntity,\n AXPEntityQueryType,\n createAllQueryView,\n} from '@acorex/platform/common';\nimport {\n applyFilterArray,\n applySortArray,\n AXPModuleManifestRegistry,\n MODULE_MANIFESTS_DATASOURCE_NAME,\n type AXPQueryRequest,\n} from '@acorex/platform/core';\nimport {\n AXP_ENTITY_DEFINITION_CRUD_SERVICE,\n entityMasterCrudActions,\n type AXPEntityDefinitionCrudService,\n} from '@acorex/platform/layout/entity';\nimport { AXPWidgetsCatalog } from '@acorex/platform/layout/widget-core';\nimport { Injector } from '@angular/core';\nimport { RootConfig } from '../../const';\n\nconst I18N = '@platform-management:definitions.aggregates.detail';\n\n//#region ---- Helpers ----\n\nfunction normalizeModuleSegment(s: string): string {\n return s?.trim().toLowerCase().replace(/-/g, '') ?? '';\n}\n\nfunction countEntities(def: Record<string, unknown>): number {\n const entities = def['entities'];\n if (entities && typeof entities === 'object' && !Array.isArray(entities)) {\n return Object.keys(entities as Record<string, unknown>).length;\n }\n return 0;\n}\n\n/**\n * Reads the first `equal` / `eq` condition value for a field from a nested filter tree\n * (related list passes a wrapper with `filters: [...]`).\n */\nfunction extractEqualFilterFieldValue(\n filter: AXDataSourceFilterOption | undefined,\n field: string,\n): string | undefined {\n if (!filter) {\n return undefined;\n }\n if (filter.filters?.length) {\n for (const f of filter.filters) {\n const v = extractEqualFilterFieldValue(f, field);\n if (v !== undefined) {\n return v;\n }\n }\n return undefined;\n }\n const op = filter.operator?.type;\n if (filter.field === field && (op === 'equal' || String(op) === 'eq')) {\n const v = filter.value;\n return v != null && String(v).length > 0 ? String(v) : undefined;\n }\n return undefined;\n}\n\n//#endregion\n\nexport async function aggregateDefinitionEntityFactory(injector: Injector): Promise<AXPEntity | null> {\n const crud = injector.get(AXP_ENTITY_DEFINITION_CRUD_SERVICE) as AXPEntityDefinitionCrudService | null;\n\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.aggregateDefinition.name,\n title: RootConfig.entities.aggregateDefinition.title,\n icon: RootConfig.entities.aggregateDefinition.icon,\n formats: {\n individual: 'Aggregate Definition',\n plural: 'Aggregate Definitions',\n },\n plugins: [],\n relatedEntities: crud\n ? [\n {\n entity: `${RootConfig.module.name}.${RootConfig.entities.entityDefinition.name}`,\n title: `${I18N}.pages.entities`,\n icon: RootConfig.entities.entityDefinition.icon,\n columns: ['name', 'module', 'aggregateRootId'],\n conditions: [\n {\n name: 'aggregateRootId',\n operator: { type: 'equal' },\n value: '{{ context.eval(\"id\") }}',\n },\n ],\n layout: { type: 'page-list', position: 'after', order: 10 },\n },\n ]\n : [],\n groups: [{ id: 'overview', title: `${I18N}.pages.overview` }],\n properties: [\n {\n name: 'id',\n title: '@general:terms.common.id',\n groupId: 'overview',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text, options: { disabled: true } },\n },\n options: { filter: { advance: { enabled: true }, inline: { enabled: true } }, sort: { enabled: true } },\n },\n {\n name: 'module',\n title: `${I18N}.fields.module`,\n groupId: 'overview',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.select,\n options: {\n dataSource: MODULE_MANIFESTS_DATASOURCE_NAME,\n valueField: 'id',\n textField: 'title',\n allowSearch: true,\n hasClearButton: true,\n },\n },\n },\n options: { filter: { advance: { enabled: true }, inline: { enabled: true } }, sort: { enabled: true } },\n },\n {\n name: 'name',\n title: `${I18N}.fields.aggregate-name`,\n groupId: 'overview',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text },\n },\n validations: [{ rule: 'required' }],\n options: { filter: { advance: { enabled: true }, inline: { enabled: true } }, sort: { enabled: true } },\n },\n {\n name: 'title',\n title: '@general:terms.common.title',\n groupId: 'overview',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text },\n },\n options: { filter: { advance: { enabled: true }, inline: { enabled: true } }, sort: { enabled: true } },\n },\n {\n name: 'entityCount',\n title: `${I18N}.fields.entity-count`,\n groupId: 'overview',\n schema: {\n dataType: 'number',\n interface: { type: AXPWidgetsCatalog.text, options: { disabled: true } },\n },\n },\n ],\n columns: [{ name: 'id' }, { name: 'module' }, { name: 'name' }, { name: 'title' }, { name: 'entityCount' }],\n commands: crud\n ? {\n create: {\n execute: async (data: Record<string, unknown>) => {\n const moduleId = String(data['module'] ?? '').trim();\n const aggName = String(data['name'] ?? '').trim();\n if (!moduleId || !aggName) {\n throw new Error('Module and aggregate name are required');\n }\n const title = String(data['title'] ?? aggName).trim();\n const id = `${normalizeModuleSegment(moduleId)}.${normalizeModuleSegment(aggName)}`;\n const definition: Record<string, unknown> = {\n name: aggName,\n title,\n entities: {},\n validations: [],\n actions: [],\n };\n await crud.createAggregate(id, definition);\n return { id };\n },\n },\n update: {\n execute: async (data: Record<string, unknown>) => {\n const id = String(data['id'] ?? '').trim();\n if (!id) {\n throw new Error('Aggregate id is required');\n }\n const existing = await crud.getAggregate(id);\n if (!existing) {\n throw new Error(`Aggregate not found: ${id}`);\n }\n const definition: Record<string, unknown> = {\n ...existing,\n name: String(data['name'] ?? existing['name']).trim(),\n title: String(data['title'] ?? existing['title'] ?? '').trim(),\n };\n await crud.updateAggregate(id, definition);\n },\n },\n delete: {\n execute: async (id: string) => {\n await crud.deleteAggregate(id);\n },\n },\n }\n : undefined,\n queries: crud\n ? {\n byKey: {\n execute: async (id: string) => {\n const def = await crud.getAggregate(id);\n if (!def) {\n return null;\n }\n const parts = id.split('.');\n const moduleNorm = parts[0] ?? '';\n const modules = await crud.listModules();\n const manifestRegistry = injector.get(AXPModuleManifestRegistry);\n await manifestRegistry.initialize();\n const match =\n modules.find((m) => normalizeModuleSegment(m.name) === moduleNorm) ??\n manifestRegistry.getAll().find((m) => normalizeModuleSegment(m.name) === moduleNorm);\n const moduleId = match?.name ?? moduleNorm;\n return {\n id,\n name: def['name'],\n title: def['title'] ?? def['name'],\n module: moduleId,\n entityCount: countEntities(def),\n };\n },\n type: AXPEntityQueryType.Single,\n },\n list: {\n execute: async (request?: AXPQueryRequest) => {\n const manifestRegistry = injector.get(AXPModuleManifestRegistry);\n await manifestRegistry.initialize();\n const modules = await crud.listModules();\n const byNorm = new Map(modules.map((m) => [normalizeModuleSegment(m.name), m.name] as const));\n const manifests = manifestRegistry.getAll();\n const moduleIdFromNorm = (norm: string): string =>\n byNorm.get(norm) ??\n manifests.find((m) => normalizeModuleSegment(m.name) === norm)?.name ??\n norm;\n\n const moduleEqual = extractEqualFilterFieldValue(request?.filter, 'module');\n const list = await crud.listAggregates(moduleEqual ? { module: moduleEqual } : undefined);\n let items = list.map((row) => {\n const parts = row.id.split('.');\n const moduleNorm = parts[0] ?? '';\n const moduleId = moduleEqual ?? moduleIdFromNorm(moduleNorm);\n const def = row.definition;\n return {\n id: row.id,\n name: def['name'],\n title: def['title'] ?? def['name'],\n module: moduleId,\n entityCount: countEntities(def),\n };\n });\n if (request?.filter) {\n items = applyFilterArray(items, [request.filter], request.filter.logic ?? 'and');\n }\n if (request?.sort?.length) {\n items = applySortArray(items, request.sort);\n }\n const total = items.length;\n const skip = request?.skip ?? 0;\n const take = request?.take ?? total;\n return { items: items.slice(skip, skip + take), total };\n },\n type: AXPEntityQueryType.List,\n },\n }\n : undefined,\n interfaces: {\n master: {\n create: {\n sections: [{ id: 'overview' }],\n properties: [\n { name: 'module', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'name', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'title', layout: { positions: { lg: { colSpan: 12 } } } },\n ],\n },\n update: {\n sections: [{ id: 'overview' }],\n properties: [\n { name: 'id', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'name', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'title', layout: { positions: { lg: { colSpan: 6 } } } },\n ],\n },\n single: {\n title: '{{title}}',\n sections: [{ id: 'overview' }],\n properties: [\n { name: 'id', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'name', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'title', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'entityCount', layout: { positions: { lg: { colSpan: 4 } } } },\n ],\n actions: [],\n },\n list: {\n actions: [...entityMasterCrudActions()],\n views: [createAllQueryView()],\n },\n },\n },\n };\n\n return entityDef;\n}\n","import type { AXPInterfaceDefinitionValue } from '@acorex/platform/domain';\n\n/**\n * Maps between persisted {@link AXPInterfaceDefinitionValue} (domain: `name` + `title` + `options`)\n * and the `widget-field-configurator` form value (`type` + `options`, same as layout widget node).\n *\n * Shared by entity-definition (field rows) and any entity\n * that binds `interface` to `widget-field-configurator`.\n */\n\nconst DEFAULT_INTERFACE: AXPInterfaceDefinitionValue = {\n name: 'text',\n title: 'Text',\n options: {},\n};\n\n//#region ---- Domain ↔ form (single interface value) ----\n\n/**\n * Shape expected by `widget-field-configurator` / `AXPWidgetNode` (uses `type`, not domain `name`).\n */\nexport interface SchemaInterfaceFormValue {\n type: string;\n options: Record<string, unknown>;\n}\n\nfunction isFormShapedInterface(raw: unknown): raw is Record<string, unknown> & { type: string } {\n if (raw == null || typeof raw !== 'object' || Array.isArray(raw)) {\n return false;\n }\n const o = raw as Record<string, unknown>;\n return typeof o['type'] === 'string' && o['type'].trim() !== '' && o['name'] === undefined;\n}\n\n/**\n * Converts a stored schema interface to the form field value for `widget-field-configurator`.\n * Accepts domain shape (`name`) or already form-shaped (`type` only).\n */\nexport function widgetFieldConfiguratorValueFromInterfaceDefinition(\n iface: AXPInterfaceDefinitionValue | undefined | null,\n): SchemaInterfaceFormValue {\n if (iface == null) {\n return { type: '', options: {} };\n }\n const name = typeof iface.name === 'string' ? iface.name.trim() : '';\n if (name !== '') {\n const options =\n iface.options != null && typeof iface.options === 'object' && !Array.isArray(iface.options)\n ? { ...(iface.options as Record<string, unknown>) }\n : {};\n return { type: name, options };\n }\n if (isFormShapedInterface(iface)) {\n const options =\n iface['options'] != null &&\n typeof iface['options'] === 'object' &&\n !Array.isArray(iface['options'])\n ? { ...(iface['options'] as Record<string, unknown>) }\n : {};\n return { type: iface['type'] as string, options };\n }\n return { type: '', options: {} };\n}\n\n/**\n * Converts form output (widget node and/or legacy domain shape) to {@link AXPInterfaceDefinitionValue} for persistence.\n */\nexport function interfaceDefinitionFromWidgetFieldConfiguratorValue(\n raw: unknown,\n fallbackTitle?: string,\n): AXPInterfaceDefinitionValue {\n if (raw == null || typeof raw !== 'object' || Array.isArray(raw)) {\n return { ...DEFAULT_INTERFACE };\n }\n\n const o = raw as Record<string, unknown>;\n const nameFromType = typeof o['type'] === 'string' ? o['type'].trim() : '';\n const nameFromName = typeof o['name'] === 'string' ? o['name'].trim() : '';\n const name = nameFromType || nameFromName || DEFAULT_INTERFACE.name;\n\n const titleRaw = typeof o['title'] === 'string' ? o['title'].trim() : '';\n const title = titleRaw || fallbackTitle?.trim() || name;\n\n const opt = o['options'];\n const options =\n opt != null && typeof opt === 'object' && !Array.isArray(opt)\n ? ({ ...opt } as Record<string, unknown>)\n : {};\n\n return { name, title, options };\n}\n\n/**\n * Normalizes any interface-like value to `{ type, options }` for DataList column display\n * (`widget-field-configurator` column reads `AXPWidgetNode.type` on `rawValue`).\n */\nexport function toWidgetFieldConfiguratorColumnNode(raw: unknown): SchemaInterfaceFormValue {\n if (raw == null) {\n return { type: '', options: {} };\n }\n if (typeof raw === 'string') {\n const t = raw.trim();\n return t ? { type: t, options: {} } : { type: '', options: {} };\n }\n if (typeof raw !== 'object' || Array.isArray(raw)) {\n return { type: '', options: {} };\n }\n const o = raw as Record<string, unknown>;\n if (typeof o['type'] === 'string' && o['type'].trim() !== '') {\n const options =\n o['options'] != null && typeof o['options'] === 'object' && !Array.isArray(o['options'])\n ? { ...(o['options'] as Record<string, unknown>) }\n : {};\n return { type: o['type'].trim(), options };\n }\n if (typeof o['name'] === 'string' && o['name'].trim() !== '') {\n const name = o['name'].trim();\n const title = typeof o['title'] === 'string' ? o['title'].trim() : name;\n const opt = o['options'];\n const options =\n opt != null && typeof opt === 'object' && !Array.isArray(opt)\n ? (opt as AXPInterfaceDefinitionValue['options'])\n : undefined;\n const iface: AXPInterfaceDefinitionValue = { name, title, ...(options !== undefined ? { options } : {}) };\n return widgetFieldConfiguratorValueFromInterfaceDefinition(iface);\n }\n const nested = o['interface'];\n if (nested != null && typeof nested === 'object' && !Array.isArray(nested)) {\n return toWidgetFieldConfiguratorColumnNode(nested);\n }\n return { type: '', options: {} };\n}\n\nfunction resolveInterfaceSourceForFieldRow(row: Record<string, unknown>): unknown {\n if (row['interface'] !== undefined && row['interface'] !== null) {\n return row['interface'];\n }\n const schema = row['schema'];\n if (typeof schema === 'string') {\n return schema;\n }\n if (schema != null && typeof schema === 'object' && !Array.isArray(schema)) {\n const s = schema as Record<string, unknown>;\n if (s['interface'] !== undefined && s['interface'] !== null) {\n return s['interface'];\n }\n }\n return undefined;\n}\n\n//#endregion\n\n//#region ---- Entity field rows (DataList `fields` / nested `schema.interface`) ----\n\nfunction mapFieldRowInterfaceForForm(row: Record<string, unknown>): Record<string, unknown> {\n const source = resolveInterfaceSourceForFieldRow(row);\n if (source === undefined) {\n return row;\n }\n\n const cell = toWidgetFieldConfiguratorColumnNode(source);\n const next: Record<string, unknown> = { ...row, interface: cell };\n\n const schema = row['schema'];\n if (schema != null && typeof schema === 'object' && !Array.isArray(schema)) {\n const s = schema as Record<string, unknown>;\n if (s['interface'] != null) {\n next['schema'] = { ...s, interface: cell };\n }\n }\n\n return next;\n}\n\nfunction mapFieldRowInterfaceToDomain(row: Record<string, unknown>): Record<string, unknown> {\n const title =\n typeof row['title'] === 'string' ? row['title'] : typeof row['name'] === 'string' ? row['name'] : undefined;\n\n let next = row;\n\n if (row['interface'] != null && typeof row['interface'] === 'object' && !Array.isArray(row['interface'])) {\n next = {\n ...next,\n interface: interfaceDefinitionFromWidgetFieldConfiguratorValue(row['interface'], title),\n };\n }\n\n const schema = row['schema'];\n if (schema != null && typeof schema === 'object' && !Array.isArray(schema)) {\n const s = schema as Record<string, unknown>;\n if (s['interface'] != null && typeof s['interface'] === 'object' && !Array.isArray(s['interface'])) {\n next = {\n ...next,\n schema: {\n ...s,\n interface: interfaceDefinitionFromWidgetFieldConfiguratorValue(s['interface'], title),\n },\n };\n }\n }\n\n return next;\n}\n\n/**\n * Maps `fields` array for entity-definition master load: domain `interface` → form `type` for widget-field-configurator.\n */\nexport function mapEntityFieldRowsInterfaceForForm(rows: unknown): unknown[] {\n if (!Array.isArray(rows)) {\n return [];\n }\n return rows.map((row) => {\n if (row == null || typeof row !== 'object' || Array.isArray(row)) {\n return row;\n }\n return mapFieldRowInterfaceForForm({ ...(row as Record<string, unknown>) });\n });\n}\n\n/**\n * Maps `fields` array before entity-definition persist: form → domain `interface`.\n */\nexport function mapEntityFieldRowsInterfaceToDomain(rows: unknown): unknown[] {\n if (!Array.isArray(rows)) {\n return [];\n }\n return rows.map((row) => {\n if (row == null || typeof row !== 'object' || Array.isArray(row)) {\n return row;\n }\n return mapFieldRowInterfaceToDomain({ ...(row as Record<string, unknown>) });\n });\n}\n\n//#endregion\n","import { AXPWidgetsList } from '@acorex/modules/common';\nimport { AXPEntity, AXPEntityQueryType, createAllQueryView } from '@acorex/platform/common';\nimport { applyFilterArray, applySortArray, type AXPQueryRequest } from '@acorex/platform/core';\nimport type { AXPPropertyDefinition } from '@acorex/platform/domain';\nimport {\n AXP_ENTITY_DEFINITION_CRUD_SERVICE,\n entityMasterCrudActions,\n entityMasterEditAction,\n type AXPEntityDefinitionCrudService,\n} from '@acorex/platform/layout/entity';\n// import { sanitizeDataListRowsForPersist } from '@acorex/platform/layout/widgets';\nimport { AXPWidgetsCatalog } from '@acorex/platform/layout/widget-core';\nimport { Injector } from '@angular/core';\nimport { RootConfig } from '../../const';\nimport { mapEntityFieldRowsInterfaceForForm, mapEntityFieldRowsInterfaceToDomain } from '../schema-interface-field-map';\n\n//#region ---- Constants ----\n\nconst I18N = '@platform-management:definitions.commands.detail';\n\n//#endregion\n\n//#region ---- Entity factory ----\n\nexport async function commandDefinitionEntityFactory(injector: Injector): Promise<AXPEntity | null> {\n const crud = injector.get(AXP_ENTITY_DEFINITION_CRUD_SERVICE) as AXPEntityDefinitionCrudService | null;\n\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.commandDefinition.name,\n title: RootConfig.entities.commandDefinition.title,\n icon: RootConfig.entities.commandDefinition.icon,\n formats: {\n individual: 'Command',\n plural: 'Commands',\n },\n plugins: [\n {\n name: 'unique-fields',\n options: {\n fields: 'name',\n scope: 'global',\n },\n },\n ],\n relatedEntities: [],\n groups: [\n {\n id: 'basic-info',\n title: `${I18N}.sections.basic-info`,\n },\n {\n id: 'command-description',\n title: `${I18N}.sections.description`,\n },\n {\n id: 'catalog-metadata',\n title: `${I18N}.sections.catalog-metadata`,\n },\n {\n id: 'input-parameters',\n title: `${I18N}.sections.input-parameters`,\n },\n {\n id: 'output-parameters',\n title: `${I18N}.sections.output-parameters`,\n },\n ],\n properties: [\n {\n name: 'name',\n title: '@general:terms.common.name',\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n readonly: true,\n interface: {\n type: AXPWidgetsCatalog.text,\n options: {},\n },\n },\n validations: [{ rule: 'required' }],\n options: {\n filter: {\n inline: {\n enabled: true,\n },\n },\n sort: {\n enabled: true,\n },\n },\n },\n {\n name: 'description',\n title: '@general:terms.common.description',\n groupId: 'command-description',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.largeText,\n options: {},\n },\n },\n },\n {\n name: 'catalogTitle',\n title: `${I18N}.fields.catalog-title`,\n groupId: 'catalog-metadata',\n schema: {\n dataType: 'string',\n readonly: true,\n interface: {\n type: AXPWidgetsCatalog.text,\n options: {},\n },\n },\n },\n {\n name: 'executionMode',\n title: `${I18N}.fields.execution-mode`,\n groupId: 'catalog-metadata',\n schema: {\n dataType: 'string',\n readonly: true,\n interface: {\n type: AXPWidgetsCatalog.text,\n options: {},\n },\n },\n },\n {\n name: 'outcomesDefinitionJson',\n title: `${I18N}.fields.outcomes-definition`,\n groupId: 'catalog-metadata',\n schema: {\n dataType: 'string',\n readonly: true,\n interface: {\n type: AXPWidgetsCatalog.largeText,\n options: {},\n },\n },\n },\n {\n name: 'aiMetadataJson',\n title: `${I18N}.fields.ai-metadata`,\n groupId: 'catalog-metadata',\n schema: {\n dataType: 'string',\n readonly: true,\n interface: {\n type: AXPWidgetsCatalog.largeText,\n options: {},\n },\n },\n },\n {\n name: 'capabilities',\n title: `${I18N}.fields.capabilities`,\n groupId: 'catalog-metadata',\n schema: {\n dataType: 'string',\n readonly: true,\n interface: {\n type: AXPWidgetsCatalog.text,\n options: {},\n },\n },\n },\n {\n name: 'inputOptionDefinitions',\n title: `${I18N}.pages.input-parameters`,\n groupId: 'input-parameters',\n schema: {\n dataType: 'array',\n interface: {\n type: AXPWidgetsList.Advanced.DataList,\n options: {\n paging: false,\n showIndex: true,\n showHeader: true,\n columns: [\n { name: 'name', title: `${I18N}.fields.param-name`, width: '160px' },\n { name: 'title', title: `${I18N}.fields.param-title`, width: '200px' },\n {\n name: 'schema',\n title: `${I18N}.fields.param-schema`,\n width: '280px',\n schema: {\n name: 'interface',\n title: 'Schema',\n interface: {\n name: AXPWidgetsList.Advanced.WidgetFieldConfigurator,\n title: 'Schema',\n options: {\n fieldName: \"{{ context.eval('name') }}\",\n fieldTitle: \"{{ context.eval('title') }}\",\n },\n },\n },\n },\n { name: 'description', title: `${I18N}.fields.param-description` },\n ],\n },\n },\n },\n },\n {\n name: 'outputOptionDefinitions',\n title: `${I18N}.pages.output-parameters`,\n groupId: 'output-parameters',\n schema: {\n dataType: 'array',\n interface: {\n type: AXPWidgetsList.Advanced.DataList,\n options: {\n paging: false,\n showIndex: true,\n showHeader: true,\n columns: [\n { name: 'name', title: `${I18N}.fields.param-name`, width: '160px' },\n { name: 'title', title: `${I18N}.fields.param-title`, width: '200px' },\n {\n name: 'schema',\n title: `${I18N}.fields.param-schema`,\n width: '280px',\n schema: {\n name: 'interface',\n title: 'Schema',\n interface: {\n name: AXPWidgetsList.Advanced.WidgetFieldConfigurator,\n title: 'Schema',\n options: {\n fieldName: \"{{ context.eval('name') }}\",\n fieldTitle: \"{{ context.eval('title') }}\",\n },\n },\n },\n },\n { name: 'description', title: `${I18N}.fields.param-description` },\n ],\n },\n },\n },\n },\n ],\n columns: [\n { name: 'name' },\n { name: 'catalogTitle' },\n { name: 'description' },\n ],\n commands: crud\n ? {\n update: {\n execute: async (data: Record<string, unknown>) => {\n const id = (data['id'] as string) ?? (data['name'] as string);\n const existing = await crud.getCommand(id);\n const inputSource =\n data['inputOptionDefinitions'] !== undefined\n ? data['inputOptionDefinitions']\n : existing?.inputOptionDefinitions;\n const outputSource =\n data['outputOptionDefinitions'] !== undefined\n ? data['outputOptionDefinitions']\n : existing?.outputOptionDefinitions;\n const inputOptionDefinitions = mapEntityFieldRowsInterfaceToDomain(\n // sanitizeDataListRowsForPersist(inputSource),\n inputSource,\n ) as AXPPropertyDefinition[];\n const outputOptionDefinitions = mapEntityFieldRowsInterfaceToDomain(\n // sanitizeDataListRowsForPersist(outputSource),\n outputSource,\n ) as AXPPropertyDefinition[];\n await crud.updateCommand(id, {\n name: (data['name'] as string) ?? existing?.name ?? '',\n active: existing?.active ?? true,\n description:\n data['description'] !== undefined\n ? (data['description'] as string | undefined)\n : existing?.description,\n inputOptionDefinitions,\n outputOptionDefinitions,\n catalogTitle: existing?.catalogTitle,\n executionMode: existing?.executionMode,\n outcomesDefinitionJson: existing?.outcomesDefinitionJson,\n aiMetadataJson: existing?.aiMetadataJson,\n capabilities: existing?.capabilities,\n });\n },\n },\n }\n : undefined,\n queries: crud\n ? {\n byKey: {\n execute: async (id: string) => {\n const def = await crud.getCommand(id);\n if (!def) return null;\n return {\n id,\n name: def.name,\n description: def.description,\n catalogTitle: def.catalogTitle ?? '',\n executionMode: def.executionMode ?? '',\n outcomesDefinitionJson: def.outcomesDefinitionJson ?? '',\n aiMetadataJson: def.aiMetadataJson ?? '',\n capabilities: (def.capabilities ?? []).join(', '),\n inputOptionDefinitions: mapEntityFieldRowsInterfaceForForm(def.inputOptionDefinitions ?? []),\n outputOptionDefinitions: mapEntityFieldRowsInterfaceForForm(def.outputOptionDefinitions ?? []),\n };\n },\n type: AXPEntityQueryType.Single,\n },\n list: {\n execute: async (request?: AXPQueryRequest) => {\n const list = await crud.listCommands();\n let items = list.map(({ id, definition }) => ({\n id,\n name: definition.name,\n description: definition.description ?? '',\n catalogTitle: definition.catalogTitle ?? '',\n active: definition.active,\n aiMetadataJson: definition.aiMetadataJson ?? '',\n capabilities: (definition.capabilities ?? []).join(', '),\n inputOptionDefinitions: definition.inputOptionDefinitions ?? [],\n }));\n if (request?.filter) {\n items = applyFilterArray(items, [request.filter], request.filter.logic ?? 'and');\n }\n if (request?.sort?.length) {\n items = applySortArray(items, request.sort);\n }\n const total = items.length;\n const skip = request?.skip ?? 0;\n const take = request?.take ?? total;\n const pagedItems = items.slice(skip, skip + take);\n return { items: pagedItems, total };\n },\n type: AXPEntityQueryType.List,\n },\n }\n : undefined,\n interfaces: {\n master: {\n single: {\n title: '{{name}}',\n sections: [\n { id: 'basic-info' },\n { id: 'command-description' },\n { id: 'catalog-metadata' },\n { id: 'input-parameters' },\n { id: 'output-parameters' },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n name: 'description',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n name: 'catalogTitle',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n name: 'executionMode',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n name: 'outcomesDefinitionJson',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n name: 'aiMetadataJson',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n name: 'capabilities',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n name: 'inputOptionDefinitions',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n label: {\n visible: false,\n },\n },\n },\n {\n name: 'outputOptionDefinitions',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n label: {\n visible: false,\n },\n },\n },\n ],\n actions: [entityMasterEditAction()],\n },\n list: {\n actions: [\n ...entityMasterCrudActions({\n create: false,\n delete: false,\n view: true,\n edit: true,\n }),\n ],\n views: [createAllQueryView()],\n },\n },\n },\n };\n\n return entityDef;\n}\n\n//#endregion\n","import { AXPWidgetsList } from '@acorex/modules/common';\nimport { AXPEntity, AXPEntityQueryType, createAllQueryView } from '@acorex/platform/common';\nimport { applyFilterArray, applySortArray, type AXPQueryRequest } from '@acorex/platform/core';\nimport type { AXPPropertyDefinition } from '@acorex/platform/domain';\nimport {\n AXP_ENTITY_DEFINITION_CRUD_SERVICE,\n entityMasterCrudActions,\n entityMasterEditAction,\n type AXPEntityDefinitionCrudService,\n} from '@acorex/platform/layout/entity';\nimport { AXPWidgetsCatalog } from '@acorex/platform/layout/widget-core';\nimport { Injector } from '@angular/core';\nimport { RootConfig } from '../../const';\nimport { mapEntityFieldRowsInterfaceForForm, mapEntityFieldRowsInterfaceToDomain } from '../schema-interface-field-map';\n\n//#region ---- Constants ----\n\nconst I18N = '@platform-management:definitions.queries.detail';\n\n//#endregion\n\n//#region ---- Entity factory ----\n\nexport async function queryDefinitionEntityFactory(injector: Injector): Promise<AXPEntity | null> {\n const crud = injector.get(AXP_ENTITY_DEFINITION_CRUD_SERVICE) as AXPEntityDefinitionCrudService | null;\n\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.queryDefinition.name,\n title: RootConfig.entities.queryDefinition.title,\n icon: RootConfig.entities.queryDefinition.icon,\n formats: {\n individual: 'Query',\n plural: 'Queries',\n },\n plugins: [\n {\n name: 'unique-fields',\n options: {\n fields: 'name',\n scope: 'global',\n },\n },\n ],\n relatedEntities: [],\n groups: [\n {\n id: 'basic-info',\n title: `${I18N}.sections.basic-info`,\n },\n {\n id: 'query-description',\n title: `${I18N}.sections.description`,\n },\n {\n id: 'catalog-metadata',\n title: `${I18N}.sections.catalog-metadata`,\n },\n {\n id: 'input-parameters',\n title: `${I18N}.sections.input-parameters`,\n },\n {\n id: 'output-parameters',\n title: `${I18N}.sections.output-parameters`,\n },\n ],\n properties: [\n {\n name: 'name',\n title: '@general:terms.common.name',\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n readonly: true,\n interface: {\n type: AXPWidgetsCatalog.text,\n options: {},\n },\n },\n validations: [{ rule: 'required' }],\n options: {\n filter: {\n inline: {\n enabled: true,\n },\n },\n sort: {\n enabled: true,\n },\n },\n },\n {\n name: 'description',\n title: '@general:terms.common.description',\n groupId: 'query-description',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.largeText,\n options: {},\n },\n },\n },\n {\n name: 'catalogTitle',\n title: `${I18N}.fields.catalog-title`,\n groupId: 'catalog-metadata',\n schema: {\n dataType: 'string',\n readonly: true,\n interface: {\n type: AXPWidgetsCatalog.text,\n options: {},\n },\n },\n },\n {\n name: 'executionMode',\n title: `${I18N}.fields.execution-mode`,\n groupId: 'catalog-metadata',\n schema: {\n dataType: 'string',\n readonly: true,\n interface: {\n type: AXPWidgetsCatalog.text,\n options: {},\n },\n },\n },\n {\n name: 'capabilities',\n title: `${I18N}.fields.capabilities`,\n groupId: 'catalog-metadata',\n schema: {\n dataType: 'string',\n readonly: true,\n interface: {\n type: AXPWidgetsCatalog.text,\n options: {},\n },\n },\n },\n {\n name: 'aiMetadataJson',\n title: `${I18N}.fields.ai-metadata`,\n groupId: 'catalog-metadata',\n schema: {\n dataType: 'string',\n readonly: true,\n interface: {\n type: AXPWidgetsCatalog.largeText,\n options: {},\n },\n },\n },\n {\n name: 'inputOptionDefinitions',\n title: `${I18N}.pages.input-parameters`,\n groupId: 'input-parameters',\n schema: {\n dataType: 'array',\n interface: {\n type: AXPWidgetsList.Advanced.DataList,\n options: {\n paging: false,\n showIndex: true,\n showHeader: true,\n columns: [\n { name: 'name', title: `${I18N}.fields.param-name`, width: '160px' },\n { name: 'title', title: `${I18N}.fields.param-title`, width: '200px' },\n {\n name: 'schema',\n title: `${I18N}.fields.param-schema`,\n width: '280px',\n schema: {\n name: 'interface',\n title: 'Schema',\n interface: {\n name: AXPWidgetsList.Advanced.WidgetFieldConfigurator,\n title: 'Schema',\n options: {\n fieldName: \"{{ context.eval('name') }}\",\n fieldTitle: \"{{ context.eval('title') }}\",\n },\n },\n },\n },\n { name: 'description', title: `${I18N}.fields.param-description` },\n ],\n },\n },\n },\n },\n {\n name: 'outputOptionDefinitions',\n title: `${I18N}.pages.output-parameters`,\n groupId: 'output-parameters',\n schema: {\n dataType: 'array',\n interface: {\n type: AXPWidgetsList.Advanced.DataList,\n options: {\n paging: false,\n showIndex: true,\n showHeader: true,\n columns: [\n { name: 'name', title: `${I18N}.fields.param-name`, width: '160px' },\n { name: 'title', title: `${I18N}.fields.param-title`, width: '200px' },\n {\n name: 'schema',\n title: `${I18N}.fields.param-schema`,\n width: '280px',\n schema: {\n name: 'interface',\n title: 'Schema',\n interface: {\n name: AXPWidgetsList.Advanced.WidgetFieldConfigurator,\n title: 'Schema',\n options: {\n fieldName: \"{{ context.eval('name') }}\",\n fieldTitle: \"{{ context.eval('title') }}\",\n },\n },\n },\n },\n { name: 'description', title: `${I18N}.fields.param-description` },\n ],\n },\n },\n },\n },\n ],\n columns: [\n { name: 'name' },\n { name: 'catalogTitle' },\n { name: 'description' },\n ],\n commands: crud\n ? {\n update: {\n execute: async (data: Record<string, unknown>) => {\n const id = (data['id'] as string) ?? (data['name'] as string);\n const existing = await crud.getQuery(id);\n const inputSource =\n data['inputOptionDefinitions'] !== undefined\n ? data['inputOptionDefinitions']\n : existing?.inputOptionDefinitions;\n const outputSource =\n data['outputOptionDefinitions'] !== undefined\n ? data['outputOptionDefinitions']\n : existing?.outputOptionDefinitions;\n const inputOptionDefinitions = mapEntityFieldRowsInterfaceToDomain(\n inputSource,\n ) as AXPPropertyDefinition[];\n const outputOptionDefinitions = mapEntityFieldRowsInterfaceToDomain(\n outputSource,\n ) as AXPPropertyDefinition[];\n await crud.updateQuery(id, {\n name: (data['name'] as string) ?? existing?.name ?? '',\n active: existing?.active ?? true,\n description:\n data['description'] !== undefined\n ? (data['description'] as string | undefined)\n : existing?.description,\n inputOptionDefinitions,\n outputOptionDefinitions,\n catalogTitle: existing?.catalogTitle,\n executionMode: existing?.executionMode,\n aiMetadataJson: existing?.aiMetadataJson,\n capabilities: existing?.capabilities,\n });\n },\n },\n }\n : undefined,\n queries: crud\n ? {\n byKey: {\n execute: async (id: string) => {\n const def = await crud.getQuery(id);\n if (!def) return null;\n return {\n id,\n name: def.name,\n description: def.description,\n catalogTitle: def.catalogTitle ?? '',\n executionMode: def.executionMode ?? '',\n capabilities: (def.capabilities ?? []).join(', '),\n aiMetadataJson: def.aiMetadataJson ?? '',\n inputOptionDefinitions: mapEntityFieldRowsInterfaceForForm(def.inputOptionDefinitions ?? []),\n outputOptionDefinitions: mapEntityFieldRowsInterfaceForForm(def.outputOptionDefinitions ?? []),\n };\n },\n type: AXPEntityQueryType.Single,\n },\n list: {\n execute: async (request?: AXPQueryRequest) => {\n const list = await crud.listQueries();\n let items = list.map(({ id, definition }) => ({\n id,\n name: definition.name,\n description: definition.description ?? '',\n catalogTitle: definition.catalogTitle ?? '',\n active: definition.active,\n capabilities: (definition.capabilities ?? []).join(', '),\n aiMetadataJson: definition.aiMetadataJson ?? '',\n inputOptionDefinitions: definition.inputOptionDefinitions ?? [],\n }));\n if (request?.filter) {\n items = applyFilterArray(items, [request.filter], request.filter.logic ?? 'and');\n }\n if (request?.sort?.length) {\n items = applySortArray(items, request.sort);\n }\n const total = items.length;\n const skip = request?.skip ?? 0;\n const take = request?.take ?? total;\n const pagedItems = items.slice(skip, skip + take);\n return { items: pagedItems, total };\n },\n type: AXPEntityQueryType.List,\n },\n }\n : undefined,\n interfaces: {\n master: {\n single: {\n title: '{{name}}',\n sections: [\n { id: 'basic-info' },\n { id: 'query-description' },\n { id: 'catalog-metadata' },\n { id: 'input-parameters' },\n { id: 'output-parameters' },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n name: 'description',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n name: 'catalogTitle',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n name: 'executionMode',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n name: 'capabilities',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n name: 'aiMetadataJson',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n name: 'inputOptionDefinitions',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n label: {\n visible: false,\n },\n },\n },\n {\n name: 'outputOptionDefinitions',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n label: {\n visible: false,\n },\n },\n },\n ],\n actions: [entityMasterEditAction()],\n },\n list: {\n actions: [\n ...entityMasterCrudActions({\n create: false,\n delete: false,\n view: true,\n edit: true,\n }),\n ],\n views: [createAllQueryView()],\n },\n },\n },\n };\n\n return entityDef;\n}\n\n//#endregion\n","// export * from './entity-definition.entity';\nexport * from './entity-definitions.types';\n","import { AXPWidgetsList } from '@acorex/modules/common';\nimport { AXPEntity, AXPEntityQueryType, createAllQueryView, createQueryView } from '@acorex/platform/common';\nimport { applyFilterArray, applySortArray, type AXPQueryRequest } from '@acorex/platform/core';\nimport type { AXPInterfaceDefinition, AXPPropertyDefinition } from '@acorex/platform/domain';\nimport {\n AXP_ENTITY_DEFINITION_CRUD_SERVICE,\n entityMasterCrudActions,\n type AXPEntityDefinitionCrudService,\n} from '@acorex/platform/layout/entity';\nimport { AXPWidgetGroupEnum, AXPWidgetsCatalog } from '@acorex/platform/layout/widget-core';\nimport { Injector } from '@angular/core';\nimport { RootConfig } from '../../const';\nimport { mapEntityFieldRowsInterfaceForForm, mapEntityFieldRowsInterfaceToDomain } from '../schema-interface-field-map';\n\nconst I18N = '@platform-management:definitions.interfaces.detail';\n\nexport async function interfaceDefinitionEntityFactory(injector: Injector): Promise<AXPEntity | null> {\n const crud = injector.get(AXP_ENTITY_DEFINITION_CRUD_SERVICE) as AXPEntityDefinitionCrudService | null;\n\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.interfaceDefinition.name,\n title: RootConfig.entities.interfaceDefinition.title,\n icon: RootConfig.entities.interfaceDefinition.icon,\n formats: {\n individual: 'Interface Definition',\n plural: 'Interface Definitions',\n },\n plugins: [\n {\n name: 'computed-property',\n options: {\n fields: [\n {\n name: 'categoriesDisplay',\n title: `${I18N}.sections.categories`,\n value:\n '{{ (context.eval(\"categories\") || []).map(function(x) { return typeof x === \"string\" ? x : (x && (x.title || x.name || x)); }).filter(Boolean).join(\" - \") }}',\n group: { id: 'configuration', title: `${I18N}.sections.configuration` },\n showAs: { type: AXPWidgetsCatalog.text },\n },\n {\n name: 'groupsDisplay',\n title: `${I18N}.sections.groups`,\n value:\n '{{ (context.eval(\"groups\") || []).map(function(x) { return typeof x === \"string\" ? x : (x && (x.title || x.name || x)); }).filter(Boolean).join(\" - \") }}',\n group: { id: 'configuration', title: `${I18N}.sections.configuration` },\n showAs: { type: AXPWidgetsCatalog.text },\n },\n ],\n },\n },\n ],\n relatedEntities: [],\n groups: [\n { id: 'basic-info', title: `${I18N}.sections.basic-info` },\n { id: 'configuration', title: `${I18N}.sections.configuration` },\n { id: 'categories', title: `${I18N}.sections.categories` },\n { id: 'groups', title: `${I18N}.sections.groups` },\n { id: 'option-definitions', title: `${I18N}.pages.option-definitions` },\n ],\n properties: [\n {\n name: 'name',\n title: '@general:terms.common.name',\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text, options: { disabled: true } },\n },\n validations: [{ rule: 'required' }],\n options: {\n filter: { advance: { enabled: true }, inline: { enabled: true } },\n sort: { enabled: true },\n },\n },\n {\n name: 'title',\n title: '@general:terms.common.title',\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text, options: { disabled: true } },\n },\n options: {\n filter: { advance: { enabled: true }, inline: { enabled: true } },\n sort: { enabled: true },\n },\n },\n {\n name: 'type',\n title: `${I18N}.fields.type`,\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text, options: { disabled: true } },\n },\n },\n {\n name: 'icon',\n title: `${I18N}.fields.icon`,\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.iconChooser },\n },\n },\n {\n name: 'description',\n title: '@general:terms.common.description',\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.largeText, options: { disabled: true } },\n },\n },\n {\n name: 'categories',\n title: `${I18N}.sections.categories`,\n groupId: 'categories',\n schema: {\n dataType: 'array',\n interface: { type: AXPWidgetsList.Advanced.JsonViewer, options: { disabled: true } },\n },\n },\n {\n name: 'groups',\n title: `${I18N}.sections.groups`,\n groupId: 'groups',\n schema: {\n dataType: 'array',\n interface: { type: AXPWidgetsList.Advanced.JsonViewer, options: { disabled: true } },\n },\n },\n {\n name: 'optionDefinitions',\n title: `${I18N}.pages.option-definitions`,\n groupId: 'option-definitions',\n schema: {\n dataType: 'array',\n interface: {\n type: AXPWidgetsList.Advanced.DataList,\n options: {\n paging: false,\n showIndex: true,\n showHeader: true,\n columns: [\n { name: 'name', title: `${I18N}.fields.option-name`, width: '160px' },\n { name: 'title', title: `${I18N}.fields.option-title`, width: '200px' },\n {\n name: 'schema',\n title: `${I18N}.fields.option-schema`,\n width: '280px',\n schema: {\n name: 'interface',\n title: 'Schema',\n interface: {\n name: AXPWidgetsList.Advanced.WidgetFieldConfigurator,\n title: 'Schema',\n options: {\n fieldName: \"{{ context.eval('name') }}\",\n fieldTitle: \"{{ context.eval('title') }}\",\n },\n },\n },\n },\n { name: 'description', title: `${I18N}.fields.option-description` },\n ],\n },\n },\n },\n },\n ],\n columns: [{ name: 'name' }, { name: 'title' }],\n commands: crud\n ? {\n update: {\n execute: async (data: Record<string, unknown>) => {\n const name = (data['id'] ?? data['name']) as string;\n const existing = await crud.getInterface(name);\n const optionDefinitionsSource =\n data['optionDefinitions'] !== undefined ? data['optionDefinitions'] : existing?.optionDefinitions;\n const optionDefinitions = mapEntityFieldRowsInterfaceToDomain(\n // sanitizeDataListRowsForPersist(optionDefinitionsSource),\n optionDefinitionsSource,\n ) as AXPPropertyDefinition[];\n const definition: AXPInterfaceDefinition = existing\n ? {\n ...existing,\n ...data,\n name: (data['name'] as string) ?? existing.name,\n title: (data['title'] as string) ?? existing.title,\n optionDefinitions,\n }\n : {\n name: (data['name'] as string) ?? name,\n title: (data['title'] as string) ?? name,\n optionDefinitions,\n };\n await crud.updateInterface(name, definition);\n },\n },\n }\n : undefined,\n queries: crud\n ? {\n byKey: {\n execute: async (id: string) => {\n const def = await crud.getInterface(id);\n if (!def) return null;\n return {\n ...def,\n id: def.name,\n optionDefinitions: mapEntityFieldRowsInterfaceForForm(def.optionDefinitions),\n };\n },\n type: AXPEntityQueryType.Single,\n },\n list: {\n execute: async (request?: AXPQueryRequest) => {\n const list = await crud.listInterfaces();\n let items = list.map((x) => ({\n id: x.name,\n name: x.name,\n title: x.title ?? '',\n groups: x.groups ?? [],\n }));\n if (request?.filter) {\n items = applyFilterArray(items, [request.filter], request.filter.logic ?? 'and');\n }\n if (request?.sort?.length) {\n items = applySortArray(items, request.sort);\n }\n const total = items.length;\n const skip = request?.skip ?? 0;\n const take = request?.take ?? total;\n const pagedItems = items.slice(skip, skip + take);\n return { items: pagedItems, total };\n },\n type: AXPEntityQueryType.List,\n },\n }\n : undefined,\n interfaces: {\n master: {\n single: {\n title: '{{title}}',\n sections: [{ id: 'basic-info' }, { id: 'configuration' }, { id: 'option-definitions' }],\n properties: [\n { name: 'name', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'title', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'type', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'icon', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'description', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'categoriesDisplay', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'groupsDisplay', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'optionDefinitions', layout: { positions: { lg: { colSpan: 12 } } } },\n ],\n actions: [],\n },\n list: {\n actions: [\n ...entityMasterCrudActions({\n delete: false,\n edit: false,\n create: false,\n }),\n ],\n views: [\n createAllQueryView({ sorts: [{ name: 'title', dir: 'asc' }] }),\n createQueryView(\n AXPWidgetGroupEnum.FormElement,\n '@platform-management:definitions.interfaces.list.views.form-element',\n true,\n {\n conditions: [{ name: 'groups', operator: { type: 'contains' }, value: AXPWidgetGroupEnum.FormElement }],\n sorts: [{ name: 'title', dir: 'asc' }],\n },\n ),\n createQueryView(\n AXPWidgetGroupEnum.DashboardWidget,\n '@platform-management:definitions.interfaces.list.views.dashboard-widget',\n true,\n {\n conditions: [\n { name: 'groups', operator: { type: 'contains' }, value: AXPWidgetGroupEnum.DashboardWidget },\n ],\n sorts: [{ name: 'title', dir: 'asc' }],\n },\n ),\n createQueryView(\n AXPWidgetGroupEnum.FormTemplate,\n '@platform-management:definitions.interfaces.list.views.form-template',\n true,\n {\n conditions: [\n { name: 'groups', operator: { type: 'contains' }, value: AXPWidgetGroupEnum.FormTemplate },\n ],\n sorts: [{ name: 'title', dir: 'asc' }],\n },\n ),\n createQueryView(\n AXPWidgetGroupEnum.PropertyEditor,\n '@platform-management:definitions.interfaces.list.views.property-editor',\n true,\n {\n conditions: [\n { name: 'groups', operator: { type: 'contains' }, value: AXPWidgetGroupEnum.PropertyEditor },\n ],\n sorts: [{ name: 'title', dir: 'asc' }],\n },\n ),\n createQueryView(\n AXPWidgetGroupEnum.MetaData,\n '@platform-management:definitions.interfaces.list.views.meta-data',\n true,\n {\n conditions: [{ name: 'groups', operator: { type: 'contains' }, value: AXPWidgetGroupEnum.MetaData }],\n sorts: [{ name: 'title', dir: 'asc' }],\n },\n ),\n createQueryView(\n AXPWidgetGroupEnum.SettingWidget,\n '@platform-management:definitions.interfaces.list.views.setting-widget',\n true,\n {\n conditions: [\n { name: 'groups', operator: { type: 'contains' }, value: AXPWidgetGroupEnum.SettingWidget },\n ],\n sorts: [{ name: 'title', dir: 'asc' }],\n },\n ),\n createQueryView(\n AXPWidgetGroupEnum.EntityWidget,\n '@platform-management:definitions.interfaces.list.views.entity-widget',\n true,\n {\n conditions: [\n { name: 'groups', operator: { type: 'contains' }, value: AXPWidgetGroupEnum.EntityWidget },\n ],\n sorts: [{ name: 'title', dir: 'asc' }],\n },\n ),\n createQueryView(\n AXPWidgetGroupEnum.UtilityWidget,\n '@platform-management:definitions.interfaces.list.views.utility-widget',\n true,\n {\n conditions: [\n { name: 'groups', operator: { type: 'contains' }, value: AXPWidgetGroupEnum.UtilityWidget },\n ],\n sorts: [{ name: 'title', dir: 'asc' }],\n },\n ),\n ],\n },\n },\n },\n };\n\n return entityDef;\n}\n","import {\n AXPEntity,\n AXPEntityQueryType,\n AXPMenuProviderService,\n createAllQueryView,\n} from '@acorex/platform/common';\nimport type {\n AXPMenuDefinitionRecord,\n AXPMenuDefinitionStoredCommand,\n} from '@acorex/platform/domain';\nimport { applyFilterArray, applySortArray, type AXPQueryRequest } from '@acorex/platform/core';\nimport {\n AXP_ENTITY_DEFINITION_CRUD_SERVICE,\n entityMasterCrudActions,\n type AXPEntityDefinitionCrudService,\n} from '@acorex/platform/layout/entity';\nimport { AXPWidgetsCatalog } from '@acorex/platform/layout/widget-core';\nimport { AXPWidgetsList } from '@acorex/modules/common';\nimport { Injector } from '@angular/core';\nimport { RootConfig } from '../../const';\n\nconst I18N = '@platform-management:definitions.menus.detail';\n\nconst POLICY_STRING_LIST_DATA_LIST = {\n paging: false,\n showIndex: true,\n showHeader: true,\n commands: { add: true, edit: true, remove: true },\n} as const;\n\nconst COMMAND_KEY_VALUE_DATA_LIST = {\n paging: false,\n showIndex: true,\n showHeader: true,\n commands: { add: true, edit: true, remove: true },\n} as const;\n\n//#region ---- Mapping helpers ----\n\nfunction normalizeCategoryIds(raw: unknown): string[] | undefined {\n if (raw == null) {\n return undefined;\n }\n if (Array.isArray(raw)) {\n const ids = raw.map((x) => String(x).trim()).filter((id) => id.length > 0);\n return ids.length ? ids : undefined;\n }\n if (typeof raw === 'string') {\n const s = raw.trim();\n return s ? [s] : undefined;\n }\n return undefined;\n}\n\nfunction normalizeCategoryLabels(raw: unknown): Array<{ id: string; title?: string }> | undefined {\n if (!Array.isArray(raw) || raw.length === 0) {\n return undefined;\n }\n const out = raw\n .map((item) => {\n if (item == null || typeof item !== 'object') {\n return null;\n }\n const o = item as Record<string, unknown>;\n const id = String(o['id'] ?? '').trim();\n if (!id) {\n return null;\n }\n const title = typeof o['title'] === 'string' ? o['title'] : undefined;\n return title ? { id, title } : { id };\n })\n .filter((x): x is { id: string; title?: string } => x != null);\n return out.length ? out : undefined;\n}\n\nfunction clearMenuProviderCache(injector: Injector): void {\n try {\n injector.get(AXPMenuProviderService).clearCache();\n } catch {\n // Optional in minimal shells\n }\n}\n\nfunction stringArrayToRows(values: string[] | null | undefined): Array<{ key: string }> {\n if (!values?.length) {\n return [];\n }\n return values.map((v) => ({ key: typeof v === 'string' ? v : String(v) }));\n}\n\nfunction rowsToStringArray(rows: unknown): string[] | undefined {\n if (!Array.isArray(rows) || rows.length === 0) {\n return undefined;\n }\n const keys = rows\n .map((r) => String((r as { key?: string }).key ?? '').trim())\n .filter((k) => k.length > 0);\n return keys.length ? keys : undefined;\n}\n\nfunction recordToKeyValueRows(record: Record<string, unknown> | undefined): Array<{ key: string; value: string }> {\n if (!record) {\n return [];\n }\n return Object.entries(record).map(([key, v]) => ({\n key,\n value: typeof v === 'string' ? v : JSON.stringify(v),\n }));\n}\n\nfunction keyValueRowsToRecord(rows: unknown): Record<string, unknown> | undefined {\n if (!Array.isArray(rows) || rows.length === 0) {\n return undefined;\n }\n const out: Record<string, unknown> = {};\n for (const row of rows) {\n const r = row as { key?: string; value?: string };\n const k = String(r.key ?? '').trim();\n if (!k) {\n continue;\n }\n const raw = String(r.value ?? '');\n let parsed: unknown = raw;\n try {\n parsed = JSON.parse(raw) as unknown;\n } catch {\n parsed = raw;\n }\n out[k] = parsed;\n }\n return Object.keys(out).length ? out : undefined;\n}\n\nfunction commandToFormFields(command: AXPMenuDefinitionStoredCommand | undefined): Record<string, unknown> {\n if (!command) {\n return {\n commandKind: 'none',\n commandPath: null,\n commandNavigateExtras: [],\n commandExecuteName: null,\n commandExecuteOptions: [],\n };\n }\n if (command.kind === 'navigate') {\n return {\n commandKind: 'navigate',\n commandPath: command.path,\n commandNavigateExtras: recordToKeyValueRows(command.extras),\n commandExecuteName: null,\n commandExecuteOptions: [],\n };\n }\n return {\n commandKind: 'execute',\n commandPath: null,\n commandNavigateExtras: [],\n commandExecuteName: command.name,\n commandExecuteOptions: recordToKeyValueRows(command.options),\n };\n}\n\nfunction commandFromFormFields(data: Record<string, unknown>): AXPMenuDefinitionStoredCommand | undefined {\n const kind = String(data['commandKind'] ?? 'none');\n if (kind === 'none' || kind === '') {\n return undefined;\n }\n if (kind === 'navigate') {\n const path = String(data['commandPath'] ?? '').trim();\n if (!path) {\n return undefined;\n }\n const extras = keyValueRowsToRecord(data['commandNavigateExtras']);\n return {\n kind: 'navigate',\n navigateType: 'router',\n path,\n ...(extras ? { extras } : {}),\n };\n }\n if (kind === 'execute') {\n const name = String(data['commandExecuteName'] ?? '').trim();\n if (!name) {\n return undefined;\n }\n const options = keyValueRowsToRecord(data['commandExecuteOptions']);\n return {\n kind: 'execute',\n name,\n ...(options ? { options } : {}),\n };\n }\n return undefined;\n}\n\nfunction rowFromMenuDefinition(id: string, def: AXPMenuDefinitionRecord): Record<string, unknown> {\n const pathLiteral = String(def.path ?? '').trim();\n const useLiteralPath = pathLiteral.length > 0;\n\n const moduleRef =\n (Array.isArray(def.categoryIds) && def.categoryIds.length > 0\n ? String(def.categoryIds[0])\n : '') ||\n String(def.entityListRef?.module ?? '').trim() ||\n null;\n\n return {\n id,\n name: def.name,\n text: def.text,\n description: def.description ?? null,\n icon: def.icon ?? null,\n priority: def.priority ?? null,\n type: def.type ?? null,\n attachParentName: def.attachParentName ?? null,\n path: def.path ?? null,\n entityListModule: useLiteralPath ? null : (def.entityListRef?.module ?? null),\n entityListEntity: useLiteralPath ? null : (def.entityListRef?.entity ?? null),\n moduleRef,\n policyFeatures: stringArrayToRows(def.policyFeatures),\n policyPermissions: stringArrayToRows(def.policyPermissions),\n badgeKey: def.badgeKey ?? null,\n categoryIds: def.categoryIds,\n categories: def.categories,\n ...commandToFormFields(def.command),\n };\n}\n\nfunction menuFormToDefinition(data: Record<string, unknown>): AXPMenuDefinitionRecord {\n const name = (data['name'] as string) ?? '';\n const pathLiteral = String((data['path'] as string) ?? '').trim();\n const em = String((data['entityListModule'] as string) ?? '').trim();\n const ee = String((data['entityListEntity'] as string) ?? '').trim();\n const categoryIds = normalizeCategoryIds(data['categoryIds']);\n const categories = normalizeCategoryLabels(data['categories']);\n\n return {\n name,\n text: (data['text'] as string) ?? '',\n description: (data['description'] as string) || undefined,\n icon: (data['icon'] as string) || undefined,\n priority: typeof data['priority'] === 'number' ? data['priority'] : undefined,\n type: (data['type'] as AXPMenuDefinitionRecord['type']) ?? undefined,\n attachParentName: (data['attachParentName'] as string) || undefined,\n path: pathLiteral || undefined,\n entityListRef: !pathLiteral && em && ee ? { module: em, entity: ee } : undefined,\n policyFeatures: rowsToStringArray(data['policyFeatures']),\n policyPermissions: rowsToStringArray(data['policyPermissions']),\n badgeKey: (data['badgeKey'] as string) || undefined,\n command: commandFromFormFields(data),\n ...(categoryIds?.length ? { categoryIds } : {}),\n ...(categories?.length ? { categories } : {}),\n };\n}\n\n//#endregion\n\nexport async function menuDefinitionEntityFactory(injector: Injector): Promise<AXPEntity | null> {\n const crud = injector.get(AXP_ENTITY_DEFINITION_CRUD_SERVICE) as AXPEntityDefinitionCrudService | null;\n\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.menuDefinition.name,\n title: RootConfig.entities.menuDefinition.title,\n icon: RootConfig.entities.menuDefinition.icon,\n formats: {\n individual: 'Menu Definition',\n plural: 'Menu Definitions',\n },\n plugins: [\n {\n name: 'category',\n options: {\n categoryEntity: `${RootConfig.module.name}.${RootConfig.entities.moduleDefinition.name}`,\n allowMultiple: true,\n },\n },\n ],\n relatedEntities: [],\n groups: [\n { id: 'basic-info', title: `${I18N}.sections.basic-info` },\n { id: 'placement', title: `${I18N}.sections.placement` },\n { id: 'navigation', title: `${I18N}.sections.navigation` },\n { id: 'policy', title: `${I18N}.sections.policy` },\n { id: 'command-meta', title: `${I18N}.sections.command-meta` },\n ],\n properties: [\n {\n name: 'name',\n title: `${I18N}.fields.name`,\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text, options: {} },\n },\n validations: [{ rule: 'required' }],\n options: { filter: { advance: { enabled: true }, inline: { enabled: true } }, sort: { enabled: true } },\n },\n {\n name: 'text',\n title: `${I18N}.fields.text`,\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text, options: {} },\n },\n validations: [{ rule: 'required' }],\n options: { filter: { advance: { enabled: true }, inline: { enabled: true } }, sort: { enabled: true } },\n },\n {\n name: 'moduleRef',\n title: `${I18N}.fields.module-ref`,\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text, options: { disabled: true } },\n },\n options: { filter: { advance: { enabled: true }, inline: { enabled: true } }, sort: { enabled: true } },\n },\n {\n name: 'description',\n title: `${I18N}.fields.description`,\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.largeText, options: {} },\n },\n },\n {\n name: 'icon',\n title: `${I18N}.fields.icon`,\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.iconChooser },\n },\n },\n {\n name: 'priority',\n title: `${I18N}.fields.priority`,\n groupId: 'basic-info',\n schema: {\n dataType: 'number',\n interface: { type: AXPWidgetsCatalog.number },\n },\n options: { sort: { enabled: true } },\n },\n {\n name: 'type',\n title: `${I18N}.fields.type`,\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.select,\n options: {\n valueField: 'value',\n textField: 'title',\n dataSource: [\n { value: 'menu', title: `${I18N}.fields.type-values.menu` },\n { value: 'group', title: `${I18N}.fields.type-values.group` },\n { value: 'break', title: `${I18N}.fields.type-values.break` },\n ],\n },\n },\n },\n },\n {\n name: 'attachParentName',\n title: `${I18N}.fields.attach-parent-name`,\n groupId: 'placement',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text, options: {} },\n },\n options: { filter: { advance: { enabled: true }, inline: { enabled: true } }, sort: { enabled: true } },\n },\n {\n name: 'path',\n title: `${I18N}.fields.path`,\n groupId: 'navigation',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n options: {},\n triggers: [\n {\n event: \"{{ events.context('path') }}\",\n action: `{{ if(String(context.eval('path') ?? '').trim()) { context.set('entityListModule', null); context.set('entityListEntity', null); } }}`,\n },\n ],\n },\n },\n },\n {\n name: 'entityListModule',\n title: `${I18N}.fields.entity-list-module`,\n groupId: 'navigation',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.select,\n options: {\n allowSearch: true,\n hasClearButton: true,\n disabled: `{{ !!String(context.eval(\"path\") ?? \"\").trim() }}`,\n },\n },\n },\n },\n {\n name: 'entityListEntity',\n title: `${I18N}.fields.entity-list-entity`,\n groupId: 'navigation',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.entityDefinitionProvider,\n options: {\n allowSearch: true,\n hasClearButton: true,\n filterModuleField: 'entityListModule',\n valueFormat: 'entityName',\n disabled: `{{ !!String(context.eval(\"path\") ?? \"\").trim() || !context.eval(\"entityListModule\") }}`,\n triggers: [\n {\n event: \"{{ events.context('entityListModule') }}\",\n action: `{{ widget.refresh() }}`,\n },\n ],\n },\n },\n },\n },\n {\n name: 'policyFeatures',\n title: `${I18N}.fields.policy-features`,\n groupId: 'policy',\n schema: {\n dataType: 'array',\n interface: {\n type: AXPWidgetsList.Advanced.DataList,\n options: {\n ...POLICY_STRING_LIST_DATA_LIST,\n columns: [{ name: 'key', title: `${I18N}.fields.feature-key`, width: '100%' }],\n },\n },\n },\n },\n {\n name: 'policyPermissions',\n title: `${I18N}.fields.policy-permissions`,\n groupId: 'policy',\n schema: {\n dataType: 'array',\n interface: {\n type: AXPWidgetsList.Advanced.DataList,\n options: {\n ...POLICY_STRING_LIST_DATA_LIST,\n columns: [{ name: 'key', title: `${I18N}.fields.permission-key`, width: '100%' }],\n },\n },\n },\n },\n {\n name: 'badgeKey',\n title: `${I18N}.fields.badge-key`,\n groupId: 'command-meta',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text, options: {} },\n },\n },\n {\n name: 'commandKind',\n title: `${I18N}.fields.command-kind`,\n groupId: 'command-meta',\n schema: {\n dataType: 'string',\n defaultValue: 'none',\n interface: {\n type: AXPWidgetsCatalog.select,\n options: {\n valueField: 'value',\n textField: 'title',\n dataSource: [\n { value: 'none', title: `${I18N}.fields.command-kind-values.none` },\n { value: 'navigate', title: `${I18N}.fields.command-kind-values.navigate` },\n { value: 'execute', title: `${I18N}.fields.command-kind-values.execute` },\n ],\n },\n },\n },\n },\n {\n name: 'commandPath',\n title: `${I18N}.fields.command-path`,\n groupId: 'command-meta',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text, options: {} },\n },\n },\n {\n name: 'commandNavigateExtras',\n title: `${I18N}.fields.command-navigate-extras`,\n groupId: 'command-meta',\n schema: {\n dataType: 'array',\n interface: {\n type: AXPWidgetsList.Advanced.DataList,\n options: {\n ...COMMAND_KEY_VALUE_DATA_LIST,\n columns: [\n { name: 'key', title: `${I18N}.fields.kv-key`, width: '200px' },\n { name: 'value', title: `${I18N}.fields.kv-value`, width: '280px' },\n ],\n },\n },\n },\n },\n {\n name: 'commandExecuteName',\n title: `${I18N}.fields.command-execute-name`,\n groupId: 'command-meta',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text, options: {} },\n },\n },\n {\n name: 'commandExecuteOptions',\n title: `${I18N}.fields.command-execute-options`,\n groupId: 'command-meta',\n schema: {\n dataType: 'array',\n interface: {\n type: AXPWidgetsList.Advanced.DataList,\n options: {\n ...COMMAND_KEY_VALUE_DATA_LIST,\n columns: [\n { name: 'key', title: `${I18N}.fields.kv-key`, width: '200px' },\n { name: 'value', title: `${I18N}.fields.kv-value`, width: '280px' },\n ],\n },\n },\n },\n },\n ],\n columns: [{ name: 'name' }, { name: 'text' }, { name: 'moduleRef' }, { name: 'attachParentName' }, { name: 'path' }],\n commands: crud\n ? {\n create: {\n execute: async (data: Record<string, unknown>) => {\n const definition = menuFormToDefinition(data);\n await crud.createMenu(definition.name, definition);\n clearMenuProviderCache(injector);\n return { id: definition.name };\n },\n },\n update: {\n execute: async (data: Record<string, unknown>) => {\n const id = (data['id'] ?? data['name']) as string;\n const definition = menuFormToDefinition({ ...data, name: data['name'] ?? id });\n await crud.updateMenu(id, definition);\n clearMenuProviderCache(injector);\n },\n },\n delete: {\n execute: async (id: string) => {\n await crud.deleteMenu(id);\n clearMenuProviderCache(injector);\n },\n },\n }\n : undefined,\n queries: crud\n ? {\n byKey: {\n execute: async (id: string) => {\n const def = await crud.getMenu(id);\n if (!def) return null;\n return rowFromMenuDefinition(id, def);\n },\n type: AXPEntityQueryType.Single,\n },\n list: {\n execute: async (request?: AXPQueryRequest) => {\n const list = await crud.listMenus();\n let items = list.map(({ id, definition }) => rowFromMenuDefinition(id, definition));\n if (request?.filter) {\n items = applyFilterArray(items, [request.filter], request.filter.logic ?? 'and');\n }\n if (request?.sort?.length) {\n items = applySortArray(items, request.sort);\n }\n const total = items.length;\n const skip = request?.skip ?? 0;\n const take = request?.take ?? total;\n const pagedItems = items.slice(skip, skip + take);\n return { items: pagedItems, total };\n },\n type: AXPEntityQueryType.List,\n },\n }\n : undefined,\n interfaces: {\n master: {\n create: {\n sections: [\n { id: 'basic-info' },\n { id: 'placement' },\n { id: 'navigation' },\n { id: 'policy' },\n { id: 'command-meta' },\n ],\n properties: [\n { name: 'name', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'text', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'type', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'priority', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'description', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'icon', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'attachParentName', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'path', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'entityListModule', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'entityListEntity', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'policyFeatures', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'policyPermissions', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'badgeKey', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'commandKind', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'commandPath', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'commandNavigateExtras', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'commandExecuteName', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'commandExecuteOptions', layout: { positions: { lg: { colSpan: 12 } } } },\n ],\n },\n update: {\n sections: [\n { id: 'basic-info' },\n { id: 'placement' },\n { id: 'navigation' },\n { id: 'policy' },\n { id: 'command-meta' },\n ],\n properties: [\n { name: 'name', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'text', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'type', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'priority', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'description', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'icon', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'attachParentName', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'path', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'entityListModule', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'entityListEntity', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'policyFeatures', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'policyPermissions', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'badgeKey', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'commandKind', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'commandPath', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'commandNavigateExtras', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'commandExecuteName', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'commandExecuteOptions', layout: { positions: { lg: { colSpan: 12 } } } },\n ],\n },\n single: {\n title: '{{name}}',\n sections: [\n { id: 'basic-info' },\n { id: 'placement' },\n { id: 'navigation' },\n { id: 'policy' },\n { id: 'command-meta' },\n ],\n properties: [\n { name: 'name', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'text', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'type', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'priority', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'description', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'icon', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'attachParentName', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'path', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'entityListModule', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'entityListEntity', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'policyFeatures', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'policyPermissions', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'badgeKey', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'commandKind', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'commandPath', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'commandNavigateExtras', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'commandExecuteName', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'commandExecuteOptions', layout: { positions: { lg: { colSpan: 12 } } } },\n ],\n actions: [],\n },\n list: {\n actions: [...entityMasterCrudActions()],\n views: [createAllQueryView()],\n },\n },\n },\n };\n\n return entityDef;\n}\n","import {\n AXPEntity,\n AXPEntityQueryType,\n createAllQueryView,\n} from '@acorex/platform/common';\nimport { applyFilterArray, applySortArray, AXPModuleManifestRegistry, type AXPQueryRequest } from '@acorex/platform/core';\nimport {\n AXP_ENTITY_DEFINITION_CRUD_SERVICE,\n entityMasterCrudActions,\n type AXPEntityDefinitionCrudService,\n} from '@acorex/platform/layout/entity';\nimport { AXPWidgetsCatalog } from '@acorex/platform/layout/widget-core';\nimport { AXPWidgetsList } from '@acorex/modules/common';\nimport type { AXPRelationDefinition } from '@acorex/platform/domain';\nimport { Injector } from '@angular/core';\nimport { RootConfig } from '../../const';\n\nconst I18N = '@platform-management:definitions.modules.detail';\n\ninterface ModuleDefinitionRow {\n id: string;\n name: string;\n title: string;\n icon?: string;\n entityCount?: number;\n featureCount?: number;\n relationCount?: number;\n entities?: Array<{ id: string; name: string; title: string }>;\n features?: Array<{ name: string; key: string; title: string; defaultValue: unknown }>;\n relations?: Array<{ id: string; source: string; target: string; type: string; kind: string }>;\n}\n\nfunction relationToRow(id: string, relation: AXPRelationDefinition): {\n id: string;\n source: string;\n target: string;\n type: string;\n kind: string;\n} {\n return {\n id,\n source: `${relation.source.aggregate}.${relation.source.entity}.${relation.source.key}`,\n target: `${relation.target.aggregate}.${relation.target.entity}.${relation.target.key}`,\n type: String(relation.type),\n kind: String(relation.kind),\n };\n}\n\nexport async function moduleDefinitionEntityFactory(\n injector: Injector\n): Promise<AXPEntity | null> {\n const crud = injector.get(AXP_ENTITY_DEFINITION_CRUD_SERVICE) as AXPEntityDefinitionCrudService | null;\n const manifestRegistry = injector.get(AXPModuleManifestRegistry);\n await manifestRegistry.initialize();\n\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.moduleDefinition.name,\n title: RootConfig.entities.moduleDefinition.title,\n icon: RootConfig.entities.moduleDefinition.icon,\n formats: {\n individual: 'Module Definition',\n plural: 'Module Definitions',\n },\n plugins: [\n {\n name: 'history',\n options: {\n display: 'page',\n },\n },\n ],\n relatedEntities: [\n {\n entity: `${RootConfig.module.name}.${RootConfig.entities.aggregateDefinition.name}`,\n title: `${I18N}.pages.aggregates`,\n icon: RootConfig.entities.aggregateDefinition.icon,\n columns: ['name', 'title', 'entityCount'],\n conditions: [\n { name: 'module', operator: { type: 'equal' }, value: '{{ context.eval(\"id\") }}' },\n ],\n layout: { type: 'page-list', position: 'after', order: 10 },\n },\n {\n entity: `${RootConfig.module.name}.${RootConfig.entities.relationDefinition.name}`,\n title: `${I18N}.pages.relations`,\n icon: 'fa-light fa-link',\n columns: ['sourceLabel', 'targetLabel', 'typeLabel', 'kindLabel'],\n conditions: [\n { name: 'source.aggregate', operator: { type: 'equal' }, value: '{{ context.eval(\"id\") }}' },\n { name: 'target.aggregate', operator: { type: 'equal' }, value: '{{ context.eval(\"id\") }}' },\n ],\n layout: { type: 'page-list', position: 'after', order: 11 },\n },\n {\n entity: `${RootConfig.module.name}.${RootConfig.entities.menuDefinition.name}`,\n title: `${I18N}.pages.menus`,\n icon: RootConfig.entities.menuDefinition.icon,\n columns: ['name', 'text', 'moduleRef'],\n conditions: [\n { name: 'moduleRef', operator: { type: 'equal' }, value: '{{ context.eval(\"id\") }}' },\n ],\n layout: { type: 'page-list', position: 'after', order: 12 },\n },\n ],\n groups: [\n { id: 'overview', title: `${I18N}.pages.overview` },\n { id: 'entities', title: `${I18N}.pages.entities` },\n { id: 'relations', title: `${I18N}.pages.relations` },\n ],\n properties: [\n {\n name: 'name',\n title: '@general:terms.common.name',\n groupId: 'overview',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text },\n },\n options: { filter: { advance: { enabled: true }, inline: { enabled: true } }, sort: { enabled: true } },\n },\n {\n name: 'title',\n title: '@general:terms.common.title',\n groupId: 'overview',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text, options: {} },\n },\n options: { filter: { advance: { enabled: true }, inline: { enabled: true } }, sort: { enabled: true } },\n },\n {\n name: 'icon',\n title: `${I18N}.fields.icon`,\n groupId: 'overview',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.iconChooser },\n },\n },\n {\n name: 'entityCount',\n title: `${I18N}.fields.entity-count`,\n groupId: 'overview',\n schema: {\n dataType: 'number',\n interface: { type: AXPWidgetsCatalog.text, options: { disabled: true } },\n },\n },\n {\n name: 'featureCount',\n title: `${I18N}.fields.feature-count`,\n groupId: 'overview',\n schema: {\n dataType: 'number',\n interface: { type: AXPWidgetsCatalog.text, options: { disabled: true } },\n },\n },\n {\n name: 'relationCount',\n title: `${I18N}.fields.relation-count`,\n groupId: 'overview',\n schema: {\n dataType: 'number',\n interface: { type: AXPWidgetsCatalog.text, options: { disabled: true } },\n },\n },\n {\n name: 'features',\n title: `${I18N}.fields.features`,\n groupId: 'overview',\n schema: {\n dataType: 'array',\n interface: {\n type: AXPWidgetsList.Advanced.DataList,\n options: {\n disabled: true,\n paging: false,\n showIndex: true,\n showHeader: true,\n columns: [\n { name: 'name', title: `${I18N}.fields.feature-name`, width: '220px' },\n { name: 'title', title: `${I18N}.fields.feature-title`, width: '260px' },\n { name: 'defaultValue', title: `${I18N}.fields.feature-default-value` },\n ],\n },\n },\n },\n },\n {\n name: 'entities',\n title: `${I18N}.pages.entities`,\n groupId: 'entities',\n schema: {\n dataType: 'array',\n interface: {\n type: AXPWidgetsList.Advanced.DataList,\n options: {\n disabled: true,\n paging: false,\n showIndex: true,\n showHeader: true,\n columns: [\n { name: 'id', title: '@general:terms.common.id', width: '280px' },\n { name: 'name', title: '@general:terms.common.name', width: '220px' },\n { name: 'title', title: '@general:terms.common.title' },\n ],\n },\n },\n },\n },\n {\n name: 'relations',\n title: `${I18N}.pages.relations`,\n groupId: 'relations',\n schema: {\n dataType: 'array',\n interface: {\n type: AXPWidgetsList.Advanced.DataList,\n options: {\n disabled: true,\n paging: false,\n showIndex: true,\n showHeader: true,\n columns: [\n { name: 'id', title: '@general:terms.common.id', width: '280px' },\n { name: 'source', title: `${I18N}.fields.relation-source`, width: '280px' },\n { name: 'target', title: `${I18N}.fields.relation-target`, width: '280px' },\n { name: 'type', title: `${I18N}.fields.type`, width: '90px' },\n { name: 'kind', title: `${I18N}.fields.kind`, width: '90px' },\n ],\n },\n },\n },\n },\n ],\n columns: [\n { name: 'name' },\n { name: 'title' },\n { name: 'entityCount' },\n { name: 'featureCount' },\n { name: 'relationCount' },\n ],\n commands: crud\n ? {\n create: {\n execute: async (data: Record<string, unknown>) => {\n const name = ((data['name'] as string) ?? '').trim();\n if (!name) {\n throw new Error('Module name is required');\n }\n const title = ((data['title'] as string) ?? name).trim();\n const icon = ((data['icon'] as string) ?? '').trim();\n await crud.createModule(name, { name, title, icon });\n return { id: name };\n },\n },\n update: {\n execute: async (data: Record<string, unknown>) => {\n const id = ((data['id'] as string) ?? (data['name'] as string) ?? '').trim();\n if (!id) {\n throw new Error('Module id is required');\n }\n const title = ((data['title'] as string) ?? id).trim();\n const icon = ((data['icon'] as string) ?? '').trim();\n await crud.updateModule(id, { name: id, title, icon });\n },\n },\n delete: {\n execute: async (id: string) => {\n await crud.deleteModule(id);\n },\n },\n }\n : undefined,\n queries: crud\n ? {\n byKey: {\n execute: async (id: string) => {\n const module = await crud.getModule(id);\n if (!module) return null;\n const moduleEntities = (await crud.list()).filter((item) => item.module === module.name);\n const entityNameSet = new Set(moduleEntities.map((item) => item.name));\n const relations = await crud.listRelations();\n const matchedRelations = relations\n .filter((relation) => {\n const sourceMatch = entityNameSet.has(relation.source.entity);\n const targetMatch = entityNameSet.has(relation.target.entity);\n return sourceMatch || targetMatch;\n })\n .map((relation) => relationToRow(relation.id, relation));\n const features = manifestRegistry\n .getModuleFeatures(module.name)\n .map((feature) => ({\n name: feature.name,\n key: feature.key,\n title: feature.title,\n defaultValue: feature.defaultValue ?? null,\n }));\n return {\n id: module.name,\n name: module.name,\n title: module.title ?? module.name,\n icon: module.icon ?? '',\n entityCount: moduleEntities.length,\n featureCount: features.length,\n relationCount: matchedRelations.length,\n entities: moduleEntities.map((item) => ({\n id: item.entityName ?? `${item.module}.${item.name}`,\n name: item.name,\n title: item.name,\n })),\n features,\n relations: matchedRelations,\n } satisfies ModuleDefinitionRow;\n },\n type: AXPEntityQueryType.Single,\n },\n list: {\n execute: async (request?: AXPQueryRequest) => {\n const [modules, entities, relations] = await Promise.all([\n crud.listModules(),\n crud.list(),\n crud.listRelations(),\n ]);\n const moduleEntityMap = new Map<string, Array<{ name: string; entityName?: string }>>();\n for (const entity of entities) {\n const list = moduleEntityMap.get(entity.module) ?? [];\n list.push({ name: entity.name, entityName: entity.entityName });\n moduleEntityMap.set(entity.module, list);\n }\n const rows: ModuleDefinitionRow[] = [];\n for (const module of modules) {\n const moduleEntities = moduleEntityMap.get(module.name) ?? [];\n const entityNameSet = new Set(moduleEntities.map((item) => item.name));\n const relationCount = relations.filter((relation) => {\n const sourceMatch = entityNameSet.has(relation.source.entity);\n const targetMatch = entityNameSet.has(relation.target.entity);\n return sourceMatch || targetMatch;\n }).length;\n const moduleId = module.name;\n rows.push({\n id: moduleId,\n name: module.name,\n title: module.title ?? module.name,\n icon: module.icon,\n entityCount: moduleEntities.length,\n featureCount: manifestRegistry.getModuleFeatures(module.name).length,\n relationCount,\n });\n }\n let items = rows;\n if (request?.filter) {\n items = applyFilterArray(items, [request.filter], request.filter.logic ?? 'and');\n }\n if (request?.sort?.length) {\n items = applySortArray(items, request.sort);\n }\n const total = items.length;\n const skip = request?.skip ?? 0;\n const take = request?.take ?? total;\n return { items: items.slice(skip, skip + take), total };\n },\n type: AXPEntityQueryType.List,\n },\n }\n : undefined,\n interfaces: {\n master: {\n create: {\n sections: [{ id: 'overview' }],\n properties: [\n { name: 'name', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'title', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'icon', layout: { positions: { lg: { colSpan: 12 } } } },\n ],\n },\n update: {\n sections: [{ id: 'overview' }],\n properties: [\n { name: 'name', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'title', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'icon', layout: { positions: { lg: { colSpan: 4 } } } },\n ],\n },\n single: {\n title: '{{title}}',\n sections: [{ id: 'overview' }],\n properties: [\n { name: 'name', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'title', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'icon', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'entityCount', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'featureCount', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'relationCount', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'features', layout: { positions: { lg: { colSpan: 12 } } } },\n ],\n actions: [],\n },\n list: {\n actions: [...entityMasterCrudActions()],\n views: [createAllQueryView()],\n },\n },\n },\n };\n\n return entityDef;\n}\n","import { AXPWidgetsList } from '@acorex/modules/common';\nimport { AXPPermissionDefinitionService } from '@acorex/platform/auth';\nimport { AXPEntity, AXPEntityQueryType, createAllQueryView } from '@acorex/platform/common';\nimport { applyFilterArray, applySortArray, type AXPQueryRequest } from '@acorex/platform/core';\nimport type {\n AXPPermissionDefinitionRecord,\n AXPPermissionGroupDefinitionRecord,\n AXPPermissionLeafRecord,\n} from '@acorex/platform/domain';\nimport {\n AXP_ENTITY_DEFINITION_CRUD_SERVICE,\n entityMasterCrudActions,\n type AXPEntityDefinitionCrudService,\n} from '@acorex/platform/layout/entity';\nimport { AXPWidgetsCatalog } from '@acorex/platform/layout/widget-core';\nimport { Injector } from '@angular/core';\nimport { RootConfig } from '../../const';\n\n//#region ---- Constants ----\n\nconst I18N = '@platform-management:definitions.permissionGroups.detail';\n\nconst PERMISSIONS_DATA_LIST_BASE = {\n commands: { add: true, edit: true, remove: true },\n paging: false,\n showIndex: true,\n showHeader: true,\n};\n\n/** One-level child permissions (leaf rows only; matches domain contract). */\nconst PERMISSION_CHILDREN_DATA_LIST_OPTIONS = {\n ...PERMISSIONS_DATA_LIST_BASE,\n columns: [\n { name: 'name', title: `${I18N}.columns.permission-name`, width: '140px' },\n { name: 'title', title: `${I18N}.columns.permission-title`, width: '160px' },\n {\n name: 'description',\n title: `${I18N}.columns.permission-description`,\n width: '200px',\n schema: {\n name: 'description',\n title: `${I18N}.columns.permission-description`,\n interface: { name: AXPWidgetsCatalog.largeText, title: 'Description', options: {} },\n },\n },\n {\n name: 'requiredFeatures',\n title: `${I18N}.columns.required-features`,\n width: '220px',\n schema: {\n name: 'requiredFeatures',\n title: `${I18N}.columns.required-features`,\n interface: { name: AXPWidgetsCatalog.text, title: 'Required features', options: {} },\n },\n },\n ],\n};\n\n//#endregion\n\n//#region ---- Mapping helpers ----\n\nfunction normalizeCategoryIds(raw: unknown): string[] | undefined {\n if (raw == null) {\n return undefined;\n }\n if (Array.isArray(raw)) {\n const ids = raw.map((x) => String(x).trim()).filter((id) => id.length > 0);\n return ids.length ? ids : undefined;\n }\n if (typeof raw === 'string') {\n const s = raw.trim();\n return s ? [s] : undefined;\n }\n return undefined;\n}\n\nfunction normalizeCategoryLabels(raw: unknown): Array<{ id: string; title?: string }> | undefined {\n if (!Array.isArray(raw) || raw.length === 0) {\n return undefined;\n }\n const out = raw\n .map((item) => {\n if (item == null || typeof item !== 'object') {\n return null;\n }\n const o = item as Record<string, unknown>;\n const id = String(o['id'] ?? '').trim();\n if (!id) {\n return null;\n }\n const title = typeof o['title'] === 'string' ? o['title'] : undefined;\n return title ? { id, title } : { id };\n })\n .filter((x): x is { id: string; title?: string } => x != null);\n return out.length ? out : undefined;\n}\n\nasync function reloadPermissionDefinitions(injector: Injector): Promise<void> {\n try {\n await injector.get(AXPPermissionDefinitionService).reload();\n } catch {\n // Optional in minimal shells\n }\n}\n\nfunction optionalString(value: unknown): string | undefined {\n if (value == null) {\n return undefined;\n }\n const s = String(value).trim();\n return s || undefined;\n}\n\nfunction parseCommaSeparatedFeatures(raw: string): string[] {\n return raw\n .split(',')\n .map((s) => s.trim())\n .filter(Boolean);\n}\n\nfunction formatCommaSeparatedFeatures(features: string[] | undefined): string {\n if (!features?.length) {\n return '';\n }\n return features.join(', ');\n}\n\nfunction normalizeRequiredFeatures(raw: unknown): string[] | undefined {\n if (raw == null) {\n return undefined;\n }\n if (Array.isArray(raw)) {\n const arr = raw.map((x) => String(x).trim()).filter(Boolean);\n return arr.length ? arr : undefined;\n }\n if (typeof raw === 'string') {\n const arr = parseCommaSeparatedFeatures(raw);\n return arr.length ? arr : undefined;\n }\n return undefined;\n}\n\nfunction normalizeLeafRow(raw: unknown): AXPPermissionLeafRecord | null {\n if (raw == null || typeof raw !== 'object') {\n return null;\n }\n const o = raw as Record<string, unknown>;\n const name = String(o['name'] ?? '').trim();\n if (!name) {\n return null;\n }\n const title = String(o['title'] ?? '').trim();\n const description = optionalString(o['description']);\n const requiredFeatures = normalizeRequiredFeatures(o['requiredFeatures']);\n const result: AXPPermissionLeafRecord = { name, title };\n if (description) {\n result.description = description;\n }\n if (requiredFeatures?.length) {\n result.requiredFeatures = requiredFeatures;\n }\n return result;\n}\n\nfunction normalizeRootPermissionRow(raw: unknown): AXPPermissionDefinitionRecord | null {\n if (raw == null || typeof raw !== 'object') {\n return null;\n }\n const o = raw as Record<string, unknown>;\n const name = String(o['name'] ?? '').trim();\n if (!name) {\n return null;\n }\n const title = String(o['title'] ?? '').trim();\n const description = optionalString(o['description']);\n const requiredFeatures = normalizeRequiredFeatures(o['requiredFeatures']);\n const childrenRaw = o['children'];\n let children: AXPPermissionLeafRecord[] | undefined;\n if (Array.isArray(childrenRaw)) {\n const mapped = childrenRaw.map(normalizeLeafRow).filter((x): x is AXPPermissionLeafRecord => x != null);\n children = mapped.length ? mapped : undefined;\n }\n const result: AXPPermissionDefinitionRecord = { name, title };\n if (description) {\n result.description = description;\n }\n if (requiredFeatures?.length) {\n result.requiredFeatures = requiredFeatures;\n }\n if (children?.length) {\n result.children = children;\n }\n return result;\n}\n\n/**\n * Maps persisted / form rows to domain records. Supports legacy JSON string and domain-shaped arrays.\n */\nfunction normalizePermissions(raw: unknown): AXPPermissionDefinitionRecord[] {\n if (raw == null) {\n return [];\n }\n if (typeof raw === 'string') {\n try {\n const parsed = JSON.parse(raw) as unknown;\n return normalizePermissions(parsed);\n } catch {\n return [];\n }\n }\n if (Array.isArray(raw)) {\n return raw\n .map((item) => normalizeRootPermissionRow(item))\n .filter((x): x is AXPPermissionDefinitionRecord => x != null);\n }\n return [];\n}\n\nfunction permissionLeafToFormRow(p: AXPPermissionLeafRecord): Record<string, unknown> {\n return {\n name: p.name,\n title: p.title,\n description: p.description ?? '',\n requiredFeatures: formatCommaSeparatedFeatures(p.requiredFeatures),\n };\n}\n\nfunction permissionDefinitionToFormRow(p: AXPPermissionDefinitionRecord): Record<string, unknown> {\n return {\n name: p.name,\n title: p.title,\n description: p.description ?? '',\n requiredFeatures: formatCommaSeparatedFeatures(p.requiredFeatures),\n children: (p.children ?? []).map(permissionLeafToFormRow),\n };\n}\n\nfunction rowFromPermissionGroup(id: string, def: AXPPermissionGroupDefinitionRecord): Record<string, unknown> {\n return {\n id,\n name: def.name,\n title: def.title,\n description: def.description ?? null,\n categoryIds: def.categoryIds,\n categories: def.categories,\n permissions: (def.permissions ?? []).map(permissionDefinitionToFormRow),\n };\n}\n\n//#endregion\n\n//#region ---- Entity factory ----\n\nexport async function permissionGroupDefinitionEntityFactory(injector: Injector): Promise<AXPEntity | null> {\n const crud = injector.get(AXP_ENTITY_DEFINITION_CRUD_SERVICE) as AXPEntityDefinitionCrudService | null;\n\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.permissionGroupDefinition.name,\n title: RootConfig.entities.permissionGroupDefinition.title,\n icon: RootConfig.entities.permissionGroupDefinition.icon,\n formats: {\n individual: 'Permission group',\n plural: 'Permission groups',\n },\n plugins: [\n {\n name: 'unique-fields',\n options: {\n fields: 'name',\n scope: 'global',\n },\n },\n {\n name: 'category',\n options: {\n categoryEntity: `${RootConfig.module.name}.${RootConfig.entities.moduleDefinition.name}`,\n allowMultiple: true,\n },\n },\n ],\n relatedEntities: [],\n groups: [\n { id: 'basic-info', title: `${I18N}.sections.basic-info` },\n { id: 'permissions', title: `${I18N}.sections.permissions` },\n ],\n properties: [\n {\n name: 'name',\n title: `${I18N}.fields.name`,\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text, options: {} },\n },\n validations: [{ rule: 'required' }],\n options: { filter: { advance: { enabled: true }, inline: { enabled: true } }, sort: { enabled: true } },\n },\n {\n name: 'title',\n title: `${I18N}.fields.title`,\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text, options: {} },\n },\n validations: [{ rule: 'required' }],\n options: { filter: { advance: { enabled: true }, inline: { enabled: true } }, sort: { enabled: true } },\n },\n {\n name: 'description',\n title: `${I18N}.fields.description`,\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.largeText, options: {} },\n },\n },\n {\n name: 'permissions',\n title: `${I18N}.fields.permissions`,\n groupId: 'permissions',\n schema: {\n dataType: 'array',\n interface: {\n type: AXPWidgetsList.Advanced.DataList,\n options: {\n ...PERMISSIONS_DATA_LIST_BASE,\n columns: [\n { name: 'name', title: `${I18N}.columns.permission-name`, width: '140px' },\n { name: 'title', title: `${I18N}.columns.permission-title`, width: '160px' },\n {\n name: 'description',\n title: `${I18N}.columns.permission-description`,\n width: '200px',\n schema: {\n name: 'description',\n title: `${I18N}.columns.permission-description`,\n interface: { name: AXPWidgetsCatalog.largeText, title: 'Description', options: {} },\n },\n },\n {\n name: 'requiredFeatures',\n title: `${I18N}.columns.required-features`,\n width: '220px',\n schema: {\n name: 'requiredFeatures',\n title: `${I18N}.columns.required-features`,\n interface: { name: AXPWidgetsCatalog.text, title: 'Required features', options: {} },\n },\n },\n {\n name: 'children',\n title: `${I18N}.columns.child-permissions`,\n width: '320px',\n schema: {\n name: 'children',\n title: `${I18N}.columns.child-permissions`,\n interface: {\n name: AXPWidgetsList.Advanced.DataList,\n title: `${I18N}.columns.child-permissions`,\n options: PERMISSION_CHILDREN_DATA_LIST_OPTIONS,\n },\n },\n },\n ],\n },\n },\n },\n },\n ],\n columns: [{ name: 'name' }, { name: 'title' }],\n // commands: crud\n // ? {\n // create: {\n // execute: async (data: Record<string, unknown>) => {\n // // const definition = formToDefinition(data);\n // await crud.createPermissionGroup(definition.name, definition);\n // await reloadPermissionDefinitions(injector);\n // return { id: definition.name };\n // },\n // },\n // update: {\n // execute: async (data: Record<string, unknown>) => {\n // const id = (data['id'] ?? data['name']) as string;\n // // const definition = formToDefinition({ ...data, name: data['name'] ?? id });\n // await crud.updatePermissionGroup(id, definition);\n // await reloadPermissionDefinitions(injector);\n // },\n // },\n // delete: {\n // execute: async (id: string) => {\n // await crud.deletePermissionGroup(id);\n // await reloadPermissionDefinitions(injector);\n // },\n // },\n // }\n // : undefined,\n queries: crud\n ? {\n byKey: {\n execute: async (id: string) => {\n const def = await crud.getPermissionGroup(id);\n if (!def) return null;\n return rowFromPermissionGroup(id, def);\n },\n type: AXPEntityQueryType.Single,\n },\n list: {\n execute: async (request?: AXPQueryRequest) => {\n const list = await crud.listPermissionGroups();\n let items = list.map(({ id, definition }) => rowFromPermissionGroup(id, definition));\n if (request?.filter) {\n items = applyFilterArray(items, [request.filter], request.filter.logic ?? 'and');\n }\n if (request?.sort?.length) {\n items = applySortArray(items, request.sort);\n }\n const total = items.length;\n const skip = request?.skip ?? 0;\n const take = request?.take ?? total;\n const pagedItems = items.slice(skip, skip + take);\n return { items: pagedItems, total };\n },\n type: AXPEntityQueryType.List,\n },\n }\n : undefined,\n interfaces: {\n master: {\n create: {\n sections: [{ id: 'basic-info' }, { id: 'permissions' }],\n properties: [\n { name: 'name', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'title', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'description', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'permissions', layout: { positions: { lg: { colSpan: 12 } } } },\n ],\n },\n update: {\n sections: [{ id: 'basic-info' }, { id: 'permissions' }],\n properties: [\n { name: 'name', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'title', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'description', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'permissions', layout: { positions: { lg: { colSpan: 12 } } } },\n ],\n },\n single: {\n title: '{{name}}',\n sections: [{ id: 'basic-info' }, { id: 'permissions' }],\n properties: [\n { name: 'name', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'title', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'description', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'permissions', layout: { positions: { lg: { colSpan: 12 } } } },\n ],\n actions: [],\n },\n list: {\n actions: [...entityMasterCrudActions()],\n views: [createAllQueryView()],\n },\n },\n },\n };\n\n return entityDef;\n}\n\n//#endregion\n","import { AXPWidgetsList } from '@acorex/modules/common';\nimport { AXPEntity, AXPEntityQueryType, createAllQueryView } from '@acorex/platform/common';\nimport { applyFilterArray, applySortArray, type AXPQueryRequest } from '@acorex/platform/core';\nimport type { AXPPluginDefinition, AXPPropertyDefinition } from '@acorex/platform/domain';\nimport {\n AXP_ENTITY_DEFINITION_CRUD_SERVICE,\n entityMasterCrudActions,\n type AXPEntityDefinitionCrudService,\n} from '@acorex/platform/layout/entity';\nimport { AXPWidgetsCatalog } from '@acorex/platform/layout/widget-core';\nimport { Injector } from '@angular/core';\nimport { RootConfig } from '../../const';\nimport { mapEntityFieldRowsInterfaceForForm, mapEntityFieldRowsInterfaceToDomain } from '../schema-interface-field-map';\n\nconst I18N = '@platform-management:definitions.plugins.detail';\n\nexport async function pluginDefinitionEntityFactory(injector: Injector): Promise<AXPEntity | null> {\n const crud = injector.get(AXP_ENTITY_DEFINITION_CRUD_SERVICE) as AXPEntityDefinitionCrudService | null;\n\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.pluginDefinition.name,\n title: RootConfig.entities.pluginDefinition.title,\n icon: RootConfig.entities.pluginDefinition.icon,\n formats: {\n individual: 'Plugin Definition',\n plural: 'Plugin Definitions',\n },\n plugins: [],\n relatedEntities: [],\n groups: [\n { id: 'basic-info', title: `${I18N}.sections.basic-info` },\n { id: 'options', title: `${I18N}.sections.options` },\n ],\n properties: [\n {\n name: 'name',\n title: '@general:terms.common.name',\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text, options: {} },\n },\n validations: [{ rule: 'required' }],\n options: {\n filter: { advance: { enabled: true }, inline: { enabled: true } },\n sort: { enabled: true },\n },\n },\n {\n name: 'title',\n title: '@general:terms.common.title',\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text, options: {} },\n },\n validations: [{ rule: 'required' }],\n options: {\n filter: { advance: { enabled: true }, inline: { enabled: true } },\n sort: { enabled: true },\n },\n },\n {\n name: 'description',\n title: '@general:terms.common.description',\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.largeText, options: {} },\n },\n },\n {\n name: 'icon',\n title: `${I18N}.fields.icon`,\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.iconChooser },\n },\n },\n {\n name: 'options',\n title: `${I18N}.sections.options`,\n groupId: 'options',\n schema: {\n dataType: 'array',\n interface: {\n type: AXPWidgetsList.Advanced.DataList,\n options: {\n paging: false,\n showIndex: true,\n showHeader: true,\n commands: { add: true, edit: true, remove: true },\n columns: [\n { name: 'name', title: `${I18N}.fields.option-name`, width: '160px' },\n { name: 'title', title: `${I18N}.fields.option-title`, width: '200px' },\n {\n name: 'schema',\n title: `${I18N}.fields.option-schema`,\n width: '280px',\n schema: {\n name: 'interface',\n title: 'Schema',\n interface: {\n name: AXPWidgetsList.Advanced.WidgetFieldConfigurator,\n title: 'Schema',\n options: {\n fieldName: \"{{ context.eval('name') }}\",\n fieldTitle: \"{{ context.eval('title') }}\",\n },\n },\n },\n },\n { name: 'description', title: `${I18N}.fields.option-description` },\n ],\n },\n },\n },\n },\n ],\n columns: [{ name: 'name' }, { name: 'title' }],\n commands: crud\n ? {\n create: {\n execute: async (data: Record<string, unknown>) => {\n const name = (data['name'] as string) ?? '';\n const optionsSource = data['options'];\n // const options = mapEntityFieldRowsInterfaceToDomain(\n // sanitizeDataListRowsForPersist(optionsSource),\n // ) as AXPPropertyDefinition[];\n const options = mapEntityFieldRowsInterfaceToDomain(optionsSource) as AXPPropertyDefinition[];\n const definition: AXPPluginDefinition = {\n name,\n title: (data['title'] as string) ?? name,\n description: data['description'] as string | undefined,\n icon: data['icon'] as string | undefined,\n options,\n };\n await crud.createPlugin(name, definition);\n return { id: name };\n },\n },\n update: {\n execute: async (data: Record<string, unknown>) => {\n const name = (data['id'] ?? data['name']) as string;\n const existing = await crud.getPlugin(name);\n const optionsSource = data['options'] !== undefined ? data['options'] : existing?.options;\n // const options = mapEntityFieldRowsInterfaceToDomain(\n // sanitizeDataListRowsForPersist(optionsSource),\n // ) as AXPPropertyDefinition[];\n const options = mapEntityFieldRowsInterfaceToDomain(optionsSource) as AXPPropertyDefinition[];\n const definition: AXPPluginDefinition = existing\n ? {\n ...existing,\n name: (data['name'] as string) ?? existing.name,\n title: (data['title'] as string) ?? existing.title,\n description: data['description'] as string | undefined,\n icon: data['icon'] as string | undefined,\n options,\n }\n : {\n name: (data['name'] as string) ?? name,\n title: (data['title'] as string) ?? name,\n description: data['description'] as string | undefined,\n icon: data['icon'] as string | undefined,\n options,\n };\n await crud.updatePlugin(name, definition);\n },\n },\n delete: {\n execute: async (id: string) => {\n await crud.deletePlugin(id);\n },\n },\n }\n : undefined,\n queries: crud\n ? {\n byKey: {\n execute: async (id: string) => {\n const def = await crud.getPlugin(id);\n if (!def) return null;\n return {\n ...def,\n id: def.name,\n options: mapEntityFieldRowsInterfaceForForm(def.options),\n };\n },\n type: AXPEntityQueryType.Single,\n },\n list: {\n execute: async (request?: AXPQueryRequest) => {\n const list = await crud.listPlugins();\n let items = list.map((x) => ({\n id: x.name,\n name: x.name,\n title: x.title ?? '',\n }));\n if (request?.filter) {\n items = applyFilterArray(items, [request.filter], request.filter.logic ?? 'and');\n }\n if (request?.sort?.length) {\n items = applySortArray(items, request.sort);\n }\n const total = items.length;\n const skip = request?.skip ?? 0;\n const take = request?.take ?? total;\n const pagedItems = items.slice(skip, skip + take);\n return { items: pagedItems, total };\n },\n type: AXPEntityQueryType.List,\n },\n }\n : undefined,\n interfaces: {\n master: {\n create: {\n sections: [{ id: 'basic-info' }, { id: 'options' }],\n properties: [\n { name: 'name', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'title', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'description', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'icon', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'options', layout: { positions: { lg: { colSpan: 12 } } } },\n ],\n },\n update: {\n sections: [{ id: 'basic-info' }, { id: 'options' }],\n properties: [\n { name: 'name', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'title', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'description', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'icon', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'options', layout: { positions: { lg: { colSpan: 12 } } } },\n ],\n },\n single: {\n title: '{{title}}',\n sections: [{ id: 'basic-info' }, { id: 'options' }],\n properties: [\n { name: 'name', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'title', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'description', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'icon', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'options', layout: { positions: { lg: { colSpan: 12 } } } },\n ],\n actions: [],\n },\n list: {\n actions: [...entityMasterCrudActions()],\n views: [createAllQueryView()],\n },\n },\n },\n };\n\n return entityDef;\n}\n","import {\n AXPEntity,\n AXPEntityQueryType,\n createAllQueryView,\n} from '@acorex/platform/common';\nimport { applyFilterArray, applySortArray, type AXPQueryRequest } from '@acorex/platform/core';\nimport {\n AXP_ENTITY_DEFINITION_CRUD_SERVICE,\n entityMasterCrudActions,\n type AXPEntityDefinitionCrudService,\n} from '@acorex/platform/layout/entity';\nimport { AXPWidgetsCatalog } from '@acorex/platform/layout/widget-core';\nimport {\n AXPRelationshipCardinality,\n AXPRelationshipKind,\n type AXPRelationDefinition,\n} from '@acorex/platform/domain';\nimport { Injector } from '@angular/core';\nimport { RootConfig } from '../../const';\n\nconst I18N = '@platform-management:definitions.relations.detail';\n\nconst MODULE_ENTITY = `${RootConfig.module.name}.${RootConfig.entities.moduleDefinition.name}`;\nconst ENTITY_DEFINITION_ENTITY = `${RootConfig.module.name}.${RootConfig.entities.entityDefinition.name}`;\n\n//#region ---- Flat form keys & labels ----\n\nfunction formatEndpointLabel(aggregate: string, entity: string, key: string): string {\n return `${aggregate}.${entity}.${key}`;\n}\n\nfunction formatRelationId(def: AXPRelationDefinition): string {\n const src = def.source;\n const tgt = def.target;\n return `${formatEndpointLabel(src.aggregate, src.entity, src.key)} -> ${formatEndpointLabel(\n tgt.aggregate,\n tgt.entity,\n tgt.key,\n )}`;\n}\n\nfunction cardinalityTitle(value: AXPRelationshipCardinality): string {\n switch (value) {\n case AXPRelationshipCardinality.OneToOne:\n return `${I18N}.fields.cardinality-values.one-to-one`;\n case AXPRelationshipCardinality.OneToMany:\n return `${I18N}.fields.cardinality-values.one-to-many`;\n case AXPRelationshipCardinality.ManyToMany:\n return `${I18N}.fields.cardinality-values.many-to-many`;\n default:\n return String(value);\n }\n}\n\nfunction kindTitle(value: AXPRelationshipKind): string {\n switch (value) {\n case AXPRelationshipKind.Association:\n return `${I18N}.fields.kind-values.association`;\n case AXPRelationshipKind.Composition:\n return `${I18N}.fields.kind-values.composition`;\n case AXPRelationshipKind.Aggregation:\n return `${I18N}.fields.kind-values.aggregation`;\n default:\n return String(value);\n }\n}\n\n/**\n * Expands stored relation definition into flat form fields (and list display helpers).\n */\nfunction expandRelationToFlat(def: AXPRelationDefinition & { id?: string }): Record<string, unknown> {\n const id = def.id;\n const sourceLabel = formatEndpointLabel(def.source.aggregate, def.source.entity, def.source.key);\n const targetLabel = formatEndpointLabel(def.target.aggregate, def.target.entity, def.target.key);\n return {\n ...(id != null && id !== '' ? { id } : {}),\n source: def.source,\n target: def.target,\n type: def.type,\n kind: def.kind,\n isRequired: def.isRequired,\n sourceModule: def.source.aggregate,\n sourceEntity: def.source.entity,\n sourceKey: def.source.key,\n targetModule: def.target.aggregate,\n targetEntity: def.target.entity,\n targetKey: def.target.key,\n sourceLabel,\n targetLabel,\n typeLabel: cardinalityTitle(def.type),\n kindLabel: kindTitle(def.kind),\n };\n}\n\n/**\n * Builds domain relation from flat form payload.\n */\nfunction buildRelationFromFlat(data: Record<string, unknown>): AXPRelationDefinition {\n return {\n type: (data['type'] as AXPRelationshipCardinality) ?? AXPRelationshipCardinality.OneToMany,\n kind: (data['kind'] as AXPRelationshipKind) ?? AXPRelationshipKind.Association,\n isRequired: Boolean(data['isRequired']),\n source: {\n aggregate: String(data['sourceModule'] ?? '').trim(),\n entity: String(data['sourceEntity'] ?? '').trim(),\n key: String(data['sourceKey'] ?? '').trim(),\n },\n target: {\n aggregate: String(data['targetModule'] ?? '').trim(),\n entity: String(data['targetEntity'] ?? '').trim(),\n key: String(data['targetKey'] ?? '').trim(),\n },\n };\n}\n\n//#endregion\n\nexport async function relationDefinitionEntityFactory(\n injector: Injector\n): Promise<AXPEntity | null> {\n const crud = injector.get(AXP_ENTITY_DEFINITION_CRUD_SERVICE) as AXPEntityDefinitionCrudService | null;\n\n const entityLookupBase = {\n look: 'select' as const,\n entity: ENTITY_DEFINITION_ENTITY,\n textField: 'title',\n valueField: 'name',\n columns: ['name', 'title', 'module'],\n };\n\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.relationDefinition.name,\n title: RootConfig.entities.relationDefinition.title,\n icon: RootConfig.entities.relationDefinition.icon,\n formats: {\n individual: 'Relation Definition',\n plural: 'Relation Definitions',\n },\n plugins: [],\n groups: [\n { id: 'basic-info', title: `${I18N}.sections.basic-info` },\n { id: 'source', title: `${I18N}.sections.source` },\n { id: 'target', title: `${I18N}.sections.target` },\n ],\n properties: [\n //#region ---- Basic ----\n {\n name: 'id',\n title: '@general:terms.common.id',\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text },\n },\n validations: [{ rule: 'required' }],\n options: {\n filter: { inline: { enabled: true } },\n sort: { enabled: true },\n },\n },\n {\n name: 'type',\n title: `${I18N}.fields.type`,\n groupId: 'basic-info',\n schema: {\n dataType: 'number',\n interface: {\n type: AXPWidgetsCatalog.select,\n options: {\n valueField: 'value',\n textField: 'title',\n dataSource: [\n { value: AXPRelationshipCardinality.OneToOne, title: `${I18N}.fields.cardinality-values.one-to-one` },\n { value: AXPRelationshipCardinality.OneToMany, title: `${I18N}.fields.cardinality-values.one-to-many` },\n {\n value: AXPRelationshipCardinality.ManyToMany,\n title: `${I18N}.fields.cardinality-values.many-to-many`,\n },\n ],\n },\n },\n },\n validations: [{ rule: 'required' }],\n options: { filter: { inline: { enabled: true } }, sort: { enabled: true } },\n },\n {\n name: 'kind',\n title: `${I18N}.fields.kind`,\n groupId: 'basic-info',\n schema: {\n dataType: 'number',\n interface: {\n type: AXPWidgetsCatalog.select,\n options: {\n valueField: 'value',\n textField: 'title',\n dataSource: [\n { value: AXPRelationshipKind.Association, title: `${I18N}.fields.kind-values.association` },\n { value: AXPRelationshipKind.Composition, title: `${I18N}.fields.kind-values.composition` },\n { value: AXPRelationshipKind.Aggregation, title: `${I18N}.fields.kind-values.aggregation` },\n ],\n },\n },\n },\n validations: [{ rule: 'required' }],\n options: { filter: { inline: { enabled: true } }, sort: { enabled: true } },\n },\n {\n name: 'isRequired',\n title: `${I18N}.fields.is-required`,\n groupId: 'basic-info',\n schema: {\n dataType: 'boolean',\n interface: { type: AXPWidgetsCatalog.toggle },\n },\n },\n //#endregion\n //#region ---- Source ----\n {\n name: 'sourceModule',\n title: `${I18N}.fields.source-module`,\n groupId: 'source',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.lookup,\n options: {\n look: 'select',\n entity: MODULE_ENTITY,\n textField: 'title',\n valueField: 'id',\n columns: ['title', 'name'],\n },\n },\n },\n validations: [{ rule: 'required' }],\n options: { filter: { inline: { enabled: true } }, sort: { enabled: true } },\n },\n {\n name: 'sourceEntity',\n title: `${I18N}.fields.source-entity`,\n groupId: 'source',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.lookup,\n options: {\n ...entityLookupBase,\n filter: {\n logic: 'and',\n filters: [{ field: 'module', operator: { type: 'equal' }, value: '{{ context.eval(\"sourceModule\") }}' }],\n },\n },\n },\n },\n validations: [{ rule: 'required' }],\n options: { filter: { inline: { enabled: true } }, sort: { enabled: true } },\n },\n {\n name: 'sourceKey',\n title: `${I18N}.fields.source-key`,\n groupId: 'source',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text },\n },\n validations: [{ rule: 'required' }],\n options: { filter: { inline: { enabled: true } }, sort: { enabled: true } },\n },\n //#endregion\n //#region ---- Target ----\n {\n name: 'targetModule',\n title: `${I18N}.fields.target-module`,\n groupId: 'target',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.lookup,\n options: {\n look: 'select',\n entity: MODULE_ENTITY,\n textField: 'title',\n valueField: 'id',\n columns: ['title', 'name'],\n },\n },\n },\n validations: [{ rule: 'required' }],\n options: { filter: { inline: { enabled: true } }, sort: { enabled: true } },\n },\n {\n name: 'targetEntity',\n title: `${I18N}.fields.target-entity`,\n groupId: 'target',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.lookup,\n options: {\n ...entityLookupBase,\n filter: {\n logic: 'and',\n filters: [{ field: 'module', operator: { type: 'equal' }, value: '{{ context.eval(\"targetModule\") }}' }],\n },\n },\n },\n },\n validations: [{ rule: 'required' }],\n options: { filter: { inline: { enabled: true } }, sort: { enabled: true } },\n },\n {\n name: 'targetKey',\n title: `${I18N}.fields.target-key`,\n groupId: 'target',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text },\n },\n validations: [{ rule: 'required' }],\n options: { filter: { inline: { enabled: true } }, sort: { enabled: true } },\n },\n //#endregion\n //#region ---- List display (not on forms) ----\n {\n name: 'sourceLabel',\n title: `${I18N}.fields.source-label`,\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text, options: { disabled: true } },\n },\n options: { filter: { inline: { enabled: true } }, sort: { enabled: true } },\n },\n {\n name: 'targetLabel',\n title: `${I18N}.fields.target-label`,\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text, options: { disabled: true } },\n },\n options: { filter: { inline: { enabled: true } }, sort: { enabled: true } },\n },\n {\n name: 'typeLabel',\n title: `${I18N}.fields.type`,\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text, options: { disabled: true } },\n },\n options: { filter: { inline: { enabled: true } }, sort: { enabled: true } },\n },\n {\n name: 'kindLabel',\n title: `${I18N}.fields.kind`,\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text, options: { disabled: true } },\n },\n options: { filter: { inline: { enabled: true } }, sort: { enabled: true } },\n },\n //#endregion\n ],\n columns: [\n { name: 'id' },\n { name: 'typeLabel' },\n { name: 'kindLabel' },\n { name: 'sourceLabel' },\n { name: 'targetLabel' },\n { name: 'isRequired' },\n ],\n commands: crud\n ? {\n create: {\n execute: async (data: Record<string, unknown>) => {\n const id = String(data['id'] ?? '').trim();\n const definition = buildRelationFromFlat(data);\n await crud.createRelation(id, definition);\n return { id };\n },\n },\n update: {\n execute: async (data: Record<string, unknown>) => {\n const id = String(data['id'] ?? '').trim();\n const definition = buildRelationFromFlat(data);\n await crud.updateRelation(id, definition);\n },\n },\n delete: {\n execute: async (id: string) => {\n await crud.deleteRelation(id);\n },\n },\n }\n : undefined,\n queries: crud\n ? {\n byKey: {\n execute: async (id: string) => {\n const def = await crud.getRelation(id);\n if (!def) return null;\n return expandRelationToFlat({ ...def, id });\n },\n type: AXPEntityQueryType.Single,\n },\n list: {\n execute: async (request?: AXPQueryRequest) => {\n const list = await crud.listRelations();\n let items = list.map((x) => ({\n ...expandRelationToFlat(x),\n title: formatRelationId(x),\n }));\n if (request?.filter) {\n items = applyFilterArray(items, [request.filter], request.filter.logic ?? 'and');\n }\n if (request?.sort?.length) {\n items = applySortArray(items, request.sort);\n }\n const total = items.length;\n const skip = request?.skip ?? 0;\n const take = request?.take ?? total;\n const pagedItems = items.slice(skip, skip + take);\n return { items: pagedItems, total };\n },\n type: AXPEntityQueryType.List,\n },\n }\n : undefined,\n interfaces: {\n master: {\n create: {\n sections: [{ id: 'basic-info' }, { id: 'source' }, { id: 'target' }],\n properties: [\n { name: 'id', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'type', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'kind', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'isRequired', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'sourceModule', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'sourceEntity', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'sourceKey', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'targetModule', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'targetEntity', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'targetKey', layout: { positions: { lg: { colSpan: 4 } } } },\n ],\n },\n update: {\n sections: [{ id: 'basic-info' }, { id: 'source' }, { id: 'target' }],\n properties: [\n { name: 'id', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'type', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'kind', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'isRequired', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'sourceModule', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'sourceEntity', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'sourceKey', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'targetModule', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'targetEntity', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'targetKey', layout: { positions: { lg: { colSpan: 4 } } } },\n ],\n },\n single: {\n title: '{{id}}',\n sections: [{ id: 'basic-info' }, { id: 'source' }, { id: 'target' }],\n properties: [\n { name: 'id', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'type', layout: { positions: { lg: { colSpan: 2 } } } },\n { name: 'kind', layout: { positions: { lg: { colSpan: 2 } } } },\n { name: 'isRequired', layout: { positions: { lg: { colSpan: 2 } } } },\n { name: 'sourceModule', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'sourceEntity', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'sourceKey', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'targetModule', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'targetEntity', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'targetKey', layout: { positions: { lg: { colSpan: 4 } } } },\n ],\n actions: [...entityMasterCrudActions()],\n },\n list: {\n actions: [...entityMasterCrudActions()],\n views: [createAllQueryView()],\n },\n },\n },\n };\n\n return entityDef;\n}\n","import { AXPEntity, AXPEntityAction, AXPEntityCommandScope, createAllQueryView } from '@acorex/platform/common';\nimport { AXPWidgetsCatalog } from '@acorex/platform/layout/widget-core';\nimport { entityMasterCrudActions, entityMasterRecordActions } from '@acorex/platform/layout/entity';\nimport { Injector } from '@angular/core';\nimport { RootConfig } from '../../const';\nimport { AXPWidgetsList } from '@acorex/modules/common';\n\nexport async function tokenEntityFactory(injector: Injector): Promise<AXPEntity | null> {\n const i18n = RootConfig.config.i18n;\n\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.token.name,\n title: RootConfig.entities.token.title,\n icon: RootConfig.entities.token.icon,\n formats: {\n individual: 'Token',\n plural: 'Tokens',\n },\n plugins: [\n {\n name: 'unique-fields',\n options: {\n fields: 'name',\n scope: 'global',\n },\n },\n {\n name: 'category',\n options: {\n appearance: { icon: true, color: true },\n },\n },\n { name: 'history' },\n { name: 'compare' },\n ],\n relatedEntities: [],\n groups: [\n {\n id: 'basic-info',\n title: `@${i18n}:tokens.entities.token.groups.basic-info`,\n },\n {\n id: 'value',\n title: `@${i18n}:tokens.entities.token.groups.value`,\n },\n ],\n properties: [\n {\n name: 'name',\n title: '@general:terms.common.name',\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n options: {\n filter: {\n inline: {\n enabled: true,\n },\n },\n sort: {\n enabled: true,\n },\n },\n },\n {\n name: 'title',\n title: '@general:terms.common.title',\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n options: {\n filter: {\n inline: {\n enabled: true,\n },\n },\n sort: {\n enabled: true,\n },\n },\n },\n {\n name: 'description',\n title: '@general:terms.common.description',\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.largeText,\n },\n },\n options: {\n filter: {\n advance: {\n enabled: true,\n },\n },\n },\n },\n {\n name: 'kind',\n title: `@${i18n}:tokens.entities.token.fields.kind.title`,\n groupId: 'value',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.select,\n options: {\n valueField: 'value',\n textField: 'title',\n dataSource: [\n { title: 'Static', value: 'Static' },\n { title: 'Context', value: 'Context' },\n { title: 'Event', value: 'Event' },\n { title: 'Computed', value: 'Computed' },\n { title: 'Secret', value: 'Secret' },\n ],\n direction: 'horizontal',\n multiple: false,\n },\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n options: {\n filter: {\n advance: {\n enabled: true,\n },\n },\n sort: {\n enabled: true,\n },\n },\n },\n {\n name: 'dataType',\n title: `@${i18n}:tokens.entities.token.fields.data-type.title`,\n groupId: 'value',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.select,\n options: {\n valueField: 'value',\n textField: 'title',\n dataSource: [\n { title: 'String', value: 'String' },\n { title: 'Integer', value: 'Integer' },\n { title: 'Boolean', value: 'Boolean' },\n { title: 'Decimal', value: 'Decimal' },\n { title: 'DateTime', value: 'DateTime' },\n { title: 'Json', value: 'Json' },\n ],\n direction: 'horizontal',\n multiple: false,\n },\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n options: {\n filter: {\n advance: {\n enabled: true,\n },\n },\n sort: {\n enabled: true,\n },\n },\n },\n {\n name: 'format',\n title: `@${i18n}:tokens.entities.token.fields.format.title`,\n groupId: 'value',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.select,\n options: {\n valueField: 'value',\n textField: 'title',\n dataSource: [\n { title: 'None', value: 'None' },\n { title: 'Email', value: 'Email' },\n { title: 'Url', value: 'Url' },\n { title: 'Phone', value: 'Phone' },\n { title: 'Currency', value: 'Currency' },\n { title: 'Percent', value: 'Percent' },\n ],\n direction: 'horizontal',\n multiple: false,\n },\n },\n },\n options: {\n filter: {\n advance: {\n enabled: true,\n },\n },\n },\n },\n {\n name: 'maskPattern',\n title: `@${i18n}:tokens.entities.token.fields.mask-pattern.title`,\n groupId: 'value',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.select,\n options: {\n valueField: 'value',\n textField: 'title',\n dataSource: [\n { title: 'None', value: 'None' },\n { title: 'Partial', value: 'Partial' },\n { title: 'Full', value: 'Full' },\n ],\n direction: 'horizontal',\n multiple: false,\n },\n },\n },\n options: {\n filter: {\n advance: {\n enabled: true,\n },\n },\n },\n },\n {\n name: 'expression',\n title: `@${i18n}:tokens.entities.token.fields.expression.title`,\n groupId: 'value',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsList.Advanced.CodeEditor,\n },\n },\n options: {\n filter: {\n advance: {\n enabled: true,\n },\n },\n },\n },\n {\n name: 'sampleValue',\n title: `@${i18n}:tokens.entities.token.fields.sample-value.title`,\n groupId: 'value',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n options: {\n placeholder: `@${i18n}:tokens.entities.token.fields.sample-value.placeholder`,\n },\n },\n },\n options: {\n filter: {\n advance: {\n enabled: true,\n },\n },\n },\n },\n {\n name: 'isSensitive',\n title: `@${i18n}:tokens.entities.token.fields.is-sensitive.title`,\n groupId: 'value',\n schema: {\n dataType: 'boolean',\n interface: {\n type: AXPWidgetsCatalog.toggle,\n },\n },\n options: {\n filter: {\n advance: {\n enabled: true,\n },\n },\n },\n },\n ],\n columns: [\n { name: 'name' },\n { name: 'title' },\n { name: 'kind' },\n { name: 'dataType' },\n { name: 'format' },\n { name: 'maskPattern' },\n { name: 'expression' },\n { name: 'sampleValue' },\n ],\n\n interfaces: {\n master: {\n create: {\n sections: [\n {\n id: 'basic-info',\n },\n {\n id: 'value',\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n },\n },\n },\n },\n {\n name: 'description',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n name: 'kind',\n layout: {\n positions: {\n lg: {\n colSpan: 3,\n },\n },\n },\n },\n {\n name: 'dataType',\n layout: {\n positions: {\n lg: {\n colSpan: 3,\n },\n },\n },\n },\n {\n name: 'format',\n layout: {\n positions: {\n lg: {\n colSpan: 3,\n },\n },\n },\n },\n {\n name: 'maskPattern',\n layout: {\n positions: {\n lg: {\n colSpan: 3,\n },\n },\n },\n },\n {\n name: 'expression',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n name: 'sampleValue',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n name: 'isSensitive',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n },\n },\n },\n },\n ],\n },\n update: {\n sections: [\n {\n id: 'basic-info',\n },\n {\n id: 'value',\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n },\n },\n },\n },\n {\n name: 'description',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n name: 'kind',\n layout: {\n positions: {\n lg: {\n colSpan: 3,\n },\n },\n },\n },\n {\n name: 'dataType',\n layout: {\n positions: {\n lg: {\n colSpan: 3,\n },\n },\n },\n },\n {\n name: 'format',\n layout: {\n positions: {\n lg: {\n colSpan: 3,\n },\n },\n },\n },\n {\n name: 'maskPattern',\n layout: {\n positions: {\n lg: {\n colSpan: 3,\n },\n },\n },\n },\n {\n name: 'expression',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n name: 'sampleValue',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n name: 'isSensitive',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n },\n },\n },\n },\n ],\n },\n single: {\n title: '{{title}}',\n sections: [\n {\n id: 'basic-info',\n },\n {\n id: 'value',\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n },\n },\n },\n },\n {\n name: 'description',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n name: 'kind',\n layout: {\n positions: {\n lg: {\n colSpan: 3,\n },\n },\n },\n },\n {\n name: 'dataType',\n layout: {\n positions: {\n lg: {\n colSpan: 3,\n },\n },\n },\n },\n {\n name: 'format',\n layout: {\n positions: {\n lg: {\n colSpan: 3,\n },\n },\n },\n },\n {\n name: 'maskPattern',\n layout: {\n positions: {\n lg: {\n colSpan: 3,\n },\n },\n },\n },\n {\n name: 'expression',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n name: 'sampleValue',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n name: 'isSensitive',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n },\n },\n },\n },\n ],\n actions: [\n ...entityMasterRecordActions(),\n {\n title: `@${i18n}:tokens.entities.token.actions.execute.title`,\n command: {\n name: `${RootConfig.module.name}.${RootConfig.entities.token.name}:Execute`,\n options: {\n tokenName: '{{ context.eval(\"name\") }}',\n tokenTitle: '{{ context.eval(\"title\") }}',\n },\n },\n priority: 'primary',\n type: 'action',\n icon: 'fa-light fa-play',\n scope: AXPEntityCommandScope.Individual,\n } as AXPEntityAction,\n ],\n },\n list: {\n actions: [\n ...entityMasterCrudActions(),\n {\n title: `@${i18n}:tokens.entities.token.actions.execute.title`,\n command: {\n name: `${RootConfig.module.name}.${RootConfig.entities.token.name}:Execute`,\n options: {\n tokenName: '{{ context.eval(\"name\") }}',\n tokenTitle: '{{ context.eval(\"title\") }}',\n },\n },\n priority: 'primary',\n type: 'action',\n icon: 'fa-light fa-play',\n scope: AXPEntityCommandScope.Individual,\n } as AXPEntityAction,\n ],\n views: [createAllQueryView()],\n },\n },\n },\n };\n\n return entityDef;\n}\n","import { AXPWidgetsList } from '@acorex/modules/common';\nimport { AXPEntity, AXPEntityQueryType, createAllQueryView } from '@acorex/platform/common';\nimport { applyFilterArray, applySortArray, type AXPQueryRequest } from '@acorex/platform/core';\nimport { AXPValidationRuleDefinition, AXPValidationRunAt, type AXPPropertyDefinition } from '@acorex/platform/domain';\nimport {\n AXP_ENTITY_DEFINITION_CRUD_SERVICE,\n entityMasterCrudActions,\n type AXPEntityDefinitionCrudService,\n} from '@acorex/platform/layout/entity';\nimport { AXPWidgetsCatalog } from '@acorex/platform/layout/widget-core';\nimport { Injector } from '@angular/core';\nimport { RootConfig } from '../../const';\nimport { mapEntityFieldRowsInterfaceForForm, mapEntityFieldRowsInterfaceToDomain } from '../schema-interface-field-map';\n\nconst I18N = '@platform-management:definitions.validations.detail';\n\nexport async function validationDefinitionEntityFactory(injector: Injector): Promise<AXPEntity | null> {\n const crud = injector.get(AXP_ENTITY_DEFINITION_CRUD_SERVICE) as AXPEntityDefinitionCrudService | null;\n\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.validationDefinition.name,\n title: RootConfig.entities.validationDefinition.title,\n icon: RootConfig.entities.validationDefinition.icon,\n formats: {\n individual: 'Validation Rule Definition',\n plural: 'Validation Rule Definitions',\n },\n plugins: [],\n relatedEntities: [],\n groups: [\n { id: 'basic-info', title: `${I18N}.sections.basic-info` },\n { id: 'option-definitions', title: `${I18N}.pages.option-definitions` },\n ],\n properties: [\n {\n name: 'rule',\n title: '@general:terms.common.rule',\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text, options: {} },\n },\n validations: [{ rule: 'required' }],\n options: {\n filter: { advance: { enabled: true }, inline: { enabled: true } },\n sort: { enabled: true },\n },\n },\n {\n name: 'title',\n title: '@general:terms.common.title',\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text, options: {} },\n },\n validations: [{ rule: 'required' }],\n options: {\n filter: { advance: { enabled: true }, inline: { enabled: true } },\n sort: { enabled: true },\n },\n },\n {\n name: 'description',\n title: '@general:terms.common.description',\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.largeText, options: {} },\n },\n },\n {\n name: 'runAt',\n title: `${I18N}.fields.run-at`,\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.select,\n options: {\n valueField: 'value',\n textField: 'title',\n dataSource: [\n { value: 'client', title: `${I18N}.fields.run-at-values.client` },\n { value: 'server', title: `${I18N}.fields.run-at-values.server` },\n { value: 'both', title: `${I18N}.fields.run-at-values.both` },\n ],\n },\n },\n },\n options: {\n filter: { advance: { enabled: true }, inline: { enabled: true } },\n sort: { enabled: true },\n },\n },\n {\n name: 'options',\n title: `${I18N}.pages.option-definitions`,\n groupId: 'option-definitions',\n schema: {\n dataType: 'array',\n interface: {\n type: AXPWidgetsList.Advanced.DataList,\n options: {\n paging: false,\n showIndex: true,\n showHeader: true,\n columns: [\n { name: 'name', title: `${I18N}.fields.option-name`, width: '160px' },\n { name: 'title', title: `${I18N}.fields.option-title`, width: '200px' },\n {\n name: 'schema',\n title: `${I18N}.fields.option-schema`,\n width: '280px',\n schema: {\n name: 'interface',\n title: 'Schema',\n interface: {\n name: AXPWidgetsList.Advanced.WidgetFieldConfigurator,\n title: 'Schema',\n options: {\n fieldName: \"{{ context.eval('name') }}\",\n fieldTitle: \"{{ context.eval('title') }}\",\n },\n },\n },\n },\n { name: 'description', title: `${I18N}.fields.option-description` },\n ],\n },\n },\n },\n },\n ],\n columns: [{ name: 'rule' }, { name: 'title' }, { name: 'runAt' }],\n commands: crud\n ? {\n create: {\n execute: async (data: Record<string, unknown>) => {\n const rule = (data['rule'] as string) ?? '';\n // const options = mapEntityFieldRowsInterfaceToDomain(sanitizeDataListRowsForPersist(data['options'] ?? []),) as AXPPropertyDefinition[];\n const options = mapEntityFieldRowsInterfaceToDomain(data['options'] ?? []) as AXPPropertyDefinition[];\n const definition: AXPValidationRuleDefinition = {\n rule,\n title: (data['title'] as string) ?? rule,\n description: data['description'] as string | undefined,\n runAt: (data['runAt'] as AXPValidationRunAt) ?? 'client',\n ...(options.length > 0 ? { options } : {}),\n };\n await crud.createValidation(rule, definition);\n return { id: rule };\n },\n },\n update: {\n execute: async (data: Record<string, unknown>) => {\n const ruleKey = (data['id'] ?? data['rule']) as string;\n const existing = await crud.getValidation(ruleKey);\n const optionsSource = data['options'] !== undefined ? data['options'] : existing?.options;\n // const options = mapEntityFieldRowsInterfaceToDomain(\n // sanitizeDataListRowsForPersist(optionsSource),\n // ) as AXPPropertyDefinition[];\n const options = mapEntityFieldRowsInterfaceToDomain(optionsSource) as AXPPropertyDefinition[];\n const definition: AXPValidationRuleDefinition = existing\n ? {\n ...existing,\n rule: (data['rule'] as string) ?? existing.rule,\n title: (data['title'] as string) ?? existing.title,\n description: (data['description'] as string | undefined) ?? existing.description,\n runAt: (data['runAt'] as AXPValidationRunAt) ?? existing.runAt ?? 'client',\n options,\n }\n : {\n rule: (data['rule'] as string) ?? ruleKey,\n title: (data['title'] as string) ?? ruleKey,\n description: data['description'] as string | undefined,\n runAt: (data['runAt'] as AXPValidationRunAt) ?? 'client',\n options,\n };\n await crud.updateValidation(ruleKey, definition);\n },\n },\n delete: {\n execute: async (id: string) => {\n await crud.deleteValidation(id);\n },\n },\n }\n : undefined,\n queries: crud\n ? {\n byKey: {\n execute: async (id: string) => {\n const def = await crud.getValidation(id);\n if (!def) return null;\n return {\n ...def,\n id: def.rule,\n options: mapEntityFieldRowsInterfaceForForm(def.options ?? []),\n };\n },\n type: AXPEntityQueryType.Single,\n },\n list: {\n execute: async (request?: AXPQueryRequest) => {\n const list = await crud.listValidations();\n let items = list.map((x) => ({\n id: x.rule,\n rule: x.rule,\n title: x.title ?? '',\n runAt: x.runAt ?? 'client',\n }));\n if (request?.filter) {\n items = applyFilterArray(items, [request.filter], request.filter.logic ?? 'and');\n }\n if (request?.sort?.length) {\n items = applySortArray(items, request.sort);\n }\n const total = items.length;\n const skip = request?.skip ?? 0;\n const take = request?.take ?? total;\n const pagedItems = items.slice(skip, skip + take);\n return { items: pagedItems, total };\n },\n type: AXPEntityQueryType.List,\n },\n }\n : undefined,\n interfaces: {\n master: {\n create: {\n sections: [{ id: 'basic-info' }, { id: 'option-definitions' }],\n properties: [\n { name: 'rule', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'title', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'runAt', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'description', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'options', layout: { positions: { lg: { colSpan: 12 } } } },\n ],\n },\n update: {\n sections: [{ id: 'basic-info' }, { id: 'option-definitions' }],\n properties: [\n { name: 'rule', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'title', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'runAt', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'description', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'options', layout: { positions: { lg: { colSpan: 12 } } } },\n ],\n },\n single: {\n title: '{{title}}',\n sections: [{ id: 'basic-info' }, { id: 'option-definitions' }],\n properties: [\n { name: 'rule', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'title', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'runAt', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'description', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'options', layout: { positions: { lg: { colSpan: 12 } } } },\n ],\n actions: [],\n },\n list: {\n actions: [...entityMasterCrudActions()],\n views: [createAllQueryView()],\n },\n },\n },\n };\n\n return entityDef;\n}\n","/** MIME type for native drag payloads carrying `AXPWorkflowActivityPaletteItem` JSON. */\nexport const AXP_WORKFLOW_PALETTE_MIME = 'application/x-axp-workflow-palette-item';\n","import type {\n AXPWorkflowActivityPaletteItem,\n AXPWorkflowArrangeAlignment,\n AXPWorkflowArrangeDiagramOptions,\n AXPWorkflowArrangeDirection,\n AXPWorkflowConnectRequest,\n AXPWorkflowConnectionPreviewStyle,\n AXPWorkflowConnector,\n AXPWorkflowConnectorRouteOptions,\n AXPWorkflowDiagramModel,\n AXPWorkflowNode,\n AXPWorkflowPoint,\n AXPWorkflowPort,\n AXPWorkflowPortSide,\n AXPWorkflowRect,\n AXPWorkflowSize,\n} from './workflow-designer.types';\n\n//#region ---- Ids ----\n\nlet idCounter = 0;\n\nexport function createWorkflowNodeId(): string {\n idCounter += 1;\n return `wf-node-${Date.now()}-${idCounter}`;\n}\n\nexport function createWorkflowConnectorId(): string {\n idCounter += 1;\n return `wf-conn-${Date.now()}-${idCounter}`;\n}\n\nexport function createWorkflowPortId(prefix: string): string {\n idCounter += 1;\n return `${prefix}-port-${idCounter}`;\n}\n\n//#endregion\n\n//#region ---- Defaults ----\n\nconst DEFAULT_SIZE: AXPWorkflowSize = { width: 180, height: 72 };\n\nconst DEFAULT_INBOUND: Omit<AXPWorkflowPort, 'id' | 'kind'>[] = [{ side: 'left', ratio: 0.5, key: 'in' }];\n\nconst DEFAULT_OUTBOUND: Omit<AXPWorkflowPort, 'id' | 'kind'>[] = [{ side: 'right', ratio: 0.5, key: 'out' }];\n\nexport function cloneDiagram(model: AXPWorkflowDiagramModel): AXPWorkflowDiagramModel {\n return {\n nodes: model.nodes.map((n) => ({\n ...n,\n position: { ...n.position },\n size: { ...n.size },\n inboundPorts: n.inboundPorts.map((p) => ({\n ...p,\n data: p.data ? { ...p.data } : undefined,\n })),\n outboundPorts: n.outboundPorts.map((p) => ({\n ...p,\n data: p.data ? { ...p.data } : undefined,\n })),\n data: n.data ? { ...n.data } : undefined,\n })),\n connectors: model.connectors.map((c) => ({\n ...c,\n data: c.data ? { ...c.data } : undefined,\n })),\n data: model.data ? { ...model.data } : undefined,\n };\n}\n\nexport function createPortsFromPalette(\n nodeId: string,\n item: AXPWorkflowActivityPaletteItem,\n): { inbound: AXPWorkflowPort[]; outbound: AXPWorkflowPort[] } {\n const inboundSrc = item.inboundPorts !== undefined ? item.inboundPorts : DEFAULT_INBOUND;\n const outboundSrc = item.outboundPorts !== undefined ? item.outboundPorts : DEFAULT_OUTBOUND;\n const inbound: AXPWorkflowPort[] = inboundSrc.map((p) => ({\n ...p,\n id: createWorkflowPortId(`${nodeId}-in`),\n kind: 'inbound' as const,\n data: p.data ? { ...p.data } : undefined,\n }));\n const outbound: AXPWorkflowPort[] = outboundSrc.map((p) => ({\n ...p,\n id: createWorkflowPortId(`${nodeId}-out`),\n kind: 'outbound' as const,\n data: p.data ? { ...p.data } : undefined,\n }));\n return { inbound, outbound };\n}\n\nexport function createNodeFromPaletteItem(\n item: AXPWorkflowActivityPaletteItem,\n position: AXPWorkflowPoint,\n): AXPWorkflowNode {\n const id = createWorkflowNodeId();\n const { inbound, outbound } = createPortsFromPalette(id, item);\n const shape = item.shape ?? 'rounded-rectangle';\n const size = item.size ? { ...item.size } : { ...DEFAULT_SIZE };\n if (shape === 'circle') {\n const d = Math.min(size.width, size.height);\n size.width = d;\n size.height = d;\n }\n return {\n id,\n type: item.type,\n title: item.title,\n icon: item.icon,\n shape,\n position: { ...position },\n size: { ...size },\n inboundPorts: inbound,\n outboundPorts: outbound,\n data: item.data ? { ...item.data } : undefined,\n lockAspectRatio: item.lockAspectRatio ?? shape === 'circle',\n snapToGrid: item.snapToGrid,\n color: item.color,\n };\n}\n\n/**\n * Parses drag `dataTransfer` JSON into a partial palette item (requires `type`).\n * Merge with catalog (`paletteItems`) to obtain `title` and defaults.\n */\nexport function parsePaletteItemDragPayload(\n raw: string | undefined,\n): (Partial<AXPWorkflowActivityPaletteItem> & { type: string }) | null {\n if (!raw) return null;\n try {\n const o = JSON.parse(raw) as Partial<AXPWorkflowActivityPaletteItem>;\n if (typeof o.type !== 'string') return null;\n return o as Partial<AXPWorkflowActivityPaletteItem> & { type: string };\n } catch {\n return null;\n }\n}\n\n//#endregion\n\n//#region ---- Snap ----\n\nexport function snapScalar(value: number, grid: number): number {\n if (grid <= 0) return value;\n return Math.round(value / grid) * grid;\n}\n\nexport function snapPoint(point: AXPWorkflowPoint, grid: number): AXPWorkflowPoint {\n return { x: snapScalar(point.x, grid), y: snapScalar(point.y, grid) };\n}\n\n//#endregion\n\n//#region ---- Port anchor (node-local, top-left origin) ----\n\n/**\n * Inbound/outbound anchor on an axis-aligned ellipse inscribed in `w`×`h` (centered),\n * so ports sit on the true perimeter for circle/ellipse nodes.\n */\nfunction portAnchorOnEllipsePerimeter(\n w: number,\n h: number,\n side: AXPWorkflowPortSide,\n ratio: number,\n): AXPWorkflowPoint {\n const r = Math.min(0.999, Math.max(0.001, ratio));\n const cx = w * 0.5;\n const cy = h * 0.5;\n const rx = w * 0.5;\n const ry = h * 0.5;\n let theta = 0;\n switch (side) {\n case 'right':\n theta = -Math.PI / 2 + Math.PI * r;\n break;\n case 'left':\n theta = Math.PI / 2 + Math.PI * r;\n break;\n case 'top':\n theta = Math.PI + Math.PI * r;\n break;\n case 'bottom':\n theta = Math.PI * r;\n break;\n default:\n theta = 0;\n }\n return {\n x: cx + rx * Math.cos(theta),\n y: cy + ry * Math.sin(theta),\n };\n}\n\nfunction portAnchorOnBoxEdge(w: number, h: number, side: AXPWorkflowPortSide, ratio: number): AXPWorkflowPoint {\n const r = Math.min(0.999, Math.max(0.001, ratio));\n switch (side) {\n case 'top':\n return { x: w * r, y: 0 };\n case 'bottom':\n return { x: w * r, y: h };\n case 'left':\n return { x: 0, y: h * r };\n case 'right':\n return { x: w, y: h * r };\n default:\n return { x: w * 0.5, y: h * 0.5 };\n }\n}\n\n/** Diamond perimeter of a rotated square inside the node bounds. */\nfunction portAnchorOnDiamondPerimeter(\n w: number,\n h: number,\n side: AXPWorkflowPortSide,\n ratio: number,\n): AXPWorkflowPoint {\n const r = Math.min(0.999, Math.max(0.001, ratio));\n const top: AXPWorkflowPoint = { x: w * 0.5, y: 0 };\n const right: AXPWorkflowPoint = { x: w, y: h * 0.5 };\n const bottom: AXPWorkflowPoint = { x: w * 0.5, y: h };\n const left: AXPWorkflowPoint = { x: 0, y: h * 0.5 };\n const lerp = (a: AXPWorkflowPoint, b: AXPWorkflowPoint, t: number): AXPWorkflowPoint => ({\n x: a.x + (b.x - a.x) * t,\n y: a.y + (b.y - a.y) * t,\n });\n\n switch (side) {\n case 'top':\n return r <= 0.5 ? lerp(left, top, r * 2) : lerp(top, right, (r - 0.5) * 2);\n case 'right':\n return r <= 0.5 ? lerp(top, right, r * 2) : lerp(right, bottom, (r - 0.5) * 2);\n case 'bottom':\n return r <= 0.5 ? lerp(right, bottom, r * 2) : lerp(bottom, left, (r - 0.5) * 2);\n case 'left':\n return r <= 0.5 ? lerp(bottom, left, r * 2) : lerp(left, top, (r - 0.5) * 2);\n default:\n return { x: w * 0.5, y: h * 0.5 };\n }\n}\n\nexport function portAnchorOnNode(node: AXPWorkflowNode, port: AXPWorkflowPort): AXPWorkflowPoint {\n const { width: w, height: h } = node.size;\n const r = Math.min(0.999, Math.max(0.001, port.ratio));\n if (node.shape === 'circle' || node.shape === 'ellipse') {\n return portAnchorOnEllipsePerimeter(w, h, port.side, r);\n }\n if (node.shape === 'diamond') {\n return portAnchorOnDiamondPerimeter(w, h, port.side, r);\n }\n return portAnchorOnBoxEdge(w, h, port.side, r);\n}\n\nexport function portCanvasPosition(node: AXPWorkflowNode, port: AXPWorkflowPort): AXPWorkflowPoint {\n const local = portAnchorOnNode(node, port);\n return { x: node.position.x + local.x, y: node.position.y + local.y };\n}\n\n//#endregion\n\n//#region ---- Connector path: obstacle-aware orthogonal router ----\n\ninterface InflatedRect {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\nfunction inflateRect(r: AXPWorkflowRect, padding: number): InflatedRect {\n return {\n x: r.position.x - padding,\n y: r.position.y - padding,\n width: r.size.width + padding * 2,\n height: r.size.height + padding * 2,\n };\n}\n\nfunction pointInsideRect(p: AXPWorkflowPoint, r: InflatedRect): boolean {\n return p.x > r.x && p.x < r.x + r.width && p.y > r.y && p.y < r.y + r.height;\n}\n\n/**\n * Returns true if an axis-aligned segment crosses the interior of any obstacle.\n * Endpoints that only touch the rectangle's edge are not considered a crossing.\n */\nfunction segmentCrossesObstacles(a: AXPWorkflowPoint, b: AXPWorkflowPoint, obstacles: InflatedRect[]): boolean {\n const minX = Math.min(a.x, b.x);\n const maxX = Math.max(a.x, b.x);\n const minY = Math.min(a.y, b.y);\n const maxY = Math.max(a.y, b.y);\n\n const tolerance = 0.5;\n\n for (const r of obstacles) {\n const right = r.x + r.width;\n const bottom = r.y + r.height;\n\n if (maxX <= r.x + tolerance || minX >= right - tolerance) continue;\n if (maxY <= r.y + tolerance || minY >= bottom - tolerance) continue;\n\n if (Math.abs(a.y - b.y) < 0.0001) {\n if (a.y > r.y + tolerance && a.y < bottom - tolerance) return true;\n } else if (Math.abs(a.x - b.x) < 0.0001) {\n if (a.x > r.x + tolerance && a.x < right - tolerance) return true;\n } else {\n return true;\n }\n }\n return false;\n}\n\nfunction stepOutward(p: AXPWorkflowPoint, side: AXPWorkflowPortSide, length: number): AXPWorkflowPoint {\n switch (side) {\n case 'left':\n return { x: p.x - length, y: p.y };\n case 'right':\n return { x: p.x + length, y: p.y };\n case 'top':\n return { x: p.x, y: p.y - length };\n case 'bottom':\n return { x: p.x, y: p.y + length };\n }\n}\n\nfunction oppositeSide(side: AXPWorkflowPortSide): AXPWorkflowPortSide {\n switch (side) {\n case 'left':\n return 'right';\n case 'right':\n return 'left';\n case 'top':\n return 'bottom';\n case 'bottom':\n return 'top';\n }\n}\n\nfunction sideAxis(side: AXPWorkflowPortSide): 'h' | 'v' {\n return side === 'left' || side === 'right' ? 'h' : 'v';\n}\n\n/**\n * Removes consecutive duplicate points and collapses collinear intermediate waypoints.\n */\nfunction simplifyWaypoints(points: AXPWorkflowPoint[]): AXPWorkflowPoint[] {\n const deduped: AXPWorkflowPoint[] = [];\n for (const p of points) {\n const last = deduped[deduped.length - 1];\n if (last && Math.abs(last.x - p.x) < 0.001 && Math.abs(last.y - p.y) < 0.001) continue;\n deduped.push(p);\n }\n if (deduped.length <= 2) return deduped;\n\n const out: AXPWorkflowPoint[] = [deduped[0]];\n for (let i = 1; i < deduped.length - 1; i++) {\n const prev = deduped[i - 1];\n const curr = deduped[i];\n const next = deduped[i + 1];\n const collinearH = Math.abs(prev.y - curr.y) < 0.001 && Math.abs(curr.y - next.y) < 0.001;\n const collinearV = Math.abs(prev.x - curr.x) < 0.001 && Math.abs(curr.x - next.x) < 0.001;\n if (!collinearH && !collinearV) out.push(curr);\n }\n out.push(deduped[deduped.length - 1]);\n return out;\n}\n\n/**\n * Generates candidate waypoint sets that connect `a` to `b` while respecting the entry/exit axes.\n * Strategies are ordered from \"most natural\" to \"more elaborate detour\".\n */\nfunction generateRouteStrategies(\n a: AXPWorkflowPoint,\n aAxis: 'h' | 'v',\n b: AXPWorkflowPoint,\n bAxis: 'h' | 'v',\n obstacles: InflatedRect[],\n): AXPWorkflowPoint[][] {\n const strategies: AXPWorkflowPoint[][] = [];\n const midX = (a.x + b.x) / 2;\n const midY = (a.y + b.y) / 2;\n\n const obstacleXCuts: number[] = [];\n const obstacleYCuts: number[] = [];\n for (const o of obstacles) {\n obstacleXCuts.push(o.x - 6);\n obstacleXCuts.push(o.x + o.width + 6);\n obstacleYCuts.push(o.y - 6);\n obstacleYCuts.push(o.y + o.height + 6);\n }\n obstacleXCuts.sort((x, y) => Math.abs(x - midX) - Math.abs(y - midX));\n obstacleYCuts.sort((x, y) => Math.abs(x - midY) - Math.abs(y - midY));\n\n if (aAxis === 'h' && bAxis === 'h') {\n strategies.push([\n { x: midX, y: a.y },\n { x: midX, y: b.y },\n ]);\n for (const mx of obstacleXCuts) {\n strategies.push([\n { x: mx, y: a.y },\n { x: mx, y: b.y },\n ]);\n }\n for (const my of obstacleYCuts) {\n strategies.push([\n { x: a.x, y: my },\n { x: b.x, y: my },\n ]);\n }\n } else if (aAxis === 'v' && bAxis === 'v') {\n strategies.push([\n { x: a.x, y: midY },\n { x: b.x, y: midY },\n ]);\n for (const my of obstacleYCuts) {\n strategies.push([\n { x: a.x, y: my },\n { x: b.x, y: my },\n ]);\n }\n for (const mx of obstacleXCuts) {\n strategies.push([\n { x: mx, y: a.y },\n { x: mx, y: b.y },\n ]);\n }\n } else if (aAxis === 'h' && bAxis === 'v') {\n strategies.push([{ x: b.x, y: a.y }]);\n for (const my of obstacleYCuts) {\n strategies.push([\n { x: a.x, y: my },\n { x: b.x, y: my },\n ]);\n }\n } else {\n strategies.push([{ x: a.x, y: b.y }]);\n for (const mx of obstacleXCuts) {\n strategies.push([\n { x: mx, y: a.y },\n { x: mx, y: b.y },\n ]);\n }\n }\n\n return strategies;\n}\n\n/**\n * Picks the first strategy whose segments do not cross any obstacle.\n * Falls back to the most natural strategy when every candidate is blocked\n * (best-effort: keeps the connector readable even in tight layouts).\n */\nfunction pickCleanStrategy(\n a: AXPWorkflowPoint,\n b: AXPWorkflowPoint,\n strategies: AXPWorkflowPoint[][],\n obstacles: InflatedRect[],\n): AXPWorkflowPoint[] {\n for (const wp of strategies) {\n const full = [a, ...wp, b];\n let clean = true;\n for (let i = 0; i < full.length - 1; i++) {\n if (segmentCrossesObstacles(full[i], full[i + 1], obstacles)) {\n clean = false;\n break;\n }\n }\n if (clean) return wp;\n }\n return strategies[0] ?? [];\n}\n\n/**\n * Routes an obstacle-aware orthogonal path between two free-space points.\n * The returned array includes the start (`from`), stub-outs from each port,\n * intermediate waypoints, and the end (`to`).\n *\n * Obstacles whose inflated rect already contains a stub point are dropped so\n * that source/target nodes can still emit/receive their connector without the\n * router fighting itself — but the middle of the path still routes around them.\n */\nexport function routeOrthogonalConnector(\n from: AXPWorkflowPoint,\n sourceSide: AXPWorkflowPortSide,\n to: AXPWorkflowPoint,\n targetSide: AXPWorkflowPortSide,\n obstacles: AXPWorkflowRect[] = [],\n options: { stub?: number; obstaclePadding?: number } = {},\n): AXPWorkflowPoint[] {\n const stub = Math.max(0, options.stub ?? 18);\n const padding = Math.max(0, options.obstaclePadding ?? 10);\n\n const aStub = stepOutward(from, sourceSide, stub);\n const bStub = stepOutward(to, targetSide, stub);\n\n const inflated = obstacles.map((o) => inflateRect(o, padding));\n const safe = inflated.filter((o) => !pointInsideRect(aStub, o) && !pointInsideRect(bStub, o));\n\n const strategies = generateRouteStrategies(aStub, sideAxis(sourceSide), bStub, sideAxis(targetSide), safe);\n const middle = pickCleanStrategy(aStub, bStub, strategies, safe);\n\n return simplifyWaypoints([from, aStub, ...middle, bStub, to]);\n}\n\n/** Renders waypoints as straight `L` segments. */\nfunction waypointsToOrthogonalPath(points: AXPWorkflowPoint[]): string {\n if (points.length < 2) return '';\n const cmds: string[] = [`M ${points[0].x} ${points[0].y}`];\n for (let i = 1; i < points.length; i++) {\n cmds.push(`L ${points[i].x} ${points[i].y}`);\n }\n return cmds.join(' ');\n}\n\n/** Renders waypoints with rounded corners (quadratic curves) between segments. */\nfunction waypointsToRoundedPath(points: AXPWorkflowPoint[], radius: number): string {\n if (points.length < 2) return '';\n if (points.length === 2) return `M ${points[0].x} ${points[0].y} L ${points[1].x} ${points[1].y}`;\n\n const cmds: string[] = [`M ${points[0].x} ${points[0].y}`];\n for (let i = 1; i < points.length - 1; i++) {\n const prev = points[i - 1];\n const curr = points[i];\n const next = points[i + 1];\n\n const inDx = Math.sign(curr.x - prev.x);\n const inDy = Math.sign(curr.y - prev.y);\n const outDx = Math.sign(next.x - curr.x);\n const outDy = Math.sign(next.y - curr.y);\n\n const segIn = Math.hypot(curr.x - prev.x, curr.y - prev.y);\n const segOut = Math.hypot(next.x - curr.x, next.y - curr.y);\n const r = Math.max(0, Math.min(radius, segIn * 0.5, segOut * 0.5));\n\n const cornerStart = { x: curr.x - inDx * r, y: curr.y - inDy * r };\n const cornerEnd = { x: curr.x + outDx * r, y: curr.y + outDy * r };\n\n cmds.push(`L ${cornerStart.x} ${cornerStart.y}`);\n cmds.push(`Q ${curr.x} ${curr.y} ${cornerEnd.x} ${cornerEnd.y}`);\n }\n const last = points[points.length - 1];\n cmds.push(`L ${last.x} ${last.y}`);\n return cmds.join(' ');\n}\n\n/**\n * Builds the SVG `d` string for a connector. When `options.obstacles` is supplied,\n * orthogonal/rounded routes detour around the obstacle rectangles instead of\n * passing through them. The `straight` style always draws a direct line.\n */\nexport function connectorPath(\n from: AXPWorkflowPoint,\n to: AXPWorkflowPoint,\n style: AXPWorkflowConnectionPreviewStyle,\n sourceSide: AXPWorkflowPortSide,\n options: AXPWorkflowConnectorRouteOptions = {},\n): string {\n if (style === 'straight') {\n return `M ${from.x} ${from.y} L ${to.x} ${to.y}`;\n }\n\n const targetSide = options.targetSide ?? oppositeSide(sourceSide);\n const waypoints = routeOrthogonalConnector(from, sourceSide, to, targetSide, options.obstacles ?? [], {\n stub: options.stub,\n obstaclePadding: options.obstaclePadding,\n });\n\n if (style === 'orthogonal') {\n return waypointsToOrthogonalPath(waypoints);\n }\n return waypointsToRoundedPath(waypoints, options.cornerRadius ?? 14);\n}\n\n//#endregion\n\n//#region ---- Model helpers ----\n\nexport function findNode(model: AXPWorkflowDiagramModel, nodeId: string): AXPWorkflowNode | undefined {\n return model.nodes.find((n) => n.id === nodeId);\n}\n\nexport function findPort(\n node: AXPWorkflowNode,\n portId: string,\n): { port: AXPWorkflowPort; inbound: boolean } | undefined {\n const pi = node.inboundPorts.find((p) => p.id === portId);\n if (pi) return { port: pi, inbound: true };\n const po = node.outboundPorts.find((p) => p.id === portId);\n if (po) return { port: po, inbound: false };\n return undefined;\n}\n\nexport function findConnector(model: AXPWorkflowDiagramModel, id: string): AXPWorkflowConnector | undefined {\n return model.connectors.find((c) => c.id === id);\n}\n\n/**\n * Built-in rules: valid ports, not disabled, optional single inbound attachment, no duplicate edge.\n */\nexport function defaultCanConnectRequest(request: AXPWorkflowConnectRequest): boolean {\n const { model, sourceNodeId, sourcePortId, targetNodeId, targetPortId } = request;\n const sn = findNode(model, sourceNodeId);\n const tn = findNode(model, targetNodeId);\n if (!sn || !tn) return false;\n const spInfo = findPort(sn, sourcePortId);\n const tpInfo = findPort(tn, targetPortId);\n if (!spInfo || !tpInfo) return false;\n const sp = spInfo.port;\n const tp = tpInfo.port;\n if (sp.kind !== 'outbound' || tp.kind !== 'inbound') return false;\n if (sp.disabled || tp.disabled) return false;\n\n const duplicate = model.connectors.some(\n (c) =>\n c.sourceNodeId === sourceNodeId &&\n c.sourcePortId === sourcePortId &&\n c.targetNodeId === targetNodeId &&\n c.targetPortId === targetPortId,\n );\n if (duplicate) return false;\n\n if (!tp.allowMultiple) {\n const inboundTaken = model.connectors.some(\n (c) => c.targetNodeId === targetNodeId && c.targetPortId === targetPortId,\n );\n if (inboundTaken) return false;\n }\n\n return true;\n}\n\n//#endregion\n\n//#region ---- Auto layout ----\n\nconst DEFAULT_ARRANGE_MARGIN = 80;\n// Defaults leave room for inbound/outbound port labels that sit ~18px outside the\n// port anchor and may extend further as text. Larger gaps keep adjacent nodes from\n// having their port labels collide with each other or with routed connectors.\nconst DEFAULT_ARRANGE_PRIMARY_GAP = 160;\nconst DEFAULT_ARRANGE_CROSS_GAP = 110;\nconst DEFAULT_ARRANGE_COMPONENT_GAP = 220;\n\ninterface ArrangeRuntime {\n direction: AXPWorkflowArrangeDirection;\n alignment: AXPWorkflowArrangeAlignment;\n primaryGap: number;\n crossGap: number;\n componentGap: number;\n margin: number;\n grid: number;\n origin: AXPWorkflowPoint;\n reduceCrossings: boolean;\n groupDisconnected: boolean;\n}\n\n/**\n * Auto-arranges workflow nodes in a layered layout (left→right by default).\n * Honors `direction`, `alignment`, `origin`, `nodeIds`, and crossing-reduction options.\n */\nexport function arrangeWorkflowDiagram(\n model: AXPWorkflowDiagramModel,\n options: AXPWorkflowArrangeDiagramOptions = {},\n): AXPWorkflowDiagramModel {\n if (model.nodes.length === 0) {\n return model;\n }\n\n const margin = options.margin ?? DEFAULT_ARRANGE_MARGIN;\n const runtime: ArrangeRuntime = {\n direction: options.direction ?? 'horizontal',\n alignment: options.alignment ?? 'center',\n primaryGap: options.horizontalGap ?? DEFAULT_ARRANGE_PRIMARY_GAP,\n crossGap: options.verticalGap ?? DEFAULT_ARRANGE_CROSS_GAP,\n componentGap: Math.max(options.verticalGap ?? DEFAULT_ARRANGE_CROSS_GAP, DEFAULT_ARRANGE_COMPONENT_GAP),\n margin,\n grid: options.gridSize ?? 0,\n origin: options.origin ?? { x: margin, y: margin },\n reduceCrossings: options.reduceCrossings ?? true,\n groupDisconnected: options.groupDisconnected ?? true,\n };\n\n const subsetIds =\n options.nodeIds && options.nodeIds.length > 0\n ? new Set(options.nodeIds.filter((id) => model.nodes.some((n) => n.id === id)))\n : null;\n const targetNodes = subsetIds ? model.nodes.filter((n) => subsetIds.has(n.id)) : model.nodes;\n if (targetNodes.length === 0) {\n return model;\n }\n\n const targetIds = new Set(targetNodes.map((n) => n.id));\n const relevantConnectors = model.connectors.filter(\n (c) => targetIds.has(c.sourceNodeId) && targetIds.has(c.targetNodeId),\n );\n\n const components = splitComponents(targetNodes, relevantConnectors, runtime, options.startNodeId);\n\n const positionById = new Map<string, AXPWorkflowPoint>();\n let crossCursor = runtime.direction === 'horizontal' ? runtime.origin.y : runtime.origin.x;\n\n for (const component of components) {\n layoutComponent(component, positionById, runtime, crossCursor);\n crossCursor += component.crossSize + runtime.componentGap;\n }\n\n return {\n ...model,\n nodes: model.nodes.map((n) => {\n const next = positionById.get(n.id);\n return next ? { ...n, position: { ...next } } : n;\n }),\n };\n}\n\ninterface LayoutComponent {\n nodes: AXPWorkflowNode[];\n ranks: AXPWorkflowNode[][];\n crossSize: number;\n}\n\nfunction splitComponents(\n nodes: AXPWorkflowNode[],\n connectors: AXPWorkflowConnector[],\n runtime: ArrangeRuntime,\n startNodeId: string | undefined,\n): LayoutComponent[] {\n const undirected = new Map<string, Set<string>>();\n const outgoing = new Map<string, Set<string>>();\n const incomingCount = new Map<string, number>();\n for (const n of nodes) {\n undirected.set(n.id, new Set());\n outgoing.set(n.id, new Set());\n incomingCount.set(n.id, 0);\n }\n for (const c of connectors) {\n if (!undirected.has(c.sourceNodeId) || !undirected.has(c.targetNodeId)) continue;\n undirected.get(c.sourceNodeId)!.add(c.targetNodeId);\n undirected.get(c.targetNodeId)!.add(c.sourceNodeId);\n outgoing.get(c.sourceNodeId)!.add(c.targetNodeId);\n incomingCount.set(c.targetNodeId, (incomingCount.get(c.targetNodeId) ?? 0) + 1);\n }\n\n const sortedNodes = [...nodes].sort(compareNodesForLayout);\n if (startNodeId) {\n sortedNodes.sort((a, b) => {\n if (a.id === startNodeId) return -1;\n if (b.id === startNodeId) return 1;\n return 0;\n });\n }\n\n const visited = new Set<string>();\n const componentBuckets: AXPWorkflowNode[][] = [];\n\n if (runtime.groupDisconnected) {\n for (const seed of sortedNodes) {\n if (visited.has(seed.id)) continue;\n const bucket: AXPWorkflowNode[] = [];\n const queue: string[] = [seed.id];\n visited.add(seed.id);\n while (queue.length > 0) {\n const id = queue.shift()!;\n const node = nodes.find((n) => n.id === id);\n if (node) bucket.push(node);\n for (const next of undirected.get(id) ?? []) {\n if (!visited.has(next)) {\n visited.add(next);\n queue.push(next);\n }\n }\n }\n componentBuckets.push(bucket);\n }\n } else {\n componentBuckets.push([...nodes]);\n }\n\n const components: LayoutComponent[] = [];\n for (const bucket of componentBuckets) {\n const bucketIds = new Set(bucket.map((n) => n.id));\n const bucketConnectors = connectors.filter(\n (c) => bucketIds.has(c.sourceNodeId) && bucketIds.has(c.targetNodeId),\n );\n const ranks = computeRanks(bucket, outgoing, incomingCount, startNodeId);\n if (runtime.reduceCrossings) {\n reduceCrossingsInPlace(ranks, bucketConnectors, runtime.direction);\n } else {\n for (const rank of ranks) rank.sort(compareNodesForLayout);\n }\n const crossSize = estimateCrossSize(ranks, runtime);\n components.push({ nodes: bucket, ranks, crossSize });\n }\n\n return components;\n}\n\nfunction computeRanks(\n nodes: AXPWorkflowNode[],\n outgoing: Map<string, Set<string>>,\n incomingCount: Map<string, number>,\n startNodeId: string | undefined,\n): AXPWorkflowNode[][] {\n const rank = new Map<string, number>();\n const queue: string[] = [];\n\n const enqueueRoots = (ids: string[]): void => {\n for (const id of ids) {\n if (!rank.has(id)) {\n rank.set(id, 0);\n queue.push(id);\n }\n }\n };\n\n const localIds = new Set(nodes.map((n) => n.id));\n if (startNodeId && localIds.has(startNodeId)) {\n enqueueRoots([startNodeId]);\n } else {\n enqueueRoots(nodes.filter((n) => (incomingCount.get(n.id) ?? 0) === 0).map((n) => n.id));\n }\n\n // First-visit BFS handles cycles safely (shortest-distance ranking).\n const maxSteps = nodes.length * (nodes.length + 1);\n let steps = 0;\n while (queue.length > 0 && steps < maxSteps) {\n steps += 1;\n const id = queue.shift()!;\n const base = rank.get(id) ?? 0;\n for (const targetId of outgoing.get(id) ?? []) {\n if (!localIds.has(targetId) || rank.has(targetId)) continue;\n rank.set(targetId, base + 1);\n queue.push(targetId);\n }\n }\n\n let orphanRank = nodes.reduce((max, n) => Math.max(max, rank.get(n.id) ?? 0), 0) + 1;\n const unranked = nodes.filter((n) => !rank.has(n.id)).sort(compareNodesForLayout);\n for (const n of unranked) {\n rank.set(n.id, orphanRank);\n orphanRank += 1;\n }\n\n const byRank = new Map<number, AXPWorkflowNode[]>();\n for (const n of nodes) {\n const r = rank.get(n.id) ?? 0;\n const bucket = byRank.get(r) ?? [];\n bucket.push(n);\n byRank.set(r, bucket);\n }\n return [...byRank.keys()].sort((a, b) => a - b).map((r) => byRank.get(r) ?? []);\n}\n\n/**\n * Returns a 0–1 fraction along the cross axis (vertical for horizontal flow) where the port sits on the node.\n */\nfunction portCrossAxisFraction(\n node: AXPWorkflowNode,\n portId: string,\n direction: AXPWorkflowArrangeDirection,\n): number {\n const info = findPort(node, portId);\n if (!info) {\n return 0.5;\n }\n const port = info.port;\n const r = Math.min(0.999, Math.max(0.001, port.ratio));\n if (direction === 'horizontal') {\n switch (port.side) {\n case 'left':\n case 'right':\n return r;\n case 'top':\n return 0;\n case 'bottom':\n return 1;\n }\n }\n switch (port.side) {\n case 'top':\n case 'bottom':\n return r;\n case 'left':\n return 0;\n case 'right':\n return 1;\n }\n return r;\n}\n\n/**\n * Barycenter heuristic with port-aware weights: targets inherit both their predecessor's rank index\n * and the source port's cross-axis position so top/bottom (or left/right) ports map to matching targets.\n */\nfunction reduceCrossingsInPlace(\n ranks: AXPWorkflowNode[][],\n connectors: AXPWorkflowConnector[],\n direction: AXPWorkflowArrangeDirection,\n): void {\n if (ranks.length === 0) return;\n ranks[0] = [...ranks[0]].sort(compareNodesForLayout);\n\n const nodeById = new Map<string, AXPWorkflowNode>();\n for (const rank of ranks) {\n for (const node of rank) {\n nodeById.set(node.id, node);\n }\n }\n\n const indexInRank: Map<string, number>[] = ranks.map((rank) => {\n const map = new Map<string, number>();\n for (let i = 0; i < rank.length; i++) map.set(rank[i].id, i);\n return map;\n });\n\n for (let r = 1; r < ranks.length; r++) {\n const predRank = ranks[r - 1];\n const predIndex = indexInRank[r - 1];\n const incomingFromPred = new Map<string, number[]>();\n const predIds = new Set(predRank.map((n) => n.id));\n for (const c of connectors) {\n if (!predIds.has(c.sourceNodeId)) {\n continue;\n }\n const idx = predIndex.get(c.sourceNodeId);\n if (idx === undefined) {\n continue;\n }\n const sourceNode = nodeById.get(c.sourceNodeId);\n const portFraction = sourceNode ? portCrossAxisFraction(sourceNode, c.sourcePortId, direction) : 0.5;\n // Keep port ordering within the same predecessor index (fraction ∈ [0, 1)).\n const weight = idx + portFraction;\n const arr = incomingFromPred.get(c.targetNodeId) ?? [];\n arr.push(weight);\n incomingFromPred.set(c.targetNodeId, arr);\n }\n ranks[r] = [...ranks[r]].sort((a, b) => {\n const ia = incomingFromPred.get(a.id) ?? [];\n const ib = incomingFromPred.get(b.id) ?? [];\n const ba = ia.length > 0 ? ia.reduce((s, v) => s + v, 0) / ia.length : Number.POSITIVE_INFINITY;\n const bb = ib.length > 0 ? ib.reduce((s, v) => s + v, 0) / ib.length : Number.POSITIVE_INFINITY;\n if (ba !== bb) return ba - bb;\n return compareNodesForLayout(a, b);\n });\n const refreshed = new Map<string, number>();\n for (let i = 0; i < ranks[r].length; i++) refreshed.set(ranks[r][i].id, i);\n indexInRank[r] = refreshed;\n }\n}\n\nfunction estimateCrossSize(ranks: AXPWorkflowNode[][], runtime: ArrangeRuntime): number {\n let max = 0;\n for (const rank of ranks) {\n const total = rank.reduce(\n (sum, n) => sum + (runtime.direction === 'horizontal' ? n.size.height : n.size.width),\n 0,\n );\n const gaps = Math.max(0, rank.length - 1) * runtime.crossGap;\n max = Math.max(max, total + gaps);\n }\n return max;\n}\n\nfunction layoutComponent(\n component: LayoutComponent,\n positionById: Map<string, AXPWorkflowPoint>,\n runtime: ArrangeRuntime,\n crossStart: number,\n): void {\n const isHorizontal = runtime.direction === 'horizontal';\n let primaryCursor = isHorizontal ? runtime.origin.x : runtime.origin.y;\n\n for (const rank of component.ranks) {\n if (rank.length === 0) continue;\n\n const crossTotal = rank.reduce(\n (sum, n) => sum + (isHorizontal ? n.size.height : n.size.width),\n 0,\n );\n const crossGaps = (rank.length - 1) * runtime.crossGap;\n const crossLen = crossTotal + crossGaps;\n\n let cursor = crossStart;\n if (runtime.alignment === 'center') {\n cursor = crossStart + (component.crossSize - crossLen) * 0.5;\n } else if (runtime.alignment === 'end') {\n cursor = crossStart + (component.crossSize - crossLen);\n }\n\n let primaryMax = 0;\n for (const node of rank) {\n const primary = isHorizontal ? primaryCursor : cursor;\n const cross = isHorizontal ? cursor : primaryCursor;\n const raw: AXPWorkflowPoint = isHorizontal ? { x: primary, y: cross } : { x: cross, y: primary };\n const snapped = runtime.grid > 0 ? snapPoint(raw, runtime.grid) : raw;\n positionById.set(node.id, snapped);\n const advance = (isHorizontal ? node.size.height : node.size.width) + runtime.crossGap;\n cursor += advance;\n primaryMax = Math.max(primaryMax, isHorizontal ? node.size.width : node.size.height);\n }\n\n primaryCursor += primaryMax + runtime.primaryGap;\n }\n}\n\nfunction compareNodesForLayout(a: AXPWorkflowNode, b: AXPWorkflowNode): number {\n const titleA = a.title?.trim() ?? '';\n const titleB = b.title?.trim() ?? '';\n if (titleA !== titleB) {\n return titleA.localeCompare(titleB);\n }\n return a.id.localeCompare(b.id);\n}\n\n//#endregion\n","import { AXPanViewDirective } from '@acorex/cdk/pan-view';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n TemplateRef,\n ViewEncapsulation,\n afterNextRender,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { AXP_WORKFLOW_PALETTE_MIME } from './workflow-designer.const';\nimport type {\n AXPWorkflowActivityPaletteItem,\n AXPWorkflowArrangeDiagramOptions,\n AXPWorkflowCanConnectFn,\n AXPWorkflowConnectRequest,\n AXPWorkflowConnectionPreviewStyle,\n AXPWorkflowConnector,\n AXPWorkflowDesignerActivation,\n AXPWorkflowDiagramModel,\n AXPWorkflowNode,\n AXPWorkflowNodeBodyTemplateContext,\n AXPWorkflowPoint,\n AXPWorkflowPort,\n AXPWorkflowRect,\n AXPWorkflowSemanticColor,\n} from './workflow-designer.types';\nimport {\n connectorPath,\n createNodeFromPaletteItem,\n createWorkflowConnectorId,\n defaultCanConnectRequest,\n findConnector,\n findNode,\n findPort,\n parsePaletteItemDragPayload,\n portAnchorOnNode,\n portCanvasPosition,\n snapPoint,\n snapScalar,\n arrangeWorkflowDiagram,\n cloneDiagram,\n} from './workflow-designer.utils';\n\n//#region ---- Types (internal) ----\n\ninterface LinkDragState {\n sourceNodeId: string;\n sourcePortId: string;\n from: AXPWorkflowPoint;\n to: AXPWorkflowPoint;\n}\n\ninterface NodeMoveState {\n nodeIds: string[];\n start: AXPWorkflowPoint;\n origins: Record<string, AXPWorkflowPoint>;\n moved: boolean;\n}\n\ninterface ResizeState {\n nodeId: string;\n handle: 'nw' | 'ne' | 'sw' | 'se';\n startPointer: AXPWorkflowPoint;\n startPosition: AXPWorkflowPoint;\n startSize: { width: number; height: number };\n aspect: number;\n}\n\ninterface CanvasViewportState {\n minX: number;\n minY: number;\n offsetX: number;\n offsetY: number;\n width: number;\n height: number;\n}\n\n//#endregion\n\n@Component({\n selector: 'axp-workflow-designer',\n imports: [CommonModule, AXDecoratorModule, AXButtonModule, AXPanViewDirective],\n templateUrl: './axp-workflow-designer.component.html',\n styleUrl: './axp-workflow-designer.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'axp-workflow-designer-host',\n '(window:keydown)': 'onWindowKeydown($event)',\n },\n})\nexport class AXPWorkflowDesignerComponent {\n /** Unique SVG fragment id so multiple designers on one page do not clash. */\n protected readonly svgMarkerId = `axp-wf-arrow-${Math.random().toString(36).slice(2, 10)}`;\n\n //#region ---- Inputs / outputs ----\n\n readonly model = input.required<AXPWorkflowDiagramModel>();\n\n readonly modelChange = output<AXPWorkflowDiagramModel>();\n\n /** When true, the whole designer is non-interactive unless a nested entity sets its own readonly flag. */\n readonly readonly = input(false);\n\n readonly gridSize = input(20);\n\n /** Default snap when node does not override `snapToGrid`. */\n readonly snapToGrid = input(true);\n\n readonly connectionPreviewStyle = input<AXPWorkflowConnectionPreviewStyle>('orthogonal');\n readonly backgroundPattern = input<'line' | 'dots'>('dots');\n readonly zoomChange = output<number>();\n\n /** When set, replaces built-in `defaultCanConnectRequest` entirely. */\n readonly canConnect = input<AXPWorkflowCanConnectFn | null>(null);\n\n /** Used to resolve native palette drag payloads (`type`) into full defaults. */\n readonly paletteItems = input<AXPWorkflowActivityPaletteItem[]>([]);\n\n /** When false, port labels are hidden (ports remain interactive). */\n readonly showPortLabels = input(true);\n\n readonly nodeBodyTemplate = input<TemplateRef<AXPWorkflowNodeBodyTemplateContext> | null>(null);\n\n readonly designerPointerDown = output<PointerEvent>();\n readonly designerClick = output<MouseEvent>();\n readonly designerDoubleClick = output<MouseEvent>();\n\n readonly nodePointerDown = output<{ node: AXPWorkflowNode; event: PointerEvent }>();\n readonly nodeClick = output<{ node: AXPWorkflowNode; event: PointerEvent }>();\n readonly nodeDoubleClick = output<{ node: AXPWorkflowNode; event: MouseEvent }>();\n readonly nodeContextMenu = output<{ node: AXPWorkflowNode; event: MouseEvent }>();\n readonly nodeDragStart = output<{ node: AXPWorkflowNode; event: PointerEvent }>();\n readonly nodeDragEnd = output<{ node: AXPWorkflowNode; event: PointerEvent }>();\n\n readonly portPointerDown = output<{\n node: AXPWorkflowNode;\n port: AXPWorkflowPort;\n event: PointerEvent;\n }>();\n\n readonly linkDragStart = output<{\n sourceNode: AXPWorkflowNode;\n sourcePort: AXPWorkflowPort;\n event: PointerEvent;\n }>();\n readonly linkDragMove = output<{\n sourceNode: AXPWorkflowNode;\n sourcePort: AXPWorkflowPort;\n point: AXPWorkflowPoint;\n event: PointerEvent;\n }>();\n readonly linkDragEnd = output<{\n sourceNode: AXPWorkflowNode;\n sourcePort: AXPWorkflowPort;\n cancelled: boolean;\n event: Event;\n }>();\n\n readonly connectorClick = output<{ connector: AXPWorkflowConnector; event: MouseEvent }>();\n readonly connectorDoubleClick = output<{ connector: AXPWorkflowConnector; event: MouseEvent }>();\n\n readonly connectionCreated = output<{ connector: AXPWorkflowConnector; model: AXPWorkflowDiagramModel }>();\n readonly connectionRejected = output<{\n reason: string;\n request: AXPWorkflowConnectRequest;\n event: PointerEvent;\n }>();\n\n readonly activationChange = output<AXPWorkflowDesignerActivation | null>();\n\n //#endregion\n\n //#region ---- State ----\n\n protected readonly surfaceRef = viewChild.required<ElementRef<HTMLElement>>('surface');\n private readonly panViewRef = viewChild(AXPanViewDirective);\n\n protected readonly activation = signal<AXPWorkflowDesignerActivation | null>(null);\n protected readonly selectedNodeIds = signal<Set<string>>(new Set());\n protected readonly selectedConnectorIds = signal<Set<string>>(new Set());\n protected readonly panX = signal(0);\n protected readonly panY = signal(0);\n protected readonly panZoomLevel = signal(100);\n protected readonly linkDrag = signal<LinkDragState | null>(null);\n /** Inbound port under the pointer while dragging a new connector from an outbound port. */\n protected readonly linkHoverTarget = signal<{ nodeId: string; portId: string } | null>(null);\n private nodeMove: NodeMoveState | null = null;\n private resize: ResizeState | null = null;\n private suppressNextNodeClick = false;\n private wrapperDragoverListener: ((event: DragEvent) => void) | null = null;\n private wrapperDropListener: ((event: DragEvent) => void) | null = null;\n private wrapperElement = signal<HTMLElement | null>(null);\n private wrapperAttachRetryHandle: ReturnType<typeof setTimeout> | null = null;\n private wrapperAttachAttempt = 0;\n\n private readonly destroyRef = inject(DestroyRef);\n\n //#endregion\n\n //#region ---- Computed ----\n\n protected readonly gridStyle = computed(() => {\n const g = this.gridSize();\n if (this.backgroundPattern() === 'dots') {\n return {\n 'background-size': `${g}px ${g}px`,\n 'background-image': `radial-gradient(circle, rgba(148, 163, 184, 0.35) 1px, transparent 1.2px)`,\n };\n }\n return {\n 'background-size': `${g}px ${g}px`,\n 'background-image': `\n linear-gradient(to right, rgba(148, 163, 184, 0.2) 1px, transparent 1px),\n linear-gradient(to bottom, rgba(148, 163, 184, 0.2) 1px, transparent 1px)\n `,\n };\n });\n\n protected readonly canvasViewport = computed<CanvasViewportState>(() => {\n const model = this.model();\n const contentPadding = 320;\n const minCanvasWidth = 1600;\n const minCanvasHeight = 1000;\n const nodeMinX = model.nodes.reduce((acc, node) => Math.min(acc, node.position.x), 0);\n const nodeMinY = model.nodes.reduce((acc, node) => Math.min(acc, node.position.y), 0);\n const nodeMaxRight = model.nodes.reduce((acc, node) => Math.max(acc, node.position.x + node.size.width), 0);\n const nodeMaxBottom = model.nodes.reduce((acc, node) => Math.max(acc, node.position.y + node.size.height), 0);\n const minX = Math.min(0, nodeMinX);\n const minY = Math.min(0, nodeMinY);\n const maxRight = Math.max(minCanvasWidth, nodeMaxRight);\n const maxBottom = Math.max(minCanvasHeight, nodeMaxBottom);\n const offsetX = -minX + contentPadding;\n const offsetY = -minY + contentPadding;\n return {\n minX,\n minY,\n offsetX,\n offsetY,\n width: Math.ceil(maxRight - minX + contentPadding * 2),\n height: Math.ceil(maxBottom - minY + contentPadding * 2),\n };\n });\n\n protected readonly surfaceStyle = computed(() => {\n const viewport = this.canvasViewport();\n return {\n // ...this.gridStyle(),\n width: `${viewport.width}px`,\n height: `${viewport.height}px`,\n };\n });\n\n //#endregion\n\n constructor() {\n afterNextRender(() => this.attachWrapperDropTargetsWithRetry());\n effect(() => this.syncWrapperBackgroundStyle());\n effect(() => {\n this.zoomChange.emit(this.panZoomLevel());\n });\n this.destroyRef.onDestroy(() => this.detachWindowListeners());\n }\n\n public zoomIn(): void {\n this.panViewRef()?.zoomIn();\n }\n\n public zoomOut(): void {\n this.panViewRef()?.zoomOut();\n }\n\n public zoomReset(): void {\n this.panViewRef()?.resetPosition();\n }\n\n public getZoomLevel(): number {\n return this.panZoomLevel();\n }\n\n //#region ---- Readonly helpers ----\n\n protected isNodeReadonly(node: AXPWorkflowNode): boolean {\n return this.readonly() || node.readonly === true;\n }\n\n protected isConnectorReadonly(c: AXPWorkflowConnector): boolean {\n return this.readonly() || c.readonly === true;\n }\n\n //#endregion\n\n //#region ---- Activation ----\n\n protected isNodeActive(nodeId: string): boolean {\n return this.selectedNodeIds().has(nodeId);\n }\n\n protected isConnectorActive(id: string): boolean {\n return this.selectedConnectorIds().has(id);\n }\n\n protected isPortActive(nodeId: string, portId: string): boolean {\n const a = this.activation();\n return a?.kind === 'port' && a.nodeId === nodeId && a.id === portId;\n }\n\n protected isPortLinkHoverTarget(nodeId: string, portId: string): boolean {\n if (!this.linkDrag()) return false;\n const h = this.linkHoverTarget();\n return h !== null && h.nodeId === nodeId && h.portId === portId;\n }\n\n private setActivation(next: AXPWorkflowDesignerActivation | null): void {\n this.activation.set(next);\n this.activationChange.emit(next);\n }\n\n private clearSelections(): void {\n this.selectedNodeIds.set(new Set());\n this.selectedConnectorIds.set(new Set());\n }\n\n //#endregion\n\n //#region ---- Model commit ----\n\n private commit(next: AXPWorkflowDiagramModel): void {\n this.modelChange.emit(next);\n }\n\n /**\n * Auto-arranges nodes into a layered layout and commits the result.\n *\n * Honors layout options such as `direction` (`'horizontal'` / `'vertical'`),\n * `alignment`, `origin`, `nodeIds` (subset arrange), and `reduceCrossings`.\n * When `gridSize` is omitted the designer's own `gridSize` input is used.\n */\n arrangeNicely(options?: AXPWorkflowArrangeDiagramOptions): void {\n if (this.readonly()) {\n return;\n }\n this.commit(this.computeArrangedLayout(options));\n }\n\n /**\n * Computes an arranged layout without committing it. Useful for previews,\n * comparing the result before applying it, or rendering ghost positions.\n */\n computeArrangedLayout(options?: AXPWorkflowArrangeDiagramOptions): AXPWorkflowDiagramModel {\n return arrangeWorkflowDiagram(cloneDiagram(this.model()), {\n gridSize: this.gridSize(),\n ...options,\n });\n }\n\n private resolvePaletteItem(type: string): AXPWorkflowActivityPaletteItem | undefined {\n return this.paletteItems().find((i) => i.type === type);\n }\n\n /**\n * Full drag payload merged with `paletteItems()` entry when the payload omits optional fields.\n */\n private resolveDroppedPaletteItem(raw: string | undefined): AXPWorkflowActivityPaletteItem | null {\n const parsed = parsePaletteItemDragPayload(raw);\n if (!parsed) return null;\n const base = this.resolvePaletteItem(parsed.type);\n const item = { ...(base ?? {}), ...parsed } as AXPWorkflowActivityPaletteItem;\n if (typeof item.title !== 'string') return null;\n return item;\n }\n\n private evaluateConnect(request: AXPWorkflowConnectRequest): boolean {\n const fn = this.canConnect();\n if (fn) return fn(request);\n return defaultCanConnectRequest(request);\n }\n\n //#endregion\n\n //#region ---- Canvas / surface ----\n\n protected onSurfacePointerDown(event: PointerEvent): void {\n if (!this.isBackgroundInteractionTarget(event.target as HTMLElement)) return;\n this.designerPointerDown.emit(event);\n }\n\n protected onSurfaceClick(event: MouseEvent): void {\n if (!this.isBackgroundInteractionTarget(event.target as HTMLElement)) return;\n this.clearSelections();\n this.setActivation({ kind: 'canvas', id: 'canvas' });\n this.designerClick.emit(event);\n }\n\n protected onSurfaceDoubleClick(event: MouseEvent): void {\n if (!this.isBackgroundInteractionTarget(event.target as HTMLElement)) return;\n this.designerDoubleClick.emit(event);\n }\n\n private isBackgroundInteractionTarget(target: HTMLElement | null): boolean {\n if (!target) return false;\n if (target.closest('.axp-workflow-designer__node')) return false;\n if (target.closest('.axp-workflow-designer__connector-actions')) return false;\n if (target.closest('.axp-workflow-designer__port-cluster')) return false;\n if (target.closest('path.axp-workflow-designer__edge-hit')) return false;\n if (target.closest('ax-button')) return false;\n return true;\n }\n\n protected canvasPointFromClient(clientX: number, clientY: number): AXPWorkflowPoint {\n const surface = this.surfaceRef().nativeElement;\n const wrapper = surface.closest('.ax-pan-view-wrapper') as HTMLElement | null;\n const basisRect = (wrapper ?? surface).getBoundingClientRect();\n const localX = clientX - basisRect.left;\n const localY = clientY - basisRect.top;\n\n const computed = getComputedStyle(surface);\n const transform = computed.transform;\n if (!transform || transform === 'none') {\n return this.surfacePointToModel({ x: localX, y: localY });\n }\n\n const matrix = new DOMMatrixReadOnly(transform);\n const originParts = computed.transformOrigin.split(' ');\n const originX = Number.parseFloat(originParts[0] ?? '0') || 0;\n const originY = Number.parseFloat(originParts[1] ?? '0') || 0;\n\n // CSS transform is applied around transform-origin, so include origin translation in matrix inversion.\n const withOrigin = new DOMMatrixReadOnly()\n .translate(originX, originY)\n .multiply(matrix)\n .translate(-originX, -originY);\n const point = new DOMPoint(localX, localY).matrixTransform(withOrigin.inverse());\n return this.surfacePointToModel({ x: point.x, y: point.y });\n }\n\n //#endregion\n\n //#region ---- Drag / drop (palette) ----\n\n protected onCanvasDragOver(event: DragEvent): void {\n if (this.readonly()) return;\n event.preventDefault();\n if (event.dataTransfer) event.dataTransfer.dropEffect = 'copy';\n }\n\n protected onCanvasDrop(event: DragEvent): void {\n if (this.readonly()) return;\n event.preventDefault();\n event.stopPropagation();\n const raw = event.dataTransfer?.getData(AXP_WORKFLOW_PALETTE_MIME);\n const item = this.resolveDroppedPaletteItem(raw);\n if (!item) return;\n const pt = this.canvasPointFromClient(event.clientX, event.clientY);\n const node = createNodeFromPaletteItem(item, this.applySnapToPointForNewNode(item, pt));\n const model = this.model();\n const next: AXPWorkflowDiagramModel = {\n nodes: [...model.nodes, node],\n connectors: [...model.connectors],\n };\n this.commit(next);\n this.setActivation({ kind: 'node', id: node.id });\n }\n\n private applySnapToPointForNewNode(item: AXPWorkflowActivityPaletteItem, pt: AXPWorkflowPoint): AXPWorkflowPoint {\n const nodeSnap = item.snapToGrid;\n const useSnap = nodeSnap ?? this.snapToGrid();\n const g = this.gridSize();\n if (!useSnap || g <= 0) return pt;\n return snapPoint(pt, g);\n }\n\n private applySnapForNode(node: AXPWorkflowNode, pt: AXPWorkflowPoint): AXPWorkflowPoint {\n const useSnap = node.snapToGrid ?? this.snapToGrid();\n const g = this.gridSize();\n if (!useSnap || g <= 0) return pt;\n return snapPoint(pt, g);\n }\n\n //#endregion\n\n //#region ---- Wrapper drop bridge ----\n\n private attachWrapperDropTargetsWithRetry(): void {\n this.clearWrapperAttachRetry();\n this.wrapperAttachAttempt = 0;\n const tryAttach = () => {\n const attached = this.attachWrapperDropTargets();\n if (attached) {\n return;\n }\n this.wrapperAttachAttempt += 1;\n if (this.wrapperAttachAttempt >= 20) {\n return;\n }\n this.wrapperAttachRetryHandle = setTimeout(tryAttach, 50);\n };\n tryAttach();\n }\n\n /**\n * Binds drag/drop to pan-view wrapper so users can drop while panning far away\n * from current finite surface bounds.\n */\n private attachWrapperDropTargets(): boolean {\n const surface = this.surfaceRef().nativeElement;\n const wrapper = surface.closest('.ax-pan-view-wrapper') as HTMLElement | null;\n if (!wrapper) {\n return false;\n }\n this.detachWrapperDropTargets();\n this.wrapperElement.set(wrapper);\n this.wrapperDragoverListener = (event: DragEvent) => {\n const target = event.target as HTMLElement | null;\n if (target?.closest('.axp-workflow-designer__surface')) {\n return;\n }\n this.onCanvasDragOver(event);\n };\n this.wrapperDropListener = (event: DragEvent) => {\n const target = event.target as HTMLElement | null;\n if (target?.closest('.axp-workflow-designer__surface')) {\n return;\n }\n this.onCanvasDrop(event);\n };\n wrapper.addEventListener('dragover', this.wrapperDragoverListener);\n wrapper.addEventListener('drop', this.wrapperDropListener);\n this.syncWrapperBackgroundStyle();\n return true;\n }\n\n private detachWrapperDropTargets(): void {\n const surface = this.surfaceRef().nativeElement;\n const wrapper = surface.closest('.ax-pan-view-wrapper') as HTMLElement | null;\n if (!wrapper) {\n this.wrapperElement.set(null);\n this.wrapperDragoverListener = null;\n this.wrapperDropListener = null;\n return;\n }\n if (this.wrapperDragoverListener) {\n wrapper.removeEventListener('dragover', this.wrapperDragoverListener);\n this.wrapperDragoverListener = null;\n }\n if (this.wrapperDropListener) {\n wrapper.removeEventListener('drop', this.wrapperDropListener);\n this.wrapperDropListener = null;\n }\n this.wrapperElement.set(null);\n }\n\n private clearWrapperAttachRetry(): void {\n if (this.wrapperAttachRetryHandle != null) {\n clearTimeout(this.wrapperAttachRetryHandle);\n this.wrapperAttachRetryHandle = null;\n }\n }\n\n //#endregion\n\n //#region ---- Keyboard ----\n\n protected onWindowKeydown(ev: KeyboardEvent): void {\n if (this.readonly()) return;\n const target = ev.target as HTMLElement | null;\n if (target?.closest('input,textarea,select,[contenteditable=\"true\"]')) return;\n\n if (ev.key === 'Escape') {\n ev.preventDefault();\n this.cancelLinkDrag(ev);\n this.clearSelections();\n this.setActivation(null);\n return;\n }\n\n if (ev.key !== 'Delete' && ev.key !== 'Backspace') return;\n ev.preventDefault();\n const selectedConnectorIds = this.selectedConnectorIds();\n const selectedNodeIds = this.selectedNodeIds();\n const model = this.model();\n if (selectedConnectorIds.size > 0 || selectedNodeIds.size > 0) {\n const nodes = model.nodes.filter((n) => !selectedNodeIds.has(n.id));\n const connectors = model.connectors.filter(\n (c) =>\n !selectedConnectorIds.has(c.id) &&\n !selectedNodeIds.has(c.sourceNodeId) &&\n !selectedNodeIds.has(c.targetNodeId),\n );\n this.commit({ ...model, nodes, connectors });\n this.clearSelections();\n this.setActivation(null);\n return;\n }\n const a = this.activation();\n if (!a || a.kind === 'canvas') return;\n\n if (a.kind === 'connector') {\n const c = findConnector(model, a.id);\n if (c && !this.isConnectorReadonly(c)) {\n const connectors = model.connectors.filter((x) => x.id !== c.id);\n this.commit({ ...model, connectors });\n this.setActivation(null);\n }\n return;\n }\n\n const nodeId = a.kind === 'node' ? a.id : a.nodeId;\n if (!nodeId) return;\n const node = findNode(model, nodeId);\n if (!node || this.isNodeReadonly(node)) return;\n const nodes = model.nodes.filter((n) => n.id !== nodeId);\n const connectors = model.connectors.filter((c) => c.sourceNodeId !== nodeId && c.targetNodeId !== nodeId);\n this.commit({ ...model, nodes, connectors });\n this.setActivation(null);\n }\n\n private cancelLinkDrag(ev: Event): void {\n const st = this.linkDrag();\n if (!st) return;\n this.linkDrag.set(null);\n this.linkHoverTarget.set(null);\n window.removeEventListener('pointermove', this.onWindowPointerMoveForLink);\n window.removeEventListener('pointerup', this.onWindowPointerUpForLink);\n window.removeEventListener('pointercancel', this.onWindowPointerUpForLink);\n const model = this.model();\n const sourceNode = findNode(model, st.sourceNodeId);\n const sourcePort = sourceNode ? findPort(sourceNode, st.sourcePortId)?.port : undefined;\n if (sourceNode && sourcePort) {\n this.linkDragEnd.emit({ sourceNode, sourcePort, cancelled: true, event: ev });\n }\n }\n\n //#endregion\n\n //#region ---- Node chrome ----\n\n protected shapeClass(shape: AXPWorkflowNode['shape']): string {\n return `axp-workflow-designer__node-shape--${shape}`;\n }\n\n protected semanticSurfaceClass(color?: AXPWorkflowSemanticColor): string {\n return color ? `axp-${color}-surface` : '';\n }\n\n protected nodeShapeClasses(node: AXPWorkflowNode): string {\n return ['axp-workflow-designer__node-shape', this.shapeClass(node.shape), this.semanticSurfaceClass(node.color)]\n .filter(Boolean)\n .join(' ');\n }\n\n protected connectorEdgeClasses(c: AXPWorkflowConnector): string {\n const parts = [\n 'axp-workflow-designer__edge',\n this.semanticSurfaceClass(c.color),\n this.isConnectorActive(c.id) ? 'axp-workflow-designer__edge--active' : '',\n ];\n return parts.filter(Boolean).join(' ');\n }\n\n protected onNodePointerDown(node: AXPWorkflowNode, event: PointerEvent): void {\n if (this.isNodeReadonly(node)) return;\n if (event.button !== 0) return;\n this.nodePointerDown.emit({ node, event });\n }\n\n protected onNodeClick(node: AXPWorkflowNode, event: MouseEvent): void {\n if (this.suppressNextNodeClick) {\n this.suppressNextNodeClick = false;\n event.stopPropagation();\n return;\n }\n event.stopPropagation();\n const append = event.ctrlKey || event.metaKey;\n if (append) {\n const next = new Set(this.selectedNodeIds());\n if (next.has(node.id)) next.delete(node.id);\n else next.add(node.id);\n this.selectedNodeIds.set(next);\n this.selectedConnectorIds.set(new Set());\n } else {\n this.selectedNodeIds.set(new Set([node.id]));\n this.selectedConnectorIds.set(new Set());\n }\n this.setActivation({ kind: 'node', id: node.id });\n this.nodeClick.emit({ node, event: event as unknown as PointerEvent });\n }\n\n protected onNodeDoubleClick(node: AXPWorkflowNode, event: MouseEvent): void {\n event.stopPropagation();\n this.nodeDoubleClick.emit({ node, event });\n }\n\n protected onNodeContextMenu(node: AXPWorkflowNode, event: MouseEvent): void {\n if (this.isNodeReadonly(node)) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n this.selectedNodeIds.set(new Set([node.id]));\n this.selectedConnectorIds.set(new Set());\n this.setActivation({ kind: 'node', id: node.id });\n this.nodeContextMenu.emit({ node, event });\n }\n\n protected onNodeBodyPointerDown(node: AXPWorkflowNode, event: PointerEvent): void {\n if (this.isNodeReadonly(node)) return;\n if (event.button !== 0) return;\n if ((event.target as HTMLElement).closest('.axp-workflow-designer__port-cluster')) return;\n if ((event.target as HTMLElement).closest('.axp-workflow-designer__resize')) return;\n // Ctrl/Cmd click is reserved for multi-select toggling in click handler; do not start drag here.\n if (event.ctrlKey || event.metaKey) return;\n event.stopPropagation();\n const selected = this.selectedNodeIds();\n const moveIds = selected.has(node.id) && selected.size > 0 ? [...selected] : [node.id];\n if (!selected.has(node.id) || selected.size === 0) {\n this.selectedNodeIds.set(new Set([node.id]));\n this.selectedConnectorIds.set(new Set());\n }\n this.setActivation({ kind: 'node', id: node.id });\n const p = this.canvasPointFromClient(event.clientX, event.clientY);\n const model = this.model();\n const origins: Record<string, AXPWorkflowPoint> = {};\n for (const moveId of moveIds) {\n const n = findNode(model, moveId);\n if (n) origins[moveId] = { ...n.position };\n }\n this.nodeMove = {\n nodeIds: moveIds,\n start: p,\n origins,\n moved: false,\n };\n this.nodeDragStart.emit({ node, event });\n window.addEventListener('pointermove', this.onWindowPointerMoveForNode);\n window.addEventListener('pointerup', this.onWindowPointerUpForNode, { once: false });\n window.addEventListener('pointercancel', this.onWindowPointerUpForNode, { once: false });\n (event.target as HTMLElement).setPointerCapture?.(event.pointerId);\n }\n\n private readonly onWindowPointerMoveForNode = (ev: PointerEvent): void => {\n const drag = this.nodeMove;\n if (!drag) return;\n const model = this.model();\n const p = this.canvasPointFromClient(ev.clientX, ev.clientY);\n const dx = p.x - drag.start.x;\n const dy = p.y - drag.start.y;\n if (Math.abs(dx) > 1 || Math.abs(dy) > 1) {\n drag.moved = true;\n }\n const nodes = model.nodes.map((n) => {\n if (!drag.nodeIds.includes(n.id)) return n;\n const origin = drag.origins[n.id];\n if (!origin) return n;\n let nx = origin.x + dx;\n let ny = origin.y + dy;\n const snapped = this.applySnapForNode(n, { x: nx, y: ny });\n nx = snapped.x;\n ny = snapped.y;\n return { ...n, position: { x: nx, y: ny } };\n });\n this.commit({ ...model, nodes });\n };\n\n private readonly onWindowPointerUpForNode = (ev: PointerEvent): void => {\n const drag = this.nodeMove;\n this.nodeMove = null;\n window.removeEventListener('pointermove', this.onWindowPointerMoveForNode);\n window.removeEventListener('pointerup', this.onWindowPointerUpForNode);\n window.removeEventListener('pointercancel', this.onWindowPointerUpForNode);\n if (drag?.moved) {\n this.suppressNextNodeClick = true;\n }\n if (drag) {\n const node = findNode(this.model(), drag.nodeIds[0] ?? '');\n if (node) this.nodeDragEnd.emit({ node, event: ev });\n }\n };\n\n //#endregion\n\n //#region ---- Resize ----\n\n protected onResizePointerDown(node: AXPWorkflowNode, handle: ResizeState['handle'], event: PointerEvent): void {\n if (this.isNodeReadonly(node)) return;\n if (event.button !== 0) return;\n event.stopPropagation();\n this.resize = {\n nodeId: node.id,\n handle,\n startPointer: this.canvasPointFromClient(event.clientX, event.clientY),\n startPosition: { ...node.position },\n startSize: { ...node.size },\n aspect: node.size.width / Math.max(1, node.size.height),\n };\n window.addEventListener('pointermove', this.onWindowPointerMoveForResize);\n window.addEventListener('pointerup', this.onWindowPointerUpForResize);\n window.addEventListener('pointercancel', this.onWindowPointerUpForResize);\n }\n\n private readonly onWindowPointerMoveForResize = (ev: PointerEvent): void => {\n const st = this.resize;\n if (!st) return;\n const model = this.model();\n const node = findNode(model, st.nodeId);\n if (!node) return;\n const p = this.canvasPointFromClient(ev.clientX, ev.clientY);\n const dx = p.x - st.startPointer.x;\n const dy = p.y - st.startPointer.y;\n let { width, height } = st.startSize;\n let { x, y } = st.startPosition;\n\n const minW = 72;\n const minH = 40;\n\n const growEast = st.handle.includes('e');\n const growSouth = st.handle.includes('s');\n const growWest = st.handle.includes('w');\n const growNorth = st.handle.includes('n');\n\n if (growEast) width = Math.max(minW, st.startSize.width + dx);\n if (growSouth) height = Math.max(minH, st.startSize.height + dy);\n if (growWest) {\n const nw = Math.max(minW, st.startSize.width - dx);\n x = st.startPosition.x + st.startSize.width - nw;\n width = nw;\n }\n if (growNorth) {\n const nh = Math.max(minH, st.startSize.height - dy);\n y = st.startPosition.y + st.startSize.height - nh;\n height = nh;\n }\n\n if (node.shape === 'circle' || node.lockAspectRatio) {\n const a = st.aspect;\n if (growEast || growWest) {\n height = width / a;\n if (growNorth) y = st.startPosition.y + st.startSize.height - height;\n } else {\n width = height * a;\n if (growWest) x = st.startPosition.x + st.startSize.width - width;\n }\n }\n\n const g = this.gridSize();\n const useSnap = node.snapToGrid ?? this.snapToGrid();\n if (useSnap && g > 0) {\n width = Math.max(minW, snapScalar(width, g));\n height = Math.max(minH, snapScalar(height, g));\n x = snapScalar(x, g);\n y = snapScalar(y, g);\n }\n\n const nodes = model.nodes.map((n) =>\n n.id === node.id ? { ...n, position: { x, y }, size: { width, height } } : n,\n );\n this.commit({ ...model, nodes });\n };\n\n private readonly onWindowPointerUpForResize = (): void => {\n this.resize = null;\n window.removeEventListener('pointermove', this.onWindowPointerMoveForResize);\n window.removeEventListener('pointerup', this.onWindowPointerUpForResize);\n window.removeEventListener('pointercancel', this.onWindowPointerUpForResize);\n };\n\n //#endregion\n\n //#region ---- Ports & linking ----\n\n protected onPortPointerDown(node: AXPWorkflowNode, port: AXPWorkflowPort, event: PointerEvent): void {\n if (this.isNodeReadonly(node)) return;\n if (port.readonly) return;\n if (event.button !== 0) return;\n event.stopPropagation();\n this.portPointerDown.emit({ node, port, event });\n this.setActivation({ kind: 'port', id: port.id, nodeId: node.id });\n\n if (port.kind === 'outbound' && !port.disabled) {\n this.linkHoverTarget.set(null);\n const from = portCanvasPosition(node, port);\n this.linkDrag.set({\n sourceNodeId: node.id,\n sourcePortId: port.id,\n from,\n to: from,\n });\n this.linkDragStart.emit({ sourceNode: node, sourcePort: port, event });\n window.addEventListener('pointermove', this.onWindowPointerMoveForLink);\n window.addEventListener('pointerup', this.onWindowPointerUpForLink);\n window.addEventListener('pointercancel', this.onWindowPointerUpForLink);\n }\n }\n\n private readonly onWindowPointerMoveForLink = (ev: PointerEvent): void => {\n const st = this.linkDrag();\n if (!st) return;\n const to = this.canvasPointFromClient(ev.clientX, ev.clientY);\n this.linkDrag.set({ ...st, to });\n const model = this.model();\n const node = findNode(model, st.sourceNodeId);\n const port = node ? findPort(node, st.sourcePortId)?.port : undefined;\n if (node && port) {\n this.linkDragMove.emit({ sourceNode: node, sourcePort: port, point: to, event: ev });\n }\n const hover = this.pickInboundPortAtPoint(model, to, st.sourceNodeId);\n this.linkHoverTarget.set(hover ? { nodeId: hover.node.id, portId: hover.port.id } : null);\n };\n\n private readonly onWindowPointerUpForLink = (ev: PointerEvent): void => {\n const st = this.linkDrag();\n this.linkDrag.set(null);\n this.linkHoverTarget.set(null);\n window.removeEventListener('pointermove', this.onWindowPointerMoveForLink);\n window.removeEventListener('pointerup', this.onWindowPointerUpForLink);\n window.removeEventListener('pointercancel', this.onWindowPointerUpForLink);\n if (!st) return;\n\n const model = this.model();\n const sourceNode = findNode(model, st.sourceNodeId);\n const sourcePort = sourceNode ? findPort(sourceNode, st.sourcePortId)?.port : undefined;\n if (!sourceNode || !sourcePort) return;\n\n const target = this.pickInboundPortAtPoint(model, st.to, sourceNode.id);\n if (!target) {\n this.linkDragEnd.emit({ sourceNode, sourcePort, cancelled: true, event: ev });\n return;\n }\n\n const request: AXPWorkflowConnectRequest = {\n model,\n sourceNodeId: st.sourceNodeId,\n sourcePortId: st.sourcePortId,\n targetNodeId: target.node.id,\n targetPortId: target.port.id,\n };\n\n if (!this.evaluateConnect(request)) {\n this.connectionRejected.emit({ reason: 'canConnect returned false', request, event: ev });\n this.linkDragEnd.emit({ sourceNode, sourcePort, cancelled: true, event: ev });\n return;\n }\n\n const connector: AXPWorkflowConnector = {\n id: createWorkflowConnectorId(),\n sourceNodeId: st.sourceNodeId,\n sourcePortId: st.sourcePortId,\n targetNodeId: target.node.id,\n targetPortId: target.port.id,\n data: {},\n color: sourceNode.color,\n };\n const next: AXPWorkflowDiagramModel = {\n nodes: [...model.nodes],\n connectors: [...model.connectors, connector],\n };\n this.commit(next);\n this.connectionCreated.emit({ connector, model: next });\n this.setActivation({ kind: 'connector', id: connector.id });\n this.linkDragEnd.emit({ sourceNode, sourcePort, cancelled: false, event: ev });\n };\n\n private pickInboundPortAtPoint(\n model: AXPWorkflowDiagramModel,\n point: AXPWorkflowPoint,\n excludeSourceNodeId: string,\n ): { node: AXPWorkflowNode; port: AXPWorkflowPort } | null {\n let best: { node: AXPWorkflowNode; port: AXPWorkflowPort; d: number } | null = null;\n const hitR = 18;\n for (const node of model.nodes) {\n if (node.id === excludeSourceNodeId) continue;\n if (this.isNodeReadonly(node)) continue;\n for (const port of node.inboundPorts) {\n if (port.disabled || port.readonly) continue;\n const c = portCanvasPosition(node, port);\n const d = Math.hypot(c.x - point.x, c.y - point.y);\n if (d <= hitR && (!best || d < best.d)) best = { node, port, d };\n }\n }\n return best ? { node: best.node, port: best.port } : null;\n }\n\n //#endregion\n\n //#region ---- Connectors UI ----\n\n protected connectorPathD(c: AXPWorkflowConnector): string {\n const model = this.model();\n const sn = findNode(model, c.sourceNodeId);\n const tn = findNode(model, c.targetNodeId);\n if (!sn || !tn) return '';\n const sp = findPort(sn, c.sourcePortId)?.port;\n const tp = findPort(tn, c.targetPortId)?.port;\n if (!sp || !tp) return '';\n const from = this.modelPointToSurface(portCanvasPosition(sn, sp));\n const to = this.trimmedConnectorTarget(from, this.modelPointToSurface(portCanvasPosition(tn, tp)));\n return connectorPath(from, to, this.connectionPreviewStyle(), sp.side, {\n targetSide: tp.side,\n obstacles: this.collectObstaclesInSurface(),\n });\n }\n\n protected connectorMidpoint(c: AXPWorkflowConnector): AXPWorkflowPoint {\n const model = this.model();\n const sn = findNode(model, c.sourceNodeId);\n const tn = findNode(model, c.targetNodeId);\n if (!sn || !tn) return { x: 0, y: 0 };\n const sp = findPort(sn, c.sourcePortId)?.port;\n const tp = findPort(tn, c.targetPortId)?.port;\n if (!sp || !tp) return { x: 0, y: 0 };\n const a = this.modelPointToSurface(portCanvasPosition(sn, sp));\n const b = this.modelPointToSurface(portCanvasPosition(tn, tp));\n return { x: (a.x + b.x) * 0.5, y: (a.y + b.y) * 0.5 };\n }\n\n protected onConnectorClick(c: AXPWorkflowConnector, event: MouseEvent): void {\n event.stopPropagation();\n event.preventDefault();\n const append = event.ctrlKey || event.metaKey;\n if (append) {\n const next = new Set(this.selectedConnectorIds());\n if (next.has(c.id)) next.delete(c.id);\n else next.add(c.id);\n this.selectedConnectorIds.set(next);\n this.selectedNodeIds.set(new Set());\n } else {\n this.selectedConnectorIds.set(new Set([c.id]));\n this.selectedNodeIds.set(new Set());\n }\n this.setActivation({ kind: 'connector', id: c.id });\n this.connectorClick.emit({ connector: c, event });\n }\n\n protected onConnectorDoubleClick(c: AXPWorkflowConnector, event: MouseEvent): void {\n event.stopPropagation();\n event.preventDefault();\n this.connectorDoubleClick.emit({ connector: c, event });\n }\n\n protected removeConnector(c: AXPWorkflowConnector): void {\n if (this.isConnectorReadonly(c)) return;\n const model = this.model();\n const connectors = model.connectors.filter((x) => x.id !== c.id);\n this.commit({ ...model, connectors });\n this.setActivation(null);\n }\n\n protected previewPath(): string {\n const st = this.linkDrag();\n if (!st) return '';\n const model = this.model();\n const sn = findNode(model, st.sourceNodeId);\n const sp = sn ? findPort(sn, st.sourcePortId)?.port : undefined;\n if (!sn || !sp) return '';\n const from = this.modelPointToSurface(st.from);\n const to = this.modelPointToSurface(st.to);\n const hover = this.linkHoverTarget();\n const hoverNode = hover ? findNode(model, hover.nodeId) : undefined;\n const hoverPort = hover && hoverNode ? findPort(hoverNode, hover.portId)?.port : undefined;\n return connectorPath(from, this.trimmedConnectorTarget(from, to), this.connectionPreviewStyle(), sp.side, {\n targetSide: hoverPort?.side,\n obstacles: this.collectObstaclesInSurface(),\n });\n }\n\n //#endregion\n\n //#region ---- Template context ----\n\n protected templateContext(node: AXPWorkflowNode): AXPWorkflowNodeBodyTemplateContext {\n return { $implicit: node, node };\n }\n\n protected portClusterStyle(node: AXPWorkflowNode, port: AXPWorkflowPort): Record<string, string> {\n const local = portAnchorOnNode(node, port);\n const w = Math.max(1, node.size.width);\n const h = Math.max(1, node.size.height);\n return {\n position: 'absolute',\n left: `${(local.x / w) * 100}%`,\n top: `${(local.y / h) * 100}%`,\n 'z-index': '3',\n };\n }\n\n protected portLabelText(port: AXPWorkflowPort): string {\n return (port.label ?? port.key ?? '').trim();\n }\n\n protected portLabelX(node: AXPWorkflowNode, port: AXPWorkflowPort): number {\n return this.portLabelCanvasPoint(node, port).x;\n }\n\n protected portLabelY(node: AXPWorkflowNode, port: AXPWorkflowPort): number {\n return this.portLabelCanvasPoint(node, port).y;\n }\n\n protected portLabelAnchor(node: AXPWorkflowNode, port: AXPWorkflowPort): 'start' | 'middle' | 'end' {\n const centerX = this.modelPointToSurface({ x: node.position.x + node.size.width * 0.5, y: node.position.y }).x;\n const anchor = this.modelPointToSurface(portCanvasPosition(node, port));\n const dx = anchor.x - centerX;\n if (Math.abs(dx) < 6) return 'middle';\n return dx < 0 ? 'end' : 'start';\n }\n\n protected nodeSurfaceLeft(node: AXPWorkflowNode): number {\n return node.position.x + this.canvasViewport().offsetX;\n }\n\n protected nodeSurfaceTop(node: AXPWorkflowNode): number {\n return node.position.y + this.canvasViewport().offsetY;\n }\n\n private trimmedConnectorTarget(from: AXPWorkflowPoint, to: AXPWorkflowPoint): AXPWorkflowPoint {\n const dx = to.x - from.x;\n const dy = to.y - from.y;\n const len = Math.hypot(dx, dy);\n if (len < 0.001) return to;\n // Keep arrowhead just outside the 14px port without creating a visible gap.\n const trim = 7;\n return {\n x: to.x - (dx / len) * trim,\n y: to.y - (dy / len) * trim,\n };\n }\n\n private portLabelCanvasPoint(node: AXPWorkflowNode, port: AXPWorkflowPort): AXPWorkflowPoint {\n const anchor = this.modelPointToSurface(portCanvasPosition(node, port));\n const center = {\n x: node.position.x + node.size.width * 0.5 + this.canvasViewport().offsetX,\n y: node.position.y + node.size.height * 0.5 + this.canvasViewport().offsetY,\n };\n const vx = anchor.x - center.x;\n const vy = anchor.y - center.y;\n const len = Math.hypot(vx, vy);\n if (len < 0.001) return anchor;\n const outward = 18;\n return {\n x: anchor.x + (vx / len) * outward,\n y: anchor.y + (vy / len) * outward,\n };\n }\n\n //#endregion\n\n //#region ---- Canvas mapping ----\n\n private modelPointToSurface(point: AXPWorkflowPoint): AXPWorkflowPoint {\n const viewport = this.canvasViewport();\n return {\n x: point.x + viewport.offsetX,\n y: point.y + viewport.offsetY,\n };\n }\n\n private surfacePointToModel(point: AXPWorkflowPoint): AXPWorkflowPoint {\n const viewport = this.canvasViewport();\n return {\n x: point.x - viewport.offsetX,\n y: point.y - viewport.offsetY,\n };\n }\n\n /**\n * Returns node bounding boxes in surface coordinates.\n *\n * All nodes are returned so the router can route AROUND every node, including\n * the source and target of a connector. The router itself drops obstacles that\n * already contain the stub-out point so the connector can still exit/enter its port.\n */\n private collectObstaclesInSurface(): AXPWorkflowRect[] {\n const viewport = this.canvasViewport();\n const obstacles: AXPWorkflowRect[] = [];\n for (const node of this.model().nodes) {\n obstacles.push({\n position: { x: node.position.x + viewport.offsetX, y: node.position.y + viewport.offsetY },\n size: { width: node.size.width, height: node.size.height },\n });\n }\n return obstacles;\n }\n\n //#endregion\n\n //#region ---- Wrapper visuals ----\n\n private syncWrapperBackgroundStyle(): void {\n const wrapper = this.wrapperElement();\n if (!wrapper) {\n return;\n }\n const gridStyle = this.gridStyle();\n wrapper.style.backgroundColor = 'var(--ax-sys-color-lightest-surface)';\n wrapper.style.backgroundImage = String(gridStyle['background-image'] ?? '');\n wrapper.style.backgroundSize = String(gridStyle['background-size'] ?? '');\n wrapper.style.borderRadius = '10px';\n }\n\n //#endregion\n\n private detachWindowListeners(): void {\n this.clearWrapperAttachRetry();\n this.detachWrapperDropTargets();\n this.linkHoverTarget.set(null);\n window.removeEventListener('pointermove', this.onWindowPointerMoveForNode);\n window.removeEventListener('pointerup', this.onWindowPointerUpForNode);\n window.removeEventListener('pointercancel', this.onWindowPointerUpForNode);\n window.removeEventListener('pointermove', this.onWindowPointerMoveForResize);\n window.removeEventListener('pointerup', this.onWindowPointerUpForResize);\n window.removeEventListener('pointercancel', this.onWindowPointerUpForResize);\n window.removeEventListener('pointermove', this.onWindowPointerMoveForLink);\n window.removeEventListener('pointerup', this.onWindowPointerUpForLink);\n window.removeEventListener('pointercancel', this.onWindowPointerUpForLink);\n }\n}\n","<div class=\"axp-workflow-designer\" [ngStyle]=\"gridStyle()\">\n <div\n #surface\n class=\"axp-workflow-designer__surface\"\n axPanView\n [(panX)]=\"panX\"\n [(panY)]=\"panY\"\n [(zoom)]=\"panZoomLevel\"\n [maxZoom]=\"10000\"\n [freeMode]=\"false\"\n [fitContent]=\"true\"\n wrapperClasses=\"h\"\n [ngStyle]=\"surfaceStyle()\"\n (pointerdown)=\"onSurfacePointerDown($event)\"\n (click)=\"onSurfaceClick($event)\"\n (dblclick)=\"onSurfaceDoubleClick($event)\"\n (dragover)=\"onCanvasDragOver($event)\"\n (drop)=\"onCanvasDrop($event)\"\n >\n <svg class=\"axp-workflow-designer__svg\" width=\"100%\" height=\"100%\" preserveAspectRatio=\"xMinYMin meet\">\n <defs>\n <marker [attr.id]=\"svgMarkerId\" markerWidth=\"6\" markerHeight=\"6\" refX=\"3.9\" refY=\"3\" orient=\"auto\">\n <path d=\"M0,0 L4,3 L0,6 Q1.5,3 0,0 Z\" class=\"axp-workflow-designer__arrow-head\"></path>\n </marker>\n </defs>\n @for (c of model().connectors; track c.id) {\n <path\n class=\"axp-workflow-designer__edge-hit\"\n [attr.d]=\"connectorPathD(c)\"\n fill=\"none\"\n stroke=\"transparent\"\n stroke-width=\"16\"\n pointer-events=\"stroke\"\n (click)=\"onConnectorClick(c, $event)\"\n (dblclick)=\"onConnectorDoubleClick(c, $event)\"\n />\n <path\n [class]=\"connectorEdgeClasses(c)\"\n [attr.d]=\"connectorPathD(c)\"\n fill=\"none\"\n [attr.marker-end]=\"'url(#' + svgMarkerId + ')'\"\n />\n }\n @if (linkDrag()) {\n <path class=\"axp-workflow-designer__edge-preview\" [attr.d]=\"previewPath()\" fill=\"none\" />\n }\n @if (showPortLabels()) {\n @for (node of model().nodes; track node.id) {\n @for (port of node.inboundPorts; track port.id) {\n @if (portLabelText(port)) {\n <text\n class=\"axp-workflow-designer__port-label-svg\"\n [attr.x]=\"portLabelX(node, port)\"\n [attr.y]=\"portLabelY(node, port)\"\n [attr.text-anchor]=\"portLabelAnchor(node, port)\"\n >\n {{ portLabelText(port) }}\n </text>\n }\n }\n @for (port of node.outboundPorts; track port.id) {\n @if (portLabelText(port)) {\n <text\n class=\"axp-workflow-designer__port-label-svg\"\n [attr.x]=\"portLabelX(node, port)\"\n [attr.y]=\"portLabelY(node, port)\"\n [attr.text-anchor]=\"portLabelAnchor(node, port)\"\n >\n {{ portLabelText(port) }}\n </text>\n }\n }\n }\n }\n </svg>\n\n @for (c of model().connectors; track c.id) {\n @if (isConnectorActive(c.id) && !isConnectorReadonly(c)) {\n <div\n class=\"axp-workflow-designer__connector-actions\"\n [style.left.px]=\"connectorMidpoint(c).x - 16\"\n [style.top.px]=\"connectorMidpoint(c).y - 16\"\n >\n <ax-button look=\"blank\" class=\"ax-xs axp-workflow-designer__icon-btn\" (onClick)=\"removeConnector(c)\">\n <ax-icon class=\"fa-solid fa-minus\"></ax-icon>\n </ax-button>\n </div>\n }\n }\n\n @for (node of model().nodes; track node.id) {\n <div\n class=\"axp-workflow-designer__node\"\n [class.axp-workflow-designer__node--active]=\"isNodeActive(node.id)\"\n [style.left.px]=\"nodeSurfaceLeft(node)\"\n [style.top.px]=\"nodeSurfaceTop(node)\"\n [style.width.px]=\"node.size.width\"\n [style.height.px]=\"node.size.height\"\n (pointerdown)=\"onNodePointerDown(node, $event)\"\n (click)=\"onNodeClick(node, $event)\"\n (dblclick)=\"onNodeDoubleClick(node, $event)\"\n (contextmenu)=\"onNodeContextMenu(node, $event)\"\n >\n <div [class]=\"nodeShapeClasses(node)\">\n <div class=\"axp-workflow-designer__node-body\" (pointerdown)=\"onNodeBodyPointerDown(node, $event)\">\n @if (nodeBodyTemplate(); as tpl) {\n <ng-container [ngTemplateOutlet]=\"tpl\" [ngTemplateOutletContext]=\"templateContext(node)\" />\n } @else {\n <div class=\"axp-workflow-designer__node-default\">\n @if (node.icon) {\n <ax-icon class=\"axp-workflow-designer__node-default-icon\" [class]=\"node.icon\"></ax-icon>\n }\n <span class=\"axp-workflow-designer__node-default-title\">{{ node.title }}</span>\n </div>\n }\n </div>\n </div>\n\n @for (port of node.inboundPorts; track port.id) {\n <div\n class=\"axp-workflow-designer__port-cluster\"\n [class.axp-workflow-designer__port-cluster--side-top]=\"port.side === 'top'\"\n [class.axp-workflow-designer__port-cluster--side-right]=\"port.side === 'right'\"\n [class.axp-workflow-designer__port-cluster--side-bottom]=\"port.side === 'bottom'\"\n [class.axp-workflow-designer__port-cluster--side-left]=\"port.side === 'left'\"\n [ngStyle]=\"portClusterStyle(node, port)\"\n >\n <button\n type=\"button\"\n class=\"axp-workflow-designer__port axp-workflow-designer__port--inbound\"\n [class.axp-workflow-designer__port--active]=\"isPortActive(node.id, port.id)\"\n [class.axp-workflow-designer__port--link-hover]=\"isPortLinkHoverTarget(node.id, port.id)\"\n [class.axp-workflow-designer__port--disabled]=\"port.disabled\"\n [disabled]=\"isNodeReadonly(node) || port.disabled === true\"\n (pointerdown)=\"onPortPointerDown(node, port, $event)\"\n ></button>\n </div>\n }\n @for (port of node.outboundPorts; track port.id) {\n <div\n class=\"axp-workflow-designer__port-cluster\"\n [class.axp-workflow-designer__port-cluster--side-top]=\"port.side === 'top'\"\n [class.axp-workflow-designer__port-cluster--side-right]=\"port.side === 'right'\"\n [class.axp-workflow-designer__port-cluster--side-bottom]=\"port.side === 'bottom'\"\n [class.axp-workflow-designer__port-cluster--side-left]=\"port.side === 'left'\"\n [ngStyle]=\"portClusterStyle(node, port)\"\n >\n <button\n type=\"button\"\n class=\"axp-workflow-designer__port axp-workflow-designer__port--outbound\"\n [class.axp-workflow-designer__port--active]=\"isPortActive(node.id, port.id)\"\n [class.axp-workflow-designer__port--disabled]=\"port.disabled\"\n [disabled]=\"isNodeReadonly(node) || port.disabled === true\"\n (pointerdown)=\"onPortPointerDown(node, port, $event)\"\n ></button>\n </div>\n }\n\n @if (isNodeActive(node.id) && !isNodeReadonly(node)) {\n <span\n class=\"axp-workflow-designer__resize axp-workflow-designer__resize--nw\"\n (pointerdown)=\"onResizePointerDown(node, 'nw', $event)\"\n ></span>\n <span\n class=\"axp-workflow-designer__resize axp-workflow-designer__resize--ne\"\n (pointerdown)=\"onResizePointerDown(node, 'ne', $event)\"\n ></span>\n <span\n class=\"axp-workflow-designer__resize axp-workflow-designer__resize--sw\"\n (pointerdown)=\"onResizePointerDown(node, 'sw', $event)\"\n ></span>\n <span\n class=\"axp-workflow-designer__resize axp-workflow-designer__resize--se\"\n (pointerdown)=\"onResizePointerDown(node, 'se', $event)\"\n ></span>\n }\n </div>\n }\n </div>\n</div>\n","import { Directive, computed, input, output } from '@angular/core';\nimport { AXP_WORKFLOW_PALETTE_MIME } from './workflow-designer.const';\nimport type { AXPWorkflowActivityPaletteItem } from './workflow-designer.types';\n\n/**\n * Makes any host element a draggable palette source. Set `[axpWorkflowPaletteItem]=\"item\"` and optional outputs.\n * Drop target: `axp-workflow-designer` canvas (same MIME as drag payload).\n */\n@Directive({\n selector: '[axpWorkflowPaletteItem]',\n host: {\n '[attr.draggable]': 'hostDraggable()',\n '(dragstart)': 'onDragStart($event)',\n '(dragend)': 'onDragEnd($event)',\n },\n})\nexport class AXPWorkflowPaletteItemDragDirective {\n /** Palette definition serialized into the drag payload. */\n readonly axpWorkflowPaletteItem = input.required<AXPWorkflowActivityPaletteItem>({\n alias: 'axpWorkflowPaletteItem',\n });\n\n /** When true, drag is disabled. */\n readonly axpWorkflowPaletteDragDisabled = input(false, { alias: 'axpWorkflowPaletteDragDisabled' });\n\n readonly axpWorkflowPaletteDragStart = output<{ item: AXPWorkflowActivityPaletteItem; event: DragEvent }>({\n alias: 'axpWorkflowPaletteDragStart',\n });\n\n readonly axpWorkflowPaletteDragEnd = output<{ item: AXPWorkflowActivityPaletteItem | null; event: DragEvent }>({\n alias: 'axpWorkflowPaletteDragEnd',\n });\n\n protected readonly hostDraggable = computed(() => (this.axpWorkflowPaletteDragDisabled() ? null : true));\n\n private lastItem: AXPWorkflowActivityPaletteItem | null = null;\n\n protected onDragStart(event: DragEvent): void {\n if (this.axpWorkflowPaletteDragDisabled()) {\n event.preventDefault();\n return;\n }\n const item = this.axpWorkflowPaletteItem();\n this.lastItem = item;\n event.dataTransfer?.setData(AXP_WORKFLOW_PALETTE_MIME, JSON.stringify(item));\n event.dataTransfer?.setData('text/plain', item.title);\n if (event.dataTransfer) event.dataTransfer.effectAllowed = 'copy';\n this.axpWorkflowPaletteDragStart.emit({ item, event });\n }\n\n protected onDragEnd(event: DragEvent): void {\n this.axpWorkflowPaletteDragEnd.emit({ item: this.lastItem, event });\n this.lastItem = null;\n }\n}\n","//#region ---- Point & geometry ----\n\nimport { AXStyleColorType } from '@acorex/cdk/common';\n\n/** Canvas coordinates (pixels). */\nexport interface AXPWorkflowPoint {\n x: number;\n y: number;\n}\n\nexport interface AXPWorkflowSize {\n width: number;\n height: number;\n}\n\n/** Axis-aligned rectangle used by routing/obstacle helpers. */\nexport interface AXPWorkflowRect {\n position: AXPWorkflowPoint;\n size: AXPWorkflowSize;\n}\n\n//#endregion\n\n//#region ---- Semantic color ----\n\nexport type AXPWorkflowSemanticColor = Omit<AXStyleColorType, 'default'>;\n\n//#endregion\n\n//#region ---- Ports & connectors ----\n\nexport type AXPWorkflowPortSide = 'top' | 'right' | 'bottom' | 'left';\n\nexport interface AXPWorkflowPort {\n id: string;\n /** Inbound accepts incoming connectors; outbound emits connections. */\n kind: 'inbound' | 'outbound';\n /** Optional stable key for host logic (e.g. \"default\", \"error\"). */\n key?: string;\n label?: string;\n /** Position along the chosen edge, 0–1. */\n ratio: number;\n side: AXPWorkflowPortSide;\n /** When true, multiple connectors may attach (inbound only). */\n allowMultiple?: boolean;\n /** When true, port cannot be used for new connections. */\n disabled?: boolean;\n /** Per-port readonly: no connect/disconnect interactions. */\n readonly?: boolean;\n /** Arbitrary payload (conditions, routing metadata, etc.). */\n data?: Record<string, unknown>;\n}\n\nexport interface AXPWorkflowConnector {\n id: string;\n sourceNodeId: string;\n sourcePortId: string;\n targetNodeId: string;\n targetPortId: string;\n /** Arbitrary payload (conditions, labels, etc.). */\n data?: Record<string, unknown>;\n /** Per-connector readonly: cannot delete or reconnect. */\n readonly?: boolean;\n /** Theme token applied as `ax-{color}-surface` on the edge stroke styling. */\n color?: AXPWorkflowSemanticColor;\n}\n\n//#endregion\n\n//#region ---- Nodes ----\n\nexport type AXPWorkflowNodeShape = 'rectangle' | 'rounded-rectangle' | 'circle' | 'ellipse' | 'diamond';\n\nexport interface AXPWorkflowNode {\n id: string;\n /** Palette / definition type key. */\n type: string;\n title: string;\n icon?: string;\n shape: AXPWorkflowNodeShape;\n position: AXPWorkflowPoint;\n size: AXPWorkflowSize;\n inboundPorts: AXPWorkflowPort[];\n outboundPorts: AXPWorkflowPort[];\n /** Arbitrary domain payload. */\n data?: Record<string, unknown>;\n /** When true, node cannot be moved, resized, or connected. */\n readonly?: boolean;\n /** When true, width/height stay proportional while resizing. */\n lockAspectRatio?: boolean;\n /**\n * Snap override: `true` / `false` forces behavior; `undefined` uses designer default.\n */\n snapToGrid?: boolean;\n /** Theme token applied as `ax-{color}-surface` on the node shape. */\n color?: AXPWorkflowSemanticColor;\n}\n\n//#endregion\n\n//#region ---- Diagram model ----\n\nexport interface AXPWorkflowDiagramModel {\n nodes: AXPWorkflowNode[];\n connectors: AXPWorkflowConnector[];\n /** Optional diagram-level metadata. */\n data?: Record<string, unknown>;\n}\n\n//#endregion\n\n//#region ---- Diagram layout ----\n\n/** Flow direction for the arranged diagram. `horizontal` = left→right, `vertical` = top→bottom. */\nexport type AXPWorkflowArrangeDirection = 'horizontal' | 'vertical';\n\n/** Cross-axis alignment within a single rank (column for horizontal, row for vertical). */\nexport type AXPWorkflowArrangeAlignment = 'start' | 'center' | 'end';\n\nexport interface AXPWorkflowArrangeDiagramOptions {\n /** Preferred start node (first column for horizontal, first row for vertical). When omitted, nodes without inbound edges are roots. */\n startNodeId?: string;\n /** Snaps arranged positions to this grid (pixels). `0` disables snapping. */\n gridSize?: number;\n /** Outer padding around the arranged area. */\n margin?: number;\n /** Gap between adjacent columns (horizontal) or rows (vertical). */\n horizontalGap?: number;\n /** Gap between siblings within a column (horizontal) or row (vertical). */\n verticalGap?: number;\n /** Primary flow direction. Defaults to `'horizontal'`. */\n direction?: AXPWorkflowArrangeDirection;\n /** Cross-axis alignment inside each rank. Defaults to `'center'`. */\n alignment?: AXPWorkflowArrangeAlignment;\n /** Top-left origin of the arranged area in model coordinates. Defaults to `{ x: margin, y: margin }`. */\n origin?: AXPWorkflowPoint;\n /** Only arrange the listed nodes (others keep their current position). */\n nodeIds?: string[];\n /** Apply barycenter ordering inside each rank to reduce crossings. Defaults to `true`. */\n reduceCrossings?: boolean;\n /** Lay each disconnected component out in its own block, stacked along the cross axis. Defaults to `true`. */\n groupDisconnected?: boolean;\n}\n\n//#endregion\n\n//#region ---- Palette (drag source definition) ----\n\nexport interface AXPWorkflowActivityPaletteItem {\n type: string;\n title: string;\n description?: string;\n icon?: string;\n shape?: AXPWorkflowNodeShape;\n size?: AXPWorkflowSize;\n /** When set (including `[]`), defines inbound ports; when omitted, one default inbound is used. */\n inboundPorts?: Omit<AXPWorkflowPort, 'id' | 'kind'>[];\n /** When set (including `[]`), defines outbound ports; when omitted, one default outbound is used. */\n outboundPorts?: Omit<AXPWorkflowPort, 'id' | 'kind'>[];\n data?: Record<string, unknown>;\n lockAspectRatio?: boolean;\n snapToGrid?: boolean;\n color?: AXPWorkflowSemanticColor;\n}\n\n//#endregion\n\n//#region ---- Template context ----\n\n/**\n * Context passed to `nodeBodyTemplate` (`NgTemplateOutlet`).\n * Supports `let-n` via `$implicit` or `let-n=\"node\"`.\n */\nexport interface AXPWorkflowNodeBodyTemplateContext {\n $implicit: AXPWorkflowNode;\n node: AXPWorkflowNode;\n}\n\n//#endregion\n\n//#region ---- Connection rules ----\n\nexport interface AXPWorkflowConnectRequest {\n sourceNodeId: string;\n sourcePortId: string;\n targetNodeId: string;\n targetPortId: string;\n model: AXPWorkflowDiagramModel;\n}\n\nexport type AXPWorkflowCanConnectFn = (request: AXPWorkflowConnectRequest) => boolean;\n\n//#endregion\n\n//#region ---- Preview routing ----\n\nexport type AXPWorkflowConnectionPreviewStyle = 'straight' | 'rounded' | 'orthogonal';\n\n/**\n * Optional routing hints for `connectorPath`. When provided, orthogonal/rounded\n * paths avoid the supplied obstacle rectangles by detouring around them.\n */\nexport interface AXPWorkflowConnectorRouteOptions {\n /** Inbound port side at the destination. When omitted, the opposite of `sourceSide` is assumed. */\n targetSide?: AXPWorkflowPortSide;\n /** Other node rectangles to bypass. Source/target nodes should be excluded. */\n obstacles?: AXPWorkflowRect[];\n /** Distance (px) the connector extends straight out of the source/target port before turning. */\n stub?: number;\n /** Extra space (px) around each obstacle when planning the route. */\n obstaclePadding?: number;\n /** Corner radius (px) used by the `rounded` style. */\n cornerRadius?: number;\n}\n\n//#endregion\n\n//#region ---- Activation (designer chrome) ----\n\nexport type AXPWorkflowDesignerActivationKind = 'canvas' | 'node' | 'port' | 'connector';\n\nexport interface AXPWorkflowDesignerActivation {\n kind: AXPWorkflowDesignerActivationKind;\n /** Node id, port id, or connector id depending on `kind`. */\n id: string;\n /** For port activation, parent node id. */\n nodeId?: string;\n}\n\n//#endregion\n","export * from './lib/platform-management.module';\n\nexport * from './lib/const';\nexport * from './lib/entities';\nexport * from './lib/features.keys';\nexport * from './lib/features/workflow-designer';\n// export * from './lib/features';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.AXPUpdaterService","I18N","normalizeCategoryIds","normalizeCategoryLabels","i1","i3"],"mappings":"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"}
1
+ {"version":3,"file":"acorex-modules-platform-management-acorex-modules-platform-management-Cbf1rlEK.mjs","sources":["../../../../libs/modules/platform-management/src/lib/const.ts","../../../../libs/modules/platform-management/src/lib/entity.provider.ts","../../../../libs/modules/platform-management/src/lib/features.keys.ts","../../../../libs/modules/platform-management/src/lib/feature-definition.provider.ts","../../../../libs/modules/platform-management/src/lib/features/menu-management/menu-customization.const.ts","../../../../libs/modules/platform-management/src/lib/features/menu-management/custom-menu.middleware.ts","../../../../libs/modules/platform-management/src/lib/features/menu-management/menu-management.service.ts","../../../../libs/modules/platform-management/src/lib/features/menu-management/components/menu-customizer-popup/menu-customizer-popup.component.ts","../../../../libs/modules/platform-management/src/lib/features/menu-management/workflows/customize-menu.workflow.ts","../../../../libs/modules/platform-management/src/lib/features/menu-management/menu-management.module.ts","../../../../libs/modules/platform-management/src/lib/features/token/token.provider.ts","../../../../libs/modules/platform-management/src/lib/entities/token/tokens.service.ts","../../../../libs/modules/platform-management/src/lib/features/token/dynamic-token.provider.ts","../../../../libs/modules/platform-management/src/lib/features/token/token-refresh.provider.ts","../../../../libs/modules/platform-management/src/lib/features/token/token.module.ts","../../../../libs/modules/platform-management/src/lib/features/updater/updater.service.ts","../../../../libs/modules/platform-management/src/lib/features/updater/updater.module.ts","../../../../libs/modules/platform-management/src/lib/manifest.ts","../../../../libs/modules/platform-management/src/lib/menu.keys.ts","../../../../libs/modules/platform-management/src/lib/permission.keys.ts","../../../../libs/modules/platform-management/src/lib/menu.provider.ts","../../../../libs/modules/platform-management/src/lib/permission-definition.provider.ts","../../../../libs/modules/platform-management/src/lib/entities/token/token.module.ts","../../../../libs/modules/platform-management/src/lib/platform-management.module.ts","../../../../libs/modules/platform-management/src/lib/entities/aggregate-definition/aggregate-definition.entity.ts","../../../../libs/modules/platform-management/src/lib/entities/schema-interface-field-map.ts","../../../../libs/modules/platform-management/src/lib/entities/command/command.entity.ts","../../../../libs/modules/platform-management/src/lib/entities/query/query.entity.ts","../../../../libs/modules/platform-management/src/lib/entities/entity-definition/index.ts","../../../../libs/modules/platform-management/src/lib/entities/interface-definition/interface-definition.entity.ts","../../../../libs/modules/platform-management/src/lib/entities/menu-definition/menu-definition.entity.ts","../../../../libs/modules/platform-management/src/lib/entities/module-definition/module-definition.entity.ts","../../../../libs/modules/platform-management/src/lib/entities/permission-definition/permission-definition.entity.ts","../../../../libs/modules/platform-management/src/lib/entities/plugin-definition/plugin-definition.entity.ts","../../../../libs/modules/platform-management/src/lib/entities/relation-definition/relation-definition.entity.ts","../../../../libs/modules/platform-management/src/lib/entities/token/token.entity.ts","../../../../libs/modules/platform-management/src/lib/entities/validation-definition/validation-definition.entity.ts","../../../../libs/modules/platform-management/src/lib/features/workflow-designer/workflow-designer.const.ts","../../../../libs/modules/platform-management/src/lib/features/workflow-designer/workflow-designer.utils.ts","../../../../libs/modules/platform-management/src/lib/features/workflow-designer/axp-workflow-designer.component.ts","../../../../libs/modules/platform-management/src/lib/features/workflow-designer/axp-workflow-designer.component.html","../../../../libs/modules/platform-management/src/lib/features/workflow-designer/axp-workflow-palette-item-drag.directive.ts","../../../../libs/modules/platform-management/src/lib/features/workflow-designer/workflow-designer.types.ts","../../../../libs/modules/platform-management/src/index.ts","../../../../libs/modules/platform-management/src/acorex-modules-platform-management.ts"],"sourcesContent":["const config = {\n i18n: 'platform-management',\n};\n\nexport const RootConfig = {\n config,\n module: {\n route: 'platform-management',\n name: 'PlatformManagement',\n title: `@${config.i18n}:module.title`,\n icon: 'fa-light fa-cogs',\n },\n entities: {\n localizationManagement: {\n name: 'Localization Management',\n title: `@${config.i18n}:localization-management.entities.localization-management.title`,\n icon: 'fa-light fa-globe',\n },\n token: {\n name: 'Tokens',\n title: `@${config.i18n}:tokens.entities.token.title`,\n icon: 'fa-light fa-object-exclude',\n },\n moduleDefinition: {\n name: 'ModuleDefinitions',\n title: `@${config.i18n}:definitions.modules.title`,\n icon: 'fa-light fa-cubes',\n },\n aggregateDefinition: {\n name: 'AggregateDefinitions',\n title: `@${config.i18n}:definitions.aggregates.title`,\n icon: 'fa-light fa-layer-group',\n },\n entityDefinition: {\n name: 'EntityDefinitions',\n title: `@${config.i18n}:definitions.entities.title`,\n icon: 'fa-light fa-database',\n },\n interfaceDefinition: {\n name: 'InterfaceDefinitions',\n title: `@${config.i18n}:definitions.interfaces.title`,\n icon: 'fa-light fa-puzzle-piece',\n },\n pluginDefinition: {\n name: 'PluginDefinitions',\n title: `@${config.i18n}:definitions.plugins.title`,\n icon: 'fa-light fa-plug',\n },\n relationDefinition: {\n name: 'RelationDefinitions',\n title: `@${config.i18n}:definitions.relations.title`,\n icon: 'fa-light fa-link',\n },\n validationDefinition: {\n name: 'ValidationDefinitions',\n title: `@${config.i18n}:definitions.validations.title`,\n icon: 'fa-light fa-check-double',\n },\n menuDefinition: {\n name: 'MenuDefinitions',\n title: `@${config.i18n}:definitions.menus.title`,\n icon: 'fa-light fa-bars',\n },\n permissionGroupDefinition: {\n name: 'PermissionGroupDefinitions',\n title: `@${config.i18n}:definitions.permissionGroups.title`,\n icon: 'fa-light fa-key',\n },\n commandDefinition: {\n name: 'Commands',\n title: `@${config.i18n}:definitions.commands.title`,\n icon: 'fa-light fa-terminal',\n },\n queryDefinition: {\n name: 'Queries',\n title: `@${config.i18n}:definitions.queries.title`,\n icon: 'fa-light fa-database',\n },\n },\n};\n","import { AXPEntity } from '@acorex/platform/common';\nimport {\n AXPEntityDefinitionLoader,\n AXPEntityDefinitionPreloader,\n AXPEntityPreloadEntity,\n} from '@acorex/platform/layout/entity';\nimport { Injectable, Injector, inject } from '@angular/core';\nimport { RootConfig } from './const';\n\n@Injectable()\nexport class AXMEntityLoader implements AXPEntityDefinitionLoader, AXPEntityDefinitionPreloader {\n preload(): AXPEntityPreloadEntity[] {\n const module = RootConfig.module.name;\n return Array.from(Object.values(RootConfig.entities)).map((entity: any) => ({\n module: module,\n entity: entity.name,\n }));\n }\n private injector = inject(Injector);\n\n async get(moduleName: string, entityName: string): Promise<AXPEntity | null> {\n if (moduleName === RootConfig.module.name) {\n return new Promise(async (resolve) => {\n switch (entityName) {\n case RootConfig.entities.token.name: {\n const { tokenEntityFactory } = await import('./entities');\n resolve(tokenEntityFactory(this.injector));\n break;\n }\n case RootConfig.entities.moduleDefinition.name: {\n const { moduleDefinitionEntityFactory } =\n await import('./entities/module-definition/module-definition.entity');\n resolve(moduleDefinitionEntityFactory(this.injector));\n break;\n }\n case RootConfig.entities.aggregateDefinition.name: {\n const { aggregateDefinitionEntityFactory } =\n await import('./entities/aggregate-definition/aggregate-definition.entity');\n resolve(aggregateDefinitionEntityFactory(this.injector));\n break;\n }\n // case RootConfig.entities.entityDefinition.name: {\n // const { entityDefinitionEntityFactory } = await import('./entities');\n // resolve(entityDefinitionEntityFactory(this.injector));\n // break;\n // }\n case RootConfig.entities.relationDefinition.name: {\n const { relationDefinitionEntityFactory } = await import('./entities');\n resolve(relationDefinitionEntityFactory(this.injector));\n break;\n }\n case RootConfig.entities.interfaceDefinition.name: {\n const { interfaceDefinitionEntityFactory } = await import('./entities');\n resolve(interfaceDefinitionEntityFactory(this.injector));\n break;\n }\n case RootConfig.entities.pluginDefinition.name: {\n const { pluginDefinitionEntityFactory } = await import('./entities');\n resolve(pluginDefinitionEntityFactory(this.injector));\n break;\n }\n case RootConfig.entities.validationDefinition.name: {\n const { validationDefinitionEntityFactory } = await import('./entities');\n resolve(validationDefinitionEntityFactory(this.injector));\n break;\n }\n case RootConfig.entities.menuDefinition.name: {\n const { menuDefinitionEntityFactory } = await import('./entities/menu-definition/menu-definition.entity');\n resolve(menuDefinitionEntityFactory(this.injector));\n break;\n }\n case RootConfig.entities.permissionGroupDefinition.name: {\n const { permissionGroupDefinitionEntityFactory } =\n await import('./entities/permission-definition/permission-definition.entity');\n resolve(permissionGroupDefinitionEntityFactory(this.injector));\n break;\n }\n case RootConfig.entities.commandDefinition.name: {\n const { commandDefinitionEntityFactory } = await import('./entities/command/command.entity');\n resolve(commandDefinitionEntityFactory(this.injector));\n break;\n }\n case RootConfig.entities.queryDefinition.name: {\n const { queryDefinitionEntityFactory } = await import('./entities/query/query.entity');\n resolve(queryDefinitionEntityFactory(this.injector));\n break;\n }\n default:\n resolve(null);\n }\n });\n }\n return null;\n }\n\n async list(): Promise<{ name: string; module: string }[]> {\n const m = RootConfig.module.name;\n return Promise.resolve(Object.values(RootConfig.entities).map((e) => ({ name: e.name, module: m })));\n }\n}\n","export const AXPPlatformManagementFeatureKeys = {\n MenuCustomization: 'PlatformManagement:Feature:menu-customization',\n AutoCheckUpdates: 'PlatformManagement:Feature:auto-check-updates',\n MaxTokens: 'PlatformManagement:Feature:max-tokens',\n} as const;\n\n","//#region ---- Imports ----\n\nimport {\n AXPFeatureDefinitionProvider,\n AXPFeatureDefinitionProviderContext,\n} from '@acorex/platform/core';\nimport { AXPPlatformManagementFeatureKeys } from './features.keys';\n\n//#endregion\n\n//#region ---- Feature Definition Provider ----\n\n/**\n * Platform Management Feature Definition Provider.\n * Provides feature definitions for the Platform Management module.\n */\nexport class AXPPlatformManagementFeatureDefinitionProvider implements AXPFeatureDefinitionProvider {\n async provide(context: AXPFeatureDefinitionProviderContext): Promise<void> {\n context.addFeature(AXPPlatformManagementFeatureKeys.MenuCustomization, {\n title: '@platform-management:features.menu-customization.title',\n description: '@platform-management:features.menu-customization.description',\n defaultValue: true,\n type: 'boolean',\n });\n\n context.addFeature(AXPPlatformManagementFeatureKeys.AutoCheckUpdates, {\n title: '@platform-management:features.auto-check-updates.title',\n description: '@platform-management:features.auto-check-updates.description',\n defaultValue: true,\n type: 'boolean',\n });\n\n context.addFeature(AXPPlatformManagementFeatureKeys.MaxTokens, {\n title: '@platform-management:features.max-tokens.title',\n description: '@platform-management:features.max-tokens.description',\n defaultValue: 100,\n type: 'number',\n interface: {\n type: 'number-editor',\n options: {\n min: 1,\n max: 1000,\n step: 1,\n },\n },\n });\n }\n}\n\n//#endregion\n\n","import { RootConfig } from '../../const';\n\n//#region ---- Menu Customization Constants ----\n\n/**\n * Setting key for menu customizations\n */\nexport const AXP_MENU_CUSTOMIZATION_KEY = 'axp.platform-management.menu-customization';\n\n/**\n * Current version of menu customization schema\n */\nexport const AXP_MENU_CUSTOMIZATION_VERSION = '1.0.0';\n\n/**\n * Default menu customization\n */\nexport const AXP_MENU_CUSTOMIZATION_DEFAULT = {\n version: AXP_MENU_CUSTOMIZATION_VERSION,\n overrides: {},\n customItems: [],\n};\n\n/**\n * Menu management feature configuration\n */\nexport const MenuManagementConfig = {\n route: 'menus',\n title: `@${RootConfig.config.i18n}:menu-management.components.menu-list.title`,\n icon: 'fa-light fa-bars',\n};\n\n//#endregion\n\n","import { AXPMenuMiddleware, AXPMenuMiddlewareContext, AXPSettingsService } from '@acorex/platform/common';\nimport { AXPPlatformScope } from '@acorex/platform/core';\nimport { inject } from '@angular/core';\nimport { AXP_MENU_CUSTOMIZATION_DEFAULT, AXP_MENU_CUSTOMIZATION_KEY } from './menu-customization.const';\nimport { AXPMenuCustomization } from './menu-customization.types';\n\n//#region ---- Custom Menu Middleware ----\n\n/**\n * Middleware that applies menu customizations using the enhanced context API\n * Applies user/tenant customizations from settings with priority support\n */\nexport class AXPCustomMenuMiddleware implements AXPMenuMiddleware {\n //#region ---- Middleware Properties ----\n\n readonly name = 'menu-customization';\n readonly priority = 100; // High priority to apply customizations early\n\n //#endregion\n\n //#region ---- Dependencies ----\n\n private settingsService = inject(AXPSettingsService);\n\n //#endregion\n\n //#region ---- Middleware Implementation ----\n\n async process(context: AXPMenuMiddlewareContext): Promise<void> {\n try {\n // Load menu customization from settings\n const customization = await this.loadCustomization();\n\n // Apply overrides to existing menu items using context API\n this.applyOverrides(context, customization);\n\n // Add custom menu items\n this.addCustomItems(context, customization);\n\n // Re-sort after applying priority overrides\n context.sort();\n } catch (error) {\n console.error('Error applying menu customizations:', error);\n }\n }\n\n //#endregion\n\n //#region ---- Private Methods ----\n\n /**\n * Load menu customization from settings\n * Merges Tenant and User scope customizations (User overrides Tenant)\n */\n private async loadCustomization(): Promise<AXPMenuCustomization> {\n try {\n // Load both scopes\n const tenantSettings = this.settingsService.scope(AXPPlatformScope.Tenant);\n const userSettings = this.settingsService.scope(AXPPlatformScope.User);\n\n const tenantCustomization = await tenantSettings.get<AXPMenuCustomization>(AXP_MENU_CUSTOMIZATION_KEY);\n const userCustomization = await userSettings.get<AXPMenuCustomization>(AXP_MENU_CUSTOMIZATION_KEY);\n\n // Merge customizations: Tenant as base, User overrides\n const merged: AXPMenuCustomization = {\n version: userCustomization?.version || tenantCustomization?.version || AXP_MENU_CUSTOMIZATION_DEFAULT.version,\n overrides: {\n ...(tenantCustomization?.overrides || {}),\n ...(userCustomization?.overrides || {}), // User overrides win\n },\n customItems: [...(tenantCustomization?.customItems || []), ...(userCustomization?.customItems || [])],\n };\n\n // Return merged result or default if both are empty\n const hasCustomizations = Object.keys(merged.overrides).length > 0 || merged.customItems.length > 0;\n return hasCustomizations ? merged : AXP_MENU_CUSTOMIZATION_DEFAULT;\n } catch (error) {\n console.error('Failed to load menu customization:', error);\n return AXP_MENU_CUSTOMIZATION_DEFAULT;\n }\n }\n\n /**\n * Apply overrides to existing menu items using enhanced context API\n */\n private applyOverrides(context: AXPMenuMiddlewareContext, customization: AXPMenuCustomization): void {\n Object.entries(customization.overrides).forEach(([menuName, override]) => {\n const finder = context.findByName(menuName);\n\n if (!finder.exists()) {\n return;\n }\n\n // Hide menu item\n if (override.hidden) {\n finder.remove();\n return;\n }\n\n // Apply priority override\n if (override.priority !== undefined) {\n finder.setPriority(override.priority);\n }\n\n // Apply property overrides\n if (override.properties) {\n finder.update(override.properties);\n }\n\n // Move to different parent\n if (override.parentName !== undefined) {\n finder.moveTo(override.parentName);\n }\n });\n }\n\n /**\n * Add custom menu items using context API\n */\n private addCustomItems(context: AXPMenuMiddlewareContext, customization: AXPMenuCustomization): void {\n if (customization.customItems && customization.customItems.length > 0) {\n context.add(...customization.customItems);\n }\n }\n\n //#endregion\n}\n\n//#endregion\n\n","import { AXTreeViewNode } from '@acorex/components/tree-view';\nimport { AXPMenuItem, AXPMenuProviderService, AXPSettingsService } from '@acorex/platform/common';\nimport { AXPPlatformScope } from '@acorex/platform/core';\nimport { AXPMenuCustomizerItem, AXPMenuCustomizerService } from '@acorex/platform/layout/components';\nimport { inject, Injectable } from '@angular/core';\nimport { cloneDeep } from 'lodash-es';\nimport { AXP_MENU_CUSTOMIZATION_DEFAULT, AXP_MENU_CUSTOMIZATION_KEY } from './menu-customization.const';\nimport { AXPMenuCustomization } from './menu-customization.types';\n\n/**\n * Builds a customization key from a scope key\n * @param scopeKey The scope key (e.g., 'edition:123', 'tenant:456')\n * @returns The full customization storage key\n */\nfunction buildCustomizationKey(scopeKey: string): string {\n return `${AXP_MENU_CUSTOMIZATION_KEY}.${scopeKey}`;\n}\n\n/**\n * Data structure for tree node combining menu item with metadata\n */\nexport interface AXPMenuTreeNodeData {\n menuItem: AXPMenuItem;\n metadata: {\n isBuiltIn: boolean;\n isCustom: boolean;\n isHidden: boolean;\n originalPriority?: number;\n originalParentName?: string;\n };\n}\n\n//#region ---- Menu Management Service ----\n\n/**\n * Constants for priority calculation\n */\nconst PRIORITY_BASE_ROOT = 0;\nconst PRIORITY_BASE_NESTED = 1000;\nconst PRIORITY_STEP = 10;\n\n@Injectable({ providedIn: 'root' })\nexport class AXPMenuManagementService extends AXPMenuCustomizerService {\n //#region ---- Dependencies ----\n\n private settingsService = inject(AXPSettingsService);\n private menuProviderService = inject(AXPMenuProviderService);\n\n //#endregion\n\n //#region ---- AXPMenuCustomizerService Interface Implementation ----\n\n /**\n * Interface implementation: Get menu tree for the given scope key\n */\n override async getMenuTree(scopeKey: string): Promise<AXTreeViewNode[]> {\n return this.getMenuTreeByKey(scopeKey);\n }\n\n /**\n * Interface implementation: Sync tree changes\n */\n override async syncTreeChanges(scopeKey: string, treeNodes: AXTreeViewNode[]): Promise<void> {\n return this.syncTreeChangesByKey(scopeKey, treeNodes);\n }\n\n /**\n * Interface implementation: Show menu item\n */\n override async showMenuItem(scopeKey: string, menuName: string): Promise<void> {\n return this.showMenuItemByKey(scopeKey, menuName);\n }\n\n /**\n * Interface implementation: Hide menu item\n */\n override async hideMenuItem(scopeKey: string, menuName: string): Promise<void> {\n return this.hideMenuItemByKey(scopeKey, menuName);\n }\n\n /**\n * Interface implementation: Add custom menu item\n */\n override async addCustomMenuItem(\n scopeKey: string,\n menuItem: AXPMenuCustomizerItem,\n parentName: string | null,\n ): Promise<void> {\n return this.addCustomMenuItemByKey(scopeKey, menuItem as AXPMenuItem, parentName);\n }\n\n /**\n * Interface implementation: Update custom menu item\n */\n override async updateCustomMenuItem(\n scopeKey: string,\n menuName: string,\n menuItem: AXPMenuCustomizerItem,\n ): Promise<void> {\n return this.updateCustomMenuItemByKey(scopeKey, menuName, menuItem as AXPMenuItem);\n }\n\n /**\n * Interface implementation: Update menu properties\n */\n override async updateMenuProperties(\n scopeKey: string,\n menuName: string,\n properties: Partial<AXPMenuCustomizerItem>,\n ): Promise<void> {\n return this.updateMenuPropertiesByKey(scopeKey, menuName, properties as Partial<AXPMenuItem>);\n }\n\n /**\n * Interface implementation: Delete custom menu item\n */\n override async deleteCustomMenuItem(scopeKey: string, menuName: string): Promise<void> {\n return this.deleteCustomMenuItemByKey(scopeKey, menuName);\n }\n\n /**\n * Interface implementation: Reset customizations\n */\n override async resetCustomizations(scopeKey: string): Promise<void> {\n return this.resetCustomizationsByKey(scopeKey);\n }\n\n //#endregion\n\n //#region ---- Scope-Based Public Methods ----\n\n /**\n * Get menu tree as AXTreeViewNode[] for ax-tree-view component (scope-based)\n */\n async getMenuTreeByScope(scope: AXPPlatformScope): Promise<AXTreeViewNode[]> {\n // Get RAW menu items WITHOUT middleware (for management purposes)\n const baseItems = await this.menuProviderService.rawItems();\n\n // Load customizations for the given scope\n const customization = await this.loadCustomization(scope);\n\n // Merge custom items with base items\n const allItems = [...baseItems, ...customization.customItems];\n\n // Apply parent overrides to restructure items BEFORE building tree\n const restructuredItems = this.applyParentOverrides(allItems, customization);\n\n // Convert to tree nodes with metadata\n return this.convertToTreeNodes(restructuredItems, customization);\n }\n\n /**\n * Sync tree changes back to customization (scope-based)\n * Called automatically when tree structure changes via drag-drop\n */\n async syncTreeChangesByScope(scope: AXPPlatformScope, treeNodes: AXTreeViewNode[]): Promise<void> {\n const customization = await this.loadCustomization(scope);\n\n // Extract and update priorities and parent relationships from tree structure\n this.updateCustomizationFromTree(treeNodes, customization);\n\n await this.saveCustomization(scope, customization);\n }\n\n /**\n * Load menu customization for a specific scope\n */\n async loadCustomization(scope: AXPPlatformScope): Promise<AXPMenuCustomization> {\n try {\n const scopedSettings = this.settingsService.scope(scope);\n const saved = await scopedSettings.get<AXPMenuCustomization>(AXP_MENU_CUSTOMIZATION_KEY);\n\n if (saved && saved.version) {\n return saved;\n }\n\n return cloneDeep(AXP_MENU_CUSTOMIZATION_DEFAULT);\n } catch {\n return cloneDeep(AXP_MENU_CUSTOMIZATION_DEFAULT);\n }\n }\n\n /**\n * Save menu customization for a specific scope\n */\n async saveCustomization(scope: AXPPlatformScope, customization: AXPMenuCustomization): Promise<void> {\n const scopedSettings = this.settingsService.scope(scope);\n await scopedSettings.set(AXP_MENU_CUSTOMIZATION_KEY, customization);\n\n // Clear menu cache to force reload\n this.menuProviderService.clearCache();\n }\n\n /**\n * Hide a menu item (scope-based)\n */\n async hideMenuItemByScope(scope: AXPPlatformScope, menuName: string): Promise<void> {\n this.validateMenuName(menuName, 'hide');\n\n const customization = await this.loadCustomization(scope);\n this.ensureOverrideExists(customization, menuName);\n customization.overrides[menuName].hidden = true;\n\n await this.saveCustomization(scope, customization);\n }\n\n /**\n * Show a menu item (scope-based)\n */\n async showMenuItemByScope(scope: AXPPlatformScope, menuName: string): Promise<void> {\n this.validateMenuName(menuName, 'show');\n\n const customization = await this.loadCustomization(scope);\n\n if (customization.overrides[menuName]) {\n delete customization.overrides[menuName].hidden;\n this.cleanupEmptyOverride(customization, menuName);\n }\n\n await this.saveCustomization(scope, customization);\n }\n\n /**\n * Update menu item priority (scope-based)\n */\n async updateMenuPriorityByScope(scope: AXPPlatformScope, menuName: string, priority: number): Promise<void> {\n this.validateMenuName(menuName, 'update priority for');\n\n const customization = await this.loadCustomization(scope);\n this.ensureOverrideExists(customization, menuName);\n customization.overrides[menuName].priority = priority;\n\n await this.saveCustomization(scope, customization);\n }\n\n /**\n * Update menu item properties (scope-based)\n */\n async updateMenuPropertiesByScope(\n scope: AXPPlatformScope,\n menuName: string,\n properties: Partial<AXPMenuItem>,\n ): Promise<void> {\n this.validateMenuName(menuName, 'update properties for');\n\n const customization = await this.loadCustomization(scope);\n this.ensureOverrideExists(customization, menuName);\n\n customization.overrides[menuName].properties = {\n ...customization.overrides[menuName].properties,\n ...properties,\n };\n\n await this.saveCustomization(scope, customization);\n }\n\n /**\n * Add custom menu item (scope-based)\n */\n async addCustomMenuItemByScope(scope: AXPPlatformScope, menuItem: AXPMenuItem, parent: any): Promise<void> {\n const customization = await this.loadCustomization(scope);\n\n // Generate unique name if not provided\n if (!menuItem.name) {\n menuItem.name = `custom-menu-${Date.now()}`;\n }\n\n customization.customItems.push(menuItem);\n\n await this.saveCustomization(scope, customization);\n }\n\n /**\n * Update custom menu item (scope-based)\n */\n async updateCustomMenuItemByScope(scope: AXPPlatformScope, menuName: string, menuItem: AXPMenuItem): Promise<void> {\n this.validateMenuName(menuName, 'update');\n\n const customization = await this.loadCustomization(scope);\n\n const index = customization.customItems.findIndex((item) => item.name === menuName);\n\n if (index === -1) {\n throw new Error(`Custom menu item '${menuName}' not found`);\n }\n\n customization.customItems[index] = menuItem;\n await this.saveCustomization(scope, customization);\n }\n\n /**\n * Delete custom menu item (scope-based)\n */\n async deleteCustomMenuItemByScope(scope: AXPPlatformScope, menuName: string): Promise<void> {\n this.validateMenuName(menuName, 'delete');\n\n const customization = await this.loadCustomization(scope);\n\n const initialLength = customization.customItems.length;\n customization.customItems = customization.customItems.filter((item) => item.name !== menuName);\n\n if (customization.customItems.length === initialLength) {\n throw new Error(`Custom menu item '${menuName}' not found`);\n }\n\n await this.saveCustomization(scope, customization);\n }\n\n /**\n * Reset all customizations for a scope (scope-based)\n */\n async resetCustomizationsByScope(scope: AXPPlatformScope): Promise<void> {\n await this.saveCustomization(scope, cloneDeep(AXP_MENU_CUSTOMIZATION_DEFAULT));\n }\n\n //#endregion\n\n //#region ---- Key-Based Public Methods ----\n\n /**\n * Get menu tree using a generic scope key (e.g., 'edition:123', 'tenant:456')\n */\n async getMenuTreeByKey(scopeKey: string): Promise<AXTreeViewNode[]> {\n // Get RAW menu items WITHOUT middleware (for management purposes)\n const baseItems = await this.menuProviderService.rawItems();\n\n // Load customizations for the given scope key\n const customization = await this.loadCustomizationByKey(scopeKey);\n\n // Merge custom items with base items\n const allItems = [...baseItems, ...customization.customItems];\n\n // Apply parent overrides to restructure items BEFORE building tree\n const restructuredItems = this.applyParentOverrides(allItems, customization);\n\n // Convert to tree nodes with metadata\n return this.convertToTreeNodes(restructuredItems, customization);\n }\n\n /**\n * Sync tree changes using a generic scope key\n */\n async syncTreeChangesByKey(scopeKey: string, treeNodes: AXTreeViewNode[]): Promise<void> {\n const customization = await this.loadCustomizationByKey(scopeKey);\n\n // Extract and update priorities and parent relationships from tree structure\n this.updateCustomizationFromTree(treeNodes, customization);\n\n await this.saveCustomizationByKey(scopeKey, customization);\n }\n\n /**\n * Load menu customization using a generic scope key\n */\n async loadCustomizationByKey(scopeKey: string): Promise<AXPMenuCustomization> {\n try {\n const storageKey = buildCustomizationKey(scopeKey);\n const scopedSettings = this.settingsService.scope(AXPPlatformScope.Tenant);\n const saved = await scopedSettings.get<AXPMenuCustomization>(storageKey);\n\n if (saved && saved.version) {\n return saved;\n }\n\n return cloneDeep(AXP_MENU_CUSTOMIZATION_DEFAULT);\n } catch {\n return cloneDeep(AXP_MENU_CUSTOMIZATION_DEFAULT);\n }\n }\n\n /**\n * Save menu customization using a generic scope key\n */\n async saveCustomizationByKey(scopeKey: string, customization: AXPMenuCustomization): Promise<void> {\n const storageKey = buildCustomizationKey(scopeKey);\n const scopedSettings = this.settingsService.scope(AXPPlatformScope.Tenant);\n await scopedSettings.set(storageKey, customization);\n\n // Clear menu cache to force reload\n this.menuProviderService.clearCache();\n }\n\n /**\n * Hide a menu item using a generic scope key\n */\n async hideMenuItemByKey(scopeKey: string, menuName: string): Promise<void> {\n this.validateMenuName(menuName, 'hide');\n\n const customization = await this.loadCustomizationByKey(scopeKey);\n this.ensureOverrideExists(customization, menuName);\n customization.overrides[menuName].hidden = true;\n\n await this.saveCustomizationByKey(scopeKey, customization);\n }\n\n /**\n * Show a menu item using a generic scope key\n */\n async showMenuItemByKey(scopeKey: string, menuName: string): Promise<void> {\n this.validateMenuName(menuName, 'show');\n\n const customization = await this.loadCustomizationByKey(scopeKey);\n\n if (customization.overrides[menuName]) {\n delete customization.overrides[menuName].hidden;\n this.cleanupEmptyOverride(customization, menuName);\n }\n\n await this.saveCustomizationByKey(scopeKey, customization);\n }\n\n /**\n * Update menu item properties using a generic scope key\n */\n async updateMenuPropertiesByKey(scopeKey: string, menuName: string, properties: Partial<AXPMenuItem>): Promise<void> {\n this.validateMenuName(menuName, 'update properties for');\n\n const customization = await this.loadCustomizationByKey(scopeKey);\n this.ensureOverrideExists(customization, menuName);\n\n customization.overrides[menuName].properties = {\n ...customization.overrides[menuName].properties,\n ...properties,\n };\n\n await this.saveCustomizationByKey(scopeKey, customization);\n }\n\n /**\n * Add custom menu item using a generic scope key\n */\n async addCustomMenuItemByKey(scopeKey: string, menuItem: AXPMenuItem, parent: any): Promise<void> {\n const customization = await this.loadCustomizationByKey(scopeKey);\n\n // Generate unique name if not provided\n if (!menuItem.name) {\n menuItem.name = `custom-menu-${Date.now()}`;\n }\n\n customization.customItems.push(menuItem);\n\n await this.saveCustomizationByKey(scopeKey, customization);\n }\n\n /**\n * Update custom menu item using a generic scope key\n */\n async updateCustomMenuItemByKey(scopeKey: string, menuName: string, menuItem: AXPMenuItem): Promise<void> {\n this.validateMenuName(menuName, 'update');\n\n const customization = await this.loadCustomizationByKey(scopeKey);\n\n const index = customization.customItems.findIndex((item) => item.name === menuName);\n\n if (index === -1) {\n throw new Error(`Custom menu item '${menuName}' not found`);\n }\n\n customization.customItems[index] = menuItem;\n await this.saveCustomizationByKey(scopeKey, customization);\n }\n\n /**\n * Delete custom menu item using a generic scope key\n */\n async deleteCustomMenuItemByKey(scopeKey: string, menuName: string): Promise<void> {\n this.validateMenuName(menuName, 'delete');\n\n const customization = await this.loadCustomizationByKey(scopeKey);\n\n const initialLength = customization.customItems.length;\n customization.customItems = customization.customItems.filter((item) => item.name !== menuName);\n\n if (customization.customItems.length === initialLength) {\n throw new Error(`Custom menu item '${menuName}' not found`);\n }\n\n await this.saveCustomizationByKey(scopeKey, customization);\n }\n\n /**\n * Reset all customizations using a generic scope key\n */\n async resetCustomizationsByKey(scopeKey: string): Promise<void> {\n await this.saveCustomizationByKey(scopeKey, cloneDeep(AXP_MENU_CUSTOMIZATION_DEFAULT));\n }\n\n //#endregion\n\n //#region ---- Private Methods ----\n\n /**\n * Apply parent overrides from customization to restructure menu items\n * This ensures the tree reflects saved parent changes (moves)\n */\n private applyParentOverrides(items: AXPMenuItem[], customization: AXPMenuCustomization): AXPMenuItem[] {\n // First, flatten all items into a map for easy lookup\n const itemMap = this.flattenMenuItems(items);\n\n // Build new structure based on effective parent relationships\n const rootItems: AXPMenuItem[] = [];\n const childrenMap = new Map<string, AXPMenuItem[]>();\n\n for (const [itemName, item] of itemMap.entries()) {\n const override = customization.overrides[itemName];\n\n // Determine effective parent (override takes precedence)\n let effectiveParent: string | null | undefined;\n if (override?.parentName !== undefined) {\n // parentName is explicitly set (could be null for root, or a parent name)\n effectiveParent = override.parentName;\n } else {\n // No override - find original parent by searching original structure\n effectiveParent = this.findOriginalParent(items, itemName);\n }\n\n if (effectiveParent === null || effectiveParent === undefined) {\n // Root level item\n rootItems.push(item);\n } else {\n // Child item - add to parent's children\n if (!childrenMap.has(effectiveParent)) {\n childrenMap.set(effectiveParent, []);\n }\n childrenMap.get(effectiveParent)!.push(item);\n }\n }\n\n // Attach children to their parents recursively\n const attachChildren = (item: AXPMenuItem) => {\n if (item.name && childrenMap.has(item.name)) {\n item.children = childrenMap.get(item.name);\n item.children?.forEach(attachChildren);\n }\n };\n\n rootItems.forEach(attachChildren);\n\n return rootItems;\n }\n\n /**\n * Find the original parent name of an item in the original structure\n * Returns undefined for root items, string for items with parents, null for not found\n */\n private findOriginalParent(\n items: AXPMenuItem[],\n targetName: string,\n currentParent?: string,\n ): string | undefined | null {\n for (const item of items) {\n if (item.name === targetName) {\n return currentParent; // undefined if root, string if has parent\n }\n if (item.children) {\n const found = this.findOriginalParent(item.children, targetName, item.name);\n if (found !== null) {\n // Found in children (could be undefined for root of subtree, or string for nested item)\n return found;\n }\n // found === null means not found in this subtree, continue searching\n }\n }\n return null; // Not found in this level or any children\n }\n\n /**\n * Convert menu items to AXTreeNode[] with metadata\n */\n private convertToTreeNodes(\n items: AXPMenuItem[],\n customization: AXPMenuCustomization,\n parentName?: string,\n ): AXTreeViewNode[] {\n const nodes = items.map((item) => {\n const itemName = item.name;\n const override = itemName ? customization.overrides[itemName] : undefined;\n const isCustom = itemName ? customization.customItems.some((ci) => ci.name === itemName) : false;\n\n // Create metadata\n const metadata = {\n isBuiltIn: !isCustom,\n isCustom,\n isHidden: override?.hidden || false,\n originalPriority: item.priority,\n originalParentName: parentName,\n };\n\n // Apply ALL overrides: priority AND properties (text, icon, description, etc.)\n const effectivePriority = override?.priority !== undefined ? override.priority : item.priority;\n const effectiveItem: AXPMenuItem = {\n ...item,\n ...override?.properties, // Apply property overrides (text, icon, description)\n priority: effectivePriority,\n };\n\n // Create tree node data with effective (overridden) values\n const nodeData: AXPMenuTreeNodeData = {\n menuItem: effectiveItem,\n metadata,\n };\n\n // Create tree node using effective (overridden) values\n const treeNode: AXTreeViewNode = {\n id: itemName || item.path || this.generateNodeId(),\n title: effectiveItem.text || effectiveItem.path || 'Unnamed',\n icon: effectiveItem.icon,\n expanded: false,\n selected: false,\n ['children']: item.children ? this.convertToTreeNodes(item.children, customization, itemName) : undefined,\n childrenCount: item.children?.length,\n data: nodeData,\n };\n\n return treeNode;\n });\n\n // Sort by priority\n nodes.sort((a, b) => {\n const aPriority = (a['data'] as AXPMenuTreeNodeData)?.menuItem.priority ?? 0;\n const bPriority = (b['data'] as AXPMenuTreeNodeData)?.menuItem.priority ?? 0;\n return aPriority - bPriority;\n });\n\n return nodes;\n }\n\n /**\n * Update customization from tree structure\n * Extracts priorities and parent relationships from tree nodes\n */\n private updateCustomizationFromTree(\n treeNodes: AXTreeViewNode[],\n customization: AXPMenuCustomization,\n parentName?: string,\n ): void {\n // Calculate base priority for this level to maintain relative ordering\n const basePriority = parentName ? PRIORITY_BASE_NESTED : PRIORITY_BASE_ROOT;\n const priorityStep = PRIORITY_STEP;\n\n treeNodes.forEach((node, index) => {\n const nodeData = (node['data'] as AXPMenuTreeNodeData) || null;\n const menuItem = nodeData?.menuItem;\n\n if (menuItem?.name) {\n this.ensureOverrideExists(customization, menuItem.name);\n\n // Calculate new priority based on current position\n const newPriority = basePriority + index * priorityStep;\n\n // Get current effective priority (considering existing overrides)\n const currentEffectivePriority =\n customization.overrides[menuItem.name]?.priority ?? nodeData.metadata.originalPriority ?? 0;\n\n // Always update priority to reflect current position in tree\n // This ensures reordering works correctly even after multiple moves\n if (newPriority !== currentEffectivePriority) {\n customization.overrides[menuItem.name].priority = newPriority;\n }\n\n // Determine current effective parent (considering existing overrides)\n const currentEffectiveParent =\n customization.overrides[menuItem.name]?.parentName ?? nodeData.metadata.originalParentName;\n\n // Update parent relationship if it changed from current effective parent\n if (parentName !== currentEffectiveParent) {\n if (parentName) {\n customization.overrides[menuItem.name].parentName = parentName;\n } else {\n // Moving to root - set to null (not undefined) so middleware will process it\n // moveTo(null) moves the item to root level\n customization.overrides[menuItem.name].parentName = null;\n }\n }\n\n // Clean up empty overrides\n this.cleanupEmptyOverride(customization, menuItem.name);\n\n // Recursively process children\n const nodeChildren = node['children'] as AXTreeViewNode[] | undefined;\n if (nodeChildren && nodeChildren.length > 0) {\n this.updateCustomizationFromTree(nodeChildren, customization, menuItem.name);\n }\n }\n });\n }\n\n /**\n * Validate menu name before operations\n */\n private validateMenuName(menuName: string, operation: string): void {\n if (!menuName) {\n throw new Error(`Menu item must have a name to be ${operation}`);\n }\n }\n\n /**\n * Ensure override object exists for a menu item\n */\n private ensureOverrideExists(customization: AXPMenuCustomization, menuName: string): void {\n if (!customization.overrides[menuName]) {\n customization.overrides[menuName] = {};\n }\n }\n\n /**\n * Clean up empty override objects\n */\n private cleanupEmptyOverride(customization: AXPMenuCustomization, menuName: string): void {\n if (Object.keys(customization.overrides[menuName] || {}).length === 0) {\n delete customization.overrides[menuName];\n }\n }\n\n /**\n * Flatten menu items recursively into a map\n */\n private flattenMenuItems(items: AXPMenuItem[]): Map<string, AXPMenuItem> {\n const itemMap = new Map<string, AXPMenuItem>();\n\n const flatten = (itemList: AXPMenuItem[]) => {\n for (const item of itemList) {\n if (item.name) {\n // Clone item without children to rebuild structure\n itemMap.set(item.name, { ...item, children: undefined });\n }\n if (item.children) {\n flatten(item.children);\n }\n }\n };\n\n flatten(items);\n return itemMap;\n }\n\n /**\n * Generate unique ID for tree nodes\n */\n private generateNodeId(): string {\n return `node-${Date.now()}-${Math.floor(Math.random() * 10000)}`;\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXTreeViewDragArea, AXTreeViewDragBehavior } from '@acorex/components/tree-view';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPActionMenuItem, AXPExecuteCommand } from '@acorex/platform/core';\nimport { AXPMenuCustomizerComponent, AXPThemeLayoutBlockComponent } from '@acorex/platform/layout/components';\nimport {\n AXPPopupLayoutBase,\n AXPPopupLayoutBaseComponent,\n AXPPopupLayoutComponent,\n} from '@acorex/platform/layout/views';\n\nimport { Component, computed, signal, viewChild, ViewEncapsulation } from '@angular/core';\n\n//#endregion\n\n//#region ---- Menu Customizer Popup Component ----\n\n/**\n * Popup wrapper for the menu customizer component.\n * Provides a popup layout with actions for managing menu customizations.\n *\n * Pass the following data when opening the popup:\n * - scopeKey: string - The scope key for menu customizations\n * - showToolbar?: boolean - Whether to show the toolbar (default: true)\n * - allowAddItems?: boolean - Whether to allow adding items (default: true)\n * - dragBehavior?: AXTreeViewDragBehavior - Drag behavior (default: 'move')\n * - dragArea?: AXTreeViewDragArea - Drag area (default: 'handler')\n */\n@Component({\n selector: 'axp-menu-customizer-popup',\n template: `\n <axp-popup-layout>\n <axp-page-content>\n @if (isReady()) {\n <axp-menu-customizer\n [scopeKey]=\"scopeKey()\"\n [showToolbar]=\"showToolbar()\"\n [allowAddItems]=\"allowAddItems()\"\n [dragBehavior]=\"dragBehavior()\"\n [dragArea]=\"dragArea()\"\n (saved)=\"onSaved()\"\n (cancelled)=\"onCancelled()\"\n ></axp-menu-customizer>\n }\n </axp-page-content>\n </axp-popup-layout>\n `,\n imports: [\n AXTranslationModule,\n AXPPopupLayoutComponent,\n AXPThemeLayoutBlockComponent,\n AXPMenuCustomizerComponent\n],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: AXPPopupLayoutBase,\n useExisting: AXPMenuCustomizerPopupComponent,\n },\n ],\n host: { class: 'axp-menu-customizer-popup' },\n})\nexport class AXPMenuCustomizerPopupComponent extends AXPPopupLayoutBaseComponent {\n //#region ---- Component State ----\n\n /** Reference to the menu customizer component */\n protected menuCustomizer = viewChild(AXPMenuCustomizerComponent);\n\n /** The scope key for menu customizations (set by popup service) */\n scopeKey = signal<string>('');\n\n /** Whether to show the toolbar */\n showToolbar = signal<boolean>(true);\n\n /** Whether to allow adding custom items */\n allowAddItems = signal<boolean>(true);\n\n /** Drag behavior for the tree view */\n dragBehavior = signal<AXTreeViewDragBehavior>('both');\n\n /** Drag area for the tree view */\n dragArea = signal<AXTreeViewDragArea>('handler');\n\n /** Whether the component is ready to render (scopeKey is set) */\n protected isReady = computed(() => this.scopeKey() !== '');\n\n //#endregion\n\n //#region ---- Lifecycle Methods ----\n\n override async ngOnInit(): Promise<void> {\n await super.ngOnInit();\n // Popup-specific initialization can go here\n }\n\n //#endregion\n\n //#region ---- UI Handlers ----\n\n /**\n * Returns the primary menu items for the popup layout.\n */\n protected override getPrimaryMenuItems(): AXPActionMenuItem[] | Promise<AXPActionMenuItem[]> {\n return [\n {\n title: '@general:actions.close.title',\n icon: 'fa-solid fa-xmark',\n command: {\n name: 'close',\n },\n },\n ];\n }\n\n /**\n * Handles when changes are saved\n */\n protected onSaved(): void {\n this.close(true);\n }\n\n /**\n * Handles when customization is cancelled\n */\n protected onCancelled(): void {\n this.close(false);\n }\n\n /**\n * Executes popup commands\n */\n override execute(command: AXPExecuteCommand): void | Promise<void> {\n if (command.name === 'close') {\n this.close(false);\n }\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPopupService } from '@acorex/components/popup';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPWorkflow, AXPWorkflowAction, AXPWorkflowContext } from '@acorex/platform/workflow';\nimport { inject, Injectable, signal } from '@angular/core';\nimport { AXPMenuCustomizerPopupComponent } from '../components/menu-customizer-popup/menu-customizer-popup.component';\n\n//#endregion\n\n//#region ---- Open Menu Customizer Action ----\n\n/**\n * Workflow action that opens the menu customizer popup.\n * Expects the context to contain:\n * - data: The entity data (must have an 'id' property)\n * - options.scopePrefix: The prefix for the scope key (e.g., 'edition', 'tenant')\n * - options.title: Optional custom title for the popup\n * - options.showToolbar: Whether to show toolbar (default: true)\n * - options.allowAddItems: Whether to allow adding items (default: true)\n * - options.dragBehavior: Drag behavior - 'none' | 'move' | 'copy' (default: 'move')\n * - options.dragArea: Drag area - 'node' | 'handler' (default: 'handler')\n */\n@Injectable()\nexport class AXMOpenMenuCustomizerAction extends AXPWorkflowAction {\n //#region ---- Dependencies ----\n\n private popupService = inject(AXPopupService);\n private translateService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- Execute ----\n\n async execute(context: AXPWorkflowContext): Promise<void> {\n // Get entity data\n const data = context.getVariable('data');\n const entityId = data?.id;\n\n if (!entityId) {\n console.error('Menu customizer requires entity data with an id property');\n context.setOutput('result', false);\n return;\n }\n\n // Get scope configuration\n const scopePrefix = context.getVariable('options.scopePrefix') || 'entity';\n const scopeKey = `${scopePrefix}:${entityId}`;\n\n // Get optional title\n const customTitle = context.getVariable('options.title');\n const defaultTitle = await this.translateService.translateAsync(\n '@platform-management:menu-management.components.menu-customizer-popup.title',\n );\n const entityTitle = data?.title || data?.name || entityId;\n const title = customTitle || `${defaultTitle} - ${entityTitle}`;\n\n // Open popup using the component from platform/layout/components\n // Pass signals to properly bind to the popup component's signal properties\n const result = await this.popupService.open(AXPMenuCustomizerPopupComponent, {\n title,\n size: 'lg',\n data: {\n scopeKey: signal(scopeKey),\n showToolbar: signal(context.getVariable('options.showToolbar') ?? true),\n allowAddItems: signal(context.getVariable('options.allowAddItems') ?? true),\n dragBehavior: signal(context.getVariable('options.dragBehavior') ?? 'both'),\n dragArea: signal(context.getVariable('options.dragArea') ?? 'handler'),\n },\n });\n\n // Set result based on popup outcome\n context.setOutput('result', result?.data === true);\n }\n\n //#endregion\n}\n\n//#endregion\n\n//#region ---- Customize Menu Workflow ----\n\n/**\n * Workflow definition for customizing menus.\n * Opens the menu customizer popup and handles the result.\n */\nexport const AXMCustomizeMenuWorkflow: AXPWorkflow = {\n startStepId: 'open-customizer',\n steps: {\n 'open-customizer': {\n action: 'open-menu-customizer',\n nextSteps: [\n {\n conditions: [{ type: 'SINGLE', expression: 'context.getOutput(\"result\") == true' }],\n nextStepId: 'show-success-toast',\n },\n ],\n },\n 'show-success-toast': {\n action: 'AXPToastAction',\n input: {\n color: 'success',\n title: '@platform-management:menu-management.messages.success.customization-saved',\n },\n },\n },\n};\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXP_MENU_CUSTOMIZER_SERVICE } from '@acorex/platform/layout/components';\nimport { AXPWorkflowModule } from '@acorex/platform/workflow';\nimport { NgModule } from '@angular/core';\nimport { AXPMenuManagementService } from './menu-management.service';\nimport { AXMCustomizeMenuWorkflow, AXMOpenMenuCustomizerAction } from './workflows/customize-menu.workflow';\n\n//#endregion\n\n//#region ---- Module ----\n\n/**\n * Module for menu management features including the menu customizer\n * and related workflows.\n */\n@NgModule({\n imports: [\n AXPWorkflowModule.forChild({\n workflows: {\n 'customize-menu': AXMCustomizeMenuWorkflow,\n },\n actions: {\n 'open-menu-customizer': AXMOpenMenuCustomizerAction,\n },\n }),\n ],\n providers: [\n {\n provide: AXP_MENU_CUSTOMIZER_SERVICE,\n useExisting: AXPMenuManagementService,\n },\n ],\n})\nexport class AXMMenuManagementModule {}\n\n//#endregion\n","import { AXPTokenDefinitionProvider } from \"@acorex/platform/common\";\n\n/**\n * Token that returns current ISO date-time string.\n */\nexport class AXMTokenProvider implements AXPTokenDefinitionProvider<string> {\n name = 'now';\n title = 'Now';\n description = 'Current date and time in ISO format';\n\n execute(): Promise<string> {\n return Promise.resolve(new Date().toISOString());\n }\n}\n\n","import { AXMEntityCrudServiceImpl } from '@acorex/platform/layout/entity';\nimport { Injectable } from '@angular/core';\nimport { RootConfig } from '../../const';\nimport { AXMTokenEntityModel } from './tokens.types';\n\nexport abstract class AXMTokensService extends AXMEntityCrudServiceImpl<\n string,\n AXMTokenEntityModel\n> { }\n\n@Injectable()\nexport class AXMTokensServiceImpl extends AXMEntityCrudServiceImpl<string, AXMTokenEntityModel> {\n constructor() {\n super(`${RootConfig.module.name}.${RootConfig.entities.token.name}`);\n }\n}\n","//#region ---- Imports ----\n\nimport { AXPTokenDefinitionProvider } from '@acorex/platform/common';\nimport { AXPExpressionEvaluatorService } from '@acorex/platform/core';\nimport { Injector } from '@angular/core';\nimport { AXMTokensService } from '../../entities/token/tokens.service';\nimport { AXMTokenEntityModel } from '../../entities/token/tokens.types';\nimport { RootConfig } from '../../const';\nimport { AXPEntityDefinitionRegistryService } from '@acorex/platform/layout/entity';\n\n//#endregion\n\n//#region ---- Factory Cache ----\n\n/**\n * Global cache for loaded token providers.\n * Cleared when token entity changes occur.\n */\nlet cachedProviders: Promise<AXPTokenDefinitionProvider[]> | null = null;\n\n/**\n * Clears the cached providers, forcing reload on next access.\n */\nexport function clearDynamicTokenProvidersCache(): void {\n cachedProviders = null;\n}\n\n//#endregion\n\n//#region ---- Factory Function ----\n\n/**\n * Factory function that loads tokens from backend and creates providers for each.\n * Uses global caching - tokens are loaded once and cached until invalidated.\n * \n * @param injector Angular injector to resolve dependencies\n * @returns Promise that resolves to an array of token providers\n */\nexport async function createDynamicTokenProviders(\n injector: Injector\n): Promise<AXPTokenDefinitionProvider[]> {\n // Return cached providers if available\n if (cachedProviders) {\n return cachedProviders;\n }\n\n // Load providers and cache the promise\n cachedProviders = loadTokenProviders(injector);\n return cachedProviders;\n}\n\n/**\n * Internal function that loads tokens from backend and creates providers.\n */\nasync function loadTokenProviders(\n injector: Injector\n): Promise<AXPTokenDefinitionProvider[]> {\n const tokensService = injector.get(AXMTokensService);\n // const entityResolver = injector.get(AXPEntityDefinitionRegistryService);\n // const tokenEntityDef = await entityResolver.exists(RootConfig.module.name, RootConfig.entities.token.name);\n // if (!tokenEntityDef) {\n // return [];\n // }\n\n try {\n // Load all tokens from backend\n const queryResult = await tokensService.query({\n skip: 0,\n take: 1000, // Load all tokens (adjust if needed)\n });\n\n if (!queryResult || !queryResult.items || queryResult.items.length === 0) {\n return [];\n }\n\n // Convert each token entity to a provider\n // Pass injector instead of expressionEvaluator to avoid circular dependency\n return queryResult.items.map((token: AXMTokenEntityModel) => {\n return createTokenProvider(token, injector);\n });\n } catch (error) {\n console.error('[DynamicTokenProvider] Failed to load tokens from backend:', error);\n throw error; // Throw error as requested\n }\n}\n\n/**\n * Creates a token provider from a token entity model.\n * Uses lazy injection for expression evaluator to avoid circular dependency.\n * Reloads token data from backend on each execution to ensure fresh data.\n */\nfunction createTokenProvider(\n token: AXMTokenEntityModel,\n injector: Injector\n): AXPTokenDefinitionProvider {\n const tokenName = token.name;\n\n return {\n name: tokenName,\n title: token.title,\n description: token.description,\n\n async execute(): Promise<any> {\n // Reload token from backend to get fresh data\n // This ensures we always have the latest token configuration\n\n // const entityResolver = injector.get(AXPEntityDefinitionRegistryService);\n // const tokenEntityDef = await entityResolver.exists(RootConfig.module.name, RootConfig.entities.token.name);\n // if (!tokenEntityDef) {\n // return;\n // }\n const tokensService = injector.get(AXMTokensService);\n let currentToken: AXMTokenEntityModel | null = null;\n\n try {\n // Try to get the token by name (assuming name is unique)\n const queryResult = await tokensService.query({\n skip: 0,\n take: 1000,\n filter: {\n field: 'name',\n operator: { type: 'equal' },\n value: tokenName,\n },\n });\n\n if (queryResult?.items && queryResult.items.length > 0) {\n currentToken = queryResult.items[0] as AXMTokenEntityModel;\n }\n } catch (error) {\n console.warn(`[DynamicTokenProvider] Failed to reload token \"${tokenName}\", using cached data:`, error);\n // Fallback to original token data if reload fails\n currentToken = token;\n }\n\n // Use reloaded token if available, otherwise fallback to original\n const tokenToUse = currentToken || token;\n\n if (!tokenToUse.expression) {\n throw new Error(`Token \"${tokenName}\" has no expression defined`);\n }\n\n // Context or Computed kind: evaluate expression. Otherwise use raw value.\n const kind = tokenToUse.kind ?? (tokenToUse as any).kind;\n const shouldEvaluate = kind === 'Context' || kind === 'Computed';\n\n if (shouldEvaluate) {\n // Evaluate the expression using expression evaluator\n try {\n const expressionEvaluator = injector.get(AXPExpressionEvaluatorService);\n return await expressionEvaluator.evaluate(tokenToUse.expression);\n } catch (error) {\n console.error(`[DynamicTokenProvider] Error evaluating token \"${tokenName}\":`, error);\n throw error;\n }\n }\n\n // Normalize dataType for static/computed value conversion\n const dataTypeValue = tokenToUse.dataType ?? (tokenToUse as any).type;\n const normalizedDataType = normalizeDataType(dataTypeValue);\n\n {\n // Static types (String, Integer, Boolean): return direct value from expression field (no evaluation)\n // Optionally convert to appropriate type\n const expressionValue = tokenToUse.expression;\n\n if (normalizedDataType === 'Integer') {\n const numValue = parseInt(expressionValue, 10);\n if (isNaN(numValue)) {\n throw new Error(`Token \"${tokenName}\" expression is not a valid integer: ${expressionValue}`);\n }\n return numValue;\n } else if (normalizedDataType === 'Boolean') {\n const lowerValue = expressionValue.toLowerCase().trim();\n if (lowerValue === 'true' || lowerValue === '1' || lowerValue === 'yes') {\n return true;\n } else if (lowerValue === 'false' || lowerValue === '0' || lowerValue === 'no') {\n return false;\n }\n throw new Error(`Token \"${tokenName}\" expression is not a valid boolean: ${expressionValue}`);\n } else if (normalizedDataType === 'Decimal') {\n const numValue = parseFloat(expressionValue);\n if (isNaN(numValue)) {\n throw new Error(`Token \"${tokenName}\" expression is not a valid decimal: ${expressionValue}`);\n }\n return numValue;\n } else if (normalizedDataType === 'DateTime') {\n const date = new Date(expressionValue);\n return isNaN(date.getTime()) ? expressionValue : date;\n } else if (normalizedDataType === 'Json') {\n try {\n return JSON.parse(expressionValue);\n } catch {\n return expressionValue;\n }\n } else {\n // String type: return as-is\n return expressionValue;\n }\n }\n },\n };\n}\n\n/** Valid token data types for value conversion */\ntype TokenDataType = 'String' | 'Integer' | 'Boolean' | 'Decimal' | 'DateTime' | 'Json';\n\n/**\n * Normalizes the dataType field to a string value.\n * Handles cases where select box widgets return objects instead of strings.\n */\nfunction normalizeDataType(dataType: any): TokenDataType {\n const validTypes: TokenDataType[] = ['String', 'Integer', 'Boolean', 'Decimal', 'DateTime', 'Json'];\n\n if (typeof dataType === 'string' && validTypes.includes(dataType as TokenDataType)) {\n return dataType as TokenDataType;\n }\n\n if (dataType && typeof dataType === 'object' && 'value' in dataType) {\n if (validTypes.includes(dataType.value as TokenDataType)) {\n return dataType.value as TokenDataType;\n }\n }\n\n const typeString = String(dataType);\n if (validTypes.includes(typeString as TokenDataType)) {\n return typeString as TokenDataType;\n }\n\n throw new Error(`Invalid dataType value: ${JSON.stringify(dataType)}. Must be one of: ${validTypes.join(', ')}`);\n}\n\n//#endregion\n\n","//#region ---- Imports ----\n\nimport { AXPTokenDefinitionService } from '@acorex/platform/common';\nimport { AXPDistributedEventListenerProvider } from '@acorex/platform/core';\nimport { Injectable, inject } from '@angular/core';\nimport { clearDynamicTokenProvidersCache } from './dynamic-token.provider';\nimport { RootConfig } from '../../const';\n\n//#endregion\n\n//#region ---- Token Refresh Event Listener ----\n\n/**\n * Event listener provider that listens to token entity changes\n * and clears the token cache when tokens are updated, inserted, or deleted.\n */\n@Injectable()\nexport class AXMTokenRefreshProvider implements AXPDistributedEventListenerProvider {\n private readonly tokenService = inject(AXPTokenDefinitionService);\n\n /**\n * Event keys to listen to for token entity changes.\n * Supports wildcard patterns for entity events.\n * Format: entity.{operation}.{ModuleName}.{EntityName}\n * Example: entity.updated.PlatformManagement.Tokens\n */\n key = `entity.*.${RootConfig.module.name}.${RootConfig.entities.token.name}`;\n\n /**\n * Executes when a token entity event occurs (inserted, updated, or deleted).\n * Clears both the token definition service cache and the dynamic providers cache.\n */\n async execute(data: any): Promise<void> {\n // Clear token definition service cache\n this.tokenService.clearDefinitionsCache();\n\n // Clear dynamic token providers cache to force reload\n clearDynamicTokenProvidersCache();\n }\n}\n\n//#endregion\n\n","//#region ---- Imports ----\n\nimport { AXP_TOKEN_DEFINITION_PROVIDER } from '@acorex/platform/common';\nimport { AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER } from '@acorex/platform/core';\nimport { provideCommandSetups } from '@acorex/platform/runtime';\nimport { NgModule, Injector } from '@angular/core';\nimport { AXMTokenProvider } from './token.provider';\nimport { createDynamicTokenProviders } from './dynamic-token.provider';\nimport { AXMTokenRefreshProvider } from './token-refresh.provider';\nimport { RootConfig } from '../../const';\n\n//#endregion\n\n//#region ---- Token Module ----\n\n/**\n * Token feature module.\n * Provides token definition providers (static and dynamic) and refresh listeners.\n */\n@NgModule({\n imports: [],\n exports: [],\n declarations: [],\n providers: [\n // Static token provider (built-in tokens)\n {\n provide: AXP_TOKEN_DEFINITION_PROVIDER,\n useClass: AXMTokenProvider,\n multi: true,\n },\n // Dynamic token provider (tokens from backend)\n {\n provide: AXP_TOKEN_DEFINITION_PROVIDER,\n useFactory: (injector: Injector) => createDynamicTokenProviders(injector),\n deps: [Injector],\n multi: true,\n },\n // Token refresh listener (clears cache on entity changes)\n {\n provide: AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER,\n useClass: AXMTokenRefreshProvider,\n multi: true,\n },\n // Execute token command\n provideCommandSetups([\n {\n key: `${RootConfig.module.name}.${RootConfig.entities.token.name}:Execute`,\n command: () => import('./commands/execute-token.command').then((c) => c.ExecuteTokenCommand),\n },\n ]),\n ],\n})\nexport class AXMTokenModule { }\n\n//#endregion\n\n","import { AXDialogService } from '@acorex/components/dialog';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { inject, Injectable, Optional } from '@angular/core';\nimport { SwUpdate } from '@angular/service-worker';\nimport { RootConfig } from '../../const';\n\n@Injectable({ providedIn: 'root' })\nexport class AXPUpdaterService {\n constructor() {\n const swUpdate = inject(SwUpdate, { optional: true });\n const dialogService = inject(AXDialogService);\n const translateService = inject(AXTranslationService);\n\n if (swUpdate?.isEnabled) {\n swUpdate.versionUpdates.subscribe((event) => {\n if (event.type === 'VERSION_READY') {\n console.log('New version available');\n const scope = RootConfig.config.i18n;\n const dialog = dialogService.open({\n icon: 'fa-regular fa-info',\n content: translateService.translateSync('updater.content', { scope: scope }),\n title: translateService.translateSync('updater.title', { scope: scope }),\n type: 'primary',\n orientation: 'horizontal',\n buttons: [\n {\n text: translateService.translateSync('updater.update', { scope: scope }),\n color: 'primary',\n onClick: async (e: any) => {\n try {\n document.location.reload();\n dialog.close();\n } catch (error) {\n console.error(error);\n }\n },\n },\n {\n text: translateService.translateSync('updater.cancel', { scope: scope }),\n color: 'default',\n autofocus: true,\n onClick: (e) => {\n dialog.close();\n },\n },\n ],\n closeButton: false,\n });\n }\n });\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { AXPUpdaterService } from './updater.service';\n\n@NgModule({\n imports: [],\n exports: [],\n declarations: [],\n providers: [AXPUpdaterService],\n})\nexport class AXMUpdaterModule {\n constructor(private updaterService: AXPUpdaterService) {}\n}\n","//#region ---- Imports ----\n\nimport { AXPModuleManifest } from '@acorex/platform/core';\nimport { RootConfig } from './const';\n\n\n//#endregion\n\n//#region ---- Manifest Definition ----\n\n/**\n * Platform Management Module Manifest.\n * Defines module metadata, features, and provider references.\n */\nexport const PlatformManagementManifest: AXPModuleManifest = {\n name: RootConfig.module.name,\n version: '1.0.0',\n title: RootConfig.module.title,\n icon: RootConfig.module.icon,\n i18n: RootConfig.config.i18n,\n\n dependencies: [\n 'SecurityManagement',\n 'ApplicationManagement',\n 'SystemInsight',\n 'TenantManagement',\n 'SubscriptionManagement',\n ],\n};\n\n//#endregion\n\n","export const AXPPlatformManagementMenuKeys = {\n AdministrationGroup: 'administration:group',\n Root: 'platform-management:menu',\n Tokens: 'platform-management:menu:tokens',\n /** Parent menu for definition entities (modules, entities, interfaces, …) */\n Definitions: 'platform-management:menu:definitions',\n Modules: 'platform-management:menu:modules',\n Interfaces: 'platform-management:menu:interfaces',\n Relations: 'platform-management:menu:relations',\n Plugins: 'platform-management:menu:plugins',\n Validations: 'platform-management:menu:validations',\n PermissionGroupDefinitions: 'platform-management:menu:permission-group-definitions',\n Commands: 'platform-management:menu:commands',\n Queries: 'platform-management:menu:queries',\n /** @deprecated Use Definitions > Entities instead */\n EntityDefinitions: 'platform-management:menu:entity-definitions',\n Glossary: 'platform-management:menu:glossary',\n UserMenuManagement: 'platform-management:user:menus',\n MenuManagement: 'platform-management:menus',\n} as const;\n\n","export const AXPPlatformManagementPermissionKeys = {\n PlatformManagement: {\n Management: 'PlatformManagement:Permission:Management',\n Administration: 'PlatformManagement:Permission:Administration',\n Token: {\n Management: 'PlatformManagement:Permission:Token.Management',\n View: 'PlatformManagement:Permission:Token.View',\n Edit: 'PlatformManagement:Permission:Token.Edit',\n Delete: 'PlatformManagement:Permission:Token.Delete',\n Create: 'PlatformManagement:Permission:Token.Create',\n },\n MenuManagement: {\n Management: 'PlatformManagement:Permission:MenuManagement.Management',\n View: 'PlatformManagement:Permission:MenuManagement.View',\n Edit: 'PlatformManagement:Permission:MenuManagement.Edit',\n Delete: 'PlatformManagement:Permission:MenuManagement.Delete',\n Create: 'PlatformManagement:Permission:MenuManagement.Create',\n },\n EntityDefinition: {\n Management: 'PlatformManagement:Permission:EntityDefinition.Management',\n View: 'PlatformManagement:Permission:EntityDefinition.View',\n Edit: 'PlatformManagement:Permission:EntityDefinition.Edit',\n Delete: 'PlatformManagement:Permission:EntityDefinition.Delete',\n Create: 'PlatformManagement:Permission:EntityDefinition.Create',\n },\n },\n};\n","import { AXPCommonMenuKeys } from '@acorex/modules/common';\nimport { AXPMenuProvider, AXPMenuProviderContext } from '@acorex/platform/common';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPEntityService } from '@acorex/platform/layout/entity';\nimport { inject } from '@angular/core';\n\nimport { RootConfig } from './const';\nimport { AXPPlatformManagementMenuKeys } from './menu.keys';\nimport { AXPPlatformManagementPermissionKeys } from './permission.keys';\n\nexport class AXMMenuProvider implements AXPMenuProvider {\n private entityService = inject(AXPEntityService);\n private sessionService = inject(AXPSessionService);\n\n async provide(context: AXPMenuProviderContext): Promise<void> {\n const scope = RootConfig.config.i18n;\n const moduleName = RootConfig.module.name;\n\n // Add Tokens and Definitions (Entities, Plugins, Interfaces, …) under Data and Content\n context.find(AXPCommonMenuKeys.DataAndContent).addItems([\n {\n name: AXPPlatformManagementMenuKeys.Tokens,\n priority: 14,\n text: `@${scope}:tokens.terms.tokens`,\n path: this.entityService.createPath(moduleName, RootConfig.entities.token.name),\n icon: RootConfig.entities.token.icon,\n policy: {\n features: [moduleName],\n permissions: [AXPPlatformManagementPermissionKeys.PlatformManagement.Token.Management],\n },\n },\n {\n name: AXPPlatformManagementMenuKeys.Definitions,\n priority: 15,\n text: `@${scope}:definitions.terms.title`,\n icon: 'fa-light fa-file-code',\n type: 'menu',\n policy: {\n features: [moduleName],\n permissions: [AXPPlatformManagementPermissionKeys.PlatformManagement.EntityDefinition.Management],\n },\n children: [\n {\n name: AXPPlatformManagementMenuKeys.Modules,\n priority: 1,\n text: `@${scope}:definitions.modules.title`,\n path: this.entityService.createPath(moduleName, RootConfig.entities.moduleDefinition.name),\n icon: RootConfig.entities.moduleDefinition.icon,\n policy: {\n features: [moduleName],\n permissions: [AXPPlatformManagementPermissionKeys.PlatformManagement.EntityDefinition.Management],\n },\n },\n {\n name: AXPPlatformManagementMenuKeys.Relations,\n priority: 2,\n text: `@${scope}:definitions.relations.title`,\n path: this.entityService.createPath(moduleName, RootConfig.entities.relationDefinition.name),\n icon: RootConfig.entities.relationDefinition.icon,\n policy: {\n features: [moduleName],\n permissions: [AXPPlatformManagementPermissionKeys.PlatformManagement.EntityDefinition.Management],\n },\n },\n {\n name: AXPPlatformManagementMenuKeys.Plugins,\n priority: 3,\n text: `@${scope}:definitions.plugins.title`,\n path: this.entityService.createPath(moduleName, RootConfig.entities.pluginDefinition.name),\n icon: RootConfig.entities.pluginDefinition.icon,\n policy: {\n features: [moduleName],\n permissions: [AXPPlatformManagementPermissionKeys.PlatformManagement.EntityDefinition.Management],\n },\n },\n {\n name: AXPPlatformManagementMenuKeys.Interfaces,\n priority: 4,\n text: `@${scope}:definitions.interfaces.title`,\n path: this.entityService.createPath(moduleName, RootConfig.entities.interfaceDefinition.name),\n icon: RootConfig.entities.interfaceDefinition.icon,\n policy: {\n features: [moduleName],\n permissions: [AXPPlatformManagementPermissionKeys.PlatformManagement.EntityDefinition.Management],\n },\n },\n {\n name: AXPPlatformManagementMenuKeys.Validations,\n priority: 5,\n text: `@${scope}:definitions.validations.title`,\n path: this.entityService.createPath(moduleName, RootConfig.entities.validationDefinition.name),\n icon: RootConfig.entities.validationDefinition.icon,\n policy: {\n features: [moduleName],\n permissions: [AXPPlatformManagementPermissionKeys.PlatformManagement.EntityDefinition.Management],\n },\n },\n {\n name: AXPPlatformManagementMenuKeys.PermissionGroupDefinitions,\n priority: 6,\n text: `@${scope}:definitions.permissionGroups.title`,\n path: this.entityService.createPath(moduleName, RootConfig.entities.permissionGroupDefinition.name),\n icon: RootConfig.entities.permissionGroupDefinition.icon,\n policy: {\n features: [moduleName],\n permissions: [AXPPlatformManagementPermissionKeys.PlatformManagement.EntityDefinition.Management],\n },\n },\n {\n name: AXPPlatformManagementMenuKeys.Commands,\n priority: 7,\n text: `@${scope}:definitions.commands.title`,\n path: this.entityService.createPath(moduleName, RootConfig.entities.commandDefinition.name),\n icon: RootConfig.entities.commandDefinition.icon,\n policy: {\n features: [moduleName],\n permissions: [AXPPlatformManagementPermissionKeys.PlatformManagement.EntityDefinition.Management],\n },\n },\n {\n name: AXPPlatformManagementMenuKeys.Queries,\n priority: 8,\n text: `@${scope}:definitions.queries.title`,\n path: this.entityService.createPath(moduleName, RootConfig.entities.queryDefinition.name),\n icon: RootConfig.entities.queryDefinition.icon,\n policy: {\n features: [moduleName],\n permissions: [AXPPlatformManagementPermissionKeys.PlatformManagement.EntityDefinition.Management],\n },\n },\n ],\n },\n ]);\n }\n}\n","import { AXTranslationService } from '@acorex/core/translation';\nimport { AXPPermissionDefinitionProvider, AXPPermissionDefinitionProviderContext } from '@acorex/platform/auth';\nimport { Injectable, Injector } from '@angular/core';\nimport { AXPPlatformManagementPermissionKeys } from './permission.keys';\nimport { AXPPlatformManagementFeatureKeys } from './features.keys';\nimport { RootConfig } from './const';\n\n@Injectable()\nexport class AXMPermissionDefinitionProvider implements AXPPermissionDefinitionProvider {\n private readonly translateService: AXTranslationService;\n\n constructor(private injector: Injector) {\n this.translateService = this.injector.get(AXTranslationService);\n }\n\n async define(context: AXPPermissionDefinitionProviderContext): Promise<void> {\n const keys = AXPPlatformManagementPermissionKeys.PlatformManagement;\n\n context.addGroup(\n RootConfig.module.name,\n await this.translateService.translateAsync('@platform-management:permissions.manage.title'),\n await this.translateService.translateAsync('@platform-management:permissions.manage.description')\n )\n //\n .addPermission(\n keys.Token.Management,\n await this.translateService.translateAsync('@platform-management:tokens.permissions.token.manage.title'),\n await this.translateService.translateAsync('@platform-management:tokens.permissions.token.manage.description')\n )\n .addChild(\n keys.Token.View,\n await this.translateService.translateAsync('@platform-management:tokens.permissions.token.view.title'),\n await this.translateService.translateAsync('@platform-management:tokens.permissions.token.view.description')\n )\n .addChild(\n keys.Token.Create,\n await this.translateService.translateAsync('@platform-management:tokens.permissions.token.create.title'),\n await this.translateService.translateAsync('@platform-management:tokens.permissions.token.create.description')\n )\n .addChild(\n keys.Token.Edit,\n await this.translateService.translateAsync('@platform-management:tokens.permissions.token.edit.title'),\n await this.translateService.translateAsync('@platform-management:tokens.permissions.token.edit.description')\n )\n .addChild(\n keys.Token.Delete,\n await this.translateService.translateAsync('@platform-management:tokens.permissions.token.delete.title'),\n await this.translateService.translateAsync('@platform-management:tokens.permissions.token.delete.description')\n )\n .endPermission()\n //\n .addPermission(\n keys.MenuManagement.Management,\n await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.manage.title'),\n await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.manage.description'),\n [AXPPlatformManagementFeatureKeys.MenuCustomization] // Require menu-customization feature\n )\n .addChild(\n keys.MenuManagement.View,\n await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.view.title'),\n await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.view.description')\n )\n .addChild(\n keys.MenuManagement.Create,\n await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.create.title'),\n await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.create.description')\n )\n .addChild(\n keys.MenuManagement.Edit,\n await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.edit.title'),\n await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.edit.description')\n )\n .addChild(\n keys.MenuManagement.Delete,\n await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.delete.title'),\n await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.delete.description')\n )\n .endPermission()\n //\n .addPermission(\n keys.EntityDefinition.Management,\n await this.translateService.translateAsync('@platform-management:entity-definitions.permissions.manage.title'),\n await this.translateService.translateAsync('@platform-management:entity-definitions.permissions.manage.description')\n )\n .addChild(\n keys.EntityDefinition.View,\n await this.translateService.translateAsync('@platform-management:entity-definitions.permissions.view.title'),\n await this.translateService.translateAsync('@platform-management:entity-definitions.permissions.view.description')\n )\n .addChild(\n keys.EntityDefinition.Create,\n await this.translateService.translateAsync('@platform-management:entity-definitions.permissions.create.title'),\n await this.translateService.translateAsync('@platform-management:entity-definitions.permissions.create.description')\n )\n .addChild(\n keys.EntityDefinition.Edit,\n await this.translateService.translateAsync('@platform-management:entity-definitions.permissions.edit.title'),\n await this.translateService.translateAsync('@platform-management:entity-definitions.permissions.edit.description')\n )\n .addChild(\n keys.EntityDefinition.Delete,\n await this.translateService.translateAsync('@platform-management:entity-definitions.permissions.delete.title'),\n await this.translateService.translateAsync('@platform-management:entity-definitions.permissions.delete.description')\n )\n .endPermission()\n //\n .endGroup();\n }\n}\n\n","import { NgModule } from '@angular/core';\nimport { AXMTokensService, AXMTokensServiceImpl } from './tokens.service';\n\n@NgModule({\n imports: [],\n exports: [],\n declarations: [],\n providers: [\n {\n provide: AXMTokensService,\n useClass: AXMTokensServiceImpl,\n },\n ],\n})\nexport class AXMTokenEntityModule { }\n","import { AXP_PERMISSION_DEFINITION_PROVIDER, AXPAuthGuard } from '@acorex/platform/auth';\nimport { AXP_MENU_MIDDLEWARE, AXP_MENU_PROVIDER } from '@acorex/platform/common';\nimport { AXP_FEATURE_DEFINITION_PROVIDER, AXP_MODULE_MANIFEST_PROVIDER } from '@acorex/platform/core';\nimport { AXP_ENTITY_DEFINITION_LOADER } from '@acorex/platform/layout/entity';\nimport { AXPRootLayoutComponent } from '@acorex/platform/themes/default';\nimport { provideCommandSetups, provideQuerySetups } from '@acorex/platform/runtime';\nimport { NgModule } from '@angular/core';\nimport { ROUTES, Routes } from '@angular/router';\nimport { AXMEntityLoader } from './entity.provider';\nimport { AXPPlatformManagementFeatureDefinitionProvider } from './feature-definition.provider';\nimport { AXPCustomMenuMiddleware } from './features/menu-management/custom-menu.middleware';\nimport { AXMMenuManagementModule } from './features/menu-management/menu-management.module';\nimport { AXMTokenModule } from './features/token/token.module';\nimport { AXMUpdaterModule } from './features/updater/updater.module';\nimport { PlatformManagementManifest } from './manifest';\nimport { AXMMenuProvider } from './menu.provider';\nimport { AXMPermissionDefinitionProvider } from './permission-definition.provider';\n\n// Entity Modules\nimport { AXMTokenEntityModule } from './entities/token/token.module';\n\n//#region ---- Routes Factory ----\n\nfunction routesFactory(): Routes {\n return [\n {\n path: ':app/platform-management/menus/:scope',\n canActivate: [AXPAuthGuard],\n loadComponent: () => AXPRootLayoutComponent,\n children: [\n {\n path: '',\n loadComponent: () =>\n import('./features/menu-management/pages/menu-list/menu-list.component').then(\n (c) => c.AXMMenuListComponent,\n ),\n data: { reuse: true },\n },\n ],\n },\n ];\n}\n\n//#endregion\n\n@NgModule({\n imports: [\n AXMUpdaterModule,\n AXMTokenModule,\n AXMMenuManagementModule,\n // Entity Modules\n AXMTokenEntityModule,\n ],\n exports: [],\n declarations: [],\n providers: [\n // Module-specific providers (not part of manifest system)\n {\n provide: AXP_MENU_MIDDLEWARE,\n useClass: AXPCustomMenuMiddleware,\n multi: true,\n },\n {\n provide: ROUTES,\n multi: true,\n useFactory: routesFactory,\n },\n // Module Manifest Provider\n {\n provide: AXP_MODULE_MANIFEST_PROVIDER,\n useValue: PlatformManagementManifest,\n multi: true,\n },\n // Provider references (now using tokens)\n {\n provide: AXP_PERMISSION_DEFINITION_PROVIDER,\n useClass: AXMPermissionDefinitionProvider,\n multi: true,\n },\n {\n provide: AXP_MENU_PROVIDER,\n useClass: AXMMenuProvider,\n multi: true,\n },\n {\n provide: AXP_ENTITY_DEFINITION_LOADER,\n useClass: AXMEntityLoader,\n multi: true,\n },\n {\n provide: AXP_FEATURE_DEFINITION_PROVIDER,\n useClass: AXPPlatformManagementFeatureDefinitionProvider,\n multi: true,\n },\n provideCommandSetups([\n {\n key: 'PlatformManagement:DataListPickEntityItem',\n command: () =>\n import('./commands/data-list-pick-entity-item.command').then((c) => c.AXPDataListPickEntityItemCommand),\n },\n ]),\n provideQuerySetups([\n {\n key: 'PlatformManagement:ListRegisteredEntities',\n loader: () =>\n import('./features/queries/list-registered-entities.query').then((c) => c.AXMListRegisteredEntitiesQuery),\n },\n {\n key: 'PlatformManagement:ListRegisteredDataSources',\n loader: () =>\n import('./features/queries/list-registered-data-sources.query').then(\n (c) => c.AXMListRegisteredDataSourcesQuery,\n ),\n },\n {\n key: 'PlatformManagement:ListPlatformNavigationForAi',\n loader: () =>\n import('./features/queries/list-platform-navigation-for-ai.query').then(\n (c) => c.AXMListPlatformNavigationForAiQuery,\n ),\n },\n ]),\n ],\n})\nexport class AXMPlatformManagementModule {}\n","import { AXDataSourceFilterOption } from '@acorex/cdk/common';\nimport {\n AXPEntity,\n AXPEntityQueryType,\n createAllQueryView,\n} from '@acorex/platform/common';\nimport {\n applyFilterArray,\n applySortArray,\n AXPModuleManifestRegistry,\n MODULE_MANIFESTS_DATASOURCE_NAME,\n type AXPQueryRequest,\n} from '@acorex/platform/core';\nimport {\n AXP_ENTITY_DEFINITION_CRUD_SERVICE,\n entityMasterCrudActions,\n type AXPEntityDefinitionCrudService,\n} from '@acorex/platform/layout/entity';\nimport { AXPWidgetsCatalog } from '@acorex/platform/layout/widget-core';\nimport { Injector } from '@angular/core';\nimport { RootConfig } from '../../const';\n\nconst I18N = '@platform-management:definitions.aggregates.detail';\n\n//#region ---- Helpers ----\n\nfunction normalizeModuleSegment(s: string): string {\n return s?.trim().toLowerCase().replace(/-/g, '') ?? '';\n}\n\nfunction countEntities(def: Record<string, unknown>): number {\n const entities = def['entities'];\n if (entities && typeof entities === 'object' && !Array.isArray(entities)) {\n return Object.keys(entities as Record<string, unknown>).length;\n }\n return 0;\n}\n\n/**\n * Reads the first `equal` / `eq` condition value for a field from a nested filter tree\n * (related list passes a wrapper with `filters: [...]`).\n */\nfunction extractEqualFilterFieldValue(\n filter: AXDataSourceFilterOption | undefined,\n field: string,\n): string | undefined {\n if (!filter) {\n return undefined;\n }\n if (filter.filters?.length) {\n for (const f of filter.filters) {\n const v = extractEqualFilterFieldValue(f, field);\n if (v !== undefined) {\n return v;\n }\n }\n return undefined;\n }\n const op = filter.operator?.type;\n if (filter.field === field && (op === 'equal' || String(op) === 'eq')) {\n const v = filter.value;\n return v != null && String(v).length > 0 ? String(v) : undefined;\n }\n return undefined;\n}\n\n//#endregion\n\nexport async function aggregateDefinitionEntityFactory(injector: Injector): Promise<AXPEntity | null> {\n const crud = injector.get(AXP_ENTITY_DEFINITION_CRUD_SERVICE) as AXPEntityDefinitionCrudService | null;\n\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.aggregateDefinition.name,\n title: RootConfig.entities.aggregateDefinition.title,\n icon: RootConfig.entities.aggregateDefinition.icon,\n formats: {\n individual: 'Aggregate Definition',\n plural: 'Aggregate Definitions',\n },\n plugins: [],\n relatedEntities: crud\n ? [\n {\n entity: `${RootConfig.module.name}.${RootConfig.entities.entityDefinition.name}`,\n title: `${I18N}.pages.entities`,\n icon: RootConfig.entities.entityDefinition.icon,\n columns: ['name', 'module', 'aggregateRootId'],\n conditions: [\n {\n name: 'aggregateRootId',\n operator: { type: 'equal' },\n value: '{{ context.eval(\"id\") }}',\n },\n ],\n layout: { type: 'page-list', position: 'after', order: 10 },\n },\n ]\n : [],\n groups: [{ id: 'overview', title: `${I18N}.pages.overview` }],\n properties: [\n {\n name: 'id',\n title: '@general:terms.common.id',\n groupId: 'overview',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text, options: { disabled: true } },\n },\n options: { filter: { advance: { enabled: true }, inline: { enabled: true } }, sort: { enabled: true } },\n },\n {\n name: 'module',\n title: `${I18N}.fields.module`,\n groupId: 'overview',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.select,\n options: {\n dataSource: MODULE_MANIFESTS_DATASOURCE_NAME,\n valueField: 'id',\n textField: 'title',\n allowSearch: true,\n hasClearButton: true,\n },\n },\n },\n options: { filter: { advance: { enabled: true }, inline: { enabled: true } }, sort: { enabled: true } },\n },\n {\n name: 'name',\n title: `${I18N}.fields.aggregate-name`,\n groupId: 'overview',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text },\n },\n validations: [{ rule: 'required' }],\n options: { filter: { advance: { enabled: true }, inline: { enabled: true } }, sort: { enabled: true } },\n },\n {\n name: 'title',\n title: '@general:terms.common.title',\n groupId: 'overview',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text },\n },\n options: { filter: { advance: { enabled: true }, inline: { enabled: true } }, sort: { enabled: true } },\n },\n {\n name: 'entityCount',\n title: `${I18N}.fields.entity-count`,\n groupId: 'overview',\n schema: {\n dataType: 'number',\n interface: { type: AXPWidgetsCatalog.text, options: { disabled: true } },\n },\n },\n ],\n columns: [{ name: 'id' }, { name: 'module' }, { name: 'name' }, { name: 'title' }, { name: 'entityCount' }],\n commands: crud\n ? {\n create: {\n execute: async (data: Record<string, unknown>) => {\n const moduleId = String(data['module'] ?? '').trim();\n const aggName = String(data['name'] ?? '').trim();\n if (!moduleId || !aggName) {\n throw new Error('Module and aggregate name are required');\n }\n const title = String(data['title'] ?? aggName).trim();\n const id = `${normalizeModuleSegment(moduleId)}.${normalizeModuleSegment(aggName)}`;\n const definition: Record<string, unknown> = {\n name: aggName,\n title,\n entities: {},\n validations: [],\n actions: [],\n };\n await crud.createAggregate(id, definition);\n return { id };\n },\n },\n update: {\n execute: async (data: Record<string, unknown>) => {\n const id = String(data['id'] ?? '').trim();\n if (!id) {\n throw new Error('Aggregate id is required');\n }\n const existing = await crud.getAggregate(id);\n if (!existing) {\n throw new Error(`Aggregate not found: ${id}`);\n }\n const definition: Record<string, unknown> = {\n ...existing,\n name: String(data['name'] ?? existing['name']).trim(),\n title: String(data['title'] ?? existing['title'] ?? '').trim(),\n };\n await crud.updateAggregate(id, definition);\n },\n },\n delete: {\n execute: async (id: string) => {\n await crud.deleteAggregate(id);\n },\n },\n }\n : undefined,\n queries: crud\n ? {\n byKey: {\n execute: async (id: string) => {\n const def = await crud.getAggregate(id);\n if (!def) {\n return null;\n }\n const parts = id.split('.');\n const moduleNorm = parts[0] ?? '';\n const modules = await crud.listModules();\n const manifestRegistry = injector.get(AXPModuleManifestRegistry);\n await manifestRegistry.initialize();\n const match =\n modules.find((m) => normalizeModuleSegment(m.name) === moduleNorm) ??\n manifestRegistry.getAll().find((m) => normalizeModuleSegment(m.name) === moduleNorm);\n const moduleId = match?.name ?? moduleNorm;\n return {\n id,\n name: def['name'],\n title: def['title'] ?? def['name'],\n module: moduleId,\n entityCount: countEntities(def),\n };\n },\n type: AXPEntityQueryType.Single,\n },\n list: {\n execute: async (request?: AXPQueryRequest) => {\n const manifestRegistry = injector.get(AXPModuleManifestRegistry);\n await manifestRegistry.initialize();\n const modules = await crud.listModules();\n const byNorm = new Map(modules.map((m) => [normalizeModuleSegment(m.name), m.name] as const));\n const manifests = manifestRegistry.getAll();\n const moduleIdFromNorm = (norm: string): string =>\n byNorm.get(norm) ??\n manifests.find((m) => normalizeModuleSegment(m.name) === norm)?.name ??\n norm;\n\n const moduleEqual = extractEqualFilterFieldValue(request?.filter, 'module');\n const list = await crud.listAggregates(moduleEqual ? { module: moduleEqual } : undefined);\n let items = list.map((row) => {\n const parts = row.id.split('.');\n const moduleNorm = parts[0] ?? '';\n const moduleId = moduleEqual ?? moduleIdFromNorm(moduleNorm);\n const def = row.definition;\n return {\n id: row.id,\n name: def['name'],\n title: def['title'] ?? def['name'],\n module: moduleId,\n entityCount: countEntities(def),\n };\n });\n if (request?.filter) {\n items = applyFilterArray(items, [request.filter], request.filter.logic ?? 'and');\n }\n if (request?.sort?.length) {\n items = applySortArray(items, request.sort);\n }\n const total = items.length;\n const skip = request?.skip ?? 0;\n const take = request?.take ?? total;\n return { items: items.slice(skip, skip + take), total };\n },\n type: AXPEntityQueryType.List,\n },\n }\n : undefined,\n interfaces: {\n master: {\n create: {\n sections: [{ id: 'overview' }],\n properties: [\n { name: 'module', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'name', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'title', layout: { positions: { lg: { colSpan: 12 } } } },\n ],\n },\n update: {\n sections: [{ id: 'overview' }],\n properties: [\n { name: 'id', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'name', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'title', layout: { positions: { lg: { colSpan: 6 } } } },\n ],\n },\n single: {\n title: '{{title}}',\n sections: [{ id: 'overview' }],\n properties: [\n { name: 'id', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'name', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'title', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'entityCount', layout: { positions: { lg: { colSpan: 4 } } } },\n ],\n actions: [],\n },\n list: {\n actions: [...entityMasterCrudActions()],\n views: [createAllQueryView()],\n },\n },\n },\n };\n\n return entityDef;\n}\n","import type { AXPInterfaceDefinitionValue } from '@acorex/platform/domain';\n\n/**\n * Maps between persisted {@link AXPInterfaceDefinitionValue} (domain: `name` + `title` + `options`)\n * and the `widget-field-configurator` form value (`type` + `options`, same as layout widget node).\n *\n * Shared by entity-definition (field rows) and any entity\n * that binds `interface` to `widget-field-configurator`.\n */\n\nconst DEFAULT_INTERFACE: AXPInterfaceDefinitionValue = {\n name: 'text',\n title: 'Text',\n options: {},\n};\n\n//#region ---- Domain ↔ form (single interface value) ----\n\n/**\n * Shape expected by `widget-field-configurator` / `AXPWidgetNode` (uses `type`, not domain `name`).\n */\nexport interface SchemaInterfaceFormValue {\n type: string;\n options: Record<string, unknown>;\n}\n\nfunction isFormShapedInterface(raw: unknown): raw is Record<string, unknown> & { type: string } {\n if (raw == null || typeof raw !== 'object' || Array.isArray(raw)) {\n return false;\n }\n const o = raw as Record<string, unknown>;\n return typeof o['type'] === 'string' && o['type'].trim() !== '' && o['name'] === undefined;\n}\n\n/**\n * Converts a stored schema interface to the form field value for `widget-field-configurator`.\n * Accepts domain shape (`name`) or already form-shaped (`type` only).\n */\nexport function widgetFieldConfiguratorValueFromInterfaceDefinition(\n iface: AXPInterfaceDefinitionValue | undefined | null,\n): SchemaInterfaceFormValue {\n if (iface == null) {\n return { type: '', options: {} };\n }\n const name = typeof iface.name === 'string' ? iface.name.trim() : '';\n if (name !== '') {\n const options =\n iface.options != null && typeof iface.options === 'object' && !Array.isArray(iface.options)\n ? { ...(iface.options as Record<string, unknown>) }\n : {};\n return { type: name, options };\n }\n if (isFormShapedInterface(iface)) {\n const options =\n iface['options'] != null &&\n typeof iface['options'] === 'object' &&\n !Array.isArray(iface['options'])\n ? { ...(iface['options'] as Record<string, unknown>) }\n : {};\n return { type: iface['type'] as string, options };\n }\n return { type: '', options: {} };\n}\n\n/**\n * Converts form output (widget node and/or legacy domain shape) to {@link AXPInterfaceDefinitionValue} for persistence.\n */\nexport function interfaceDefinitionFromWidgetFieldConfiguratorValue(\n raw: unknown,\n fallbackTitle?: string,\n): AXPInterfaceDefinitionValue {\n if (raw == null || typeof raw !== 'object' || Array.isArray(raw)) {\n return { ...DEFAULT_INTERFACE };\n }\n\n const o = raw as Record<string, unknown>;\n const nameFromType = typeof o['type'] === 'string' ? o['type'].trim() : '';\n const nameFromName = typeof o['name'] === 'string' ? o['name'].trim() : '';\n const name = nameFromType || nameFromName || DEFAULT_INTERFACE.name;\n\n const titleRaw = typeof o['title'] === 'string' ? o['title'].trim() : '';\n const title = titleRaw || fallbackTitle?.trim() || name;\n\n const opt = o['options'];\n const options =\n opt != null && typeof opt === 'object' && !Array.isArray(opt)\n ? ({ ...opt } as Record<string, unknown>)\n : {};\n\n return { name, title, options };\n}\n\n/**\n * Normalizes any interface-like value to `{ type, options }` for DataList column display\n * (`widget-field-configurator` column reads `AXPWidgetNode.type` on `rawValue`).\n */\nexport function toWidgetFieldConfiguratorColumnNode(raw: unknown): SchemaInterfaceFormValue {\n if (raw == null) {\n return { type: '', options: {} };\n }\n if (typeof raw === 'string') {\n const t = raw.trim();\n return t ? { type: t, options: {} } : { type: '', options: {} };\n }\n if (typeof raw !== 'object' || Array.isArray(raw)) {\n return { type: '', options: {} };\n }\n const o = raw as Record<string, unknown>;\n if (typeof o['type'] === 'string' && o['type'].trim() !== '') {\n const options =\n o['options'] != null && typeof o['options'] === 'object' && !Array.isArray(o['options'])\n ? { ...(o['options'] as Record<string, unknown>) }\n : {};\n return { type: o['type'].trim(), options };\n }\n if (typeof o['name'] === 'string' && o['name'].trim() !== '') {\n const name = o['name'].trim();\n const title = typeof o['title'] === 'string' ? o['title'].trim() : name;\n const opt = o['options'];\n const options =\n opt != null && typeof opt === 'object' && !Array.isArray(opt)\n ? (opt as AXPInterfaceDefinitionValue['options'])\n : undefined;\n const iface: AXPInterfaceDefinitionValue = { name, title, ...(options !== undefined ? { options } : {}) };\n return widgetFieldConfiguratorValueFromInterfaceDefinition(iface);\n }\n const nested = o['interface'];\n if (nested != null && typeof nested === 'object' && !Array.isArray(nested)) {\n return toWidgetFieldConfiguratorColumnNode(nested);\n }\n return { type: '', options: {} };\n}\n\nfunction resolveInterfaceSourceForFieldRow(row: Record<string, unknown>): unknown {\n if (row['interface'] !== undefined && row['interface'] !== null) {\n return row['interface'];\n }\n const schema = row['schema'];\n if (typeof schema === 'string') {\n return schema;\n }\n if (schema != null && typeof schema === 'object' && !Array.isArray(schema)) {\n const s = schema as Record<string, unknown>;\n if (s['interface'] !== undefined && s['interface'] !== null) {\n return s['interface'];\n }\n }\n return undefined;\n}\n\n//#endregion\n\n//#region ---- Entity field rows (DataList `fields` / nested `schema.interface`) ----\n\nfunction mapFieldRowInterfaceForForm(row: Record<string, unknown>): Record<string, unknown> {\n const source = resolveInterfaceSourceForFieldRow(row);\n if (source === undefined) {\n return row;\n }\n\n const cell = toWidgetFieldConfiguratorColumnNode(source);\n const next: Record<string, unknown> = { ...row, interface: cell };\n\n const schema = row['schema'];\n if (schema != null && typeof schema === 'object' && !Array.isArray(schema)) {\n const s = schema as Record<string, unknown>;\n if (s['interface'] != null) {\n next['schema'] = { ...s, interface: cell };\n }\n }\n\n return next;\n}\n\nfunction mapFieldRowInterfaceToDomain(row: Record<string, unknown>): Record<string, unknown> {\n const title =\n typeof row['title'] === 'string' ? row['title'] : typeof row['name'] === 'string' ? row['name'] : undefined;\n\n let next = row;\n\n if (row['interface'] != null && typeof row['interface'] === 'object' && !Array.isArray(row['interface'])) {\n next = {\n ...next,\n interface: interfaceDefinitionFromWidgetFieldConfiguratorValue(row['interface'], title),\n };\n }\n\n const schema = row['schema'];\n if (schema != null && typeof schema === 'object' && !Array.isArray(schema)) {\n const s = schema as Record<string, unknown>;\n if (s['interface'] != null && typeof s['interface'] === 'object' && !Array.isArray(s['interface'])) {\n next = {\n ...next,\n schema: {\n ...s,\n interface: interfaceDefinitionFromWidgetFieldConfiguratorValue(s['interface'], title),\n },\n };\n }\n }\n\n return next;\n}\n\n/**\n * Maps `fields` array for entity-definition master load: domain `interface` → form `type` for widget-field-configurator.\n */\nexport function mapEntityFieldRowsInterfaceForForm(rows: unknown): unknown[] {\n if (!Array.isArray(rows)) {\n return [];\n }\n return rows.map((row) => {\n if (row == null || typeof row !== 'object' || Array.isArray(row)) {\n return row;\n }\n return mapFieldRowInterfaceForForm({ ...(row as Record<string, unknown>) });\n });\n}\n\n/**\n * Maps `fields` array before entity-definition persist: form → domain `interface`.\n */\nexport function mapEntityFieldRowsInterfaceToDomain(rows: unknown): unknown[] {\n if (!Array.isArray(rows)) {\n return [];\n }\n return rows.map((row) => {\n if (row == null || typeof row !== 'object' || Array.isArray(row)) {\n return row;\n }\n return mapFieldRowInterfaceToDomain({ ...(row as Record<string, unknown>) });\n });\n}\n\n//#endregion\n","import { AXPWidgetsList } from '@acorex/modules/common';\nimport { AXPEntity, AXPEntityQueryType, createAllQueryView } from '@acorex/platform/common';\nimport { applyFilterArray, applySortArray, type AXPQueryRequest } from '@acorex/platform/core';\nimport type { AXPPropertyDefinition } from '@acorex/platform/domain';\nimport {\n AXP_ENTITY_DEFINITION_CRUD_SERVICE,\n entityMasterCrudActions,\n entityMasterEditAction,\n type AXPEntityDefinitionCrudService,\n} from '@acorex/platform/layout/entity';\n// import { sanitizeDataListRowsForPersist } from '@acorex/platform/layout/widgets';\nimport { AXPWidgetsCatalog } from '@acorex/platform/layout/widget-core';\nimport { Injector } from '@angular/core';\nimport { RootConfig } from '../../const';\nimport { mapEntityFieldRowsInterfaceForForm, mapEntityFieldRowsInterfaceToDomain } from '../schema-interface-field-map';\n\n//#region ---- Constants ----\n\nconst I18N = '@platform-management:definitions.commands.detail';\n\n//#endregion\n\n//#region ---- Entity factory ----\n\nexport async function commandDefinitionEntityFactory(injector: Injector): Promise<AXPEntity | null> {\n const crud = injector.get(AXP_ENTITY_DEFINITION_CRUD_SERVICE) as AXPEntityDefinitionCrudService | null;\n\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.commandDefinition.name,\n title: RootConfig.entities.commandDefinition.title,\n icon: RootConfig.entities.commandDefinition.icon,\n formats: {\n individual: 'Command',\n plural: 'Commands',\n },\n plugins: [\n {\n name: 'unique-fields',\n options: {\n fields: 'name',\n scope: 'global',\n },\n },\n ],\n relatedEntities: [],\n groups: [\n {\n id: 'basic-info',\n title: `${I18N}.sections.basic-info`,\n },\n {\n id: 'command-description',\n title: `${I18N}.sections.description`,\n },\n {\n id: 'catalog-metadata',\n title: `${I18N}.sections.catalog-metadata`,\n },\n {\n id: 'input-parameters',\n title: `${I18N}.sections.input-parameters`,\n },\n {\n id: 'output-parameters',\n title: `${I18N}.sections.output-parameters`,\n },\n ],\n properties: [\n {\n name: 'name',\n title: '@general:terms.common.name',\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n readonly: true,\n interface: {\n type: AXPWidgetsCatalog.text,\n options: {},\n },\n },\n validations: [{ rule: 'required' }],\n options: {\n filter: {\n inline: {\n enabled: true,\n },\n },\n sort: {\n enabled: true,\n },\n },\n },\n {\n name: 'description',\n title: '@general:terms.common.description',\n groupId: 'command-description',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.largeText,\n options: {},\n },\n },\n },\n {\n name: 'catalogTitle',\n title: `${I18N}.fields.catalog-title`,\n groupId: 'catalog-metadata',\n schema: {\n dataType: 'string',\n readonly: true,\n interface: {\n type: AXPWidgetsCatalog.text,\n options: {},\n },\n },\n },\n {\n name: 'executionMode',\n title: `${I18N}.fields.execution-mode`,\n groupId: 'catalog-metadata',\n schema: {\n dataType: 'string',\n readonly: true,\n interface: {\n type: AXPWidgetsCatalog.text,\n options: {},\n },\n },\n },\n {\n name: 'outcomesDefinitionJson',\n title: `${I18N}.fields.outcomes-definition`,\n groupId: 'catalog-metadata',\n schema: {\n dataType: 'string',\n readonly: true,\n interface: {\n type: AXPWidgetsCatalog.largeText,\n options: {},\n },\n },\n },\n {\n name: 'aiMetadataJson',\n title: `${I18N}.fields.ai-metadata`,\n groupId: 'catalog-metadata',\n schema: {\n dataType: 'string',\n readonly: true,\n interface: {\n type: AXPWidgetsCatalog.largeText,\n options: {},\n },\n },\n },\n {\n name: 'capabilities',\n title: `${I18N}.fields.capabilities`,\n groupId: 'catalog-metadata',\n schema: {\n dataType: 'string',\n readonly: true,\n interface: {\n type: AXPWidgetsCatalog.text,\n options: {},\n },\n },\n },\n {\n name: 'inputOptionDefinitions',\n title: `${I18N}.pages.input-parameters`,\n groupId: 'input-parameters',\n schema: {\n dataType: 'array',\n interface: {\n type: AXPWidgetsList.Advanced.DataList,\n options: {\n paging: false,\n showIndex: true,\n showHeader: true,\n columns: [\n { name: 'name', title: `${I18N}.fields.param-name`, width: '160px' },\n { name: 'title', title: `${I18N}.fields.param-title`, width: '200px' },\n {\n name: 'schema',\n title: `${I18N}.fields.param-schema`,\n width: '280px',\n schema: {\n name: 'interface',\n title: 'Schema',\n interface: {\n name: AXPWidgetsList.Advanced.WidgetFieldConfigurator,\n title: 'Schema',\n options: {\n fieldName: \"{{ context.eval('name') }}\",\n fieldTitle: \"{{ context.eval('title') }}\",\n },\n },\n },\n },\n { name: 'description', title: `${I18N}.fields.param-description` },\n ],\n },\n },\n },\n },\n {\n name: 'outputOptionDefinitions',\n title: `${I18N}.pages.output-parameters`,\n groupId: 'output-parameters',\n schema: {\n dataType: 'array',\n interface: {\n type: AXPWidgetsList.Advanced.DataList,\n options: {\n paging: false,\n showIndex: true,\n showHeader: true,\n columns: [\n { name: 'name', title: `${I18N}.fields.param-name`, width: '160px' },\n { name: 'title', title: `${I18N}.fields.param-title`, width: '200px' },\n {\n name: 'schema',\n title: `${I18N}.fields.param-schema`,\n width: '280px',\n schema: {\n name: 'interface',\n title: 'Schema',\n interface: {\n name: AXPWidgetsList.Advanced.WidgetFieldConfigurator,\n title: 'Schema',\n options: {\n fieldName: \"{{ context.eval('name') }}\",\n fieldTitle: \"{{ context.eval('title') }}\",\n },\n },\n },\n },\n { name: 'description', title: `${I18N}.fields.param-description` },\n ],\n },\n },\n },\n },\n ],\n columns: [\n { name: 'name' },\n { name: 'catalogTitle' },\n { name: 'description' },\n ],\n commands: crud\n ? {\n update: {\n execute: async (data: Record<string, unknown>) => {\n const id = (data['id'] as string) ?? (data['name'] as string);\n const existing = await crud.getCommand(id);\n const inputSource =\n data['inputOptionDefinitions'] !== undefined\n ? data['inputOptionDefinitions']\n : existing?.inputOptionDefinitions;\n const outputSource =\n data['outputOptionDefinitions'] !== undefined\n ? data['outputOptionDefinitions']\n : existing?.outputOptionDefinitions;\n const inputOptionDefinitions = mapEntityFieldRowsInterfaceToDomain(\n // sanitizeDataListRowsForPersist(inputSource),\n inputSource,\n ) as AXPPropertyDefinition[];\n const outputOptionDefinitions = mapEntityFieldRowsInterfaceToDomain(\n // sanitizeDataListRowsForPersist(outputSource),\n outputSource,\n ) as AXPPropertyDefinition[];\n await crud.updateCommand(id, {\n name: (data['name'] as string) ?? existing?.name ?? '',\n active: existing?.active ?? true,\n description:\n data['description'] !== undefined\n ? (data['description'] as string | undefined)\n : existing?.description,\n inputOptionDefinitions,\n outputOptionDefinitions,\n catalogTitle: existing?.catalogTitle,\n executionMode: existing?.executionMode,\n outcomesDefinitionJson: existing?.outcomesDefinitionJson,\n aiMetadataJson: existing?.aiMetadataJson,\n capabilities: existing?.capabilities,\n });\n },\n },\n }\n : undefined,\n queries: crud\n ? {\n byKey: {\n execute: async (id: string) => {\n const def = await crud.getCommand(id);\n if (!def) return null;\n return {\n id,\n name: def.name,\n description: def.description,\n catalogTitle: def.catalogTitle ?? '',\n executionMode: def.executionMode ?? '',\n outcomesDefinitionJson: def.outcomesDefinitionJson ?? '',\n aiMetadataJson: def.aiMetadataJson ?? '',\n capabilities: (def.capabilities ?? []).join(', '),\n inputOptionDefinitions: mapEntityFieldRowsInterfaceForForm(def.inputOptionDefinitions ?? []),\n outputOptionDefinitions: mapEntityFieldRowsInterfaceForForm(def.outputOptionDefinitions ?? []),\n };\n },\n type: AXPEntityQueryType.Single,\n },\n list: {\n execute: async (request?: AXPQueryRequest) => {\n const list = await crud.listCommands();\n let items = list.map(({ id, definition }) => ({\n id,\n name: definition.name,\n description: definition.description ?? '',\n catalogTitle: definition.catalogTitle ?? '',\n active: definition.active,\n aiMetadataJson: definition.aiMetadataJson ?? '',\n capabilities: (definition.capabilities ?? []).join(', '),\n inputOptionDefinitions: definition.inputOptionDefinitions ?? [],\n }));\n if (request?.filter) {\n items = applyFilterArray(items, [request.filter], request.filter.logic ?? 'and');\n }\n if (request?.sort?.length) {\n items = applySortArray(items, request.sort);\n }\n const total = items.length;\n const skip = request?.skip ?? 0;\n const take = request?.take ?? total;\n const pagedItems = items.slice(skip, skip + take);\n return { items: pagedItems, total };\n },\n type: AXPEntityQueryType.List,\n },\n }\n : undefined,\n interfaces: {\n master: {\n single: {\n title: '{{name}}',\n sections: [\n { id: 'basic-info' },\n { id: 'command-description' },\n { id: 'catalog-metadata' },\n { id: 'input-parameters' },\n { id: 'output-parameters' },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n name: 'description',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n name: 'catalogTitle',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n name: 'executionMode',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n name: 'outcomesDefinitionJson',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n name: 'aiMetadataJson',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n name: 'capabilities',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n name: 'inputOptionDefinitions',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n label: {\n visible: false,\n },\n },\n },\n {\n name: 'outputOptionDefinitions',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n label: {\n visible: false,\n },\n },\n },\n ],\n actions: [entityMasterEditAction()],\n },\n list: {\n actions: [\n ...entityMasterCrudActions({\n create: false,\n delete: false,\n view: true,\n edit: true,\n }),\n ],\n views: [createAllQueryView()],\n },\n },\n },\n };\n\n return entityDef;\n}\n\n//#endregion\n","import { AXPWidgetsList } from '@acorex/modules/common';\nimport { AXPEntity, AXPEntityQueryType, createAllQueryView } from '@acorex/platform/common';\nimport { applyFilterArray, applySortArray, type AXPQueryRequest } from '@acorex/platform/core';\nimport type { AXPPropertyDefinition } from '@acorex/platform/domain';\nimport {\n AXP_ENTITY_DEFINITION_CRUD_SERVICE,\n entityMasterCrudActions,\n entityMasterEditAction,\n type AXPEntityDefinitionCrudService,\n} from '@acorex/platform/layout/entity';\nimport { AXPWidgetsCatalog } from '@acorex/platform/layout/widget-core';\nimport { Injector } from '@angular/core';\nimport { RootConfig } from '../../const';\nimport { mapEntityFieldRowsInterfaceForForm, mapEntityFieldRowsInterfaceToDomain } from '../schema-interface-field-map';\n\n//#region ---- Constants ----\n\nconst I18N = '@platform-management:definitions.queries.detail';\n\n//#endregion\n\n//#region ---- Entity factory ----\n\nexport async function queryDefinitionEntityFactory(injector: Injector): Promise<AXPEntity | null> {\n const crud = injector.get(AXP_ENTITY_DEFINITION_CRUD_SERVICE) as AXPEntityDefinitionCrudService | null;\n\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.queryDefinition.name,\n title: RootConfig.entities.queryDefinition.title,\n icon: RootConfig.entities.queryDefinition.icon,\n formats: {\n individual: 'Query',\n plural: 'Queries',\n },\n plugins: [\n {\n name: 'unique-fields',\n options: {\n fields: 'name',\n scope: 'global',\n },\n },\n ],\n relatedEntities: [],\n groups: [\n {\n id: 'basic-info',\n title: `${I18N}.sections.basic-info`,\n },\n {\n id: 'query-description',\n title: `${I18N}.sections.description`,\n },\n {\n id: 'catalog-metadata',\n title: `${I18N}.sections.catalog-metadata`,\n },\n {\n id: 'input-parameters',\n title: `${I18N}.sections.input-parameters`,\n },\n {\n id: 'output-parameters',\n title: `${I18N}.sections.output-parameters`,\n },\n ],\n properties: [\n {\n name: 'name',\n title: '@general:terms.common.name',\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n readonly: true,\n interface: {\n type: AXPWidgetsCatalog.text,\n options: {},\n },\n },\n validations: [{ rule: 'required' }],\n options: {\n filter: {\n inline: {\n enabled: true,\n },\n },\n sort: {\n enabled: true,\n },\n },\n },\n {\n name: 'description',\n title: '@general:terms.common.description',\n groupId: 'query-description',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.largeText,\n options: {},\n },\n },\n },\n {\n name: 'catalogTitle',\n title: `${I18N}.fields.catalog-title`,\n groupId: 'catalog-metadata',\n schema: {\n dataType: 'string',\n readonly: true,\n interface: {\n type: AXPWidgetsCatalog.text,\n options: {},\n },\n },\n },\n {\n name: 'executionMode',\n title: `${I18N}.fields.execution-mode`,\n groupId: 'catalog-metadata',\n schema: {\n dataType: 'string',\n readonly: true,\n interface: {\n type: AXPWidgetsCatalog.text,\n options: {},\n },\n },\n },\n {\n name: 'capabilities',\n title: `${I18N}.fields.capabilities`,\n groupId: 'catalog-metadata',\n schema: {\n dataType: 'string',\n readonly: true,\n interface: {\n type: AXPWidgetsCatalog.text,\n options: {},\n },\n },\n },\n {\n name: 'aiMetadataJson',\n title: `${I18N}.fields.ai-metadata`,\n groupId: 'catalog-metadata',\n schema: {\n dataType: 'string',\n readonly: true,\n interface: {\n type: AXPWidgetsCatalog.largeText,\n options: {},\n },\n },\n },\n {\n name: 'inputOptionDefinitions',\n title: `${I18N}.pages.input-parameters`,\n groupId: 'input-parameters',\n schema: {\n dataType: 'array',\n interface: {\n type: AXPWidgetsList.Advanced.DataList,\n options: {\n paging: false,\n showIndex: true,\n showHeader: true,\n columns: [\n { name: 'name', title: `${I18N}.fields.param-name`, width: '160px' },\n { name: 'title', title: `${I18N}.fields.param-title`, width: '200px' },\n {\n name: 'schema',\n title: `${I18N}.fields.param-schema`,\n width: '280px',\n schema: {\n name: 'interface',\n title: 'Schema',\n interface: {\n name: AXPWidgetsList.Advanced.WidgetFieldConfigurator,\n title: 'Schema',\n options: {\n fieldName: \"{{ context.eval('name') }}\",\n fieldTitle: \"{{ context.eval('title') }}\",\n },\n },\n },\n },\n { name: 'description', title: `${I18N}.fields.param-description` },\n ],\n },\n },\n },\n },\n {\n name: 'outputOptionDefinitions',\n title: `${I18N}.pages.output-parameters`,\n groupId: 'output-parameters',\n schema: {\n dataType: 'array',\n interface: {\n type: AXPWidgetsList.Advanced.DataList,\n options: {\n paging: false,\n showIndex: true,\n showHeader: true,\n columns: [\n { name: 'name', title: `${I18N}.fields.param-name`, width: '160px' },\n { name: 'title', title: `${I18N}.fields.param-title`, width: '200px' },\n {\n name: 'schema',\n title: `${I18N}.fields.param-schema`,\n width: '280px',\n schema: {\n name: 'interface',\n title: 'Schema',\n interface: {\n name: AXPWidgetsList.Advanced.WidgetFieldConfigurator,\n title: 'Schema',\n options: {\n fieldName: \"{{ context.eval('name') }}\",\n fieldTitle: \"{{ context.eval('title') }}\",\n },\n },\n },\n },\n { name: 'description', title: `${I18N}.fields.param-description` },\n ],\n },\n },\n },\n },\n ],\n columns: [\n { name: 'name' },\n { name: 'catalogTitle' },\n { name: 'description' },\n ],\n commands: crud\n ? {\n update: {\n execute: async (data: Record<string, unknown>) => {\n const id = (data['id'] as string) ?? (data['name'] as string);\n const existing = await crud.getQuery(id);\n const inputSource =\n data['inputOptionDefinitions'] !== undefined\n ? data['inputOptionDefinitions']\n : existing?.inputOptionDefinitions;\n const outputSource =\n data['outputOptionDefinitions'] !== undefined\n ? data['outputOptionDefinitions']\n : existing?.outputOptionDefinitions;\n const inputOptionDefinitions = mapEntityFieldRowsInterfaceToDomain(\n inputSource,\n ) as AXPPropertyDefinition[];\n const outputOptionDefinitions = mapEntityFieldRowsInterfaceToDomain(\n outputSource,\n ) as AXPPropertyDefinition[];\n await crud.updateQuery(id, {\n name: (data['name'] as string) ?? existing?.name ?? '',\n active: existing?.active ?? true,\n description:\n data['description'] !== undefined\n ? (data['description'] as string | undefined)\n : existing?.description,\n inputOptionDefinitions,\n outputOptionDefinitions,\n catalogTitle: existing?.catalogTitle,\n executionMode: existing?.executionMode,\n aiMetadataJson: existing?.aiMetadataJson,\n capabilities: existing?.capabilities,\n });\n },\n },\n }\n : undefined,\n queries: crud\n ? {\n byKey: {\n execute: async (id: string) => {\n const def = await crud.getQuery(id);\n if (!def) return null;\n return {\n id,\n name: def.name,\n description: def.description,\n catalogTitle: def.catalogTitle ?? '',\n executionMode: def.executionMode ?? '',\n capabilities: (def.capabilities ?? []).join(', '),\n aiMetadataJson: def.aiMetadataJson ?? '',\n inputOptionDefinitions: mapEntityFieldRowsInterfaceForForm(def.inputOptionDefinitions ?? []),\n outputOptionDefinitions: mapEntityFieldRowsInterfaceForForm(def.outputOptionDefinitions ?? []),\n };\n },\n type: AXPEntityQueryType.Single,\n },\n list: {\n execute: async (request?: AXPQueryRequest) => {\n const list = await crud.listQueries();\n let items = list.map(({ id, definition }) => ({\n id,\n name: definition.name,\n description: definition.description ?? '',\n catalogTitle: definition.catalogTitle ?? '',\n active: definition.active,\n capabilities: (definition.capabilities ?? []).join(', '),\n aiMetadataJson: definition.aiMetadataJson ?? '',\n inputOptionDefinitions: definition.inputOptionDefinitions ?? [],\n }));\n if (request?.filter) {\n items = applyFilterArray(items, [request.filter], request.filter.logic ?? 'and');\n }\n if (request?.sort?.length) {\n items = applySortArray(items, request.sort);\n }\n const total = items.length;\n const skip = request?.skip ?? 0;\n const take = request?.take ?? total;\n const pagedItems = items.slice(skip, skip + take);\n return { items: pagedItems, total };\n },\n type: AXPEntityQueryType.List,\n },\n }\n : undefined,\n interfaces: {\n master: {\n single: {\n title: '{{name}}',\n sections: [\n { id: 'basic-info' },\n { id: 'query-description' },\n { id: 'catalog-metadata' },\n { id: 'input-parameters' },\n { id: 'output-parameters' },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n name: 'description',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n name: 'catalogTitle',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n name: 'executionMode',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n name: 'capabilities',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n name: 'aiMetadataJson',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n name: 'inputOptionDefinitions',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n label: {\n visible: false,\n },\n },\n },\n {\n name: 'outputOptionDefinitions',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n label: {\n visible: false,\n },\n },\n },\n ],\n actions: [entityMasterEditAction()],\n },\n list: {\n actions: [\n ...entityMasterCrudActions({\n create: false,\n delete: false,\n view: true,\n edit: true,\n }),\n ],\n views: [createAllQueryView()],\n },\n },\n },\n };\n\n return entityDef;\n}\n\n//#endregion\n","// export * from './entity-definition.entity';\nexport * from './entity-definitions.types';\n","import { AXPWidgetsList } from '@acorex/modules/common';\nimport { AXPEntity, AXPEntityQueryType, createAllQueryView, createQueryView } from '@acorex/platform/common';\nimport { applyFilterArray, applySortArray, type AXPQueryRequest } from '@acorex/platform/core';\nimport type { AXPInterfaceDefinition, AXPPropertyDefinition } from '@acorex/platform/domain';\nimport {\n AXP_ENTITY_DEFINITION_CRUD_SERVICE,\n entityMasterCrudActions,\n type AXPEntityDefinitionCrudService,\n} from '@acorex/platform/layout/entity';\nimport { AXPWidgetGroupEnum, AXPWidgetsCatalog } from '@acorex/platform/layout/widget-core';\nimport { Injector } from '@angular/core';\nimport { RootConfig } from '../../const';\nimport { mapEntityFieldRowsInterfaceForForm, mapEntityFieldRowsInterfaceToDomain } from '../schema-interface-field-map';\n\nconst I18N = '@platform-management:definitions.interfaces.detail';\n\nexport async function interfaceDefinitionEntityFactory(injector: Injector): Promise<AXPEntity | null> {\n const crud = injector.get(AXP_ENTITY_DEFINITION_CRUD_SERVICE) as AXPEntityDefinitionCrudService | null;\n\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.interfaceDefinition.name,\n title: RootConfig.entities.interfaceDefinition.title,\n icon: RootConfig.entities.interfaceDefinition.icon,\n formats: {\n individual: 'Interface Definition',\n plural: 'Interface Definitions',\n },\n plugins: [\n {\n name: 'computed-property',\n options: {\n fields: [\n {\n name: 'categoriesDisplay',\n title: `${I18N}.sections.categories`,\n value:\n '{{ (context.eval(\"categories\") || []).map(function(x) { return typeof x === \"string\" ? x : (x && (x.title || x.name || x)); }).filter(Boolean).join(\" - \") }}',\n group: { id: 'configuration', title: `${I18N}.sections.configuration` },\n showAs: { type: AXPWidgetsCatalog.text },\n },\n {\n name: 'groupsDisplay',\n title: `${I18N}.sections.groups`,\n value:\n '{{ (context.eval(\"groups\") || []).map(function(x) { return typeof x === \"string\" ? x : (x && (x.title || x.name || x)); }).filter(Boolean).join(\" - \") }}',\n group: { id: 'configuration', title: `${I18N}.sections.configuration` },\n showAs: { type: AXPWidgetsCatalog.text },\n },\n ],\n },\n },\n ],\n relatedEntities: [],\n groups: [\n { id: 'basic-info', title: `${I18N}.sections.basic-info` },\n { id: 'configuration', title: `${I18N}.sections.configuration` },\n { id: 'categories', title: `${I18N}.sections.categories` },\n { id: 'groups', title: `${I18N}.sections.groups` },\n { id: 'option-definitions', title: `${I18N}.pages.option-definitions` },\n ],\n properties: [\n {\n name: 'name',\n title: '@general:terms.common.name',\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text, options: { disabled: true } },\n },\n validations: [{ rule: 'required' }],\n options: {\n filter: { advance: { enabled: true }, inline: { enabled: true } },\n sort: { enabled: true },\n },\n },\n {\n name: 'title',\n title: '@general:terms.common.title',\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text, options: { disabled: true } },\n },\n options: {\n filter: { advance: { enabled: true }, inline: { enabled: true } },\n sort: { enabled: true },\n },\n },\n {\n name: 'type',\n title: `${I18N}.fields.type`,\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text, options: { disabled: true } },\n },\n },\n {\n name: 'icon',\n title: `${I18N}.fields.icon`,\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.iconChooser },\n },\n },\n {\n name: 'description',\n title: '@general:terms.common.description',\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.largeText, options: { disabled: true } },\n },\n },\n {\n name: 'categories',\n title: `${I18N}.sections.categories`,\n groupId: 'categories',\n schema: {\n dataType: 'array',\n interface: { type: AXPWidgetsList.Advanced.JsonViewer, options: { disabled: true } },\n },\n },\n {\n name: 'groups',\n title: `${I18N}.sections.groups`,\n groupId: 'groups',\n schema: {\n dataType: 'array',\n interface: { type: AXPWidgetsList.Advanced.JsonViewer, options: { disabled: true } },\n },\n },\n {\n name: 'optionDefinitions',\n title: `${I18N}.pages.option-definitions`,\n groupId: 'option-definitions',\n schema: {\n dataType: 'array',\n interface: {\n type: AXPWidgetsList.Advanced.DataList,\n options: {\n paging: false,\n showIndex: true,\n showHeader: true,\n columns: [\n { name: 'name', title: `${I18N}.fields.option-name`, width: '160px' },\n { name: 'title', title: `${I18N}.fields.option-title`, width: '200px' },\n {\n name: 'schema',\n title: `${I18N}.fields.option-schema`,\n width: '280px',\n schema: {\n name: 'interface',\n title: 'Schema',\n interface: {\n name: AXPWidgetsList.Advanced.WidgetFieldConfigurator,\n title: 'Schema',\n options: {\n fieldName: \"{{ context.eval('name') }}\",\n fieldTitle: \"{{ context.eval('title') }}\",\n },\n },\n },\n },\n { name: 'description', title: `${I18N}.fields.option-description` },\n ],\n },\n },\n },\n },\n ],\n columns: [{ name: 'name' }, { name: 'title' }],\n commands: crud\n ? {\n update: {\n execute: async (data: Record<string, unknown>) => {\n const name = (data['id'] ?? data['name']) as string;\n const existing = await crud.getInterface(name);\n const optionDefinitionsSource =\n data['optionDefinitions'] !== undefined ? data['optionDefinitions'] : existing?.optionDefinitions;\n const optionDefinitions = mapEntityFieldRowsInterfaceToDomain(\n // sanitizeDataListRowsForPersist(optionDefinitionsSource),\n optionDefinitionsSource,\n ) as AXPPropertyDefinition[];\n const definition: AXPInterfaceDefinition = existing\n ? {\n ...existing,\n ...data,\n name: (data['name'] as string) ?? existing.name,\n title: (data['title'] as string) ?? existing.title,\n optionDefinitions,\n }\n : {\n name: (data['name'] as string) ?? name,\n title: (data['title'] as string) ?? name,\n optionDefinitions,\n };\n await crud.updateInterface(name, definition);\n },\n },\n }\n : undefined,\n queries: crud\n ? {\n byKey: {\n execute: async (id: string) => {\n const def = await crud.getInterface(id);\n if (!def) return null;\n return {\n ...def,\n id: def.name,\n optionDefinitions: mapEntityFieldRowsInterfaceForForm(def.optionDefinitions),\n };\n },\n type: AXPEntityQueryType.Single,\n },\n list: {\n execute: async (request?: AXPQueryRequest) => {\n const list = await crud.listInterfaces();\n let items = list.map((x) => ({\n id: x.name,\n name: x.name,\n title: x.title ?? '',\n groups: x.groups ?? [],\n }));\n if (request?.filter) {\n items = applyFilterArray(items, [request.filter], request.filter.logic ?? 'and');\n }\n if (request?.sort?.length) {\n items = applySortArray(items, request.sort);\n }\n const total = items.length;\n const skip = request?.skip ?? 0;\n const take = request?.take ?? total;\n const pagedItems = items.slice(skip, skip + take);\n return { items: pagedItems, total };\n },\n type: AXPEntityQueryType.List,\n },\n }\n : undefined,\n interfaces: {\n master: {\n single: {\n title: '{{title}}',\n sections: [{ id: 'basic-info' }, { id: 'configuration' }, { id: 'option-definitions' }],\n properties: [\n { name: 'name', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'title', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'type', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'icon', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'description', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'categoriesDisplay', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'groupsDisplay', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'optionDefinitions', layout: { positions: { lg: { colSpan: 12 } } } },\n ],\n actions: [],\n },\n list: {\n actions: [\n ...entityMasterCrudActions({\n delete: false,\n edit: false,\n create: false,\n }),\n ],\n views: [\n createAllQueryView({ sorts: [{ name: 'title', dir: 'asc' }] }),\n createQueryView(\n AXPWidgetGroupEnum.FormElement,\n '@platform-management:definitions.interfaces.list.views.form-element',\n true,\n {\n conditions: [{ name: 'groups', operator: { type: 'contains' }, value: AXPWidgetGroupEnum.FormElement }],\n sorts: [{ name: 'title', dir: 'asc' }],\n },\n ),\n createQueryView(\n AXPWidgetGroupEnum.DashboardWidget,\n '@platform-management:definitions.interfaces.list.views.dashboard-widget',\n true,\n {\n conditions: [\n { name: 'groups', operator: { type: 'contains' }, value: AXPWidgetGroupEnum.DashboardWidget },\n ],\n sorts: [{ name: 'title', dir: 'asc' }],\n },\n ),\n createQueryView(\n AXPWidgetGroupEnum.FormTemplate,\n '@platform-management:definitions.interfaces.list.views.form-template',\n true,\n {\n conditions: [\n { name: 'groups', operator: { type: 'contains' }, value: AXPWidgetGroupEnum.FormTemplate },\n ],\n sorts: [{ name: 'title', dir: 'asc' }],\n },\n ),\n createQueryView(\n AXPWidgetGroupEnum.PropertyEditor,\n '@platform-management:definitions.interfaces.list.views.property-editor',\n true,\n {\n conditions: [\n { name: 'groups', operator: { type: 'contains' }, value: AXPWidgetGroupEnum.PropertyEditor },\n ],\n sorts: [{ name: 'title', dir: 'asc' }],\n },\n ),\n createQueryView(\n AXPWidgetGroupEnum.MetaData,\n '@platform-management:definitions.interfaces.list.views.meta-data',\n true,\n {\n conditions: [{ name: 'groups', operator: { type: 'contains' }, value: AXPWidgetGroupEnum.MetaData }],\n sorts: [{ name: 'title', dir: 'asc' }],\n },\n ),\n createQueryView(\n AXPWidgetGroupEnum.SettingWidget,\n '@platform-management:definitions.interfaces.list.views.setting-widget',\n true,\n {\n conditions: [\n { name: 'groups', operator: { type: 'contains' }, value: AXPWidgetGroupEnum.SettingWidget },\n ],\n sorts: [{ name: 'title', dir: 'asc' }],\n },\n ),\n createQueryView(\n AXPWidgetGroupEnum.EntityWidget,\n '@platform-management:definitions.interfaces.list.views.entity-widget',\n true,\n {\n conditions: [\n { name: 'groups', operator: { type: 'contains' }, value: AXPWidgetGroupEnum.EntityWidget },\n ],\n sorts: [{ name: 'title', dir: 'asc' }],\n },\n ),\n createQueryView(\n AXPWidgetGroupEnum.UtilityWidget,\n '@platform-management:definitions.interfaces.list.views.utility-widget',\n true,\n {\n conditions: [\n { name: 'groups', operator: { type: 'contains' }, value: AXPWidgetGroupEnum.UtilityWidget },\n ],\n sorts: [{ name: 'title', dir: 'asc' }],\n },\n ),\n ],\n },\n },\n },\n };\n\n return entityDef;\n}\n","import {\n AXPEntity,\n AXPEntityQueryType,\n AXPMenuProviderService,\n createAllQueryView,\n} from '@acorex/platform/common';\nimport type {\n AXPMenuDefinitionRecord,\n AXPMenuDefinitionStoredCommand,\n} from '@acorex/platform/domain';\nimport { applyFilterArray, applySortArray, type AXPQueryRequest } from '@acorex/platform/core';\nimport {\n AXP_ENTITY_DEFINITION_CRUD_SERVICE,\n entityMasterCrudActions,\n type AXPEntityDefinitionCrudService,\n} from '@acorex/platform/layout/entity';\nimport { AXPWidgetsCatalog } from '@acorex/platform/layout/widget-core';\nimport { AXPWidgetsList } from '@acorex/modules/common';\nimport { Injector } from '@angular/core';\nimport { RootConfig } from '../../const';\n\nconst I18N = '@platform-management:definitions.menus.detail';\n\nconst POLICY_STRING_LIST_DATA_LIST = {\n paging: false,\n showIndex: true,\n showHeader: true,\n commands: { add: true, edit: true, remove: true },\n} as const;\n\nconst COMMAND_KEY_VALUE_DATA_LIST = {\n paging: false,\n showIndex: true,\n showHeader: true,\n commands: { add: true, edit: true, remove: true },\n} as const;\n\n//#region ---- Mapping helpers ----\n\nfunction normalizeCategoryIds(raw: unknown): string[] | undefined {\n if (raw == null) {\n return undefined;\n }\n if (Array.isArray(raw)) {\n const ids = raw.map((x) => String(x).trim()).filter((id) => id.length > 0);\n return ids.length ? ids : undefined;\n }\n if (typeof raw === 'string') {\n const s = raw.trim();\n return s ? [s] : undefined;\n }\n return undefined;\n}\n\nfunction normalizeCategoryLabels(raw: unknown): Array<{ id: string; title?: string }> | undefined {\n if (!Array.isArray(raw) || raw.length === 0) {\n return undefined;\n }\n const out = raw\n .map((item) => {\n if (item == null || typeof item !== 'object') {\n return null;\n }\n const o = item as Record<string, unknown>;\n const id = String(o['id'] ?? '').trim();\n if (!id) {\n return null;\n }\n const title = typeof o['title'] === 'string' ? o['title'] : undefined;\n return title ? { id, title } : { id };\n })\n .filter((x): x is { id: string; title?: string } => x != null);\n return out.length ? out : undefined;\n}\n\nfunction clearMenuProviderCache(injector: Injector): void {\n try {\n injector.get(AXPMenuProviderService).clearCache();\n } catch {\n // Optional in minimal shells\n }\n}\n\nfunction stringArrayToRows(values: string[] | null | undefined): Array<{ key: string }> {\n if (!values?.length) {\n return [];\n }\n return values.map((v) => ({ key: typeof v === 'string' ? v : String(v) }));\n}\n\nfunction rowsToStringArray(rows: unknown): string[] | undefined {\n if (!Array.isArray(rows) || rows.length === 0) {\n return undefined;\n }\n const keys = rows\n .map((r) => String((r as { key?: string }).key ?? '').trim())\n .filter((k) => k.length > 0);\n return keys.length ? keys : undefined;\n}\n\nfunction recordToKeyValueRows(record: Record<string, unknown> | undefined): Array<{ key: string; value: string }> {\n if (!record) {\n return [];\n }\n return Object.entries(record).map(([key, v]) => ({\n key,\n value: typeof v === 'string' ? v : JSON.stringify(v),\n }));\n}\n\nfunction keyValueRowsToRecord(rows: unknown): Record<string, unknown> | undefined {\n if (!Array.isArray(rows) || rows.length === 0) {\n return undefined;\n }\n const out: Record<string, unknown> = {};\n for (const row of rows) {\n const r = row as { key?: string; value?: string };\n const k = String(r.key ?? '').trim();\n if (!k) {\n continue;\n }\n const raw = String(r.value ?? '');\n let parsed: unknown = raw;\n try {\n parsed = JSON.parse(raw) as unknown;\n } catch {\n parsed = raw;\n }\n out[k] = parsed;\n }\n return Object.keys(out).length ? out : undefined;\n}\n\nfunction commandToFormFields(command: AXPMenuDefinitionStoredCommand | undefined): Record<string, unknown> {\n if (!command) {\n return {\n commandKind: 'none',\n commandPath: null,\n commandNavigateExtras: [],\n commandExecuteName: null,\n commandExecuteOptions: [],\n };\n }\n if (command.kind === 'navigate') {\n return {\n commandKind: 'navigate',\n commandPath: command.path,\n commandNavigateExtras: recordToKeyValueRows(command.extras),\n commandExecuteName: null,\n commandExecuteOptions: [],\n };\n }\n return {\n commandKind: 'execute',\n commandPath: null,\n commandNavigateExtras: [],\n commandExecuteName: command.name,\n commandExecuteOptions: recordToKeyValueRows(command.options),\n };\n}\n\nfunction commandFromFormFields(data: Record<string, unknown>): AXPMenuDefinitionStoredCommand | undefined {\n const kind = String(data['commandKind'] ?? 'none');\n if (kind === 'none' || kind === '') {\n return undefined;\n }\n if (kind === 'navigate') {\n const path = String(data['commandPath'] ?? '').trim();\n if (!path) {\n return undefined;\n }\n const extras = keyValueRowsToRecord(data['commandNavigateExtras']);\n return {\n kind: 'navigate',\n navigateType: 'router',\n path,\n ...(extras ? { extras } : {}),\n };\n }\n if (kind === 'execute') {\n const name = String(data['commandExecuteName'] ?? '').trim();\n if (!name) {\n return undefined;\n }\n const options = keyValueRowsToRecord(data['commandExecuteOptions']);\n return {\n kind: 'execute',\n name,\n ...(options ? { options } : {}),\n };\n }\n return undefined;\n}\n\nfunction rowFromMenuDefinition(id: string, def: AXPMenuDefinitionRecord): Record<string, unknown> {\n const pathLiteral = String(def.path ?? '').trim();\n const useLiteralPath = pathLiteral.length > 0;\n\n const moduleRef =\n (Array.isArray(def.categoryIds) && def.categoryIds.length > 0\n ? String(def.categoryIds[0])\n : '') ||\n String(def.entityListRef?.module ?? '').trim() ||\n null;\n\n return {\n id,\n name: def.name,\n text: def.text,\n description: def.description ?? null,\n icon: def.icon ?? null,\n priority: def.priority ?? null,\n type: def.type ?? null,\n attachParentName: def.attachParentName ?? null,\n path: def.path ?? null,\n entityListModule: useLiteralPath ? null : (def.entityListRef?.module ?? null),\n entityListEntity: useLiteralPath ? null : (def.entityListRef?.entity ?? null),\n moduleRef,\n policyFeatures: stringArrayToRows(def.policyFeatures),\n policyPermissions: stringArrayToRows(def.policyPermissions),\n badgeKey: def.badgeKey ?? null,\n categoryIds: def.categoryIds,\n categories: def.categories,\n ...commandToFormFields(def.command),\n };\n}\n\nfunction menuFormToDefinition(data: Record<string, unknown>): AXPMenuDefinitionRecord {\n const name = (data['name'] as string) ?? '';\n const pathLiteral = String((data['path'] as string) ?? '').trim();\n const em = String((data['entityListModule'] as string) ?? '').trim();\n const ee = String((data['entityListEntity'] as string) ?? '').trim();\n const categoryIds = normalizeCategoryIds(data['categoryIds']);\n const categories = normalizeCategoryLabels(data['categories']);\n\n return {\n name,\n text: (data['text'] as string) ?? '',\n description: (data['description'] as string) || undefined,\n icon: (data['icon'] as string) || undefined,\n priority: typeof data['priority'] === 'number' ? data['priority'] : undefined,\n type: (data['type'] as AXPMenuDefinitionRecord['type']) ?? undefined,\n attachParentName: (data['attachParentName'] as string) || undefined,\n path: pathLiteral || undefined,\n entityListRef: !pathLiteral && em && ee ? { module: em, entity: ee } : undefined,\n policyFeatures: rowsToStringArray(data['policyFeatures']),\n policyPermissions: rowsToStringArray(data['policyPermissions']),\n badgeKey: (data['badgeKey'] as string) || undefined,\n command: commandFromFormFields(data),\n ...(categoryIds?.length ? { categoryIds } : {}),\n ...(categories?.length ? { categories } : {}),\n };\n}\n\n//#endregion\n\nexport async function menuDefinitionEntityFactory(injector: Injector): Promise<AXPEntity | null> {\n const crud = injector.get(AXP_ENTITY_DEFINITION_CRUD_SERVICE) as AXPEntityDefinitionCrudService | null;\n\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.menuDefinition.name,\n title: RootConfig.entities.menuDefinition.title,\n icon: RootConfig.entities.menuDefinition.icon,\n formats: {\n individual: 'Menu Definition',\n plural: 'Menu Definitions',\n },\n plugins: [\n {\n name: 'category',\n options: {\n categoryEntity: `${RootConfig.module.name}.${RootConfig.entities.moduleDefinition.name}`,\n allowMultiple: true,\n },\n },\n ],\n relatedEntities: [],\n groups: [\n { id: 'basic-info', title: `${I18N}.sections.basic-info` },\n { id: 'placement', title: `${I18N}.sections.placement` },\n { id: 'navigation', title: `${I18N}.sections.navigation` },\n { id: 'policy', title: `${I18N}.sections.policy` },\n { id: 'command-meta', title: `${I18N}.sections.command-meta` },\n ],\n properties: [\n {\n name: 'name',\n title: `${I18N}.fields.name`,\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text, options: {} },\n },\n validations: [{ rule: 'required' }],\n options: { filter: { advance: { enabled: true }, inline: { enabled: true } }, sort: { enabled: true } },\n },\n {\n name: 'text',\n title: `${I18N}.fields.text`,\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text, options: {} },\n },\n validations: [{ rule: 'required' }],\n options: { filter: { advance: { enabled: true }, inline: { enabled: true } }, sort: { enabled: true } },\n },\n {\n name: 'moduleRef',\n title: `${I18N}.fields.module-ref`,\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text, options: { disabled: true } },\n },\n options: { filter: { advance: { enabled: true }, inline: { enabled: true } }, sort: { enabled: true } },\n },\n {\n name: 'description',\n title: `${I18N}.fields.description`,\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.largeText, options: {} },\n },\n },\n {\n name: 'icon',\n title: `${I18N}.fields.icon`,\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.iconChooser },\n },\n },\n {\n name: 'priority',\n title: `${I18N}.fields.priority`,\n groupId: 'basic-info',\n schema: {\n dataType: 'number',\n interface: { type: AXPWidgetsCatalog.number },\n },\n options: { sort: { enabled: true } },\n },\n {\n name: 'type',\n title: `${I18N}.fields.type`,\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.select,\n options: {\n valueField: 'value',\n textField: 'title',\n dataSource: [\n { value: 'menu', title: `${I18N}.fields.type-values.menu` },\n { value: 'group', title: `${I18N}.fields.type-values.group` },\n { value: 'break', title: `${I18N}.fields.type-values.break` },\n ],\n },\n },\n },\n },\n {\n name: 'attachParentName',\n title: `${I18N}.fields.attach-parent-name`,\n groupId: 'placement',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text, options: {} },\n },\n options: { filter: { advance: { enabled: true }, inline: { enabled: true } }, sort: { enabled: true } },\n },\n {\n name: 'path',\n title: `${I18N}.fields.path`,\n groupId: 'navigation',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n options: {},\n triggers: [\n {\n event: \"{{ events.context('path') }}\",\n action: `{{ if(String(context.eval('path') ?? '').trim()) { context.set('entityListModule', null); context.set('entityListEntity', null); } }}`,\n },\n ],\n },\n },\n },\n {\n name: 'entityListModule',\n title: `${I18N}.fields.entity-list-module`,\n groupId: 'navigation',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.select,\n options: {\n allowSearch: true,\n hasClearButton: true,\n disabled: `{{ !!String(context.eval(\"path\") ?? \"\").trim() }}`,\n },\n },\n },\n },\n {\n name: 'entityListEntity',\n title: `${I18N}.fields.entity-list-entity`,\n groupId: 'navigation',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.entityDefinitionProvider,\n options: {\n allowSearch: true,\n hasClearButton: true,\n filterModuleField: 'entityListModule',\n valueFormat: 'entityName',\n disabled: `{{ !!String(context.eval(\"path\") ?? \"\").trim() || !context.eval(\"entityListModule\") }}`,\n triggers: [\n {\n event: \"{{ events.context('entityListModule') }}\",\n action: `{{ widget.refresh() }}`,\n },\n ],\n },\n },\n },\n },\n {\n name: 'policyFeatures',\n title: `${I18N}.fields.policy-features`,\n groupId: 'policy',\n schema: {\n dataType: 'array',\n interface: {\n type: AXPWidgetsList.Advanced.DataList,\n options: {\n ...POLICY_STRING_LIST_DATA_LIST,\n columns: [{ name: 'key', title: `${I18N}.fields.feature-key`, width: '100%' }],\n },\n },\n },\n },\n {\n name: 'policyPermissions',\n title: `${I18N}.fields.policy-permissions`,\n groupId: 'policy',\n schema: {\n dataType: 'array',\n interface: {\n type: AXPWidgetsList.Advanced.DataList,\n options: {\n ...POLICY_STRING_LIST_DATA_LIST,\n columns: [{ name: 'key', title: `${I18N}.fields.permission-key`, width: '100%' }],\n },\n },\n },\n },\n {\n name: 'badgeKey',\n title: `${I18N}.fields.badge-key`,\n groupId: 'command-meta',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text, options: {} },\n },\n },\n {\n name: 'commandKind',\n title: `${I18N}.fields.command-kind`,\n groupId: 'command-meta',\n schema: {\n dataType: 'string',\n defaultValue: 'none',\n interface: {\n type: AXPWidgetsCatalog.select,\n options: {\n valueField: 'value',\n textField: 'title',\n dataSource: [\n { value: 'none', title: `${I18N}.fields.command-kind-values.none` },\n { value: 'navigate', title: `${I18N}.fields.command-kind-values.navigate` },\n { value: 'execute', title: `${I18N}.fields.command-kind-values.execute` },\n ],\n },\n },\n },\n },\n {\n name: 'commandPath',\n title: `${I18N}.fields.command-path`,\n groupId: 'command-meta',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text, options: {} },\n },\n },\n {\n name: 'commandNavigateExtras',\n title: `${I18N}.fields.command-navigate-extras`,\n groupId: 'command-meta',\n schema: {\n dataType: 'array',\n interface: {\n type: AXPWidgetsList.Advanced.DataList,\n options: {\n ...COMMAND_KEY_VALUE_DATA_LIST,\n columns: [\n { name: 'key', title: `${I18N}.fields.kv-key`, width: '200px' },\n { name: 'value', title: `${I18N}.fields.kv-value`, width: '280px' },\n ],\n },\n },\n },\n },\n {\n name: 'commandExecuteName',\n title: `${I18N}.fields.command-execute-name`,\n groupId: 'command-meta',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text, options: {} },\n },\n },\n {\n name: 'commandExecuteOptions',\n title: `${I18N}.fields.command-execute-options`,\n groupId: 'command-meta',\n schema: {\n dataType: 'array',\n interface: {\n type: AXPWidgetsList.Advanced.DataList,\n options: {\n ...COMMAND_KEY_VALUE_DATA_LIST,\n columns: [\n { name: 'key', title: `${I18N}.fields.kv-key`, width: '200px' },\n { name: 'value', title: `${I18N}.fields.kv-value`, width: '280px' },\n ],\n },\n },\n },\n },\n ],\n columns: [{ name: 'name' }, { name: 'text' }, { name: 'moduleRef' }, { name: 'attachParentName' }, { name: 'path' }],\n commands: crud\n ? {\n create: {\n execute: async (data: Record<string, unknown>) => {\n const definition = menuFormToDefinition(data);\n await crud.createMenu(definition.name, definition);\n clearMenuProviderCache(injector);\n return { id: definition.name };\n },\n },\n update: {\n execute: async (data: Record<string, unknown>) => {\n const id = (data['id'] ?? data['name']) as string;\n const definition = menuFormToDefinition({ ...data, name: data['name'] ?? id });\n await crud.updateMenu(id, definition);\n clearMenuProviderCache(injector);\n },\n },\n delete: {\n execute: async (id: string) => {\n await crud.deleteMenu(id);\n clearMenuProviderCache(injector);\n },\n },\n }\n : undefined,\n queries: crud\n ? {\n byKey: {\n execute: async (id: string) => {\n const def = await crud.getMenu(id);\n if (!def) return null;\n return rowFromMenuDefinition(id, def);\n },\n type: AXPEntityQueryType.Single,\n },\n list: {\n execute: async (request?: AXPQueryRequest) => {\n const list = await crud.listMenus();\n let items = list.map(({ id, definition }) => rowFromMenuDefinition(id, definition));\n if (request?.filter) {\n items = applyFilterArray(items, [request.filter], request.filter.logic ?? 'and');\n }\n if (request?.sort?.length) {\n items = applySortArray(items, request.sort);\n }\n const total = items.length;\n const skip = request?.skip ?? 0;\n const take = request?.take ?? total;\n const pagedItems = items.slice(skip, skip + take);\n return { items: pagedItems, total };\n },\n type: AXPEntityQueryType.List,\n },\n }\n : undefined,\n interfaces: {\n master: {\n create: {\n sections: [\n { id: 'basic-info' },\n { id: 'placement' },\n { id: 'navigation' },\n { id: 'policy' },\n { id: 'command-meta' },\n ],\n properties: [\n { name: 'name', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'text', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'type', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'priority', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'description', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'icon', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'attachParentName', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'path', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'entityListModule', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'entityListEntity', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'policyFeatures', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'policyPermissions', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'badgeKey', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'commandKind', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'commandPath', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'commandNavigateExtras', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'commandExecuteName', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'commandExecuteOptions', layout: { positions: { lg: { colSpan: 12 } } } },\n ],\n },\n update: {\n sections: [\n { id: 'basic-info' },\n { id: 'placement' },\n { id: 'navigation' },\n { id: 'policy' },\n { id: 'command-meta' },\n ],\n properties: [\n { name: 'name', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'text', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'type', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'priority', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'description', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'icon', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'attachParentName', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'path', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'entityListModule', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'entityListEntity', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'policyFeatures', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'policyPermissions', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'badgeKey', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'commandKind', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'commandPath', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'commandNavigateExtras', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'commandExecuteName', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'commandExecuteOptions', layout: { positions: { lg: { colSpan: 12 } } } },\n ],\n },\n single: {\n title: '{{name}}',\n sections: [\n { id: 'basic-info' },\n { id: 'placement' },\n { id: 'navigation' },\n { id: 'policy' },\n { id: 'command-meta' },\n ],\n properties: [\n { name: 'name', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'text', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'type', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'priority', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'description', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'icon', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'attachParentName', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'path', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'entityListModule', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'entityListEntity', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'policyFeatures', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'policyPermissions', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'badgeKey', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'commandKind', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'commandPath', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'commandNavigateExtras', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'commandExecuteName', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'commandExecuteOptions', layout: { positions: { lg: { colSpan: 12 } } } },\n ],\n actions: [],\n },\n list: {\n actions: [...entityMasterCrudActions()],\n views: [createAllQueryView()],\n },\n },\n },\n };\n\n return entityDef;\n}\n","import {\n AXPEntity,\n AXPEntityQueryType,\n createAllQueryView,\n} from '@acorex/platform/common';\nimport { applyFilterArray, applySortArray, AXPModuleManifestRegistry, type AXPQueryRequest } from '@acorex/platform/core';\nimport {\n AXP_ENTITY_DEFINITION_CRUD_SERVICE,\n entityMasterCrudActions,\n type AXPEntityDefinitionCrudService,\n} from '@acorex/platform/layout/entity';\nimport { AXPWidgetsCatalog } from '@acorex/platform/layout/widget-core';\nimport { AXPWidgetsList } from '@acorex/modules/common';\nimport type { AXPRelationDefinition } from '@acorex/platform/domain';\nimport { Injector } from '@angular/core';\nimport { RootConfig } from '../../const';\n\nconst I18N = '@platform-management:definitions.modules.detail';\n\ninterface ModuleDefinitionRow {\n id: string;\n name: string;\n title: string;\n icon?: string;\n entityCount?: number;\n featureCount?: number;\n relationCount?: number;\n entities?: Array<{ id: string; name: string; title: string }>;\n features?: Array<{ name: string; key: string; title: string; defaultValue: unknown }>;\n relations?: Array<{ id: string; source: string; target: string; type: string; kind: string }>;\n}\n\nfunction relationToRow(id: string, relation: AXPRelationDefinition): {\n id: string;\n source: string;\n target: string;\n type: string;\n kind: string;\n} {\n return {\n id,\n source: `${relation.source.aggregate}.${relation.source.entity}.${relation.source.key}`,\n target: `${relation.target.aggregate}.${relation.target.entity}.${relation.target.key}`,\n type: String(relation.type),\n kind: String(relation.kind),\n };\n}\n\nexport async function moduleDefinitionEntityFactory(\n injector: Injector\n): Promise<AXPEntity | null> {\n const crud = injector.get(AXP_ENTITY_DEFINITION_CRUD_SERVICE) as AXPEntityDefinitionCrudService | null;\n const manifestRegistry = injector.get(AXPModuleManifestRegistry);\n await manifestRegistry.initialize();\n\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.moduleDefinition.name,\n title: RootConfig.entities.moduleDefinition.title,\n icon: RootConfig.entities.moduleDefinition.icon,\n formats: {\n individual: 'Module Definition',\n plural: 'Module Definitions',\n },\n plugins: [\n {\n name: 'history',\n options: {\n display: 'page',\n },\n },\n ],\n relatedEntities: [\n {\n entity: `${RootConfig.module.name}.${RootConfig.entities.aggregateDefinition.name}`,\n title: `${I18N}.pages.aggregates`,\n icon: RootConfig.entities.aggregateDefinition.icon,\n columns: ['name', 'title', 'entityCount'],\n conditions: [\n { name: 'module', operator: { type: 'equal' }, value: '{{ context.eval(\"id\") }}' },\n ],\n layout: { type: 'page-list', position: 'after', order: 10 },\n },\n {\n entity: `${RootConfig.module.name}.${RootConfig.entities.relationDefinition.name}`,\n title: `${I18N}.pages.relations`,\n icon: 'fa-light fa-link',\n columns: ['sourceLabel', 'targetLabel', 'typeLabel', 'kindLabel'],\n conditions: [\n { name: 'source.aggregate', operator: { type: 'equal' }, value: '{{ context.eval(\"id\") }}' },\n { name: 'target.aggregate', operator: { type: 'equal' }, value: '{{ context.eval(\"id\") }}' },\n ],\n layout: { type: 'page-list', position: 'after', order: 11 },\n },\n {\n entity: `${RootConfig.module.name}.${RootConfig.entities.menuDefinition.name}`,\n title: `${I18N}.pages.menus`,\n icon: RootConfig.entities.menuDefinition.icon,\n columns: ['name', 'text', 'moduleRef'],\n conditions: [\n { name: 'moduleRef', operator: { type: 'equal' }, value: '{{ context.eval(\"id\") }}' },\n ],\n layout: { type: 'page-list', position: 'after', order: 12 },\n },\n ],\n groups: [\n { id: 'overview', title: `${I18N}.pages.overview` },\n { id: 'entities', title: `${I18N}.pages.entities` },\n { id: 'relations', title: `${I18N}.pages.relations` },\n ],\n properties: [\n {\n name: 'name',\n title: '@general:terms.common.name',\n groupId: 'overview',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text },\n },\n options: { filter: { advance: { enabled: true }, inline: { enabled: true } }, sort: { enabled: true } },\n },\n {\n name: 'title',\n title: '@general:terms.common.title',\n groupId: 'overview',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text, options: {} },\n },\n options: { filter: { advance: { enabled: true }, inline: { enabled: true } }, sort: { enabled: true } },\n },\n {\n name: 'icon',\n title: `${I18N}.fields.icon`,\n groupId: 'overview',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.iconChooser },\n },\n },\n {\n name: 'entityCount',\n title: `${I18N}.fields.entity-count`,\n groupId: 'overview',\n schema: {\n dataType: 'number',\n interface: { type: AXPWidgetsCatalog.text, options: { disabled: true } },\n },\n },\n {\n name: 'featureCount',\n title: `${I18N}.fields.feature-count`,\n groupId: 'overview',\n schema: {\n dataType: 'number',\n interface: { type: AXPWidgetsCatalog.text, options: { disabled: true } },\n },\n },\n {\n name: 'relationCount',\n title: `${I18N}.fields.relation-count`,\n groupId: 'overview',\n schema: {\n dataType: 'number',\n interface: { type: AXPWidgetsCatalog.text, options: { disabled: true } },\n },\n },\n {\n name: 'features',\n title: `${I18N}.fields.features`,\n groupId: 'overview',\n schema: {\n dataType: 'array',\n interface: {\n type: AXPWidgetsList.Advanced.DataList,\n options: {\n disabled: true,\n paging: false,\n showIndex: true,\n showHeader: true,\n columns: [\n { name: 'name', title: `${I18N}.fields.feature-name`, width: '220px' },\n { name: 'title', title: `${I18N}.fields.feature-title`, width: '260px' },\n { name: 'defaultValue', title: `${I18N}.fields.feature-default-value` },\n ],\n },\n },\n },\n },\n {\n name: 'entities',\n title: `${I18N}.pages.entities`,\n groupId: 'entities',\n schema: {\n dataType: 'array',\n interface: {\n type: AXPWidgetsList.Advanced.DataList,\n options: {\n disabled: true,\n paging: false,\n showIndex: true,\n showHeader: true,\n columns: [\n { name: 'id', title: '@general:terms.common.id', width: '280px' },\n { name: 'name', title: '@general:terms.common.name', width: '220px' },\n { name: 'title', title: '@general:terms.common.title' },\n ],\n },\n },\n },\n },\n {\n name: 'relations',\n title: `${I18N}.pages.relations`,\n groupId: 'relations',\n schema: {\n dataType: 'array',\n interface: {\n type: AXPWidgetsList.Advanced.DataList,\n options: {\n disabled: true,\n paging: false,\n showIndex: true,\n showHeader: true,\n columns: [\n { name: 'id', title: '@general:terms.common.id', width: '280px' },\n { name: 'source', title: `${I18N}.fields.relation-source`, width: '280px' },\n { name: 'target', title: `${I18N}.fields.relation-target`, width: '280px' },\n { name: 'type', title: `${I18N}.fields.type`, width: '90px' },\n { name: 'kind', title: `${I18N}.fields.kind`, width: '90px' },\n ],\n },\n },\n },\n },\n ],\n columns: [\n { name: 'name' },\n { name: 'title' },\n { name: 'entityCount' },\n { name: 'featureCount' },\n { name: 'relationCount' },\n ],\n commands: crud\n ? {\n create: {\n execute: async (data: Record<string, unknown>) => {\n const name = ((data['name'] as string) ?? '').trim();\n if (!name) {\n throw new Error('Module name is required');\n }\n const title = ((data['title'] as string) ?? name).trim();\n const icon = ((data['icon'] as string) ?? '').trim();\n await crud.createModule(name, { name, title, icon });\n return { id: name };\n },\n },\n update: {\n execute: async (data: Record<string, unknown>) => {\n const id = ((data['id'] as string) ?? (data['name'] as string) ?? '').trim();\n if (!id) {\n throw new Error('Module id is required');\n }\n const title = ((data['title'] as string) ?? id).trim();\n const icon = ((data['icon'] as string) ?? '').trim();\n await crud.updateModule(id, { name: id, title, icon });\n },\n },\n delete: {\n execute: async (id: string) => {\n await crud.deleteModule(id);\n },\n },\n }\n : undefined,\n queries: crud\n ? {\n byKey: {\n execute: async (id: string) => {\n const module = await crud.getModule(id);\n if (!module) return null;\n const moduleEntities = (await crud.list()).filter((item) => item.module === module.name);\n const entityNameSet = new Set(moduleEntities.map((item) => item.name));\n const relations = await crud.listRelations();\n const matchedRelations = relations\n .filter((relation) => {\n const sourceMatch = entityNameSet.has(relation.source.entity);\n const targetMatch = entityNameSet.has(relation.target.entity);\n return sourceMatch || targetMatch;\n })\n .map((relation) => relationToRow(relation.id, relation));\n const features = manifestRegistry\n .getModuleFeatures(module.name)\n .map((feature) => ({\n name: feature.name,\n key: feature.key,\n title: feature.title,\n defaultValue: feature.defaultValue ?? null,\n }));\n return {\n id: module.name,\n name: module.name,\n title: module.title ?? module.name,\n icon: module.icon ?? '',\n entityCount: moduleEntities.length,\n featureCount: features.length,\n relationCount: matchedRelations.length,\n entities: moduleEntities.map((item) => ({\n id: item.entityName ?? `${item.module}.${item.name}`,\n name: item.name,\n title: item.name,\n })),\n features,\n relations: matchedRelations,\n } satisfies ModuleDefinitionRow;\n },\n type: AXPEntityQueryType.Single,\n },\n list: {\n execute: async (request?: AXPQueryRequest) => {\n const [modules, entities, relations] = await Promise.all([\n crud.listModules(),\n crud.list(),\n crud.listRelations(),\n ]);\n const moduleEntityMap = new Map<string, Array<{ name: string; entityName?: string }>>();\n for (const entity of entities) {\n const list = moduleEntityMap.get(entity.module) ?? [];\n list.push({ name: entity.name, entityName: entity.entityName });\n moduleEntityMap.set(entity.module, list);\n }\n const rows: ModuleDefinitionRow[] = [];\n for (const module of modules) {\n const moduleEntities = moduleEntityMap.get(module.name) ?? [];\n const entityNameSet = new Set(moduleEntities.map((item) => item.name));\n const relationCount = relations.filter((relation) => {\n const sourceMatch = entityNameSet.has(relation.source.entity);\n const targetMatch = entityNameSet.has(relation.target.entity);\n return sourceMatch || targetMatch;\n }).length;\n const moduleId = module.name;\n rows.push({\n id: moduleId,\n name: module.name,\n title: module.title ?? module.name,\n icon: module.icon,\n entityCount: moduleEntities.length,\n featureCount: manifestRegistry.getModuleFeatures(module.name).length,\n relationCount,\n });\n }\n let items = rows;\n if (request?.filter) {\n items = applyFilterArray(items, [request.filter], request.filter.logic ?? 'and');\n }\n if (request?.sort?.length) {\n items = applySortArray(items, request.sort);\n }\n const total = items.length;\n const skip = request?.skip ?? 0;\n const take = request?.take ?? total;\n return { items: items.slice(skip, skip + take), total };\n },\n type: AXPEntityQueryType.List,\n },\n }\n : undefined,\n interfaces: {\n master: {\n create: {\n sections: [{ id: 'overview' }],\n properties: [\n { name: 'name', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'title', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'icon', layout: { positions: { lg: { colSpan: 12 } } } },\n ],\n },\n update: {\n sections: [{ id: 'overview' }],\n properties: [\n { name: 'name', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'title', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'icon', layout: { positions: { lg: { colSpan: 4 } } } },\n ],\n },\n single: {\n title: '{{title}}',\n sections: [{ id: 'overview' }],\n properties: [\n { name: 'name', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'title', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'icon', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'entityCount', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'featureCount', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'relationCount', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'features', layout: { positions: { lg: { colSpan: 12 } } } },\n ],\n actions: [],\n },\n list: {\n actions: [...entityMasterCrudActions()],\n views: [createAllQueryView()],\n },\n },\n },\n };\n\n return entityDef;\n}\n","import { AXPWidgetsList } from '@acorex/modules/common';\nimport { AXPPermissionDefinitionService } from '@acorex/platform/auth';\nimport { AXPEntity, AXPEntityQueryType, createAllQueryView } from '@acorex/platform/common';\nimport { applyFilterArray, applySortArray, type AXPQueryRequest } from '@acorex/platform/core';\nimport type {\n AXPPermissionDefinitionRecord,\n AXPPermissionGroupDefinitionRecord,\n AXPPermissionLeafRecord,\n} from '@acorex/platform/domain';\nimport {\n AXP_ENTITY_DEFINITION_CRUD_SERVICE,\n entityMasterCrudActions,\n type AXPEntityDefinitionCrudService,\n} from '@acorex/platform/layout/entity';\nimport { AXPWidgetsCatalog } from '@acorex/platform/layout/widget-core';\nimport { Injector } from '@angular/core';\nimport { RootConfig } from '../../const';\n\n//#region ---- Constants ----\n\nconst I18N = '@platform-management:definitions.permissionGroups.detail';\n\nconst PERMISSIONS_DATA_LIST_BASE = {\n commands: { add: true, edit: true, remove: true },\n paging: false,\n showIndex: true,\n showHeader: true,\n};\n\n/** One-level child permissions (leaf rows only; matches domain contract). */\nconst PERMISSION_CHILDREN_DATA_LIST_OPTIONS = {\n ...PERMISSIONS_DATA_LIST_BASE,\n columns: [\n { name: 'name', title: `${I18N}.columns.permission-name`, width: '140px' },\n { name: 'title', title: `${I18N}.columns.permission-title`, width: '160px' },\n {\n name: 'description',\n title: `${I18N}.columns.permission-description`,\n width: '200px',\n schema: {\n name: 'description',\n title: `${I18N}.columns.permission-description`,\n interface: { name: AXPWidgetsCatalog.largeText, title: 'Description', options: {} },\n },\n },\n {\n name: 'requiredFeatures',\n title: `${I18N}.columns.required-features`,\n width: '220px',\n schema: {\n name: 'requiredFeatures',\n title: `${I18N}.columns.required-features`,\n interface: { name: AXPWidgetsCatalog.text, title: 'Required features', options: {} },\n },\n },\n ],\n};\n\n//#endregion\n\n//#region ---- Mapping helpers ----\n\nfunction normalizeCategoryIds(raw: unknown): string[] | undefined {\n if (raw == null) {\n return undefined;\n }\n if (Array.isArray(raw)) {\n const ids = raw.map((x) => String(x).trim()).filter((id) => id.length > 0);\n return ids.length ? ids : undefined;\n }\n if (typeof raw === 'string') {\n const s = raw.trim();\n return s ? [s] : undefined;\n }\n return undefined;\n}\n\nfunction normalizeCategoryLabels(raw: unknown): Array<{ id: string; title?: string }> | undefined {\n if (!Array.isArray(raw) || raw.length === 0) {\n return undefined;\n }\n const out = raw\n .map((item) => {\n if (item == null || typeof item !== 'object') {\n return null;\n }\n const o = item as Record<string, unknown>;\n const id = String(o['id'] ?? '').trim();\n if (!id) {\n return null;\n }\n const title = typeof o['title'] === 'string' ? o['title'] : undefined;\n return title ? { id, title } : { id };\n })\n .filter((x): x is { id: string; title?: string } => x != null);\n return out.length ? out : undefined;\n}\n\nasync function reloadPermissionDefinitions(injector: Injector): Promise<void> {\n try {\n await injector.get(AXPPermissionDefinitionService).reload();\n } catch {\n // Optional in minimal shells\n }\n}\n\nfunction optionalString(value: unknown): string | undefined {\n if (value == null) {\n return undefined;\n }\n const s = String(value).trim();\n return s || undefined;\n}\n\nfunction parseCommaSeparatedFeatures(raw: string): string[] {\n return raw\n .split(',')\n .map((s) => s.trim())\n .filter(Boolean);\n}\n\nfunction formatCommaSeparatedFeatures(features: string[] | undefined): string {\n if (!features?.length) {\n return '';\n }\n return features.join(', ');\n}\n\nfunction normalizeRequiredFeatures(raw: unknown): string[] | undefined {\n if (raw == null) {\n return undefined;\n }\n if (Array.isArray(raw)) {\n const arr = raw.map((x) => String(x).trim()).filter(Boolean);\n return arr.length ? arr : undefined;\n }\n if (typeof raw === 'string') {\n const arr = parseCommaSeparatedFeatures(raw);\n return arr.length ? arr : undefined;\n }\n return undefined;\n}\n\nfunction normalizeLeafRow(raw: unknown): AXPPermissionLeafRecord | null {\n if (raw == null || typeof raw !== 'object') {\n return null;\n }\n const o = raw as Record<string, unknown>;\n const name = String(o['name'] ?? '').trim();\n if (!name) {\n return null;\n }\n const title = String(o['title'] ?? '').trim();\n const description = optionalString(o['description']);\n const requiredFeatures = normalizeRequiredFeatures(o['requiredFeatures']);\n const result: AXPPermissionLeafRecord = { name, title };\n if (description) {\n result.description = description;\n }\n if (requiredFeatures?.length) {\n result.requiredFeatures = requiredFeatures;\n }\n return result;\n}\n\nfunction normalizeRootPermissionRow(raw: unknown): AXPPermissionDefinitionRecord | null {\n if (raw == null || typeof raw !== 'object') {\n return null;\n }\n const o = raw as Record<string, unknown>;\n const name = String(o['name'] ?? '').trim();\n if (!name) {\n return null;\n }\n const title = String(o['title'] ?? '').trim();\n const description = optionalString(o['description']);\n const requiredFeatures = normalizeRequiredFeatures(o['requiredFeatures']);\n const childrenRaw = o['children'];\n let children: AXPPermissionLeafRecord[] | undefined;\n if (Array.isArray(childrenRaw)) {\n const mapped = childrenRaw.map(normalizeLeafRow).filter((x): x is AXPPermissionLeafRecord => x != null);\n children = mapped.length ? mapped : undefined;\n }\n const result: AXPPermissionDefinitionRecord = { name, title };\n if (description) {\n result.description = description;\n }\n if (requiredFeatures?.length) {\n result.requiredFeatures = requiredFeatures;\n }\n if (children?.length) {\n result.children = children;\n }\n return result;\n}\n\n/**\n * Maps persisted / form rows to domain records. Supports legacy JSON string and domain-shaped arrays.\n */\nfunction normalizePermissions(raw: unknown): AXPPermissionDefinitionRecord[] {\n if (raw == null) {\n return [];\n }\n if (typeof raw === 'string') {\n try {\n const parsed = JSON.parse(raw) as unknown;\n return normalizePermissions(parsed);\n } catch {\n return [];\n }\n }\n if (Array.isArray(raw)) {\n return raw\n .map((item) => normalizeRootPermissionRow(item))\n .filter((x): x is AXPPermissionDefinitionRecord => x != null);\n }\n return [];\n}\n\nfunction permissionLeafToFormRow(p: AXPPermissionLeafRecord): Record<string, unknown> {\n return {\n name: p.name,\n title: p.title,\n description: p.description ?? '',\n requiredFeatures: formatCommaSeparatedFeatures(p.requiredFeatures),\n };\n}\n\nfunction permissionDefinitionToFormRow(p: AXPPermissionDefinitionRecord): Record<string, unknown> {\n return {\n name: p.name,\n title: p.title,\n description: p.description ?? '',\n requiredFeatures: formatCommaSeparatedFeatures(p.requiredFeatures),\n children: (p.children ?? []).map(permissionLeafToFormRow),\n };\n}\n\nfunction rowFromPermissionGroup(id: string, def: AXPPermissionGroupDefinitionRecord): Record<string, unknown> {\n return {\n id,\n name: def.name,\n title: def.title,\n description: def.description ?? null,\n categoryIds: def.categoryIds,\n categories: def.categories,\n permissions: (def.permissions ?? []).map(permissionDefinitionToFormRow),\n };\n}\n\n//#endregion\n\n//#region ---- Entity factory ----\n\nexport async function permissionGroupDefinitionEntityFactory(injector: Injector): Promise<AXPEntity | null> {\n const crud = injector.get(AXP_ENTITY_DEFINITION_CRUD_SERVICE) as AXPEntityDefinitionCrudService | null;\n\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.permissionGroupDefinition.name,\n title: RootConfig.entities.permissionGroupDefinition.title,\n icon: RootConfig.entities.permissionGroupDefinition.icon,\n formats: {\n individual: 'Permission group',\n plural: 'Permission groups',\n },\n plugins: [\n {\n name: 'unique-fields',\n options: {\n fields: 'name',\n scope: 'global',\n },\n },\n {\n name: 'category',\n options: {\n categoryEntity: `${RootConfig.module.name}.${RootConfig.entities.moduleDefinition.name}`,\n allowMultiple: true,\n },\n },\n ],\n relatedEntities: [],\n groups: [\n { id: 'basic-info', title: `${I18N}.sections.basic-info` },\n { id: 'permissions', title: `${I18N}.sections.permissions` },\n ],\n properties: [\n {\n name: 'name',\n title: `${I18N}.fields.name`,\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text, options: {} },\n },\n validations: [{ rule: 'required' }],\n options: { filter: { advance: { enabled: true }, inline: { enabled: true } }, sort: { enabled: true } },\n },\n {\n name: 'title',\n title: `${I18N}.fields.title`,\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text, options: {} },\n },\n validations: [{ rule: 'required' }],\n options: { filter: { advance: { enabled: true }, inline: { enabled: true } }, sort: { enabled: true } },\n },\n {\n name: 'description',\n title: `${I18N}.fields.description`,\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.largeText, options: {} },\n },\n },\n {\n name: 'permissions',\n title: `${I18N}.fields.permissions`,\n groupId: 'permissions',\n schema: {\n dataType: 'array',\n interface: {\n type: AXPWidgetsList.Advanced.DataList,\n options: {\n ...PERMISSIONS_DATA_LIST_BASE,\n columns: [\n { name: 'name', title: `${I18N}.columns.permission-name`, width: '140px' },\n { name: 'title', title: `${I18N}.columns.permission-title`, width: '160px' },\n {\n name: 'description',\n title: `${I18N}.columns.permission-description`,\n width: '200px',\n schema: {\n name: 'description',\n title: `${I18N}.columns.permission-description`,\n interface: { name: AXPWidgetsCatalog.largeText, title: 'Description', options: {} },\n },\n },\n {\n name: 'requiredFeatures',\n title: `${I18N}.columns.required-features`,\n width: '220px',\n schema: {\n name: 'requiredFeatures',\n title: `${I18N}.columns.required-features`,\n interface: { name: AXPWidgetsCatalog.text, title: 'Required features', options: {} },\n },\n },\n {\n name: 'children',\n title: `${I18N}.columns.child-permissions`,\n width: '320px',\n schema: {\n name: 'children',\n title: `${I18N}.columns.child-permissions`,\n interface: {\n name: AXPWidgetsList.Advanced.DataList,\n title: `${I18N}.columns.child-permissions`,\n options: PERMISSION_CHILDREN_DATA_LIST_OPTIONS,\n },\n },\n },\n ],\n },\n },\n },\n },\n ],\n columns: [{ name: 'name' }, { name: 'title' }],\n // commands: crud\n // ? {\n // create: {\n // execute: async (data: Record<string, unknown>) => {\n // // const definition = formToDefinition(data);\n // await crud.createPermissionGroup(definition.name, definition);\n // await reloadPermissionDefinitions(injector);\n // return { id: definition.name };\n // },\n // },\n // update: {\n // execute: async (data: Record<string, unknown>) => {\n // const id = (data['id'] ?? data['name']) as string;\n // // const definition = formToDefinition({ ...data, name: data['name'] ?? id });\n // await crud.updatePermissionGroup(id, definition);\n // await reloadPermissionDefinitions(injector);\n // },\n // },\n // delete: {\n // execute: async (id: string) => {\n // await crud.deletePermissionGroup(id);\n // await reloadPermissionDefinitions(injector);\n // },\n // },\n // }\n // : undefined,\n queries: crud\n ? {\n byKey: {\n execute: async (id: string) => {\n const def = await crud.getPermissionGroup(id);\n if (!def) return null;\n return rowFromPermissionGroup(id, def);\n },\n type: AXPEntityQueryType.Single,\n },\n list: {\n execute: async (request?: AXPQueryRequest) => {\n const list = await crud.listPermissionGroups();\n let items = list.map(({ id, definition }) => rowFromPermissionGroup(id, definition));\n if (request?.filter) {\n items = applyFilterArray(items, [request.filter], request.filter.logic ?? 'and');\n }\n if (request?.sort?.length) {\n items = applySortArray(items, request.sort);\n }\n const total = items.length;\n const skip = request?.skip ?? 0;\n const take = request?.take ?? total;\n const pagedItems = items.slice(skip, skip + take);\n return { items: pagedItems, total };\n },\n type: AXPEntityQueryType.List,\n },\n }\n : undefined,\n interfaces: {\n master: {\n create: {\n sections: [{ id: 'basic-info' }, { id: 'permissions' }],\n properties: [\n { name: 'name', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'title', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'description', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'permissions', layout: { positions: { lg: { colSpan: 12 } } } },\n ],\n },\n update: {\n sections: [{ id: 'basic-info' }, { id: 'permissions' }],\n properties: [\n { name: 'name', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'title', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'description', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'permissions', layout: { positions: { lg: { colSpan: 12 } } } },\n ],\n },\n single: {\n title: '{{name}}',\n sections: [{ id: 'basic-info' }, { id: 'permissions' }],\n properties: [\n { name: 'name', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'title', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'description', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'permissions', layout: { positions: { lg: { colSpan: 12 } } } },\n ],\n actions: [],\n },\n list: {\n actions: [...entityMasterCrudActions()],\n views: [createAllQueryView()],\n },\n },\n },\n };\n\n return entityDef;\n}\n\n//#endregion\n","import { AXPWidgetsList } from '@acorex/modules/common';\nimport { AXPEntity, AXPEntityQueryType, createAllQueryView } from '@acorex/platform/common';\nimport { applyFilterArray, applySortArray, type AXPQueryRequest } from '@acorex/platform/core';\nimport type { AXPPluginDefinition, AXPPropertyDefinition } from '@acorex/platform/domain';\nimport {\n AXP_ENTITY_DEFINITION_CRUD_SERVICE,\n entityMasterCrudActions,\n type AXPEntityDefinitionCrudService,\n} from '@acorex/platform/layout/entity';\nimport { AXPWidgetsCatalog } from '@acorex/platform/layout/widget-core';\nimport { Injector } from '@angular/core';\nimport { RootConfig } from '../../const';\nimport { mapEntityFieldRowsInterfaceForForm, mapEntityFieldRowsInterfaceToDomain } from '../schema-interface-field-map';\n\nconst I18N = '@platform-management:definitions.plugins.detail';\n\nexport async function pluginDefinitionEntityFactory(injector: Injector): Promise<AXPEntity | null> {\n const crud = injector.get(AXP_ENTITY_DEFINITION_CRUD_SERVICE) as AXPEntityDefinitionCrudService | null;\n\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.pluginDefinition.name,\n title: RootConfig.entities.pluginDefinition.title,\n icon: RootConfig.entities.pluginDefinition.icon,\n formats: {\n individual: 'Plugin Definition',\n plural: 'Plugin Definitions',\n },\n plugins: [],\n relatedEntities: [],\n groups: [\n { id: 'basic-info', title: `${I18N}.sections.basic-info` },\n { id: 'options', title: `${I18N}.sections.options` },\n ],\n properties: [\n {\n name: 'name',\n title: '@general:terms.common.name',\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text, options: {} },\n },\n validations: [{ rule: 'required' }],\n options: {\n filter: { advance: { enabled: true }, inline: { enabled: true } },\n sort: { enabled: true },\n },\n },\n {\n name: 'title',\n title: '@general:terms.common.title',\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text, options: {} },\n },\n validations: [{ rule: 'required' }],\n options: {\n filter: { advance: { enabled: true }, inline: { enabled: true } },\n sort: { enabled: true },\n },\n },\n {\n name: 'description',\n title: '@general:terms.common.description',\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.largeText, options: {} },\n },\n },\n {\n name: 'icon',\n title: `${I18N}.fields.icon`,\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.iconChooser },\n },\n },\n {\n name: 'options',\n title: `${I18N}.sections.options`,\n groupId: 'options',\n schema: {\n dataType: 'array',\n interface: {\n type: AXPWidgetsList.Advanced.DataList,\n options: {\n paging: false,\n showIndex: true,\n showHeader: true,\n commands: { add: true, edit: true, remove: true },\n columns: [\n { name: 'name', title: `${I18N}.fields.option-name`, width: '160px' },\n { name: 'title', title: `${I18N}.fields.option-title`, width: '200px' },\n {\n name: 'schema',\n title: `${I18N}.fields.option-schema`,\n width: '280px',\n schema: {\n name: 'interface',\n title: 'Schema',\n interface: {\n name: AXPWidgetsList.Advanced.WidgetFieldConfigurator,\n title: 'Schema',\n options: {\n fieldName: \"{{ context.eval('name') }}\",\n fieldTitle: \"{{ context.eval('title') }}\",\n },\n },\n },\n },\n { name: 'description', title: `${I18N}.fields.option-description` },\n ],\n },\n },\n },\n },\n ],\n columns: [{ name: 'name' }, { name: 'title' }],\n commands: crud\n ? {\n create: {\n execute: async (data: Record<string, unknown>) => {\n const name = (data['name'] as string) ?? '';\n const optionsSource = data['options'];\n // const options = mapEntityFieldRowsInterfaceToDomain(\n // sanitizeDataListRowsForPersist(optionsSource),\n // ) as AXPPropertyDefinition[];\n const options = mapEntityFieldRowsInterfaceToDomain(optionsSource) as AXPPropertyDefinition[];\n const definition: AXPPluginDefinition = {\n name,\n title: (data['title'] as string) ?? name,\n description: data['description'] as string | undefined,\n icon: data['icon'] as string | undefined,\n options,\n };\n await crud.createPlugin(name, definition);\n return { id: name };\n },\n },\n update: {\n execute: async (data: Record<string, unknown>) => {\n const name = (data['id'] ?? data['name']) as string;\n const existing = await crud.getPlugin(name);\n const optionsSource = data['options'] !== undefined ? data['options'] : existing?.options;\n // const options = mapEntityFieldRowsInterfaceToDomain(\n // sanitizeDataListRowsForPersist(optionsSource),\n // ) as AXPPropertyDefinition[];\n const options = mapEntityFieldRowsInterfaceToDomain(optionsSource) as AXPPropertyDefinition[];\n const definition: AXPPluginDefinition = existing\n ? {\n ...existing,\n name: (data['name'] as string) ?? existing.name,\n title: (data['title'] as string) ?? existing.title,\n description: data['description'] as string | undefined,\n icon: data['icon'] as string | undefined,\n options,\n }\n : {\n name: (data['name'] as string) ?? name,\n title: (data['title'] as string) ?? name,\n description: data['description'] as string | undefined,\n icon: data['icon'] as string | undefined,\n options,\n };\n await crud.updatePlugin(name, definition);\n },\n },\n delete: {\n execute: async (id: string) => {\n await crud.deletePlugin(id);\n },\n },\n }\n : undefined,\n queries: crud\n ? {\n byKey: {\n execute: async (id: string) => {\n const def = await crud.getPlugin(id);\n if (!def) return null;\n return {\n ...def,\n id: def.name,\n options: mapEntityFieldRowsInterfaceForForm(def.options),\n };\n },\n type: AXPEntityQueryType.Single,\n },\n list: {\n execute: async (request?: AXPQueryRequest) => {\n const list = await crud.listPlugins();\n let items = list.map((x) => ({\n id: x.name,\n name: x.name,\n title: x.title ?? '',\n }));\n if (request?.filter) {\n items = applyFilterArray(items, [request.filter], request.filter.logic ?? 'and');\n }\n if (request?.sort?.length) {\n items = applySortArray(items, request.sort);\n }\n const total = items.length;\n const skip = request?.skip ?? 0;\n const take = request?.take ?? total;\n const pagedItems = items.slice(skip, skip + take);\n return { items: pagedItems, total };\n },\n type: AXPEntityQueryType.List,\n },\n }\n : undefined,\n interfaces: {\n master: {\n create: {\n sections: [{ id: 'basic-info' }, { id: 'options' }],\n properties: [\n { name: 'name', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'title', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'description', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'icon', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'options', layout: { positions: { lg: { colSpan: 12 } } } },\n ],\n },\n update: {\n sections: [{ id: 'basic-info' }, { id: 'options' }],\n properties: [\n { name: 'name', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'title', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'description', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'icon', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'options', layout: { positions: { lg: { colSpan: 12 } } } },\n ],\n },\n single: {\n title: '{{title}}',\n sections: [{ id: 'basic-info' }, { id: 'options' }],\n properties: [\n { name: 'name', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'title', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'description', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'icon', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'options', layout: { positions: { lg: { colSpan: 12 } } } },\n ],\n actions: [],\n },\n list: {\n actions: [...entityMasterCrudActions()],\n views: [createAllQueryView()],\n },\n },\n },\n };\n\n return entityDef;\n}\n","import {\n AXPEntity,\n AXPEntityQueryType,\n createAllQueryView,\n} from '@acorex/platform/common';\nimport { applyFilterArray, applySortArray, type AXPQueryRequest } from '@acorex/platform/core';\nimport {\n AXP_ENTITY_DEFINITION_CRUD_SERVICE,\n entityMasterCrudActions,\n type AXPEntityDefinitionCrudService,\n} from '@acorex/platform/layout/entity';\nimport { AXPWidgetsCatalog } from '@acorex/platform/layout/widget-core';\nimport {\n AXPRelationshipCardinality,\n AXPRelationshipKind,\n type AXPRelationDefinition,\n} from '@acorex/platform/domain';\nimport { Injector } from '@angular/core';\nimport { RootConfig } from '../../const';\n\nconst I18N = '@platform-management:definitions.relations.detail';\n\nconst MODULE_ENTITY = `${RootConfig.module.name}.${RootConfig.entities.moduleDefinition.name}`;\nconst ENTITY_DEFINITION_ENTITY = `${RootConfig.module.name}.${RootConfig.entities.entityDefinition.name}`;\n\n//#region ---- Flat form keys & labels ----\n\nfunction formatEndpointLabel(aggregate: string, entity: string, key: string): string {\n return `${aggregate}.${entity}.${key}`;\n}\n\nfunction formatRelationId(def: AXPRelationDefinition): string {\n const src = def.source;\n const tgt = def.target;\n return `${formatEndpointLabel(src.aggregate, src.entity, src.key)} -> ${formatEndpointLabel(\n tgt.aggregate,\n tgt.entity,\n tgt.key,\n )}`;\n}\n\nfunction cardinalityTitle(value: AXPRelationshipCardinality): string {\n switch (value) {\n case AXPRelationshipCardinality.OneToOne:\n return `${I18N}.fields.cardinality-values.one-to-one`;\n case AXPRelationshipCardinality.OneToMany:\n return `${I18N}.fields.cardinality-values.one-to-many`;\n case AXPRelationshipCardinality.ManyToMany:\n return `${I18N}.fields.cardinality-values.many-to-many`;\n default:\n return String(value);\n }\n}\n\nfunction kindTitle(value: AXPRelationshipKind): string {\n switch (value) {\n case AXPRelationshipKind.Association:\n return `${I18N}.fields.kind-values.association`;\n case AXPRelationshipKind.Composition:\n return `${I18N}.fields.kind-values.composition`;\n case AXPRelationshipKind.Aggregation:\n return `${I18N}.fields.kind-values.aggregation`;\n default:\n return String(value);\n }\n}\n\n/**\n * Expands stored relation definition into flat form fields (and list display helpers).\n */\nfunction expandRelationToFlat(def: AXPRelationDefinition & { id?: string }): Record<string, unknown> {\n const id = def.id;\n const sourceLabel = formatEndpointLabel(def.source.aggregate, def.source.entity, def.source.key);\n const targetLabel = formatEndpointLabel(def.target.aggregate, def.target.entity, def.target.key);\n return {\n ...(id != null && id !== '' ? { id } : {}),\n source: def.source,\n target: def.target,\n type: def.type,\n kind: def.kind,\n isRequired: def.isRequired,\n sourceModule: def.source.aggregate,\n sourceEntity: def.source.entity,\n sourceKey: def.source.key,\n targetModule: def.target.aggregate,\n targetEntity: def.target.entity,\n targetKey: def.target.key,\n sourceLabel,\n targetLabel,\n typeLabel: cardinalityTitle(def.type),\n kindLabel: kindTitle(def.kind),\n };\n}\n\n/**\n * Builds domain relation from flat form payload.\n */\nfunction buildRelationFromFlat(data: Record<string, unknown>): AXPRelationDefinition {\n return {\n type: (data['type'] as AXPRelationshipCardinality) ?? AXPRelationshipCardinality.OneToMany,\n kind: (data['kind'] as AXPRelationshipKind) ?? AXPRelationshipKind.Association,\n isRequired: Boolean(data['isRequired']),\n source: {\n aggregate: String(data['sourceModule'] ?? '').trim(),\n entity: String(data['sourceEntity'] ?? '').trim(),\n key: String(data['sourceKey'] ?? '').trim(),\n },\n target: {\n aggregate: String(data['targetModule'] ?? '').trim(),\n entity: String(data['targetEntity'] ?? '').trim(),\n key: String(data['targetKey'] ?? '').trim(),\n },\n };\n}\n\n//#endregion\n\nexport async function relationDefinitionEntityFactory(\n injector: Injector\n): Promise<AXPEntity | null> {\n const crud = injector.get(AXP_ENTITY_DEFINITION_CRUD_SERVICE) as AXPEntityDefinitionCrudService | null;\n\n const entityLookupBase = {\n look: 'select' as const,\n entity: ENTITY_DEFINITION_ENTITY,\n textField: 'title',\n valueField: 'name',\n columns: ['name', 'title', 'module'],\n };\n\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.relationDefinition.name,\n title: RootConfig.entities.relationDefinition.title,\n icon: RootConfig.entities.relationDefinition.icon,\n formats: {\n individual: 'Relation Definition',\n plural: 'Relation Definitions',\n },\n plugins: [],\n groups: [\n { id: 'basic-info', title: `${I18N}.sections.basic-info` },\n { id: 'source', title: `${I18N}.sections.source` },\n { id: 'target', title: `${I18N}.sections.target` },\n ],\n properties: [\n //#region ---- Basic ----\n {\n name: 'id',\n title: '@general:terms.common.id',\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text },\n },\n validations: [{ rule: 'required' }],\n options: {\n filter: { inline: { enabled: true } },\n sort: { enabled: true },\n },\n },\n {\n name: 'type',\n title: `${I18N}.fields.type`,\n groupId: 'basic-info',\n schema: {\n dataType: 'number',\n interface: {\n type: AXPWidgetsCatalog.select,\n options: {\n valueField: 'value',\n textField: 'title',\n dataSource: [\n { value: AXPRelationshipCardinality.OneToOne, title: `${I18N}.fields.cardinality-values.one-to-one` },\n { value: AXPRelationshipCardinality.OneToMany, title: `${I18N}.fields.cardinality-values.one-to-many` },\n {\n value: AXPRelationshipCardinality.ManyToMany,\n title: `${I18N}.fields.cardinality-values.many-to-many`,\n },\n ],\n },\n },\n },\n validations: [{ rule: 'required' }],\n options: { filter: { inline: { enabled: true } }, sort: { enabled: true } },\n },\n {\n name: 'kind',\n title: `${I18N}.fields.kind`,\n groupId: 'basic-info',\n schema: {\n dataType: 'number',\n interface: {\n type: AXPWidgetsCatalog.select,\n options: {\n valueField: 'value',\n textField: 'title',\n dataSource: [\n { value: AXPRelationshipKind.Association, title: `${I18N}.fields.kind-values.association` },\n { value: AXPRelationshipKind.Composition, title: `${I18N}.fields.kind-values.composition` },\n { value: AXPRelationshipKind.Aggregation, title: `${I18N}.fields.kind-values.aggregation` },\n ],\n },\n },\n },\n validations: [{ rule: 'required' }],\n options: { filter: { inline: { enabled: true } }, sort: { enabled: true } },\n },\n {\n name: 'isRequired',\n title: `${I18N}.fields.is-required`,\n groupId: 'basic-info',\n schema: {\n dataType: 'boolean',\n interface: { type: AXPWidgetsCatalog.toggle },\n },\n },\n //#endregion\n //#region ---- Source ----\n {\n name: 'sourceModule',\n title: `${I18N}.fields.source-module`,\n groupId: 'source',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.lookup,\n options: {\n look: 'select',\n entity: MODULE_ENTITY,\n textField: 'title',\n valueField: 'id',\n columns: ['title', 'name'],\n },\n },\n },\n validations: [{ rule: 'required' }],\n options: { filter: { inline: { enabled: true } }, sort: { enabled: true } },\n },\n {\n name: 'sourceEntity',\n title: `${I18N}.fields.source-entity`,\n groupId: 'source',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.lookup,\n options: {\n ...entityLookupBase,\n filter: {\n logic: 'and',\n filters: [{ field: 'module', operator: { type: 'equal' }, value: '{{ context.eval(\"sourceModule\") }}' }],\n },\n },\n },\n },\n validations: [{ rule: 'required' }],\n options: { filter: { inline: { enabled: true } }, sort: { enabled: true } },\n },\n {\n name: 'sourceKey',\n title: `${I18N}.fields.source-key`,\n groupId: 'source',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text },\n },\n validations: [{ rule: 'required' }],\n options: { filter: { inline: { enabled: true } }, sort: { enabled: true } },\n },\n //#endregion\n //#region ---- Target ----\n {\n name: 'targetModule',\n title: `${I18N}.fields.target-module`,\n groupId: 'target',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.lookup,\n options: {\n look: 'select',\n entity: MODULE_ENTITY,\n textField: 'title',\n valueField: 'id',\n columns: ['title', 'name'],\n },\n },\n },\n validations: [{ rule: 'required' }],\n options: { filter: { inline: { enabled: true } }, sort: { enabled: true } },\n },\n {\n name: 'targetEntity',\n title: `${I18N}.fields.target-entity`,\n groupId: 'target',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.lookup,\n options: {\n ...entityLookupBase,\n filter: {\n logic: 'and',\n filters: [{ field: 'module', operator: { type: 'equal' }, value: '{{ context.eval(\"targetModule\") }}' }],\n },\n },\n },\n },\n validations: [{ rule: 'required' }],\n options: { filter: { inline: { enabled: true } }, sort: { enabled: true } },\n },\n {\n name: 'targetKey',\n title: `${I18N}.fields.target-key`,\n groupId: 'target',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text },\n },\n validations: [{ rule: 'required' }],\n options: { filter: { inline: { enabled: true } }, sort: { enabled: true } },\n },\n //#endregion\n //#region ---- List display (not on forms) ----\n {\n name: 'sourceLabel',\n title: `${I18N}.fields.source-label`,\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text, options: { disabled: true } },\n },\n options: { filter: { inline: { enabled: true } }, sort: { enabled: true } },\n },\n {\n name: 'targetLabel',\n title: `${I18N}.fields.target-label`,\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text, options: { disabled: true } },\n },\n options: { filter: { inline: { enabled: true } }, sort: { enabled: true } },\n },\n {\n name: 'typeLabel',\n title: `${I18N}.fields.type`,\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text, options: { disabled: true } },\n },\n options: { filter: { inline: { enabled: true } }, sort: { enabled: true } },\n },\n {\n name: 'kindLabel',\n title: `${I18N}.fields.kind`,\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text, options: { disabled: true } },\n },\n options: { filter: { inline: { enabled: true } }, sort: { enabled: true } },\n },\n //#endregion\n ],\n columns: [\n { name: 'id' },\n { name: 'typeLabel' },\n { name: 'kindLabel' },\n { name: 'sourceLabel' },\n { name: 'targetLabel' },\n { name: 'isRequired' },\n ],\n commands: crud\n ? {\n create: {\n execute: async (data: Record<string, unknown>) => {\n const id = String(data['id'] ?? '').trim();\n const definition = buildRelationFromFlat(data);\n await crud.createRelation(id, definition);\n return { id };\n },\n },\n update: {\n execute: async (data: Record<string, unknown>) => {\n const id = String(data['id'] ?? '').trim();\n const definition = buildRelationFromFlat(data);\n await crud.updateRelation(id, definition);\n },\n },\n delete: {\n execute: async (id: string) => {\n await crud.deleteRelation(id);\n },\n },\n }\n : undefined,\n queries: crud\n ? {\n byKey: {\n execute: async (id: string) => {\n const def = await crud.getRelation(id);\n if (!def) return null;\n return expandRelationToFlat({ ...def, id });\n },\n type: AXPEntityQueryType.Single,\n },\n list: {\n execute: async (request?: AXPQueryRequest) => {\n const list = await crud.listRelations();\n let items = list.map((x) => ({\n ...expandRelationToFlat(x),\n title: formatRelationId(x),\n }));\n if (request?.filter) {\n items = applyFilterArray(items, [request.filter], request.filter.logic ?? 'and');\n }\n if (request?.sort?.length) {\n items = applySortArray(items, request.sort);\n }\n const total = items.length;\n const skip = request?.skip ?? 0;\n const take = request?.take ?? total;\n const pagedItems = items.slice(skip, skip + take);\n return { items: pagedItems, total };\n },\n type: AXPEntityQueryType.List,\n },\n }\n : undefined,\n interfaces: {\n master: {\n create: {\n sections: [{ id: 'basic-info' }, { id: 'source' }, { id: 'target' }],\n properties: [\n { name: 'id', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'type', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'kind', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'isRequired', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'sourceModule', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'sourceEntity', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'sourceKey', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'targetModule', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'targetEntity', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'targetKey', layout: { positions: { lg: { colSpan: 4 } } } },\n ],\n },\n update: {\n sections: [{ id: 'basic-info' }, { id: 'source' }, { id: 'target' }],\n properties: [\n { name: 'id', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'type', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'kind', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'isRequired', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'sourceModule', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'sourceEntity', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'sourceKey', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'targetModule', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'targetEntity', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'targetKey', layout: { positions: { lg: { colSpan: 4 } } } },\n ],\n },\n single: {\n title: '{{id}}',\n sections: [{ id: 'basic-info' }, { id: 'source' }, { id: 'target' }],\n properties: [\n { name: 'id', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'type', layout: { positions: { lg: { colSpan: 2 } } } },\n { name: 'kind', layout: { positions: { lg: { colSpan: 2 } } } },\n { name: 'isRequired', layout: { positions: { lg: { colSpan: 2 } } } },\n { name: 'sourceModule', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'sourceEntity', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'sourceKey', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'targetModule', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'targetEntity', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'targetKey', layout: { positions: { lg: { colSpan: 4 } } } },\n ],\n actions: [...entityMasterCrudActions()],\n },\n list: {\n actions: [...entityMasterCrudActions()],\n views: [createAllQueryView()],\n },\n },\n },\n };\n\n return entityDef;\n}\n","import { AXPEntity, AXPEntityAction, AXPEntityCommandScope, createAllQueryView } from '@acorex/platform/common';\nimport { AXPWidgetsCatalog } from '@acorex/platform/layout/widget-core';\nimport { entityMasterCrudActions, entityMasterRecordActions } from '@acorex/platform/layout/entity';\nimport { Injector } from '@angular/core';\nimport { RootConfig } from '../../const';\nimport { AXPWidgetsList } from '@acorex/modules/common';\n\nexport async function tokenEntityFactory(injector: Injector): Promise<AXPEntity | null> {\n const i18n = RootConfig.config.i18n;\n\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.token.name,\n title: RootConfig.entities.token.title,\n icon: RootConfig.entities.token.icon,\n formats: {\n individual: 'Token',\n plural: 'Tokens',\n },\n plugins: [\n {\n name: 'unique-fields',\n options: {\n fields: 'name',\n scope: 'global',\n },\n },\n {\n name: 'category',\n options: {\n appearance: { icon: true, color: true },\n },\n },\n { name: 'history' },\n { name: 'compare' },\n ],\n relatedEntities: [],\n groups: [\n {\n id: 'basic-info',\n title: `@${i18n}:tokens.entities.token.groups.basic-info`,\n },\n {\n id: 'value',\n title: `@${i18n}:tokens.entities.token.groups.value`,\n },\n ],\n properties: [\n {\n name: 'name',\n title: '@general:terms.common.name',\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n options: {\n filter: {\n inline: {\n enabled: true,\n },\n },\n sort: {\n enabled: true,\n },\n },\n },\n {\n name: 'title',\n title: '@general:terms.common.title',\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n options: {\n filter: {\n inline: {\n enabled: true,\n },\n },\n sort: {\n enabled: true,\n },\n },\n },\n {\n name: 'description',\n title: '@general:terms.common.description',\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.largeText,\n },\n },\n options: {\n filter: {\n advance: {\n enabled: true,\n },\n },\n },\n },\n {\n name: 'kind',\n title: `@${i18n}:tokens.entities.token.fields.kind.title`,\n groupId: 'value',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.select,\n options: {\n valueField: 'value',\n textField: 'title',\n dataSource: [\n { title: 'Static', value: 'Static' },\n { title: 'Context', value: 'Context' },\n { title: 'Event', value: 'Event' },\n { title: 'Computed', value: 'Computed' },\n { title: 'Secret', value: 'Secret' },\n ],\n direction: 'horizontal',\n multiple: false,\n },\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n options: {\n filter: {\n advance: {\n enabled: true,\n },\n },\n sort: {\n enabled: true,\n },\n },\n },\n {\n name: 'dataType',\n title: `@${i18n}:tokens.entities.token.fields.data-type.title`,\n groupId: 'value',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.select,\n options: {\n valueField: 'value',\n textField: 'title',\n dataSource: [\n { title: 'String', value: 'String' },\n { title: 'Integer', value: 'Integer' },\n { title: 'Boolean', value: 'Boolean' },\n { title: 'Decimal', value: 'Decimal' },\n { title: 'DateTime', value: 'DateTime' },\n { title: 'Json', value: 'Json' },\n ],\n direction: 'horizontal',\n multiple: false,\n },\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n options: {\n filter: {\n advance: {\n enabled: true,\n },\n },\n sort: {\n enabled: true,\n },\n },\n },\n {\n name: 'format',\n title: `@${i18n}:tokens.entities.token.fields.format.title`,\n groupId: 'value',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.select,\n options: {\n valueField: 'value',\n textField: 'title',\n dataSource: [\n { title: 'None', value: 'None' },\n { title: 'Email', value: 'Email' },\n { title: 'Url', value: 'Url' },\n { title: 'Phone', value: 'Phone' },\n { title: 'Currency', value: 'Currency' },\n { title: 'Percent', value: 'Percent' },\n ],\n direction: 'horizontal',\n multiple: false,\n },\n },\n },\n options: {\n filter: {\n advance: {\n enabled: true,\n },\n },\n },\n },\n {\n name: 'maskPattern',\n title: `@${i18n}:tokens.entities.token.fields.mask-pattern.title`,\n groupId: 'value',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.select,\n options: {\n valueField: 'value',\n textField: 'title',\n dataSource: [\n { title: 'None', value: 'None' },\n { title: 'Partial', value: 'Partial' },\n { title: 'Full', value: 'Full' },\n ],\n direction: 'horizontal',\n multiple: false,\n },\n },\n },\n options: {\n filter: {\n advance: {\n enabled: true,\n },\n },\n },\n },\n {\n name: 'expression',\n title: `@${i18n}:tokens.entities.token.fields.expression.title`,\n groupId: 'value',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsList.Advanced.CodeEditor,\n },\n },\n options: {\n filter: {\n advance: {\n enabled: true,\n },\n },\n },\n },\n {\n name: 'sampleValue',\n title: `@${i18n}:tokens.entities.token.fields.sample-value.title`,\n groupId: 'value',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n options: {\n placeholder: `@${i18n}:tokens.entities.token.fields.sample-value.placeholder`,\n },\n },\n },\n options: {\n filter: {\n advance: {\n enabled: true,\n },\n },\n },\n },\n {\n name: 'isSensitive',\n title: `@${i18n}:tokens.entities.token.fields.is-sensitive.title`,\n groupId: 'value',\n schema: {\n dataType: 'boolean',\n interface: {\n type: AXPWidgetsCatalog.toggle,\n },\n },\n options: {\n filter: {\n advance: {\n enabled: true,\n },\n },\n },\n },\n ],\n columns: [\n { name: 'name' },\n { name: 'title' },\n { name: 'kind' },\n { name: 'dataType' },\n { name: 'format' },\n { name: 'maskPattern' },\n { name: 'expression' },\n { name: 'sampleValue' },\n ],\n\n interfaces: {\n master: {\n create: {\n sections: [\n {\n id: 'basic-info',\n },\n {\n id: 'value',\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n },\n },\n },\n },\n {\n name: 'description',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n name: 'kind',\n layout: {\n positions: {\n lg: {\n colSpan: 3,\n },\n },\n },\n },\n {\n name: 'dataType',\n layout: {\n positions: {\n lg: {\n colSpan: 3,\n },\n },\n },\n },\n {\n name: 'format',\n layout: {\n positions: {\n lg: {\n colSpan: 3,\n },\n },\n },\n },\n {\n name: 'maskPattern',\n layout: {\n positions: {\n lg: {\n colSpan: 3,\n },\n },\n },\n },\n {\n name: 'expression',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n name: 'sampleValue',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n name: 'isSensitive',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n },\n },\n },\n },\n ],\n },\n update: {\n sections: [\n {\n id: 'basic-info',\n },\n {\n id: 'value',\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n },\n },\n },\n },\n {\n name: 'description',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n name: 'kind',\n layout: {\n positions: {\n lg: {\n colSpan: 3,\n },\n },\n },\n },\n {\n name: 'dataType',\n layout: {\n positions: {\n lg: {\n colSpan: 3,\n },\n },\n },\n },\n {\n name: 'format',\n layout: {\n positions: {\n lg: {\n colSpan: 3,\n },\n },\n },\n },\n {\n name: 'maskPattern',\n layout: {\n positions: {\n lg: {\n colSpan: 3,\n },\n },\n },\n },\n {\n name: 'expression',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n name: 'sampleValue',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n name: 'isSensitive',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n },\n },\n },\n },\n ],\n },\n single: {\n title: '{{title}}',\n sections: [\n {\n id: 'basic-info',\n },\n {\n id: 'value',\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n },\n },\n },\n },\n {\n name: 'description',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n name: 'kind',\n layout: {\n positions: {\n lg: {\n colSpan: 3,\n },\n },\n },\n },\n {\n name: 'dataType',\n layout: {\n positions: {\n lg: {\n colSpan: 3,\n },\n },\n },\n },\n {\n name: 'format',\n layout: {\n positions: {\n lg: {\n colSpan: 3,\n },\n },\n },\n },\n {\n name: 'maskPattern',\n layout: {\n positions: {\n lg: {\n colSpan: 3,\n },\n },\n },\n },\n {\n name: 'expression',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n name: 'sampleValue',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n name: 'isSensitive',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n },\n },\n },\n },\n ],\n actions: [\n ...entityMasterRecordActions(),\n {\n title: `@${i18n}:tokens.entities.token.actions.execute.title`,\n command: {\n name: `${RootConfig.module.name}.${RootConfig.entities.token.name}:Execute`,\n options: {\n tokenName: '{{ context.eval(\"name\") }}',\n tokenTitle: '{{ context.eval(\"title\") }}',\n },\n },\n priority: 'primary',\n type: 'action',\n icon: 'fa-light fa-play',\n scope: AXPEntityCommandScope.Individual,\n } as AXPEntityAction,\n ],\n },\n list: {\n actions: [\n ...entityMasterCrudActions(),\n {\n title: `@${i18n}:tokens.entities.token.actions.execute.title`,\n command: {\n name: `${RootConfig.module.name}.${RootConfig.entities.token.name}:Execute`,\n options: {\n tokenName: '{{ context.eval(\"name\") }}',\n tokenTitle: '{{ context.eval(\"title\") }}',\n },\n },\n priority: 'primary',\n type: 'action',\n icon: 'fa-light fa-play',\n scope: AXPEntityCommandScope.Individual,\n } as AXPEntityAction,\n ],\n views: [createAllQueryView()],\n },\n },\n },\n };\n\n return entityDef;\n}\n","import { AXPWidgetsList } from '@acorex/modules/common';\nimport { AXPEntity, AXPEntityQueryType, createAllQueryView } from '@acorex/platform/common';\nimport { applyFilterArray, applySortArray, type AXPQueryRequest } from '@acorex/platform/core';\nimport { AXPValidationRuleDefinition, AXPValidationRunAt, type AXPPropertyDefinition } from '@acorex/platform/domain';\nimport {\n AXP_ENTITY_DEFINITION_CRUD_SERVICE,\n entityMasterCrudActions,\n type AXPEntityDefinitionCrudService,\n} from '@acorex/platform/layout/entity';\nimport { AXPWidgetsCatalog } from '@acorex/platform/layout/widget-core';\nimport { Injector } from '@angular/core';\nimport { RootConfig } from '../../const';\nimport { mapEntityFieldRowsInterfaceForForm, mapEntityFieldRowsInterfaceToDomain } from '../schema-interface-field-map';\n\nconst I18N = '@platform-management:definitions.validations.detail';\n\nexport async function validationDefinitionEntityFactory(injector: Injector): Promise<AXPEntity | null> {\n const crud = injector.get(AXP_ENTITY_DEFINITION_CRUD_SERVICE) as AXPEntityDefinitionCrudService | null;\n\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.validationDefinition.name,\n title: RootConfig.entities.validationDefinition.title,\n icon: RootConfig.entities.validationDefinition.icon,\n formats: {\n individual: 'Validation Rule Definition',\n plural: 'Validation Rule Definitions',\n },\n plugins: [],\n relatedEntities: [],\n groups: [\n { id: 'basic-info', title: `${I18N}.sections.basic-info` },\n { id: 'option-definitions', title: `${I18N}.pages.option-definitions` },\n ],\n properties: [\n {\n name: 'rule',\n title: '@general:terms.common.rule',\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text, options: {} },\n },\n validations: [{ rule: 'required' }],\n options: {\n filter: { advance: { enabled: true }, inline: { enabled: true } },\n sort: { enabled: true },\n },\n },\n {\n name: 'title',\n title: '@general:terms.common.title',\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text, options: {} },\n },\n validations: [{ rule: 'required' }],\n options: {\n filter: { advance: { enabled: true }, inline: { enabled: true } },\n sort: { enabled: true },\n },\n },\n {\n name: 'description',\n title: '@general:terms.common.description',\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.largeText, options: {} },\n },\n },\n {\n name: 'runAt',\n title: `${I18N}.fields.run-at`,\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.select,\n options: {\n valueField: 'value',\n textField: 'title',\n dataSource: [\n { value: 'client', title: `${I18N}.fields.run-at-values.client` },\n { value: 'server', title: `${I18N}.fields.run-at-values.server` },\n { value: 'both', title: `${I18N}.fields.run-at-values.both` },\n ],\n },\n },\n },\n options: {\n filter: { advance: { enabled: true }, inline: { enabled: true } },\n sort: { enabled: true },\n },\n },\n {\n name: 'options',\n title: `${I18N}.pages.option-definitions`,\n groupId: 'option-definitions',\n schema: {\n dataType: 'array',\n interface: {\n type: AXPWidgetsList.Advanced.DataList,\n options: {\n paging: false,\n showIndex: true,\n showHeader: true,\n columns: [\n { name: 'name', title: `${I18N}.fields.option-name`, width: '160px' },\n { name: 'title', title: `${I18N}.fields.option-title`, width: '200px' },\n {\n name: 'schema',\n title: `${I18N}.fields.option-schema`,\n width: '280px',\n schema: {\n name: 'interface',\n title: 'Schema',\n interface: {\n name: AXPWidgetsList.Advanced.WidgetFieldConfigurator,\n title: 'Schema',\n options: {\n fieldName: \"{{ context.eval('name') }}\",\n fieldTitle: \"{{ context.eval('title') }}\",\n },\n },\n },\n },\n { name: 'description', title: `${I18N}.fields.option-description` },\n ],\n },\n },\n },\n },\n ],\n columns: [{ name: 'rule' }, { name: 'title' }, { name: 'runAt' }],\n commands: crud\n ? {\n create: {\n execute: async (data: Record<string, unknown>) => {\n const rule = (data['rule'] as string) ?? '';\n // const options = mapEntityFieldRowsInterfaceToDomain(sanitizeDataListRowsForPersist(data['options'] ?? []),) as AXPPropertyDefinition[];\n const options = mapEntityFieldRowsInterfaceToDomain(data['options'] ?? []) as AXPPropertyDefinition[];\n const definition: AXPValidationRuleDefinition = {\n rule,\n title: (data['title'] as string) ?? rule,\n description: data['description'] as string | undefined,\n runAt: (data['runAt'] as AXPValidationRunAt) ?? 'client',\n ...(options.length > 0 ? { options } : {}),\n };\n await crud.createValidation(rule, definition);\n return { id: rule };\n },\n },\n update: {\n execute: async (data: Record<string, unknown>) => {\n const ruleKey = (data['id'] ?? data['rule']) as string;\n const existing = await crud.getValidation(ruleKey);\n const optionsSource = data['options'] !== undefined ? data['options'] : existing?.options;\n // const options = mapEntityFieldRowsInterfaceToDomain(\n // sanitizeDataListRowsForPersist(optionsSource),\n // ) as AXPPropertyDefinition[];\n const options = mapEntityFieldRowsInterfaceToDomain(optionsSource) as AXPPropertyDefinition[];\n const definition: AXPValidationRuleDefinition = existing\n ? {\n ...existing,\n rule: (data['rule'] as string) ?? existing.rule,\n title: (data['title'] as string) ?? existing.title,\n description: (data['description'] as string | undefined) ?? existing.description,\n runAt: (data['runAt'] as AXPValidationRunAt) ?? existing.runAt ?? 'client',\n options,\n }\n : {\n rule: (data['rule'] as string) ?? ruleKey,\n title: (data['title'] as string) ?? ruleKey,\n description: data['description'] as string | undefined,\n runAt: (data['runAt'] as AXPValidationRunAt) ?? 'client',\n options,\n };\n await crud.updateValidation(ruleKey, definition);\n },\n },\n delete: {\n execute: async (id: string) => {\n await crud.deleteValidation(id);\n },\n },\n }\n : undefined,\n queries: crud\n ? {\n byKey: {\n execute: async (id: string) => {\n const def = await crud.getValidation(id);\n if (!def) return null;\n return {\n ...def,\n id: def.rule,\n options: mapEntityFieldRowsInterfaceForForm(def.options ?? []),\n };\n },\n type: AXPEntityQueryType.Single,\n },\n list: {\n execute: async (request?: AXPQueryRequest) => {\n const list = await crud.listValidations();\n let items = list.map((x) => ({\n id: x.rule,\n rule: x.rule,\n title: x.title ?? '',\n runAt: x.runAt ?? 'client',\n }));\n if (request?.filter) {\n items = applyFilterArray(items, [request.filter], request.filter.logic ?? 'and');\n }\n if (request?.sort?.length) {\n items = applySortArray(items, request.sort);\n }\n const total = items.length;\n const skip = request?.skip ?? 0;\n const take = request?.take ?? total;\n const pagedItems = items.slice(skip, skip + take);\n return { items: pagedItems, total };\n },\n type: AXPEntityQueryType.List,\n },\n }\n : undefined,\n interfaces: {\n master: {\n create: {\n sections: [{ id: 'basic-info' }, { id: 'option-definitions' }],\n properties: [\n { name: 'rule', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'title', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'runAt', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'description', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'options', layout: { positions: { lg: { colSpan: 12 } } } },\n ],\n },\n update: {\n sections: [{ id: 'basic-info' }, { id: 'option-definitions' }],\n properties: [\n { name: 'rule', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'title', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'runAt', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'description', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'options', layout: { positions: { lg: { colSpan: 12 } } } },\n ],\n },\n single: {\n title: '{{title}}',\n sections: [{ id: 'basic-info' }, { id: 'option-definitions' }],\n properties: [\n { name: 'rule', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'title', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'runAt', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'description', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'options', layout: { positions: { lg: { colSpan: 12 } } } },\n ],\n actions: [],\n },\n list: {\n actions: [...entityMasterCrudActions()],\n views: [createAllQueryView()],\n },\n },\n },\n };\n\n return entityDef;\n}\n","/** MIME type for native drag payloads carrying `AXPWorkflowActivityPaletteItem` JSON. */\nexport const AXP_WORKFLOW_PALETTE_MIME = 'application/x-axp-workflow-palette-item';\n","import type {\n AXPWorkflowActivityPaletteItem,\n AXPWorkflowArrangeAlignment,\n AXPWorkflowArrangeDiagramOptions,\n AXPWorkflowArrangeDirection,\n AXPWorkflowConnectRequest,\n AXPWorkflowConnectionPreviewStyle,\n AXPWorkflowConnector,\n AXPWorkflowConnectorRouteOptions,\n AXPWorkflowDiagramModel,\n AXPWorkflowNode,\n AXPWorkflowPoint,\n AXPWorkflowPort,\n AXPWorkflowPortSide,\n AXPWorkflowRect,\n AXPWorkflowSize,\n} from './workflow-designer.types';\n\n//#region ---- Ids ----\n\nlet idCounter = 0;\n\nexport function createWorkflowNodeId(): string {\n idCounter += 1;\n return `wf-node-${Date.now()}-${idCounter}`;\n}\n\nexport function createWorkflowConnectorId(): string {\n idCounter += 1;\n return `wf-conn-${Date.now()}-${idCounter}`;\n}\n\nexport function createWorkflowPortId(prefix: string): string {\n idCounter += 1;\n return `${prefix}-port-${idCounter}`;\n}\n\n//#endregion\n\n//#region ---- Defaults ----\n\nconst DEFAULT_SIZE: AXPWorkflowSize = { width: 180, height: 72 };\n\nconst DEFAULT_INBOUND: Omit<AXPWorkflowPort, 'id' | 'kind'>[] = [{ side: 'left', ratio: 0.5, key: 'in' }];\n\nconst DEFAULT_OUTBOUND: Omit<AXPWorkflowPort, 'id' | 'kind'>[] = [{ side: 'right', ratio: 0.5, key: 'out' }];\n\nexport function cloneDiagram(model: AXPWorkflowDiagramModel): AXPWorkflowDiagramModel {\n return {\n nodes: model.nodes.map((n) => ({\n ...n,\n position: { ...n.position },\n size: { ...n.size },\n inboundPorts: n.inboundPorts.map((p) => ({\n ...p,\n data: p.data ? { ...p.data } : undefined,\n })),\n outboundPorts: n.outboundPorts.map((p) => ({\n ...p,\n data: p.data ? { ...p.data } : undefined,\n })),\n data: n.data ? { ...n.data } : undefined,\n })),\n connectors: model.connectors.map((c) => ({\n ...c,\n data: c.data ? { ...c.data } : undefined,\n })),\n data: model.data ? { ...model.data } : undefined,\n };\n}\n\nexport function createPortsFromPalette(\n nodeId: string,\n item: AXPWorkflowActivityPaletteItem,\n): { inbound: AXPWorkflowPort[]; outbound: AXPWorkflowPort[] } {\n const inboundSrc = item.inboundPorts !== undefined ? item.inboundPorts : DEFAULT_INBOUND;\n const outboundSrc = item.outboundPorts !== undefined ? item.outboundPorts : DEFAULT_OUTBOUND;\n const inbound: AXPWorkflowPort[] = inboundSrc.map((p) => ({\n ...p,\n id: createWorkflowPortId(`${nodeId}-in`),\n kind: 'inbound' as const,\n data: p.data ? { ...p.data } : undefined,\n }));\n const outbound: AXPWorkflowPort[] = outboundSrc.map((p) => ({\n ...p,\n id: createWorkflowPortId(`${nodeId}-out`),\n kind: 'outbound' as const,\n data: p.data ? { ...p.data } : undefined,\n }));\n return { inbound, outbound };\n}\n\nexport function createNodeFromPaletteItem(\n item: AXPWorkflowActivityPaletteItem,\n position: AXPWorkflowPoint,\n): AXPWorkflowNode {\n const id = createWorkflowNodeId();\n const { inbound, outbound } = createPortsFromPalette(id, item);\n const shape = item.shape ?? 'rounded-rectangle';\n const size = item.size ? { ...item.size } : { ...DEFAULT_SIZE };\n if (shape === 'circle') {\n const d = Math.min(size.width, size.height);\n size.width = d;\n size.height = d;\n }\n return {\n id,\n type: item.type,\n title: item.title,\n icon: item.icon,\n shape,\n position: { ...position },\n size: { ...size },\n inboundPorts: inbound,\n outboundPorts: outbound,\n data: item.data ? { ...item.data } : undefined,\n lockAspectRatio: item.lockAspectRatio ?? shape === 'circle',\n snapToGrid: item.snapToGrid,\n color: item.color,\n };\n}\n\n/**\n * Parses drag `dataTransfer` JSON into a partial palette item (requires `type`).\n * Merge with catalog (`paletteItems`) to obtain `title` and defaults.\n */\nexport function parsePaletteItemDragPayload(\n raw: string | undefined,\n): (Partial<AXPWorkflowActivityPaletteItem> & { type: string }) | null {\n if (!raw) return null;\n try {\n const o = JSON.parse(raw) as Partial<AXPWorkflowActivityPaletteItem>;\n if (typeof o.type !== 'string') return null;\n return o as Partial<AXPWorkflowActivityPaletteItem> & { type: string };\n } catch {\n return null;\n }\n}\n\n//#endregion\n\n//#region ---- Snap ----\n\nexport function snapScalar(value: number, grid: number): number {\n if (grid <= 0) return value;\n return Math.round(value / grid) * grid;\n}\n\nexport function snapPoint(point: AXPWorkflowPoint, grid: number): AXPWorkflowPoint {\n return { x: snapScalar(point.x, grid), y: snapScalar(point.y, grid) };\n}\n\n//#endregion\n\n//#region ---- Port anchor (node-local, top-left origin) ----\n\n/**\n * Inbound/outbound anchor on an axis-aligned ellipse inscribed in `w`×`h` (centered),\n * so ports sit on the true perimeter for circle/ellipse nodes.\n */\nfunction portAnchorOnEllipsePerimeter(\n w: number,\n h: number,\n side: AXPWorkflowPortSide,\n ratio: number,\n): AXPWorkflowPoint {\n const r = Math.min(0.999, Math.max(0.001, ratio));\n const cx = w * 0.5;\n const cy = h * 0.5;\n const rx = w * 0.5;\n const ry = h * 0.5;\n let theta = 0;\n switch (side) {\n case 'right':\n theta = -Math.PI / 2 + Math.PI * r;\n break;\n case 'left':\n theta = Math.PI / 2 + Math.PI * r;\n break;\n case 'top':\n theta = Math.PI + Math.PI * r;\n break;\n case 'bottom':\n theta = Math.PI * r;\n break;\n default:\n theta = 0;\n }\n return {\n x: cx + rx * Math.cos(theta),\n y: cy + ry * Math.sin(theta),\n };\n}\n\nfunction portAnchorOnBoxEdge(w: number, h: number, side: AXPWorkflowPortSide, ratio: number): AXPWorkflowPoint {\n const r = Math.min(0.999, Math.max(0.001, ratio));\n switch (side) {\n case 'top':\n return { x: w * r, y: 0 };\n case 'bottom':\n return { x: w * r, y: h };\n case 'left':\n return { x: 0, y: h * r };\n case 'right':\n return { x: w, y: h * r };\n default:\n return { x: w * 0.5, y: h * 0.5 };\n }\n}\n\n/** Diamond perimeter of a rotated square inside the node bounds. */\nfunction portAnchorOnDiamondPerimeter(\n w: number,\n h: number,\n side: AXPWorkflowPortSide,\n ratio: number,\n): AXPWorkflowPoint {\n const r = Math.min(0.999, Math.max(0.001, ratio));\n const top: AXPWorkflowPoint = { x: w * 0.5, y: 0 };\n const right: AXPWorkflowPoint = { x: w, y: h * 0.5 };\n const bottom: AXPWorkflowPoint = { x: w * 0.5, y: h };\n const left: AXPWorkflowPoint = { x: 0, y: h * 0.5 };\n const lerp = (a: AXPWorkflowPoint, b: AXPWorkflowPoint, t: number): AXPWorkflowPoint => ({\n x: a.x + (b.x - a.x) * t,\n y: a.y + (b.y - a.y) * t,\n });\n\n switch (side) {\n case 'top':\n return r <= 0.5 ? lerp(left, top, r * 2) : lerp(top, right, (r - 0.5) * 2);\n case 'right':\n return r <= 0.5 ? lerp(top, right, r * 2) : lerp(right, bottom, (r - 0.5) * 2);\n case 'bottom':\n return r <= 0.5 ? lerp(right, bottom, r * 2) : lerp(bottom, left, (r - 0.5) * 2);\n case 'left':\n return r <= 0.5 ? lerp(bottom, left, r * 2) : lerp(left, top, (r - 0.5) * 2);\n default:\n return { x: w * 0.5, y: h * 0.5 };\n }\n}\n\nexport function portAnchorOnNode(node: AXPWorkflowNode, port: AXPWorkflowPort): AXPWorkflowPoint {\n const { width: w, height: h } = node.size;\n const r = Math.min(0.999, Math.max(0.001, port.ratio));\n if (node.shape === 'circle' || node.shape === 'ellipse') {\n return portAnchorOnEllipsePerimeter(w, h, port.side, r);\n }\n if (node.shape === 'diamond') {\n return portAnchorOnDiamondPerimeter(w, h, port.side, r);\n }\n return portAnchorOnBoxEdge(w, h, port.side, r);\n}\n\nexport function portCanvasPosition(node: AXPWorkflowNode, port: AXPWorkflowPort): AXPWorkflowPoint {\n const local = portAnchorOnNode(node, port);\n return { x: node.position.x + local.x, y: node.position.y + local.y };\n}\n\n//#endregion\n\n//#region ---- Connector path: obstacle-aware orthogonal router ----\n\ninterface InflatedRect {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\nfunction inflateRect(r: AXPWorkflowRect, padding: number): InflatedRect {\n return {\n x: r.position.x - padding,\n y: r.position.y - padding,\n width: r.size.width + padding * 2,\n height: r.size.height + padding * 2,\n };\n}\n\nfunction pointInsideRect(p: AXPWorkflowPoint, r: InflatedRect): boolean {\n return p.x > r.x && p.x < r.x + r.width && p.y > r.y && p.y < r.y + r.height;\n}\n\n/**\n * Returns true if an axis-aligned segment crosses the interior of any obstacle.\n * Endpoints that only touch the rectangle's edge are not considered a crossing.\n */\nfunction segmentCrossesObstacles(a: AXPWorkflowPoint, b: AXPWorkflowPoint, obstacles: InflatedRect[]): boolean {\n const minX = Math.min(a.x, b.x);\n const maxX = Math.max(a.x, b.x);\n const minY = Math.min(a.y, b.y);\n const maxY = Math.max(a.y, b.y);\n\n const tolerance = 0.5;\n\n for (const r of obstacles) {\n const right = r.x + r.width;\n const bottom = r.y + r.height;\n\n if (maxX <= r.x + tolerance || minX >= right - tolerance) continue;\n if (maxY <= r.y + tolerance || minY >= bottom - tolerance) continue;\n\n if (Math.abs(a.y - b.y) < 0.0001) {\n if (a.y > r.y + tolerance && a.y < bottom - tolerance) return true;\n } else if (Math.abs(a.x - b.x) < 0.0001) {\n if (a.x > r.x + tolerance && a.x < right - tolerance) return true;\n } else {\n return true;\n }\n }\n return false;\n}\n\nfunction stepOutward(p: AXPWorkflowPoint, side: AXPWorkflowPortSide, length: number): AXPWorkflowPoint {\n switch (side) {\n case 'left':\n return { x: p.x - length, y: p.y };\n case 'right':\n return { x: p.x + length, y: p.y };\n case 'top':\n return { x: p.x, y: p.y - length };\n case 'bottom':\n return { x: p.x, y: p.y + length };\n }\n}\n\nfunction oppositeSide(side: AXPWorkflowPortSide): AXPWorkflowPortSide {\n switch (side) {\n case 'left':\n return 'right';\n case 'right':\n return 'left';\n case 'top':\n return 'bottom';\n case 'bottom':\n return 'top';\n }\n}\n\nfunction sideAxis(side: AXPWorkflowPortSide): 'h' | 'v' {\n return side === 'left' || side === 'right' ? 'h' : 'v';\n}\n\n/**\n * Removes consecutive duplicate points and collapses collinear intermediate waypoints.\n */\nfunction simplifyWaypoints(points: AXPWorkflowPoint[]): AXPWorkflowPoint[] {\n const deduped: AXPWorkflowPoint[] = [];\n for (const p of points) {\n const last = deduped[deduped.length - 1];\n if (last && Math.abs(last.x - p.x) < 0.001 && Math.abs(last.y - p.y) < 0.001) continue;\n deduped.push(p);\n }\n if (deduped.length <= 2) return deduped;\n\n const out: AXPWorkflowPoint[] = [deduped[0]];\n for (let i = 1; i < deduped.length - 1; i++) {\n const prev = deduped[i - 1];\n const curr = deduped[i];\n const next = deduped[i + 1];\n const collinearH = Math.abs(prev.y - curr.y) < 0.001 && Math.abs(curr.y - next.y) < 0.001;\n const collinearV = Math.abs(prev.x - curr.x) < 0.001 && Math.abs(curr.x - next.x) < 0.001;\n if (!collinearH && !collinearV) out.push(curr);\n }\n out.push(deduped[deduped.length - 1]);\n return out;\n}\n\n/**\n * Generates candidate waypoint sets that connect `a` to `b` while respecting the entry/exit axes.\n * Strategies are ordered from \"most natural\" to \"more elaborate detour\".\n */\nfunction generateRouteStrategies(\n a: AXPWorkflowPoint,\n aAxis: 'h' | 'v',\n b: AXPWorkflowPoint,\n bAxis: 'h' | 'v',\n obstacles: InflatedRect[],\n): AXPWorkflowPoint[][] {\n const strategies: AXPWorkflowPoint[][] = [];\n const midX = (a.x + b.x) / 2;\n const midY = (a.y + b.y) / 2;\n\n const obstacleXCuts: number[] = [];\n const obstacleYCuts: number[] = [];\n for (const o of obstacles) {\n obstacleXCuts.push(o.x - 6);\n obstacleXCuts.push(o.x + o.width + 6);\n obstacleYCuts.push(o.y - 6);\n obstacleYCuts.push(o.y + o.height + 6);\n }\n obstacleXCuts.sort((x, y) => Math.abs(x - midX) - Math.abs(y - midX));\n obstacleYCuts.sort((x, y) => Math.abs(x - midY) - Math.abs(y - midY));\n\n if (aAxis === 'h' && bAxis === 'h') {\n strategies.push([\n { x: midX, y: a.y },\n { x: midX, y: b.y },\n ]);\n for (const mx of obstacleXCuts) {\n strategies.push([\n { x: mx, y: a.y },\n { x: mx, y: b.y },\n ]);\n }\n for (const my of obstacleYCuts) {\n strategies.push([\n { x: a.x, y: my },\n { x: b.x, y: my },\n ]);\n }\n } else if (aAxis === 'v' && bAxis === 'v') {\n strategies.push([\n { x: a.x, y: midY },\n { x: b.x, y: midY },\n ]);\n for (const my of obstacleYCuts) {\n strategies.push([\n { x: a.x, y: my },\n { x: b.x, y: my },\n ]);\n }\n for (const mx of obstacleXCuts) {\n strategies.push([\n { x: mx, y: a.y },\n { x: mx, y: b.y },\n ]);\n }\n } else if (aAxis === 'h' && bAxis === 'v') {\n strategies.push([{ x: b.x, y: a.y }]);\n for (const my of obstacleYCuts) {\n strategies.push([\n { x: a.x, y: my },\n { x: b.x, y: my },\n ]);\n }\n } else {\n strategies.push([{ x: a.x, y: b.y }]);\n for (const mx of obstacleXCuts) {\n strategies.push([\n { x: mx, y: a.y },\n { x: mx, y: b.y },\n ]);\n }\n }\n\n return strategies;\n}\n\n/**\n * Picks the first strategy whose segments do not cross any obstacle.\n * Falls back to the most natural strategy when every candidate is blocked\n * (best-effort: keeps the connector readable even in tight layouts).\n */\nfunction pickCleanStrategy(\n a: AXPWorkflowPoint,\n b: AXPWorkflowPoint,\n strategies: AXPWorkflowPoint[][],\n obstacles: InflatedRect[],\n): AXPWorkflowPoint[] {\n for (const wp of strategies) {\n const full = [a, ...wp, b];\n let clean = true;\n for (let i = 0; i < full.length - 1; i++) {\n if (segmentCrossesObstacles(full[i], full[i + 1], obstacles)) {\n clean = false;\n break;\n }\n }\n if (clean) return wp;\n }\n return strategies[0] ?? [];\n}\n\n/**\n * Routes an obstacle-aware orthogonal path between two free-space points.\n * The returned array includes the start (`from`), stub-outs from each port,\n * intermediate waypoints, and the end (`to`).\n *\n * Obstacles whose inflated rect already contains a stub point are dropped so\n * that source/target nodes can still emit/receive their connector without the\n * router fighting itself — but the middle of the path still routes around them.\n */\nexport function routeOrthogonalConnector(\n from: AXPWorkflowPoint,\n sourceSide: AXPWorkflowPortSide,\n to: AXPWorkflowPoint,\n targetSide: AXPWorkflowPortSide,\n obstacles: AXPWorkflowRect[] = [],\n options: { stub?: number; obstaclePadding?: number } = {},\n): AXPWorkflowPoint[] {\n const stub = Math.max(0, options.stub ?? 18);\n const padding = Math.max(0, options.obstaclePadding ?? 10);\n\n const aStub = stepOutward(from, sourceSide, stub);\n const bStub = stepOutward(to, targetSide, stub);\n\n const inflated = obstacles.map((o) => inflateRect(o, padding));\n const safe = inflated.filter((o) => !pointInsideRect(aStub, o) && !pointInsideRect(bStub, o));\n\n const strategies = generateRouteStrategies(aStub, sideAxis(sourceSide), bStub, sideAxis(targetSide), safe);\n const middle = pickCleanStrategy(aStub, bStub, strategies, safe);\n\n return simplifyWaypoints([from, aStub, ...middle, bStub, to]);\n}\n\n/** Renders waypoints as straight `L` segments. */\nfunction waypointsToOrthogonalPath(points: AXPWorkflowPoint[]): string {\n if (points.length < 2) return '';\n const cmds: string[] = [`M ${points[0].x} ${points[0].y}`];\n for (let i = 1; i < points.length; i++) {\n cmds.push(`L ${points[i].x} ${points[i].y}`);\n }\n return cmds.join(' ');\n}\n\n/** Renders waypoints with rounded corners (quadratic curves) between segments. */\nfunction waypointsToRoundedPath(points: AXPWorkflowPoint[], radius: number): string {\n if (points.length < 2) return '';\n if (points.length === 2) return `M ${points[0].x} ${points[0].y} L ${points[1].x} ${points[1].y}`;\n\n const cmds: string[] = [`M ${points[0].x} ${points[0].y}`];\n for (let i = 1; i < points.length - 1; i++) {\n const prev = points[i - 1];\n const curr = points[i];\n const next = points[i + 1];\n\n const inDx = Math.sign(curr.x - prev.x);\n const inDy = Math.sign(curr.y - prev.y);\n const outDx = Math.sign(next.x - curr.x);\n const outDy = Math.sign(next.y - curr.y);\n\n const segIn = Math.hypot(curr.x - prev.x, curr.y - prev.y);\n const segOut = Math.hypot(next.x - curr.x, next.y - curr.y);\n const r = Math.max(0, Math.min(radius, segIn * 0.5, segOut * 0.5));\n\n const cornerStart = { x: curr.x - inDx * r, y: curr.y - inDy * r };\n const cornerEnd = { x: curr.x + outDx * r, y: curr.y + outDy * r };\n\n cmds.push(`L ${cornerStart.x} ${cornerStart.y}`);\n cmds.push(`Q ${curr.x} ${curr.y} ${cornerEnd.x} ${cornerEnd.y}`);\n }\n const last = points[points.length - 1];\n cmds.push(`L ${last.x} ${last.y}`);\n return cmds.join(' ');\n}\n\n/**\n * Builds the SVG `d` string for a connector. When `options.obstacles` is supplied,\n * orthogonal/rounded routes detour around the obstacle rectangles instead of\n * passing through them. The `straight` style always draws a direct line.\n */\nexport function connectorPath(\n from: AXPWorkflowPoint,\n to: AXPWorkflowPoint,\n style: AXPWorkflowConnectionPreviewStyle,\n sourceSide: AXPWorkflowPortSide,\n options: AXPWorkflowConnectorRouteOptions = {},\n): string {\n if (style === 'straight') {\n return `M ${from.x} ${from.y} L ${to.x} ${to.y}`;\n }\n\n const targetSide = options.targetSide ?? oppositeSide(sourceSide);\n const waypoints = routeOrthogonalConnector(from, sourceSide, to, targetSide, options.obstacles ?? [], {\n stub: options.stub,\n obstaclePadding: options.obstaclePadding,\n });\n\n if (style === 'orthogonal') {\n return waypointsToOrthogonalPath(waypoints);\n }\n return waypointsToRoundedPath(waypoints, options.cornerRadius ?? 14);\n}\n\n//#endregion\n\n//#region ---- Model helpers ----\n\nexport function findNode(model: AXPWorkflowDiagramModel, nodeId: string): AXPWorkflowNode | undefined {\n return model.nodes.find((n) => n.id === nodeId);\n}\n\nexport function findPort(\n node: AXPWorkflowNode,\n portId: string,\n): { port: AXPWorkflowPort; inbound: boolean } | undefined {\n const pi = node.inboundPorts.find((p) => p.id === portId);\n if (pi) return { port: pi, inbound: true };\n const po = node.outboundPorts.find((p) => p.id === portId);\n if (po) return { port: po, inbound: false };\n return undefined;\n}\n\nexport function findConnector(model: AXPWorkflowDiagramModel, id: string): AXPWorkflowConnector | undefined {\n return model.connectors.find((c) => c.id === id);\n}\n\n/**\n * Built-in rules: valid ports, not disabled, optional single inbound attachment, no duplicate edge.\n */\nexport function defaultCanConnectRequest(request: AXPWorkflowConnectRequest): boolean {\n const { model, sourceNodeId, sourcePortId, targetNodeId, targetPortId } = request;\n const sn = findNode(model, sourceNodeId);\n const tn = findNode(model, targetNodeId);\n if (!sn || !tn) return false;\n const spInfo = findPort(sn, sourcePortId);\n const tpInfo = findPort(tn, targetPortId);\n if (!spInfo || !tpInfo) return false;\n const sp = spInfo.port;\n const tp = tpInfo.port;\n if (sp.kind !== 'outbound' || tp.kind !== 'inbound') return false;\n if (sp.disabled || tp.disabled) return false;\n\n const duplicate = model.connectors.some(\n (c) =>\n c.sourceNodeId === sourceNodeId &&\n c.sourcePortId === sourcePortId &&\n c.targetNodeId === targetNodeId &&\n c.targetPortId === targetPortId,\n );\n if (duplicate) return false;\n\n if (!tp.allowMultiple) {\n const inboundTaken = model.connectors.some(\n (c) => c.targetNodeId === targetNodeId && c.targetPortId === targetPortId,\n );\n if (inboundTaken) return false;\n }\n\n return true;\n}\n\n//#endregion\n\n//#region ---- Auto layout ----\n\nconst DEFAULT_ARRANGE_MARGIN = 80;\n// Defaults leave room for inbound/outbound port labels that sit ~18px outside the\n// port anchor and may extend further as text. Larger gaps keep adjacent nodes from\n// having their port labels collide with each other or with routed connectors.\nconst DEFAULT_ARRANGE_PRIMARY_GAP = 160;\nconst DEFAULT_ARRANGE_CROSS_GAP = 110;\nconst DEFAULT_ARRANGE_COMPONENT_GAP = 220;\n\ninterface ArrangeRuntime {\n direction: AXPWorkflowArrangeDirection;\n alignment: AXPWorkflowArrangeAlignment;\n primaryGap: number;\n crossGap: number;\n componentGap: number;\n margin: number;\n grid: number;\n origin: AXPWorkflowPoint;\n reduceCrossings: boolean;\n groupDisconnected: boolean;\n}\n\n/**\n * Auto-arranges workflow nodes in a layered layout (left→right by default).\n * Honors `direction`, `alignment`, `origin`, `nodeIds`, and crossing-reduction options.\n */\nexport function arrangeWorkflowDiagram(\n model: AXPWorkflowDiagramModel,\n options: AXPWorkflowArrangeDiagramOptions = {},\n): AXPWorkflowDiagramModel {\n if (model.nodes.length === 0) {\n return model;\n }\n\n const margin = options.margin ?? DEFAULT_ARRANGE_MARGIN;\n const runtime: ArrangeRuntime = {\n direction: options.direction ?? 'horizontal',\n alignment: options.alignment ?? 'center',\n primaryGap: options.horizontalGap ?? DEFAULT_ARRANGE_PRIMARY_GAP,\n crossGap: options.verticalGap ?? DEFAULT_ARRANGE_CROSS_GAP,\n componentGap: Math.max(options.verticalGap ?? DEFAULT_ARRANGE_CROSS_GAP, DEFAULT_ARRANGE_COMPONENT_GAP),\n margin,\n grid: options.gridSize ?? 0,\n origin: options.origin ?? { x: margin, y: margin },\n reduceCrossings: options.reduceCrossings ?? true,\n groupDisconnected: options.groupDisconnected ?? true,\n };\n\n const subsetIds =\n options.nodeIds && options.nodeIds.length > 0\n ? new Set(options.nodeIds.filter((id) => model.nodes.some((n) => n.id === id)))\n : null;\n const targetNodes = subsetIds ? model.nodes.filter((n) => subsetIds.has(n.id)) : model.nodes;\n if (targetNodes.length === 0) {\n return model;\n }\n\n const targetIds = new Set(targetNodes.map((n) => n.id));\n const relevantConnectors = model.connectors.filter(\n (c) => targetIds.has(c.sourceNodeId) && targetIds.has(c.targetNodeId),\n );\n\n const components = splitComponents(targetNodes, relevantConnectors, runtime, options.startNodeId);\n\n const positionById = new Map<string, AXPWorkflowPoint>();\n let crossCursor = runtime.direction === 'horizontal' ? runtime.origin.y : runtime.origin.x;\n\n for (const component of components) {\n layoutComponent(component, positionById, runtime, crossCursor);\n crossCursor += component.crossSize + runtime.componentGap;\n }\n\n return {\n ...model,\n nodes: model.nodes.map((n) => {\n const next = positionById.get(n.id);\n return next ? { ...n, position: { ...next } } : n;\n }),\n };\n}\n\ninterface LayoutComponent {\n nodes: AXPWorkflowNode[];\n ranks: AXPWorkflowNode[][];\n crossSize: number;\n}\n\nfunction splitComponents(\n nodes: AXPWorkflowNode[],\n connectors: AXPWorkflowConnector[],\n runtime: ArrangeRuntime,\n startNodeId: string | undefined,\n): LayoutComponent[] {\n const undirected = new Map<string, Set<string>>();\n const outgoing = new Map<string, Set<string>>();\n const incomingCount = new Map<string, number>();\n for (const n of nodes) {\n undirected.set(n.id, new Set());\n outgoing.set(n.id, new Set());\n incomingCount.set(n.id, 0);\n }\n for (const c of connectors) {\n if (!undirected.has(c.sourceNodeId) || !undirected.has(c.targetNodeId)) continue;\n undirected.get(c.sourceNodeId)!.add(c.targetNodeId);\n undirected.get(c.targetNodeId)!.add(c.sourceNodeId);\n outgoing.get(c.sourceNodeId)!.add(c.targetNodeId);\n incomingCount.set(c.targetNodeId, (incomingCount.get(c.targetNodeId) ?? 0) + 1);\n }\n\n const sortedNodes = [...nodes].sort(compareNodesForLayout);\n if (startNodeId) {\n sortedNodes.sort((a, b) => {\n if (a.id === startNodeId) return -1;\n if (b.id === startNodeId) return 1;\n return 0;\n });\n }\n\n const visited = new Set<string>();\n const componentBuckets: AXPWorkflowNode[][] = [];\n\n if (runtime.groupDisconnected) {\n for (const seed of sortedNodes) {\n if (visited.has(seed.id)) continue;\n const bucket: AXPWorkflowNode[] = [];\n const queue: string[] = [seed.id];\n visited.add(seed.id);\n while (queue.length > 0) {\n const id = queue.shift()!;\n const node = nodes.find((n) => n.id === id);\n if (node) bucket.push(node);\n for (const next of undirected.get(id) ?? []) {\n if (!visited.has(next)) {\n visited.add(next);\n queue.push(next);\n }\n }\n }\n componentBuckets.push(bucket);\n }\n } else {\n componentBuckets.push([...nodes]);\n }\n\n const components: LayoutComponent[] = [];\n for (const bucket of componentBuckets) {\n const bucketIds = new Set(bucket.map((n) => n.id));\n const bucketConnectors = connectors.filter(\n (c) => bucketIds.has(c.sourceNodeId) && bucketIds.has(c.targetNodeId),\n );\n const ranks = computeRanks(bucket, outgoing, incomingCount, startNodeId);\n if (runtime.reduceCrossings) {\n reduceCrossingsInPlace(ranks, bucketConnectors, runtime.direction);\n } else {\n for (const rank of ranks) rank.sort(compareNodesForLayout);\n }\n const crossSize = estimateCrossSize(ranks, runtime);\n components.push({ nodes: bucket, ranks, crossSize });\n }\n\n return components;\n}\n\nfunction computeRanks(\n nodes: AXPWorkflowNode[],\n outgoing: Map<string, Set<string>>,\n incomingCount: Map<string, number>,\n startNodeId: string | undefined,\n): AXPWorkflowNode[][] {\n const rank = new Map<string, number>();\n const queue: string[] = [];\n\n const enqueueRoots = (ids: string[]): void => {\n for (const id of ids) {\n if (!rank.has(id)) {\n rank.set(id, 0);\n queue.push(id);\n }\n }\n };\n\n const localIds = new Set(nodes.map((n) => n.id));\n if (startNodeId && localIds.has(startNodeId)) {\n enqueueRoots([startNodeId]);\n } else {\n enqueueRoots(nodes.filter((n) => (incomingCount.get(n.id) ?? 0) === 0).map((n) => n.id));\n }\n\n // First-visit BFS handles cycles safely (shortest-distance ranking).\n const maxSteps = nodes.length * (nodes.length + 1);\n let steps = 0;\n while (queue.length > 0 && steps < maxSteps) {\n steps += 1;\n const id = queue.shift()!;\n const base = rank.get(id) ?? 0;\n for (const targetId of outgoing.get(id) ?? []) {\n if (!localIds.has(targetId) || rank.has(targetId)) continue;\n rank.set(targetId, base + 1);\n queue.push(targetId);\n }\n }\n\n let orphanRank = nodes.reduce((max, n) => Math.max(max, rank.get(n.id) ?? 0), 0) + 1;\n const unranked = nodes.filter((n) => !rank.has(n.id)).sort(compareNodesForLayout);\n for (const n of unranked) {\n rank.set(n.id, orphanRank);\n orphanRank += 1;\n }\n\n const byRank = new Map<number, AXPWorkflowNode[]>();\n for (const n of nodes) {\n const r = rank.get(n.id) ?? 0;\n const bucket = byRank.get(r) ?? [];\n bucket.push(n);\n byRank.set(r, bucket);\n }\n return [...byRank.keys()].sort((a, b) => a - b).map((r) => byRank.get(r) ?? []);\n}\n\n/**\n * Returns a 0–1 fraction along the cross axis (vertical for horizontal flow) where the port sits on the node.\n */\nfunction portCrossAxisFraction(\n node: AXPWorkflowNode,\n portId: string,\n direction: AXPWorkflowArrangeDirection,\n): number {\n const info = findPort(node, portId);\n if (!info) {\n return 0.5;\n }\n const port = info.port;\n const r = Math.min(0.999, Math.max(0.001, port.ratio));\n if (direction === 'horizontal') {\n switch (port.side) {\n case 'left':\n case 'right':\n return r;\n case 'top':\n return 0;\n case 'bottom':\n return 1;\n }\n }\n switch (port.side) {\n case 'top':\n case 'bottom':\n return r;\n case 'left':\n return 0;\n case 'right':\n return 1;\n }\n return r;\n}\n\n/**\n * Barycenter heuristic with port-aware weights: targets inherit both their predecessor's rank index\n * and the source port's cross-axis position so top/bottom (or left/right) ports map to matching targets.\n */\nfunction reduceCrossingsInPlace(\n ranks: AXPWorkflowNode[][],\n connectors: AXPWorkflowConnector[],\n direction: AXPWorkflowArrangeDirection,\n): void {\n if (ranks.length === 0) return;\n ranks[0] = [...ranks[0]].sort(compareNodesForLayout);\n\n const nodeById = new Map<string, AXPWorkflowNode>();\n for (const rank of ranks) {\n for (const node of rank) {\n nodeById.set(node.id, node);\n }\n }\n\n const indexInRank: Map<string, number>[] = ranks.map((rank) => {\n const map = new Map<string, number>();\n for (let i = 0; i < rank.length; i++) map.set(rank[i].id, i);\n return map;\n });\n\n for (let r = 1; r < ranks.length; r++) {\n const predRank = ranks[r - 1];\n const predIndex = indexInRank[r - 1];\n const incomingFromPred = new Map<string, number[]>();\n const predIds = new Set(predRank.map((n) => n.id));\n for (const c of connectors) {\n if (!predIds.has(c.sourceNodeId)) {\n continue;\n }\n const idx = predIndex.get(c.sourceNodeId);\n if (idx === undefined) {\n continue;\n }\n const sourceNode = nodeById.get(c.sourceNodeId);\n const portFraction = sourceNode ? portCrossAxisFraction(sourceNode, c.sourcePortId, direction) : 0.5;\n // Keep port ordering within the same predecessor index (fraction ∈ [0, 1)).\n const weight = idx + portFraction;\n const arr = incomingFromPred.get(c.targetNodeId) ?? [];\n arr.push(weight);\n incomingFromPred.set(c.targetNodeId, arr);\n }\n ranks[r] = [...ranks[r]].sort((a, b) => {\n const ia = incomingFromPred.get(a.id) ?? [];\n const ib = incomingFromPred.get(b.id) ?? [];\n const ba = ia.length > 0 ? ia.reduce((s, v) => s + v, 0) / ia.length : Number.POSITIVE_INFINITY;\n const bb = ib.length > 0 ? ib.reduce((s, v) => s + v, 0) / ib.length : Number.POSITIVE_INFINITY;\n if (ba !== bb) return ba - bb;\n return compareNodesForLayout(a, b);\n });\n const refreshed = new Map<string, number>();\n for (let i = 0; i < ranks[r].length; i++) refreshed.set(ranks[r][i].id, i);\n indexInRank[r] = refreshed;\n }\n}\n\nfunction estimateCrossSize(ranks: AXPWorkflowNode[][], runtime: ArrangeRuntime): number {\n let max = 0;\n for (const rank of ranks) {\n const total = rank.reduce(\n (sum, n) => sum + (runtime.direction === 'horizontal' ? n.size.height : n.size.width),\n 0,\n );\n const gaps = Math.max(0, rank.length - 1) * runtime.crossGap;\n max = Math.max(max, total + gaps);\n }\n return max;\n}\n\nfunction layoutComponent(\n component: LayoutComponent,\n positionById: Map<string, AXPWorkflowPoint>,\n runtime: ArrangeRuntime,\n crossStart: number,\n): void {\n const isHorizontal = runtime.direction === 'horizontal';\n let primaryCursor = isHorizontal ? runtime.origin.x : runtime.origin.y;\n\n for (const rank of component.ranks) {\n if (rank.length === 0) continue;\n\n const crossTotal = rank.reduce(\n (sum, n) => sum + (isHorizontal ? n.size.height : n.size.width),\n 0,\n );\n const crossGaps = (rank.length - 1) * runtime.crossGap;\n const crossLen = crossTotal + crossGaps;\n\n let cursor = crossStart;\n if (runtime.alignment === 'center') {\n cursor = crossStart + (component.crossSize - crossLen) * 0.5;\n } else if (runtime.alignment === 'end') {\n cursor = crossStart + (component.crossSize - crossLen);\n }\n\n let primaryMax = 0;\n for (const node of rank) {\n const primary = isHorizontal ? primaryCursor : cursor;\n const cross = isHorizontal ? cursor : primaryCursor;\n const raw: AXPWorkflowPoint = isHorizontal ? { x: primary, y: cross } : { x: cross, y: primary };\n const snapped = runtime.grid > 0 ? snapPoint(raw, runtime.grid) : raw;\n positionById.set(node.id, snapped);\n const advance = (isHorizontal ? node.size.height : node.size.width) + runtime.crossGap;\n cursor += advance;\n primaryMax = Math.max(primaryMax, isHorizontal ? node.size.width : node.size.height);\n }\n\n primaryCursor += primaryMax + runtime.primaryGap;\n }\n}\n\nfunction compareNodesForLayout(a: AXPWorkflowNode, b: AXPWorkflowNode): number {\n const titleA = a.title?.trim() ?? '';\n const titleB = b.title?.trim() ?? '';\n if (titleA !== titleB) {\n return titleA.localeCompare(titleB);\n }\n return a.id.localeCompare(b.id);\n}\n\n//#endregion\n","import { AXPanViewDirective } from '@acorex/cdk/pan-view';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n TemplateRef,\n ViewEncapsulation,\n afterNextRender,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { AXP_WORKFLOW_PALETTE_MIME } from './workflow-designer.const';\nimport type {\n AXPWorkflowActivityPaletteItem,\n AXPWorkflowArrangeDiagramOptions,\n AXPWorkflowCanConnectFn,\n AXPWorkflowConnectRequest,\n AXPWorkflowConnectionPreviewStyle,\n AXPWorkflowConnector,\n AXPWorkflowDesignerActivation,\n AXPWorkflowDiagramModel,\n AXPWorkflowNode,\n AXPWorkflowNodeBodyTemplateContext,\n AXPWorkflowPoint,\n AXPWorkflowPort,\n AXPWorkflowRect,\n AXPWorkflowSemanticColor,\n} from './workflow-designer.types';\nimport {\n connectorPath,\n createNodeFromPaletteItem,\n createWorkflowConnectorId,\n defaultCanConnectRequest,\n findConnector,\n findNode,\n findPort,\n parsePaletteItemDragPayload,\n portAnchorOnNode,\n portCanvasPosition,\n snapPoint,\n snapScalar,\n arrangeWorkflowDiagram,\n cloneDiagram,\n} from './workflow-designer.utils';\n\n//#region ---- Types (internal) ----\n\ninterface LinkDragState {\n sourceNodeId: string;\n sourcePortId: string;\n from: AXPWorkflowPoint;\n to: AXPWorkflowPoint;\n}\n\ninterface NodeMoveState {\n nodeIds: string[];\n start: AXPWorkflowPoint;\n origins: Record<string, AXPWorkflowPoint>;\n moved: boolean;\n}\n\ninterface ResizeState {\n nodeId: string;\n handle: 'nw' | 'ne' | 'sw' | 'se';\n startPointer: AXPWorkflowPoint;\n startPosition: AXPWorkflowPoint;\n startSize: { width: number; height: number };\n aspect: number;\n}\n\ninterface CanvasViewportState {\n minX: number;\n minY: number;\n offsetX: number;\n offsetY: number;\n width: number;\n height: number;\n}\n\n//#endregion\n\n@Component({\n selector: 'axp-workflow-designer',\n imports: [CommonModule, AXDecoratorModule, AXButtonModule, AXPanViewDirective],\n templateUrl: './axp-workflow-designer.component.html',\n styleUrl: './axp-workflow-designer.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'axp-workflow-designer-host',\n '(window:keydown)': 'onWindowKeydown($event)',\n },\n})\nexport class AXPWorkflowDesignerComponent {\n /** Unique SVG fragment id so multiple designers on one page do not clash. */\n protected readonly svgMarkerId = `axp-wf-arrow-${Math.random().toString(36).slice(2, 10)}`;\n\n //#region ---- Inputs / outputs ----\n\n readonly model = input.required<AXPWorkflowDiagramModel>();\n\n readonly modelChange = output<AXPWorkflowDiagramModel>();\n\n /** When true, the whole designer is non-interactive unless a nested entity sets its own readonly flag. */\n readonly readonly = input(false);\n\n readonly gridSize = input(20);\n\n /** Default snap when node does not override `snapToGrid`. */\n readonly snapToGrid = input(true);\n\n readonly connectionPreviewStyle = input<AXPWorkflowConnectionPreviewStyle>('orthogonal');\n readonly backgroundPattern = input<'line' | 'dots'>('dots');\n readonly zoomChange = output<number>();\n\n /** When set, replaces built-in `defaultCanConnectRequest` entirely. */\n readonly canConnect = input<AXPWorkflowCanConnectFn | null>(null);\n\n /** Used to resolve native palette drag payloads (`type`) into full defaults. */\n readonly paletteItems = input<AXPWorkflowActivityPaletteItem[]>([]);\n\n /** When false, port labels are hidden (ports remain interactive). */\n readonly showPortLabels = input(true);\n\n readonly nodeBodyTemplate = input<TemplateRef<AXPWorkflowNodeBodyTemplateContext> | null>(null);\n\n readonly designerPointerDown = output<PointerEvent>();\n readonly designerClick = output<MouseEvent>();\n readonly designerDoubleClick = output<MouseEvent>();\n\n readonly nodePointerDown = output<{ node: AXPWorkflowNode; event: PointerEvent }>();\n readonly nodeClick = output<{ node: AXPWorkflowNode; event: PointerEvent }>();\n readonly nodeDoubleClick = output<{ node: AXPWorkflowNode; event: MouseEvent }>();\n readonly nodeContextMenu = output<{ node: AXPWorkflowNode; event: MouseEvent }>();\n readonly nodeDragStart = output<{ node: AXPWorkflowNode; event: PointerEvent }>();\n readonly nodeDragEnd = output<{ node: AXPWorkflowNode; event: PointerEvent }>();\n\n readonly portPointerDown = output<{\n node: AXPWorkflowNode;\n port: AXPWorkflowPort;\n event: PointerEvent;\n }>();\n\n readonly linkDragStart = output<{\n sourceNode: AXPWorkflowNode;\n sourcePort: AXPWorkflowPort;\n event: PointerEvent;\n }>();\n readonly linkDragMove = output<{\n sourceNode: AXPWorkflowNode;\n sourcePort: AXPWorkflowPort;\n point: AXPWorkflowPoint;\n event: PointerEvent;\n }>();\n readonly linkDragEnd = output<{\n sourceNode: AXPWorkflowNode;\n sourcePort: AXPWorkflowPort;\n cancelled: boolean;\n event: Event;\n }>();\n\n readonly connectorClick = output<{ connector: AXPWorkflowConnector; event: MouseEvent }>();\n readonly connectorDoubleClick = output<{ connector: AXPWorkflowConnector; event: MouseEvent }>();\n\n readonly connectionCreated = output<{ connector: AXPWorkflowConnector; model: AXPWorkflowDiagramModel }>();\n readonly connectionRejected = output<{\n reason: string;\n request: AXPWorkflowConnectRequest;\n event: PointerEvent;\n }>();\n\n readonly activationChange = output<AXPWorkflowDesignerActivation | null>();\n\n //#endregion\n\n //#region ---- State ----\n\n protected readonly surfaceRef = viewChild.required<ElementRef<HTMLElement>>('surface');\n private readonly panViewRef = viewChild(AXPanViewDirective);\n\n protected readonly activation = signal<AXPWorkflowDesignerActivation | null>(null);\n protected readonly selectedNodeIds = signal<Set<string>>(new Set());\n protected readonly selectedConnectorIds = signal<Set<string>>(new Set());\n protected readonly panX = signal(0);\n protected readonly panY = signal(0);\n protected readonly panZoomLevel = signal(100);\n protected readonly linkDrag = signal<LinkDragState | null>(null);\n /** Inbound port under the pointer while dragging a new connector from an outbound port. */\n protected readonly linkHoverTarget = signal<{ nodeId: string; portId: string } | null>(null);\n private nodeMove: NodeMoveState | null = null;\n private resize: ResizeState | null = null;\n private suppressNextNodeClick = false;\n private wrapperDragoverListener: ((event: DragEvent) => void) | null = null;\n private wrapperDropListener: ((event: DragEvent) => void) | null = null;\n private wrapperElement = signal<HTMLElement | null>(null);\n private wrapperAttachRetryHandle: ReturnType<typeof setTimeout> | null = null;\n private wrapperAttachAttempt = 0;\n\n private readonly destroyRef = inject(DestroyRef);\n\n //#endregion\n\n //#region ---- Computed ----\n\n protected readonly gridStyle = computed(() => {\n const g = this.gridSize();\n if (this.backgroundPattern() === 'dots') {\n return {\n 'background-size': `${g}px ${g}px`,\n 'background-image': `radial-gradient(circle, rgba(148, 163, 184, 0.35) 1px, transparent 1.2px)`,\n };\n }\n return {\n 'background-size': `${g}px ${g}px`,\n 'background-image': `\n linear-gradient(to right, rgba(148, 163, 184, 0.2) 1px, transparent 1px),\n linear-gradient(to bottom, rgba(148, 163, 184, 0.2) 1px, transparent 1px)\n `,\n };\n });\n\n protected readonly canvasViewport = computed<CanvasViewportState>(() => {\n const model = this.model();\n const contentPadding = 320;\n const minCanvasWidth = 1600;\n const minCanvasHeight = 1000;\n const nodeMinX = model.nodes.reduce((acc, node) => Math.min(acc, node.position.x), 0);\n const nodeMinY = model.nodes.reduce((acc, node) => Math.min(acc, node.position.y), 0);\n const nodeMaxRight = model.nodes.reduce((acc, node) => Math.max(acc, node.position.x + node.size.width), 0);\n const nodeMaxBottom = model.nodes.reduce((acc, node) => Math.max(acc, node.position.y + node.size.height), 0);\n const minX = Math.min(0, nodeMinX);\n const minY = Math.min(0, nodeMinY);\n const maxRight = Math.max(minCanvasWidth, nodeMaxRight);\n const maxBottom = Math.max(minCanvasHeight, nodeMaxBottom);\n const offsetX = -minX + contentPadding;\n const offsetY = -minY + contentPadding;\n return {\n minX,\n minY,\n offsetX,\n offsetY,\n width: Math.ceil(maxRight - minX + contentPadding * 2),\n height: Math.ceil(maxBottom - minY + contentPadding * 2),\n };\n });\n\n protected readonly surfaceStyle = computed(() => {\n const viewport = this.canvasViewport();\n return {\n // ...this.gridStyle(),\n width: `${viewport.width}px`,\n height: `${viewport.height}px`,\n };\n });\n\n //#endregion\n\n constructor() {\n afterNextRender(() => this.attachWrapperDropTargetsWithRetry());\n effect(() => this.syncWrapperBackgroundStyle());\n effect(() => {\n this.zoomChange.emit(this.panZoomLevel());\n });\n this.destroyRef.onDestroy(() => this.detachWindowListeners());\n }\n\n public zoomIn(): void {\n this.panViewRef()?.zoomIn();\n }\n\n public zoomOut(): void {\n this.panViewRef()?.zoomOut();\n }\n\n public zoomReset(): void {\n this.panViewRef()?.resetPosition();\n }\n\n public getZoomLevel(): number {\n return this.panZoomLevel();\n }\n\n //#region ---- Readonly helpers ----\n\n protected isNodeReadonly(node: AXPWorkflowNode): boolean {\n return this.readonly() || node.readonly === true;\n }\n\n protected isConnectorReadonly(c: AXPWorkflowConnector): boolean {\n return this.readonly() || c.readonly === true;\n }\n\n //#endregion\n\n //#region ---- Activation ----\n\n protected isNodeActive(nodeId: string): boolean {\n return this.selectedNodeIds().has(nodeId);\n }\n\n protected isConnectorActive(id: string): boolean {\n return this.selectedConnectorIds().has(id);\n }\n\n protected isPortActive(nodeId: string, portId: string): boolean {\n const a = this.activation();\n return a?.kind === 'port' && a.nodeId === nodeId && a.id === portId;\n }\n\n protected isPortLinkHoverTarget(nodeId: string, portId: string): boolean {\n if (!this.linkDrag()) return false;\n const h = this.linkHoverTarget();\n return h !== null && h.nodeId === nodeId && h.portId === portId;\n }\n\n private setActivation(next: AXPWorkflowDesignerActivation | null): void {\n this.activation.set(next);\n this.activationChange.emit(next);\n }\n\n private clearSelections(): void {\n this.selectedNodeIds.set(new Set());\n this.selectedConnectorIds.set(new Set());\n }\n\n //#endregion\n\n //#region ---- Model commit ----\n\n private commit(next: AXPWorkflowDiagramModel): void {\n this.modelChange.emit(next);\n }\n\n /**\n * Auto-arranges nodes into a layered layout and commits the result.\n *\n * Honors layout options such as `direction` (`'horizontal'` / `'vertical'`),\n * `alignment`, `origin`, `nodeIds` (subset arrange), and `reduceCrossings`.\n * When `gridSize` is omitted the designer's own `gridSize` input is used.\n */\n arrangeNicely(options?: AXPWorkflowArrangeDiagramOptions): void {\n if (this.readonly()) {\n return;\n }\n this.commit(this.computeArrangedLayout(options));\n }\n\n /**\n * Computes an arranged layout without committing it. Useful for previews,\n * comparing the result before applying it, or rendering ghost positions.\n */\n computeArrangedLayout(options?: AXPWorkflowArrangeDiagramOptions): AXPWorkflowDiagramModel {\n return arrangeWorkflowDiagram(cloneDiagram(this.model()), {\n gridSize: this.gridSize(),\n ...options,\n });\n }\n\n private resolvePaletteItem(type: string): AXPWorkflowActivityPaletteItem | undefined {\n return this.paletteItems().find((i) => i.type === type);\n }\n\n /**\n * Full drag payload merged with `paletteItems()` entry when the payload omits optional fields.\n */\n private resolveDroppedPaletteItem(raw: string | undefined): AXPWorkflowActivityPaletteItem | null {\n const parsed = parsePaletteItemDragPayload(raw);\n if (!parsed) return null;\n const base = this.resolvePaletteItem(parsed.type);\n const item = { ...(base ?? {}), ...parsed } as AXPWorkflowActivityPaletteItem;\n if (typeof item.title !== 'string') return null;\n return item;\n }\n\n private evaluateConnect(request: AXPWorkflowConnectRequest): boolean {\n const fn = this.canConnect();\n if (fn) return fn(request);\n return defaultCanConnectRequest(request);\n }\n\n //#endregion\n\n //#region ---- Canvas / surface ----\n\n protected onSurfacePointerDown(event: PointerEvent): void {\n if (!this.isBackgroundInteractionTarget(event.target as HTMLElement)) return;\n this.designerPointerDown.emit(event);\n }\n\n protected onSurfaceClick(event: MouseEvent): void {\n if (!this.isBackgroundInteractionTarget(event.target as HTMLElement)) return;\n this.clearSelections();\n this.setActivation({ kind: 'canvas', id: 'canvas' });\n this.designerClick.emit(event);\n }\n\n protected onSurfaceDoubleClick(event: MouseEvent): void {\n if (!this.isBackgroundInteractionTarget(event.target as HTMLElement)) return;\n this.designerDoubleClick.emit(event);\n }\n\n private isBackgroundInteractionTarget(target: HTMLElement | null): boolean {\n if (!target) return false;\n if (target.closest('.axp-workflow-designer__node')) return false;\n if (target.closest('.axp-workflow-designer__connector-actions')) return false;\n if (target.closest('.axp-workflow-designer__port-cluster')) return false;\n if (target.closest('path.axp-workflow-designer__edge-hit')) return false;\n if (target.closest('ax-button')) return false;\n return true;\n }\n\n protected canvasPointFromClient(clientX: number, clientY: number): AXPWorkflowPoint {\n const surface = this.surfaceRef().nativeElement;\n const wrapper = surface.closest('.ax-pan-view-wrapper') as HTMLElement | null;\n const basisRect = (wrapper ?? surface).getBoundingClientRect();\n const localX = clientX - basisRect.left;\n const localY = clientY - basisRect.top;\n\n const computed = getComputedStyle(surface);\n const transform = computed.transform;\n if (!transform || transform === 'none') {\n return this.surfacePointToModel({ x: localX, y: localY });\n }\n\n const matrix = new DOMMatrixReadOnly(transform);\n const originParts = computed.transformOrigin.split(' ');\n const originX = Number.parseFloat(originParts[0] ?? '0') || 0;\n const originY = Number.parseFloat(originParts[1] ?? '0') || 0;\n\n // CSS transform is applied around transform-origin, so include origin translation in matrix inversion.\n const withOrigin = new DOMMatrixReadOnly()\n .translate(originX, originY)\n .multiply(matrix)\n .translate(-originX, -originY);\n const point = new DOMPoint(localX, localY).matrixTransform(withOrigin.inverse());\n return this.surfacePointToModel({ x: point.x, y: point.y });\n }\n\n //#endregion\n\n //#region ---- Drag / drop (palette) ----\n\n protected onCanvasDragOver(event: DragEvent): void {\n if (this.readonly()) return;\n event.preventDefault();\n if (event.dataTransfer) event.dataTransfer.dropEffect = 'copy';\n }\n\n protected onCanvasDrop(event: DragEvent): void {\n if (this.readonly()) return;\n event.preventDefault();\n event.stopPropagation();\n const raw = event.dataTransfer?.getData(AXP_WORKFLOW_PALETTE_MIME);\n const item = this.resolveDroppedPaletteItem(raw);\n if (!item) return;\n const pt = this.canvasPointFromClient(event.clientX, event.clientY);\n const node = createNodeFromPaletteItem(item, this.applySnapToPointForNewNode(item, pt));\n const model = this.model();\n const next: AXPWorkflowDiagramModel = {\n nodes: [...model.nodes, node],\n connectors: [...model.connectors],\n };\n this.commit(next);\n this.setActivation({ kind: 'node', id: node.id });\n }\n\n private applySnapToPointForNewNode(item: AXPWorkflowActivityPaletteItem, pt: AXPWorkflowPoint): AXPWorkflowPoint {\n const nodeSnap = item.snapToGrid;\n const useSnap = nodeSnap ?? this.snapToGrid();\n const g = this.gridSize();\n if (!useSnap || g <= 0) return pt;\n return snapPoint(pt, g);\n }\n\n private applySnapForNode(node: AXPWorkflowNode, pt: AXPWorkflowPoint): AXPWorkflowPoint {\n const useSnap = node.snapToGrid ?? this.snapToGrid();\n const g = this.gridSize();\n if (!useSnap || g <= 0) return pt;\n return snapPoint(pt, g);\n }\n\n //#endregion\n\n //#region ---- Wrapper drop bridge ----\n\n private attachWrapperDropTargetsWithRetry(): void {\n this.clearWrapperAttachRetry();\n this.wrapperAttachAttempt = 0;\n const tryAttach = () => {\n const attached = this.attachWrapperDropTargets();\n if (attached) {\n return;\n }\n this.wrapperAttachAttempt += 1;\n if (this.wrapperAttachAttempt >= 20) {\n return;\n }\n this.wrapperAttachRetryHandle = setTimeout(tryAttach, 50);\n };\n tryAttach();\n }\n\n /**\n * Binds drag/drop to pan-view wrapper so users can drop while panning far away\n * from current finite surface bounds.\n */\n private attachWrapperDropTargets(): boolean {\n const surface = this.surfaceRef().nativeElement;\n const wrapper = surface.closest('.ax-pan-view-wrapper') as HTMLElement | null;\n if (!wrapper) {\n return false;\n }\n this.detachWrapperDropTargets();\n this.wrapperElement.set(wrapper);\n this.wrapperDragoverListener = (event: DragEvent) => {\n const target = event.target as HTMLElement | null;\n if (target?.closest('.axp-workflow-designer__surface')) {\n return;\n }\n this.onCanvasDragOver(event);\n };\n this.wrapperDropListener = (event: DragEvent) => {\n const target = event.target as HTMLElement | null;\n if (target?.closest('.axp-workflow-designer__surface')) {\n return;\n }\n this.onCanvasDrop(event);\n };\n wrapper.addEventListener('dragover', this.wrapperDragoverListener);\n wrapper.addEventListener('drop', this.wrapperDropListener);\n this.syncWrapperBackgroundStyle();\n return true;\n }\n\n private detachWrapperDropTargets(): void {\n const surface = this.surfaceRef().nativeElement;\n const wrapper = surface.closest('.ax-pan-view-wrapper') as HTMLElement | null;\n if (!wrapper) {\n this.wrapperElement.set(null);\n this.wrapperDragoverListener = null;\n this.wrapperDropListener = null;\n return;\n }\n if (this.wrapperDragoverListener) {\n wrapper.removeEventListener('dragover', this.wrapperDragoverListener);\n this.wrapperDragoverListener = null;\n }\n if (this.wrapperDropListener) {\n wrapper.removeEventListener('drop', this.wrapperDropListener);\n this.wrapperDropListener = null;\n }\n this.wrapperElement.set(null);\n }\n\n private clearWrapperAttachRetry(): void {\n if (this.wrapperAttachRetryHandle != null) {\n clearTimeout(this.wrapperAttachRetryHandle);\n this.wrapperAttachRetryHandle = null;\n }\n }\n\n //#endregion\n\n //#region ---- Keyboard ----\n\n protected onWindowKeydown(ev: KeyboardEvent): void {\n if (this.readonly()) return;\n const target = ev.target as HTMLElement | null;\n if (target?.closest('input,textarea,select,[contenteditable=\"true\"]')) return;\n\n if (ev.key === 'Escape') {\n ev.preventDefault();\n this.cancelLinkDrag(ev);\n this.clearSelections();\n this.setActivation(null);\n return;\n }\n\n if (ev.key !== 'Delete' && ev.key !== 'Backspace') return;\n ev.preventDefault();\n const selectedConnectorIds = this.selectedConnectorIds();\n const selectedNodeIds = this.selectedNodeIds();\n const model = this.model();\n if (selectedConnectorIds.size > 0 || selectedNodeIds.size > 0) {\n const nodes = model.nodes.filter((n) => !selectedNodeIds.has(n.id));\n const connectors = model.connectors.filter(\n (c) =>\n !selectedConnectorIds.has(c.id) &&\n !selectedNodeIds.has(c.sourceNodeId) &&\n !selectedNodeIds.has(c.targetNodeId),\n );\n this.commit({ ...model, nodes, connectors });\n this.clearSelections();\n this.setActivation(null);\n return;\n }\n const a = this.activation();\n if (!a || a.kind === 'canvas') return;\n\n if (a.kind === 'connector') {\n const c = findConnector(model, a.id);\n if (c && !this.isConnectorReadonly(c)) {\n const connectors = model.connectors.filter((x) => x.id !== c.id);\n this.commit({ ...model, connectors });\n this.setActivation(null);\n }\n return;\n }\n\n const nodeId = a.kind === 'node' ? a.id : a.nodeId;\n if (!nodeId) return;\n const node = findNode(model, nodeId);\n if (!node || this.isNodeReadonly(node)) return;\n const nodes = model.nodes.filter((n) => n.id !== nodeId);\n const connectors = model.connectors.filter((c) => c.sourceNodeId !== nodeId && c.targetNodeId !== nodeId);\n this.commit({ ...model, nodes, connectors });\n this.setActivation(null);\n }\n\n private cancelLinkDrag(ev: Event): void {\n const st = this.linkDrag();\n if (!st) return;\n this.linkDrag.set(null);\n this.linkHoverTarget.set(null);\n window.removeEventListener('pointermove', this.onWindowPointerMoveForLink);\n window.removeEventListener('pointerup', this.onWindowPointerUpForLink);\n window.removeEventListener('pointercancel', this.onWindowPointerUpForLink);\n const model = this.model();\n const sourceNode = findNode(model, st.sourceNodeId);\n const sourcePort = sourceNode ? findPort(sourceNode, st.sourcePortId)?.port : undefined;\n if (sourceNode && sourcePort) {\n this.linkDragEnd.emit({ sourceNode, sourcePort, cancelled: true, event: ev });\n }\n }\n\n //#endregion\n\n //#region ---- Node chrome ----\n\n protected shapeClass(shape: AXPWorkflowNode['shape']): string {\n return `axp-workflow-designer__node-shape--${shape}`;\n }\n\n protected semanticSurfaceClass(color?: AXPWorkflowSemanticColor): string {\n return color ? `axp-${color}-surface` : '';\n }\n\n protected nodeShapeClasses(node: AXPWorkflowNode): string {\n return ['axp-workflow-designer__node-shape', this.shapeClass(node.shape), this.semanticSurfaceClass(node.color)]\n .filter(Boolean)\n .join(' ');\n }\n\n protected connectorEdgeClasses(c: AXPWorkflowConnector): string {\n const parts = [\n 'axp-workflow-designer__edge',\n this.semanticSurfaceClass(c.color),\n this.isConnectorActive(c.id) ? 'axp-workflow-designer__edge--active' : '',\n ];\n return parts.filter(Boolean).join(' ');\n }\n\n protected onNodePointerDown(node: AXPWorkflowNode, event: PointerEvent): void {\n if (this.isNodeReadonly(node)) return;\n if (event.button !== 0) return;\n this.nodePointerDown.emit({ node, event });\n }\n\n protected onNodeClick(node: AXPWorkflowNode, event: MouseEvent): void {\n if (this.suppressNextNodeClick) {\n this.suppressNextNodeClick = false;\n event.stopPropagation();\n return;\n }\n event.stopPropagation();\n const append = event.ctrlKey || event.metaKey;\n if (append) {\n const next = new Set(this.selectedNodeIds());\n if (next.has(node.id)) next.delete(node.id);\n else next.add(node.id);\n this.selectedNodeIds.set(next);\n this.selectedConnectorIds.set(new Set());\n } else {\n this.selectedNodeIds.set(new Set([node.id]));\n this.selectedConnectorIds.set(new Set());\n }\n this.setActivation({ kind: 'node', id: node.id });\n this.nodeClick.emit({ node, event: event as unknown as PointerEvent });\n }\n\n protected onNodeDoubleClick(node: AXPWorkflowNode, event: MouseEvent): void {\n event.stopPropagation();\n this.nodeDoubleClick.emit({ node, event });\n }\n\n protected onNodeContextMenu(node: AXPWorkflowNode, event: MouseEvent): void {\n if (this.isNodeReadonly(node)) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n this.selectedNodeIds.set(new Set([node.id]));\n this.selectedConnectorIds.set(new Set());\n this.setActivation({ kind: 'node', id: node.id });\n this.nodeContextMenu.emit({ node, event });\n }\n\n protected onNodeBodyPointerDown(node: AXPWorkflowNode, event: PointerEvent): void {\n if (this.isNodeReadonly(node)) return;\n if (event.button !== 0) return;\n if ((event.target as HTMLElement).closest('.axp-workflow-designer__port-cluster')) return;\n if ((event.target as HTMLElement).closest('.axp-workflow-designer__resize')) return;\n // Ctrl/Cmd click is reserved for multi-select toggling in click handler; do not start drag here.\n if (event.ctrlKey || event.metaKey) return;\n event.stopPropagation();\n const selected = this.selectedNodeIds();\n const moveIds = selected.has(node.id) && selected.size > 0 ? [...selected] : [node.id];\n if (!selected.has(node.id) || selected.size === 0) {\n this.selectedNodeIds.set(new Set([node.id]));\n this.selectedConnectorIds.set(new Set());\n }\n this.setActivation({ kind: 'node', id: node.id });\n const p = this.canvasPointFromClient(event.clientX, event.clientY);\n const model = this.model();\n const origins: Record<string, AXPWorkflowPoint> = {};\n for (const moveId of moveIds) {\n const n = findNode(model, moveId);\n if (n) origins[moveId] = { ...n.position };\n }\n this.nodeMove = {\n nodeIds: moveIds,\n start: p,\n origins,\n moved: false,\n };\n this.nodeDragStart.emit({ node, event });\n window.addEventListener('pointermove', this.onWindowPointerMoveForNode);\n window.addEventListener('pointerup', this.onWindowPointerUpForNode, { once: false });\n window.addEventListener('pointercancel', this.onWindowPointerUpForNode, { once: false });\n (event.target as HTMLElement).setPointerCapture?.(event.pointerId);\n }\n\n private readonly onWindowPointerMoveForNode = (ev: PointerEvent): void => {\n const drag = this.nodeMove;\n if (!drag) return;\n const model = this.model();\n const p = this.canvasPointFromClient(ev.clientX, ev.clientY);\n const dx = p.x - drag.start.x;\n const dy = p.y - drag.start.y;\n if (Math.abs(dx) > 1 || Math.abs(dy) > 1) {\n drag.moved = true;\n }\n const nodes = model.nodes.map((n) => {\n if (!drag.nodeIds.includes(n.id)) return n;\n const origin = drag.origins[n.id];\n if (!origin) return n;\n let nx = origin.x + dx;\n let ny = origin.y + dy;\n const snapped = this.applySnapForNode(n, { x: nx, y: ny });\n nx = snapped.x;\n ny = snapped.y;\n return { ...n, position: { x: nx, y: ny } };\n });\n this.commit({ ...model, nodes });\n };\n\n private readonly onWindowPointerUpForNode = (ev: PointerEvent): void => {\n const drag = this.nodeMove;\n this.nodeMove = null;\n window.removeEventListener('pointermove', this.onWindowPointerMoveForNode);\n window.removeEventListener('pointerup', this.onWindowPointerUpForNode);\n window.removeEventListener('pointercancel', this.onWindowPointerUpForNode);\n if (drag?.moved) {\n this.suppressNextNodeClick = true;\n }\n if (drag) {\n const node = findNode(this.model(), drag.nodeIds[0] ?? '');\n if (node) this.nodeDragEnd.emit({ node, event: ev });\n }\n };\n\n //#endregion\n\n //#region ---- Resize ----\n\n protected onResizePointerDown(node: AXPWorkflowNode, handle: ResizeState['handle'], event: PointerEvent): void {\n if (this.isNodeReadonly(node)) return;\n if (event.button !== 0) return;\n event.stopPropagation();\n this.resize = {\n nodeId: node.id,\n handle,\n startPointer: this.canvasPointFromClient(event.clientX, event.clientY),\n startPosition: { ...node.position },\n startSize: { ...node.size },\n aspect: node.size.width / Math.max(1, node.size.height),\n };\n window.addEventListener('pointermove', this.onWindowPointerMoveForResize);\n window.addEventListener('pointerup', this.onWindowPointerUpForResize);\n window.addEventListener('pointercancel', this.onWindowPointerUpForResize);\n }\n\n private readonly onWindowPointerMoveForResize = (ev: PointerEvent): void => {\n const st = this.resize;\n if (!st) return;\n const model = this.model();\n const node = findNode(model, st.nodeId);\n if (!node) return;\n const p = this.canvasPointFromClient(ev.clientX, ev.clientY);\n const dx = p.x - st.startPointer.x;\n const dy = p.y - st.startPointer.y;\n let { width, height } = st.startSize;\n let { x, y } = st.startPosition;\n\n const minW = 72;\n const minH = 40;\n\n const growEast = st.handle.includes('e');\n const growSouth = st.handle.includes('s');\n const growWest = st.handle.includes('w');\n const growNorth = st.handle.includes('n');\n\n if (growEast) width = Math.max(minW, st.startSize.width + dx);\n if (growSouth) height = Math.max(minH, st.startSize.height + dy);\n if (growWest) {\n const nw = Math.max(minW, st.startSize.width - dx);\n x = st.startPosition.x + st.startSize.width - nw;\n width = nw;\n }\n if (growNorth) {\n const nh = Math.max(minH, st.startSize.height - dy);\n y = st.startPosition.y + st.startSize.height - nh;\n height = nh;\n }\n\n if (node.shape === 'circle' || node.lockAspectRatio) {\n const a = st.aspect;\n if (growEast || growWest) {\n height = width / a;\n if (growNorth) y = st.startPosition.y + st.startSize.height - height;\n } else {\n width = height * a;\n if (growWest) x = st.startPosition.x + st.startSize.width - width;\n }\n }\n\n const g = this.gridSize();\n const useSnap = node.snapToGrid ?? this.snapToGrid();\n if (useSnap && g > 0) {\n width = Math.max(minW, snapScalar(width, g));\n height = Math.max(minH, snapScalar(height, g));\n x = snapScalar(x, g);\n y = snapScalar(y, g);\n }\n\n const nodes = model.nodes.map((n) =>\n n.id === node.id ? { ...n, position: { x, y }, size: { width, height } } : n,\n );\n this.commit({ ...model, nodes });\n };\n\n private readonly onWindowPointerUpForResize = (): void => {\n this.resize = null;\n window.removeEventListener('pointermove', this.onWindowPointerMoveForResize);\n window.removeEventListener('pointerup', this.onWindowPointerUpForResize);\n window.removeEventListener('pointercancel', this.onWindowPointerUpForResize);\n };\n\n //#endregion\n\n //#region ---- Ports & linking ----\n\n protected onPortPointerDown(node: AXPWorkflowNode, port: AXPWorkflowPort, event: PointerEvent): void {\n if (this.isNodeReadonly(node)) return;\n if (port.readonly) return;\n if (event.button !== 0) return;\n event.stopPropagation();\n this.portPointerDown.emit({ node, port, event });\n this.setActivation({ kind: 'port', id: port.id, nodeId: node.id });\n\n if (port.kind === 'outbound' && !port.disabled) {\n this.linkHoverTarget.set(null);\n const from = portCanvasPosition(node, port);\n this.linkDrag.set({\n sourceNodeId: node.id,\n sourcePortId: port.id,\n from,\n to: from,\n });\n this.linkDragStart.emit({ sourceNode: node, sourcePort: port, event });\n window.addEventListener('pointermove', this.onWindowPointerMoveForLink);\n window.addEventListener('pointerup', this.onWindowPointerUpForLink);\n window.addEventListener('pointercancel', this.onWindowPointerUpForLink);\n }\n }\n\n private readonly onWindowPointerMoveForLink = (ev: PointerEvent): void => {\n const st = this.linkDrag();\n if (!st) return;\n const to = this.canvasPointFromClient(ev.clientX, ev.clientY);\n this.linkDrag.set({ ...st, to });\n const model = this.model();\n const node = findNode(model, st.sourceNodeId);\n const port = node ? findPort(node, st.sourcePortId)?.port : undefined;\n if (node && port) {\n this.linkDragMove.emit({ sourceNode: node, sourcePort: port, point: to, event: ev });\n }\n const hover = this.pickInboundPortAtPoint(model, to, st.sourceNodeId);\n this.linkHoverTarget.set(hover ? { nodeId: hover.node.id, portId: hover.port.id } : null);\n };\n\n private readonly onWindowPointerUpForLink = (ev: PointerEvent): void => {\n const st = this.linkDrag();\n this.linkDrag.set(null);\n this.linkHoverTarget.set(null);\n window.removeEventListener('pointermove', this.onWindowPointerMoveForLink);\n window.removeEventListener('pointerup', this.onWindowPointerUpForLink);\n window.removeEventListener('pointercancel', this.onWindowPointerUpForLink);\n if (!st) return;\n\n const model = this.model();\n const sourceNode = findNode(model, st.sourceNodeId);\n const sourcePort = sourceNode ? findPort(sourceNode, st.sourcePortId)?.port : undefined;\n if (!sourceNode || !sourcePort) return;\n\n const target = this.pickInboundPortAtPoint(model, st.to, sourceNode.id);\n if (!target) {\n this.linkDragEnd.emit({ sourceNode, sourcePort, cancelled: true, event: ev });\n return;\n }\n\n const request: AXPWorkflowConnectRequest = {\n model,\n sourceNodeId: st.sourceNodeId,\n sourcePortId: st.sourcePortId,\n targetNodeId: target.node.id,\n targetPortId: target.port.id,\n };\n\n if (!this.evaluateConnect(request)) {\n this.connectionRejected.emit({ reason: 'canConnect returned false', request, event: ev });\n this.linkDragEnd.emit({ sourceNode, sourcePort, cancelled: true, event: ev });\n return;\n }\n\n const connector: AXPWorkflowConnector = {\n id: createWorkflowConnectorId(),\n sourceNodeId: st.sourceNodeId,\n sourcePortId: st.sourcePortId,\n targetNodeId: target.node.id,\n targetPortId: target.port.id,\n data: {},\n color: sourceNode.color,\n };\n const next: AXPWorkflowDiagramModel = {\n nodes: [...model.nodes],\n connectors: [...model.connectors, connector],\n };\n this.commit(next);\n this.connectionCreated.emit({ connector, model: next });\n this.setActivation({ kind: 'connector', id: connector.id });\n this.linkDragEnd.emit({ sourceNode, sourcePort, cancelled: false, event: ev });\n };\n\n private pickInboundPortAtPoint(\n model: AXPWorkflowDiagramModel,\n point: AXPWorkflowPoint,\n excludeSourceNodeId: string,\n ): { node: AXPWorkflowNode; port: AXPWorkflowPort } | null {\n let best: { node: AXPWorkflowNode; port: AXPWorkflowPort; d: number } | null = null;\n const hitR = 18;\n for (const node of model.nodes) {\n if (node.id === excludeSourceNodeId) continue;\n if (this.isNodeReadonly(node)) continue;\n for (const port of node.inboundPorts) {\n if (port.disabled || port.readonly) continue;\n const c = portCanvasPosition(node, port);\n const d = Math.hypot(c.x - point.x, c.y - point.y);\n if (d <= hitR && (!best || d < best.d)) best = { node, port, d };\n }\n }\n return best ? { node: best.node, port: best.port } : null;\n }\n\n //#endregion\n\n //#region ---- Connectors UI ----\n\n protected connectorPathD(c: AXPWorkflowConnector): string {\n const model = this.model();\n const sn = findNode(model, c.sourceNodeId);\n const tn = findNode(model, c.targetNodeId);\n if (!sn || !tn) return '';\n const sp = findPort(sn, c.sourcePortId)?.port;\n const tp = findPort(tn, c.targetPortId)?.port;\n if (!sp || !tp) return '';\n const from = this.modelPointToSurface(portCanvasPosition(sn, sp));\n const to = this.trimmedConnectorTarget(from, this.modelPointToSurface(portCanvasPosition(tn, tp)));\n return connectorPath(from, to, this.connectionPreviewStyle(), sp.side, {\n targetSide: tp.side,\n obstacles: this.collectObstaclesInSurface(),\n });\n }\n\n protected connectorMidpoint(c: AXPWorkflowConnector): AXPWorkflowPoint {\n const model = this.model();\n const sn = findNode(model, c.sourceNodeId);\n const tn = findNode(model, c.targetNodeId);\n if (!sn || !tn) return { x: 0, y: 0 };\n const sp = findPort(sn, c.sourcePortId)?.port;\n const tp = findPort(tn, c.targetPortId)?.port;\n if (!sp || !tp) return { x: 0, y: 0 };\n const a = this.modelPointToSurface(portCanvasPosition(sn, sp));\n const b = this.modelPointToSurface(portCanvasPosition(tn, tp));\n return { x: (a.x + b.x) * 0.5, y: (a.y + b.y) * 0.5 };\n }\n\n protected onConnectorClick(c: AXPWorkflowConnector, event: MouseEvent): void {\n event.stopPropagation();\n event.preventDefault();\n const append = event.ctrlKey || event.metaKey;\n if (append) {\n const next = new Set(this.selectedConnectorIds());\n if (next.has(c.id)) next.delete(c.id);\n else next.add(c.id);\n this.selectedConnectorIds.set(next);\n this.selectedNodeIds.set(new Set());\n } else {\n this.selectedConnectorIds.set(new Set([c.id]));\n this.selectedNodeIds.set(new Set());\n }\n this.setActivation({ kind: 'connector', id: c.id });\n this.connectorClick.emit({ connector: c, event });\n }\n\n protected onConnectorDoubleClick(c: AXPWorkflowConnector, event: MouseEvent): void {\n event.stopPropagation();\n event.preventDefault();\n this.connectorDoubleClick.emit({ connector: c, event });\n }\n\n protected removeConnector(c: AXPWorkflowConnector): void {\n if (this.isConnectorReadonly(c)) return;\n const model = this.model();\n const connectors = model.connectors.filter((x) => x.id !== c.id);\n this.commit({ ...model, connectors });\n this.setActivation(null);\n }\n\n protected previewPath(): string {\n const st = this.linkDrag();\n if (!st) return '';\n const model = this.model();\n const sn = findNode(model, st.sourceNodeId);\n const sp = sn ? findPort(sn, st.sourcePortId)?.port : undefined;\n if (!sn || !sp) return '';\n const from = this.modelPointToSurface(st.from);\n const to = this.modelPointToSurface(st.to);\n const hover = this.linkHoverTarget();\n const hoverNode = hover ? findNode(model, hover.nodeId) : undefined;\n const hoverPort = hover && hoverNode ? findPort(hoverNode, hover.portId)?.port : undefined;\n return connectorPath(from, this.trimmedConnectorTarget(from, to), this.connectionPreviewStyle(), sp.side, {\n targetSide: hoverPort?.side,\n obstacles: this.collectObstaclesInSurface(),\n });\n }\n\n //#endregion\n\n //#region ---- Template context ----\n\n protected templateContext(node: AXPWorkflowNode): AXPWorkflowNodeBodyTemplateContext {\n return { $implicit: node, node };\n }\n\n protected portClusterStyle(node: AXPWorkflowNode, port: AXPWorkflowPort): Record<string, string> {\n const local = portAnchorOnNode(node, port);\n const w = Math.max(1, node.size.width);\n const h = Math.max(1, node.size.height);\n return {\n position: 'absolute',\n left: `${(local.x / w) * 100}%`,\n top: `${(local.y / h) * 100}%`,\n 'z-index': '3',\n };\n }\n\n protected portLabelText(port: AXPWorkflowPort): string {\n return (port.label ?? port.key ?? '').trim();\n }\n\n protected portLabelX(node: AXPWorkflowNode, port: AXPWorkflowPort): number {\n return this.portLabelCanvasPoint(node, port).x;\n }\n\n protected portLabelY(node: AXPWorkflowNode, port: AXPWorkflowPort): number {\n return this.portLabelCanvasPoint(node, port).y;\n }\n\n protected portLabelAnchor(node: AXPWorkflowNode, port: AXPWorkflowPort): 'start' | 'middle' | 'end' {\n const centerX = this.modelPointToSurface({ x: node.position.x + node.size.width * 0.5, y: node.position.y }).x;\n const anchor = this.modelPointToSurface(portCanvasPosition(node, port));\n const dx = anchor.x - centerX;\n if (Math.abs(dx) < 6) return 'middle';\n return dx < 0 ? 'end' : 'start';\n }\n\n protected nodeSurfaceLeft(node: AXPWorkflowNode): number {\n return node.position.x + this.canvasViewport().offsetX;\n }\n\n protected nodeSurfaceTop(node: AXPWorkflowNode): number {\n return node.position.y + this.canvasViewport().offsetY;\n }\n\n private trimmedConnectorTarget(from: AXPWorkflowPoint, to: AXPWorkflowPoint): AXPWorkflowPoint {\n const dx = to.x - from.x;\n const dy = to.y - from.y;\n const len = Math.hypot(dx, dy);\n if (len < 0.001) return to;\n // Keep arrowhead just outside the 14px port without creating a visible gap.\n const trim = 7;\n return {\n x: to.x - (dx / len) * trim,\n y: to.y - (dy / len) * trim,\n };\n }\n\n private portLabelCanvasPoint(node: AXPWorkflowNode, port: AXPWorkflowPort): AXPWorkflowPoint {\n const anchor = this.modelPointToSurface(portCanvasPosition(node, port));\n const center = {\n x: node.position.x + node.size.width * 0.5 + this.canvasViewport().offsetX,\n y: node.position.y + node.size.height * 0.5 + this.canvasViewport().offsetY,\n };\n const vx = anchor.x - center.x;\n const vy = anchor.y - center.y;\n const len = Math.hypot(vx, vy);\n if (len < 0.001) return anchor;\n const outward = 18;\n return {\n x: anchor.x + (vx / len) * outward,\n y: anchor.y + (vy / len) * outward,\n };\n }\n\n //#endregion\n\n //#region ---- Canvas mapping ----\n\n private modelPointToSurface(point: AXPWorkflowPoint): AXPWorkflowPoint {\n const viewport = this.canvasViewport();\n return {\n x: point.x + viewport.offsetX,\n y: point.y + viewport.offsetY,\n };\n }\n\n private surfacePointToModel(point: AXPWorkflowPoint): AXPWorkflowPoint {\n const viewport = this.canvasViewport();\n return {\n x: point.x - viewport.offsetX,\n y: point.y - viewport.offsetY,\n };\n }\n\n /**\n * Returns node bounding boxes in surface coordinates.\n *\n * All nodes are returned so the router can route AROUND every node, including\n * the source and target of a connector. The router itself drops obstacles that\n * already contain the stub-out point so the connector can still exit/enter its port.\n */\n private collectObstaclesInSurface(): AXPWorkflowRect[] {\n const viewport = this.canvasViewport();\n const obstacles: AXPWorkflowRect[] = [];\n for (const node of this.model().nodes) {\n obstacles.push({\n position: { x: node.position.x + viewport.offsetX, y: node.position.y + viewport.offsetY },\n size: { width: node.size.width, height: node.size.height },\n });\n }\n return obstacles;\n }\n\n //#endregion\n\n //#region ---- Wrapper visuals ----\n\n private syncWrapperBackgroundStyle(): void {\n const wrapper = this.wrapperElement();\n if (!wrapper) {\n return;\n }\n const gridStyle = this.gridStyle();\n wrapper.style.backgroundColor = 'var(--ax-sys-color-lightest-surface)';\n wrapper.style.backgroundImage = String(gridStyle['background-image'] ?? '');\n wrapper.style.backgroundSize = String(gridStyle['background-size'] ?? '');\n wrapper.style.borderRadius = '10px';\n }\n\n //#endregion\n\n private detachWindowListeners(): void {\n this.clearWrapperAttachRetry();\n this.detachWrapperDropTargets();\n this.linkHoverTarget.set(null);\n window.removeEventListener('pointermove', this.onWindowPointerMoveForNode);\n window.removeEventListener('pointerup', this.onWindowPointerUpForNode);\n window.removeEventListener('pointercancel', this.onWindowPointerUpForNode);\n window.removeEventListener('pointermove', this.onWindowPointerMoveForResize);\n window.removeEventListener('pointerup', this.onWindowPointerUpForResize);\n window.removeEventListener('pointercancel', this.onWindowPointerUpForResize);\n window.removeEventListener('pointermove', this.onWindowPointerMoveForLink);\n window.removeEventListener('pointerup', this.onWindowPointerUpForLink);\n window.removeEventListener('pointercancel', this.onWindowPointerUpForLink);\n }\n}\n","<div class=\"axp-workflow-designer\" [ngStyle]=\"gridStyle()\">\n <div #surface class=\"axp-workflow-designer__surface\" axPanView [(panX)]=\"panX\" [(panY)]=\"panY\" [(zoom)]=\"panZoomLevel\"\n [maxZoom]=\"10000\" [freeMode]=\"true\" [fitContent]=\"true\" wrapperClasses=\"h\" [ngStyle]=\"surfaceStyle()\"\n (pointerdown)=\"onSurfacePointerDown($event)\" (click)=\"onSurfaceClick($event)\"\n (dblclick)=\"onSurfaceDoubleClick($event)\" (dragover)=\"onCanvasDragOver($event)\" (drop)=\"onCanvasDrop($event)\">\n <svg class=\"axp-workflow-designer__svg\" width=\"100%\" height=\"100%\" preserveAspectRatio=\"xMinYMin meet\">\n <defs>\n <marker [attr.id]=\"svgMarkerId\" markerWidth=\"6\" markerHeight=\"6\" refX=\"3.9\" refY=\"3\" orient=\"auto\">\n <path d=\"M0,0 L4,3 L0,6 Q1.5,3 0,0 Z\" class=\"axp-workflow-designer__arrow-head\"></path>\n </marker>\n </defs>\n @for (c of model().connectors; track c.id) {\n <path class=\"axp-workflow-designer__edge-hit\" [attr.d]=\"connectorPathD(c)\" fill=\"none\" stroke=\"transparent\"\n stroke-width=\"16\" pointer-events=\"stroke\" (click)=\"onConnectorClick(c, $event)\"\n (dblclick)=\"onConnectorDoubleClick(c, $event)\" />\n <path [class]=\"connectorEdgeClasses(c)\" [attr.d]=\"connectorPathD(c)\" fill=\"none\"\n [attr.marker-end]=\"'url(#' + svgMarkerId + ')'\" />\n }\n @if (linkDrag()) {\n <path class=\"axp-workflow-designer__edge-preview\" [attr.d]=\"previewPath()\" fill=\"none\" />\n }\n @if (showPortLabels()) {\n @for (node of model().nodes; track node.id) {\n @for (port of node.inboundPorts; track port.id) {\n @if (portLabelText(port)) {\n <text class=\"axp-workflow-designer__port-label-svg\" [attr.x]=\"portLabelX(node, port)\"\n [attr.y]=\"portLabelY(node, port)\" [attr.text-anchor]=\"portLabelAnchor(node, port)\">\n {{ portLabelText(port) }}\n </text>\n }\n }\n @for (port of node.outboundPorts; track port.id) {\n @if (portLabelText(port)) {\n <text class=\"axp-workflow-designer__port-label-svg\" [attr.x]=\"portLabelX(node, port)\"\n [attr.y]=\"portLabelY(node, port)\" [attr.text-anchor]=\"portLabelAnchor(node, port)\">\n {{ portLabelText(port) }}\n </text>\n }\n }\n }\n }\n </svg>\n\n @for (c of model().connectors; track c.id) {\n @if (isConnectorActive(c.id) && !isConnectorReadonly(c)) {\n <div class=\"axp-workflow-designer__connector-actions\" [style.left.px]=\"connectorMidpoint(c).x - 16\"\n [style.top.px]=\"connectorMidpoint(c).y - 16\">\n <ax-button look=\"blank\" class=\"ax-xs axp-workflow-designer__icon-btn\" (onClick)=\"removeConnector(c)\">\n <ax-icon class=\"fa-solid fa-minus\"></ax-icon>\n </ax-button>\n </div>\n }\n }\n\n @for (node of model().nodes; track node.id) {\n <div class=\"axp-workflow-designer__node\" [class.axp-workflow-designer__node--active]=\"isNodeActive(node.id)\"\n [style.left.px]=\"nodeSurfaceLeft(node)\" [style.top.px]=\"nodeSurfaceTop(node)\" [style.width.px]=\"node.size.width\"\n [style.height.px]=\"node.size.height\" (pointerdown)=\"onNodePointerDown(node, $event)\"\n (click)=\"onNodeClick(node, $event)\" (dblclick)=\"onNodeDoubleClick(node, $event)\"\n (contextmenu)=\"onNodeContextMenu(node, $event)\">\n <div [class]=\"nodeShapeClasses(node)\">\n <div class=\"axp-workflow-designer__node-body\" (pointerdown)=\"onNodeBodyPointerDown(node, $event)\">\n @if (nodeBodyTemplate(); as tpl) {\n <ng-container [ngTemplateOutlet]=\"tpl\" [ngTemplateOutletContext]=\"templateContext(node)\" />\n } @else {\n <div class=\"axp-workflow-designer__node-default\">\n @if (node.icon) {\n <ax-icon class=\"axp-workflow-designer__node-default-icon\" [class]=\"node.icon\"></ax-icon>\n }\n <span class=\"axp-workflow-designer__node-default-title\">{{ node.title }}</span>\n </div>\n }\n </div>\n </div>\n\n @for (port of node.inboundPorts; track port.id) {\n <div class=\"axp-workflow-designer__port-cluster\"\n [class.axp-workflow-designer__port-cluster--side-top]=\"port.side === 'top'\"\n [class.axp-workflow-designer__port-cluster--side-right]=\"port.side === 'right'\"\n [class.axp-workflow-designer__port-cluster--side-bottom]=\"port.side === 'bottom'\"\n [class.axp-workflow-designer__port-cluster--side-left]=\"port.side === 'left'\"\n [ngStyle]=\"portClusterStyle(node, port)\">\n <button type=\"button\" class=\"axp-workflow-designer__port axp-workflow-designer__port--inbound\"\n [class.axp-workflow-designer__port--active]=\"isPortActive(node.id, port.id)\"\n [class.axp-workflow-designer__port--link-hover]=\"isPortLinkHoverTarget(node.id, port.id)\"\n [class.axp-workflow-designer__port--disabled]=\"port.disabled\"\n [disabled]=\"isNodeReadonly(node) || port.disabled === true\"\n (pointerdown)=\"onPortPointerDown(node, port, $event)\"></button>\n </div>\n }\n @for (port of node.outboundPorts; track port.id) {\n <div class=\"axp-workflow-designer__port-cluster\"\n [class.axp-workflow-designer__port-cluster--side-top]=\"port.side === 'top'\"\n [class.axp-workflow-designer__port-cluster--side-right]=\"port.side === 'right'\"\n [class.axp-workflow-designer__port-cluster--side-bottom]=\"port.side === 'bottom'\"\n [class.axp-workflow-designer__port-cluster--side-left]=\"port.side === 'left'\"\n [ngStyle]=\"portClusterStyle(node, port)\">\n <button type=\"button\" class=\"axp-workflow-designer__port axp-workflow-designer__port--outbound\"\n [class.axp-workflow-designer__port--active]=\"isPortActive(node.id, port.id)\"\n [class.axp-workflow-designer__port--disabled]=\"port.disabled\"\n [disabled]=\"isNodeReadonly(node) || port.disabled === true\"\n (pointerdown)=\"onPortPointerDown(node, port, $event)\"></button>\n </div>\n }\n\n @if (isNodeActive(node.id) && !isNodeReadonly(node)) {\n <span class=\"axp-workflow-designer__resize axp-workflow-designer__resize--nw\"\n (pointerdown)=\"onResizePointerDown(node, 'nw', $event)\"></span>\n <span class=\"axp-workflow-designer__resize axp-workflow-designer__resize--ne\"\n (pointerdown)=\"onResizePointerDown(node, 'ne', $event)\"></span>\n <span class=\"axp-workflow-designer__resize axp-workflow-designer__resize--sw\"\n (pointerdown)=\"onResizePointerDown(node, 'sw', $event)\"></span>\n <span class=\"axp-workflow-designer__resize axp-workflow-designer__resize--se\"\n (pointerdown)=\"onResizePointerDown(node, 'se', $event)\"></span>\n }\n </div>\n }\n </div>\n</div>","import { Directive, computed, input, output } from '@angular/core';\nimport { AXP_WORKFLOW_PALETTE_MIME } from './workflow-designer.const';\nimport type { AXPWorkflowActivityPaletteItem } from './workflow-designer.types';\n\n/**\n * Makes any host element a draggable palette source. Set `[axpWorkflowPaletteItem]=\"item\"` and optional outputs.\n * Drop target: `axp-workflow-designer` canvas (same MIME as drag payload).\n */\n@Directive({\n selector: '[axpWorkflowPaletteItem]',\n host: {\n '[attr.draggable]': 'hostDraggable()',\n '(dragstart)': 'onDragStart($event)',\n '(dragend)': 'onDragEnd($event)',\n },\n})\nexport class AXPWorkflowPaletteItemDragDirective {\n /** Palette definition serialized into the drag payload. */\n readonly axpWorkflowPaletteItem = input.required<AXPWorkflowActivityPaletteItem>({\n alias: 'axpWorkflowPaletteItem',\n });\n\n /** When true, drag is disabled. */\n readonly axpWorkflowPaletteDragDisabled = input(false, { alias: 'axpWorkflowPaletteDragDisabled' });\n\n readonly axpWorkflowPaletteDragStart = output<{ item: AXPWorkflowActivityPaletteItem; event: DragEvent }>({\n alias: 'axpWorkflowPaletteDragStart',\n });\n\n readonly axpWorkflowPaletteDragEnd = output<{ item: AXPWorkflowActivityPaletteItem | null; event: DragEvent }>({\n alias: 'axpWorkflowPaletteDragEnd',\n });\n\n protected readonly hostDraggable = computed(() => (this.axpWorkflowPaletteDragDisabled() ? null : true));\n\n private lastItem: AXPWorkflowActivityPaletteItem | null = null;\n\n protected onDragStart(event: DragEvent): void {\n if (this.axpWorkflowPaletteDragDisabled()) {\n event.preventDefault();\n return;\n }\n const item = this.axpWorkflowPaletteItem();\n this.lastItem = item;\n event.dataTransfer?.setData(AXP_WORKFLOW_PALETTE_MIME, JSON.stringify(item));\n event.dataTransfer?.setData('text/plain', item.title);\n if (event.dataTransfer) event.dataTransfer.effectAllowed = 'copy';\n this.axpWorkflowPaletteDragStart.emit({ item, event });\n }\n\n protected onDragEnd(event: DragEvent): void {\n this.axpWorkflowPaletteDragEnd.emit({ item: this.lastItem, event });\n this.lastItem = null;\n }\n}\n","//#region ---- Point & geometry ----\n\nimport { AXStyleColorType } from '@acorex/cdk/common';\n\n/** Canvas coordinates (pixels). */\nexport interface AXPWorkflowPoint {\n x: number;\n y: number;\n}\n\nexport interface AXPWorkflowSize {\n width: number;\n height: number;\n}\n\n/** Axis-aligned rectangle used by routing/obstacle helpers. */\nexport interface AXPWorkflowRect {\n position: AXPWorkflowPoint;\n size: AXPWorkflowSize;\n}\n\n//#endregion\n\n//#region ---- Semantic color ----\n\nexport type AXPWorkflowSemanticColor = Omit<AXStyleColorType, 'default'>;\n\n//#endregion\n\n//#region ---- Ports & connectors ----\n\nexport type AXPWorkflowPortSide = 'top' | 'right' | 'bottom' | 'left';\n\nexport interface AXPWorkflowPort {\n id: string;\n /** Inbound accepts incoming connectors; outbound emits connections. */\n kind: 'inbound' | 'outbound';\n /** Optional stable key for host logic (e.g. \"default\", \"error\"). */\n key?: string;\n label?: string;\n /** Position along the chosen edge, 0–1. */\n ratio: number;\n side: AXPWorkflowPortSide;\n /** When true, multiple connectors may attach (inbound only). */\n allowMultiple?: boolean;\n /** When true, port cannot be used for new connections. */\n disabled?: boolean;\n /** Per-port readonly: no connect/disconnect interactions. */\n readonly?: boolean;\n /** Arbitrary payload (conditions, routing metadata, etc.). */\n data?: Record<string, unknown>;\n}\n\nexport interface AXPWorkflowConnector {\n id: string;\n sourceNodeId: string;\n sourcePortId: string;\n targetNodeId: string;\n targetPortId: string;\n /** Arbitrary payload (conditions, labels, etc.). */\n data?: Record<string, unknown>;\n /** Per-connector readonly: cannot delete or reconnect. */\n readonly?: boolean;\n /** Theme token applied as `ax-{color}-surface` on the edge stroke styling. */\n color?: AXPWorkflowSemanticColor;\n}\n\n//#endregion\n\n//#region ---- Nodes ----\n\nexport type AXPWorkflowNodeShape = 'rectangle' | 'rounded-rectangle' | 'circle' | 'ellipse' | 'diamond';\n\nexport interface AXPWorkflowNode {\n id: string;\n /** Palette / definition type key. */\n type: string;\n title: string;\n icon?: string;\n shape: AXPWorkflowNodeShape;\n position: AXPWorkflowPoint;\n size: AXPWorkflowSize;\n inboundPorts: AXPWorkflowPort[];\n outboundPorts: AXPWorkflowPort[];\n /** Arbitrary domain payload. */\n data?: Record<string, unknown>;\n /** When true, node cannot be moved, resized, or connected. */\n readonly?: boolean;\n /** When true, width/height stay proportional while resizing. */\n lockAspectRatio?: boolean;\n /**\n * Snap override: `true` / `false` forces behavior; `undefined` uses designer default.\n */\n snapToGrid?: boolean;\n /** Theme token applied as `ax-{color}-surface` on the node shape. */\n color?: AXPWorkflowSemanticColor;\n}\n\n//#endregion\n\n//#region ---- Diagram model ----\n\nexport interface AXPWorkflowDiagramModel {\n nodes: AXPWorkflowNode[];\n connectors: AXPWorkflowConnector[];\n /** Optional diagram-level metadata. */\n data?: Record<string, unknown>;\n}\n\n//#endregion\n\n//#region ---- Diagram layout ----\n\n/** Flow direction for the arranged diagram. `horizontal` = left→right, `vertical` = top→bottom. */\nexport type AXPWorkflowArrangeDirection = 'horizontal' | 'vertical';\n\n/** Cross-axis alignment within a single rank (column for horizontal, row for vertical). */\nexport type AXPWorkflowArrangeAlignment = 'start' | 'center' | 'end';\n\nexport interface AXPWorkflowArrangeDiagramOptions {\n /** Preferred start node (first column for horizontal, first row for vertical). When omitted, nodes without inbound edges are roots. */\n startNodeId?: string;\n /** Snaps arranged positions to this grid (pixels). `0` disables snapping. */\n gridSize?: number;\n /** Outer padding around the arranged area. */\n margin?: number;\n /** Gap between adjacent columns (horizontal) or rows (vertical). */\n horizontalGap?: number;\n /** Gap between siblings within a column (horizontal) or row (vertical). */\n verticalGap?: number;\n /** Primary flow direction. Defaults to `'horizontal'`. */\n direction?: AXPWorkflowArrangeDirection;\n /** Cross-axis alignment inside each rank. Defaults to `'center'`. */\n alignment?: AXPWorkflowArrangeAlignment;\n /** Top-left origin of the arranged area in model coordinates. Defaults to `{ x: margin, y: margin }`. */\n origin?: AXPWorkflowPoint;\n /** Only arrange the listed nodes (others keep their current position). */\n nodeIds?: string[];\n /** Apply barycenter ordering inside each rank to reduce crossings. Defaults to `true`. */\n reduceCrossings?: boolean;\n /** Lay each disconnected component out in its own block, stacked along the cross axis. Defaults to `true`. */\n groupDisconnected?: boolean;\n}\n\n//#endregion\n\n//#region ---- Palette (drag source definition) ----\n\nexport interface AXPWorkflowActivityPaletteItem {\n type: string;\n title: string;\n description?: string;\n icon?: string;\n shape?: AXPWorkflowNodeShape;\n size?: AXPWorkflowSize;\n /** When set (including `[]`), defines inbound ports; when omitted, one default inbound is used. */\n inboundPorts?: Omit<AXPWorkflowPort, 'id' | 'kind'>[];\n /** When set (including `[]`), defines outbound ports; when omitted, one default outbound is used. */\n outboundPorts?: Omit<AXPWorkflowPort, 'id' | 'kind'>[];\n data?: Record<string, unknown>;\n lockAspectRatio?: boolean;\n snapToGrid?: boolean;\n color?: AXPWorkflowSemanticColor;\n}\n\n//#endregion\n\n//#region ---- Template context ----\n\n/**\n * Context passed to `nodeBodyTemplate` (`NgTemplateOutlet`).\n * Supports `let-n` via `$implicit` or `let-n=\"node\"`.\n */\nexport interface AXPWorkflowNodeBodyTemplateContext {\n $implicit: AXPWorkflowNode;\n node: AXPWorkflowNode;\n}\n\n//#endregion\n\n//#region ---- Connection rules ----\n\nexport interface AXPWorkflowConnectRequest {\n sourceNodeId: string;\n sourcePortId: string;\n targetNodeId: string;\n targetPortId: string;\n model: AXPWorkflowDiagramModel;\n}\n\nexport type AXPWorkflowCanConnectFn = (request: AXPWorkflowConnectRequest) => boolean;\n\n//#endregion\n\n//#region ---- Preview routing ----\n\nexport type AXPWorkflowConnectionPreviewStyle = 'straight' | 'rounded' | 'orthogonal';\n\n/**\n * Optional routing hints for `connectorPath`. When provided, orthogonal/rounded\n * paths avoid the supplied obstacle rectangles by detouring around them.\n */\nexport interface AXPWorkflowConnectorRouteOptions {\n /** Inbound port side at the destination. When omitted, the opposite of `sourceSide` is assumed. */\n targetSide?: AXPWorkflowPortSide;\n /** Other node rectangles to bypass. Source/target nodes should be excluded. */\n obstacles?: AXPWorkflowRect[];\n /** Distance (px) the connector extends straight out of the source/target port before turning. */\n stub?: number;\n /** Extra space (px) around each obstacle when planning the route. */\n obstaclePadding?: number;\n /** Corner radius (px) used by the `rounded` style. */\n cornerRadius?: number;\n}\n\n//#endregion\n\n//#region ---- Activation (designer chrome) ----\n\nexport type AXPWorkflowDesignerActivationKind = 'canvas' | 'node' | 'port' | 'connector';\n\nexport interface AXPWorkflowDesignerActivation {\n kind: AXPWorkflowDesignerActivationKind;\n /** Node id, port id, or connector id depending on `kind`. */\n id: string;\n /** For port activation, parent node id. */\n nodeId?: string;\n}\n\n//#endregion\n","export * from './lib/platform-management.module';\n\nexport * from './lib/const';\nexport * from './lib/entities';\nexport * from './lib/features.keys';\nexport * from './lib/features/workflow-designer';\n// export * from './lib/features';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.AXPUpdaterService","I18N","normalizeCategoryIds","normalizeCategoryLabels","i1","i3"],"mappings":"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"}