@acorex-platform/module-workplacesafety-management-client 0.0.38 → 0.0.48
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/{acorex-platform-module-workplacesafety-management-client-acorex-platform-module-workplacesafety-management-client-Ds0Fkspp.mjs → acorex-platform-module-workplacesafety-management-client-acorex-platform-module-workplacesafety-management-client-C2CZZwOj.mjs} +104 -33
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-acorex-platform-module-workplacesafety-management-client-C2CZZwOj.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-control-hierarchy-levels.mjs +19 -5
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-control-hierarchy-levels.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-control-measure.mjs +19 -5
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-control-measure.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-hazard-ppe-rule.mjs +19 -5
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-hazard-ppe-rule.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-hazard-register.mjs +19 -5
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-hazard-register.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-hazard-risk.mjs +22 -72
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-hazard-risk.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-hazard.mjs +20 -6
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-hazard.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-ppe-item.mjs +19 -5
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-ppe-item.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-safety-plan-activity.mjs +1516 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-safety-plan-activity.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-safety-plan-section.mjs +82 -12
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-safety-plan-section.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-safety-plan-type-section.mjs +82 -12
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-safety-plan-type-section.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-safety-plan-type.mjs +19 -5
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-safety-plan-type.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-safety-plan.mjs +39 -6
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-safety-plan.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-safety-template.mjs +20 -5
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-safety-template.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-section-type.mjs +19 -5
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-section-type.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-work-step-type.mjs +82 -12
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-work-step-type.mjs.map +1 -1
- package/fesm2022/{acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-BI4TLvSE.mjs → acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-C46YEBVd.mjs} +21 -21
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-C46YEBVd.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-control-hierarchy-levels.entity-COlCNnyK.mjs → acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-control-hierarchy-levels.entity-oylKTsgJ.mjs} +16 -2
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-control-hierarchy-levels.entity-oylKTsgJ.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-control-measure.entity-BrXGzqZU.mjs → acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-control-measure.entity-DHm1nRwW.mjs} +16 -2
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-control-measure.entity-DHm1nRwW.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-hazard-ppe-rule.entity-DHJus7OP.mjs → acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-hazard-ppe-rule.entity-DH-hPuAD.mjs} +16 -2
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-hazard-ppe-rule.entity-DH-hPuAD.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-hazard-register.entity-CogjoDox.mjs → acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-hazard-register.entity-g4AT_IiT.mjs} +16 -2
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-hazard-register.entity-g4AT_IiT.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-hazard-risk.entity-9UWHmIXV.mjs → acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-hazard-risk.entity-BwNlWbnC.mjs} +18 -72
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-hazard-risk.entity-BwNlWbnC.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-hazard.entity-CNPbxULL.mjs → acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-hazard.entity-Cogwbd1P.mjs} +17 -3
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-hazard.entity-Cogwbd1P.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-ppe-item.entity-D5iOBl3P.mjs → acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-ppe-item.entity-0xqGaPnk.mjs} +16 -2
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-ppe-item.entity-0xqGaPnk.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-risk-management.integration-CUZIl8zt.mjs +7 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-risk-management.integration-CUZIl8zt.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-plan-activity.entity-CZCYupQT.mjs +324 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-plan-activity.entity-CZCYupQT.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-plan-section-dependency-TdIMIkM7.mjs → acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-plan-section-dependency-D0fzHV_L.mjs} +62 -10
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-plan-section-dependency-D0fzHV_L.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-plan-section.entity-DJAI-7lB.mjs → acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-plan-section.entity-BpziBgGf.mjs} +17 -3
- package/fesm2022/{acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-plan-section.entity-DJAI-7lB.mjs.map → acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-plan-section.entity-BpziBgGf.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-plan-type-section.entity-BGZ1VAW3.mjs → acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-plan-type-section.entity-D8wL0ned.mjs} +17 -3
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-plan-type-section.entity-D8wL0ned.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-plan-type.entity-B6NYL4xi.mjs → acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-plan-type.entity-DrqQDYn9.mjs} +16 -2
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-plan-type.entity-DrqQDYn9.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-plan.entity-BSUR9jqs.mjs → acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-plan.entity-DaRnWCin.mjs} +36 -3
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-plan.entity-DaRnWCin.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-template.entity-CIHy_hLh.mjs → acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-template.entity-Coj5Rzry.mjs} +17 -2
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-template.entity-Coj5Rzry.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-section-type.entity-Cs4nIHou.mjs → acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-section-type.entity-BU5roQ5-.mjs} +16 -2
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-section-type.entity-BU5roQ5-.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-work-step-type.entity-CJFWDOoh.mjs → acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-work-step-type.entity-DijGV30H.mjs} +17 -3
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-work-step-type.entity-DijGV30H.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog.mjs +1 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts.mjs +144 -168
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-fill-safety-plan.command-lJl0qpvT.mjs +165 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-fill-safety-plan.command-lJl0qpvT.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-hydrate-safety-plan-activity-sections-TrVl3-T6.mjs +240 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-hydrate-safety-plan-activity-sections-TrVl3-T6.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-workplacesafety-management-client-index-gbDgxqrV.mjs → acorex-platform-module-workplacesafety-management-client-index-D_LE40Xc.mjs} +130 -398
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-index-D_LE40Xc.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-load-safety-plan-preview-structure-Ce67NSIZ.mjs +136 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-load-safety-plan-preview-structure-Ce67NSIZ.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-local-entities.mjs +1 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-local-entities.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-preview-safety-plan.command-DJqqiYlD.mjs +102 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-preview-safety-plan.command-DJqqiYlD.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-safety-plan-fill-values.util-RLOdySf7.mjs +33 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-safety-plan-fill-values.util-RLOdySf7.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-workplacesafety-management-client-safety-plan-preview-modal.component-CQ2xB7Va.mjs → acorex-platform-module-workplacesafety-management-client-safety-plan-preview-modal.component-B9lElhxc.mjs} +252 -72
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-safety-plan-preview-modal.component-B9lElhxc.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-safety-plan-section-builder.types-C0SEJsVM.mjs +185 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-safety-plan-section-builder.types-C0SEJsVM.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-workplacesafety-management-client-save-safety-plan-sections.command-CLj3y_JD.mjs → acorex-platform-module-workplacesafety-management-client-save-safety-plan-sections.command-D0aRQHWk.mjs} +30 -94
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-save-safety-plan-sections.command-D0aRQHWk.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-show-job-doc-setup.command-UlWyzIXQ.mjs +341 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-show-job-doc-setup.command-UlWyzIXQ.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client.mjs +1 -1
- package/package.json +6 -6
- package/types/acorex-platform-module-workplacesafety-management-client-contracts-entities-safety-plan-activity.d.ts +5 -0
- package/types/acorex-platform-module-workplacesafety-management-client-contracts.d.ts +133 -157
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-acorex-platform-module-workplacesafety-management-client-Ds0Fkspp.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-safety-plan-work-step.mjs +0 -542
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-safety-plan-work-step.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-BI4TLvSE.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-control-hierarchy-levels.entity-COlCNnyK.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-control-measure.entity-BrXGzqZU.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-hazard-ppe-rule.entity-DHJus7OP.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-hazard-register.entity-CogjoDox.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-hazard-risk.entity-9UWHmIXV.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-hazard.entity-CNPbxULL.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-ppe-item.entity-D5iOBl3P.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-plan-section-dependency-TdIMIkM7.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-plan-type-section.entity-BGZ1VAW3.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-plan-type.entity-B6NYL4xi.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-plan-work-step.entity-BlCbf5qP.mjs +0 -405
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-plan-work-step.entity-BlCbf5qP.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-plan.entity-BSUR9jqs.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-template.entity-CIHy_hLh.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-section-type.entity-Cs4nIHou.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-work-step-type.entity-CJFWDOoh.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-index-gbDgxqrV.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-preview-safety-plan.command-BU95c4xb.mjs +0 -254
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-preview-safety-plan.command-BU95c4xb.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-safety-plan-preview-modal.component-CQ2xB7Va.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-safety-plan-preview.service-DJP41MuL.mjs +0 -36
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-safety-plan-preview.service-DJP41MuL.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-safety-plan-section-builder.types-LaN1NIgc.mjs +0 -204
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-safety-plan-section-builder.types-LaN1NIgc.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-save-safety-plan-sections.command-CLj3y_JD.mjs.map +0 -1
- package/types/acorex-platform-module-workplacesafety-management-client-contracts-entities-safety-plan-work-step.d.ts +0 -5
package/fesm2022/acorex-platform-module-workplacesafety-management-client-index-D_LE40Xc.mjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-workplacesafety-management-client-index-D_LE40Xc.mjs","sources":["../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-sections-page/safety-plan-section-widget-options.util.ts","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-sections-page/safety-plan-section-widget-options.service.ts","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-sections-page/safety-plan-section-builder.component.ts","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-sections-page/safety-plan-section-builder.component.html","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-sections-page/safety-plan-sections-page.component.ts","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-sections-page/safety-plan-sections-page-component.provider.ts"],"sourcesContent":["//#region ----- Imports -----\n\nimport type {\n AXPBuilderSection,\n AXPWidgetPropertyInjection,\n} from '@acorex-platform/framework-client/layout/components';\nimport { AXP_BEHAVIOR_PROPERTY_GROUP } from '@acorex-platform/framework-client/layout/widgets';\nimport { AXPWidgetsList, type AXPWidgetNode } from '@acorex-platform/framework-shared/core';\nimport { createBooleanProperty } from '@acorex-platform/framework-shared/widget-core';\nimport {\n asSafetyPlanDisplayText,\n resolveEntityRefId,\n resolveSectionTypeKey,\n type AXMSafetyPlanSectionWidgetOptions,\n type AXMSectionTypeCode,\n type AXMSectionTypeSnapshot,\n} from '@acorex-platform/module-workplacesafety-management-client/contracts';\n\nimport { PPE_ITEM_VIEWER_WIDGET_NAME } from '../ppe-item-viewer/ppe-item-viewer.types';\n\n//#endregion\n\n//#region ----- Types -----\n\nexport type AXMSafetyPlanConfigurableWidgetType =\n | typeof PPE_ITEM_VIEWER_WIDGET_NAME\n | typeof AXPWidgetsList.Editors.ControlHierarchyDiagram;\n\n//#endregion\n\n//#region ----- Constants -----\n\nexport const SAFETY_PLAN_PPE_WIDGET_PROPERTY_EXCLUDE = [\n 'name',\n 'path',\n 'ppeItems',\n 'readonly',\n 'disabled',\n 'triggers',\n 'requiredValidation',\n] as const;\n\nexport const SAFETY_PLAN_HIERARCHY_WIDGET_PROPERTY_EXCLUDE = ['name', 'path'] as const;\n\nconst PPE_OPTION_KEYS = ['layout'] as const;\nconst HIERARCHY_OPTION_KEYS = ['viewType', 'showTitle', 'showViewTypeSelector'] as const;\n\n//#endregion\n\n//#region ----- Resolve -----\n\nexport function resolveSafetyPlanSectionConfigurableWidgetType(\n sectionTypeId: string | undefined,\n snapshot?: AXMSectionTypeSnapshot,\n sectionTitle?: unknown,\n sectionDescription?: unknown,\n): AXMSafetyPlanConfigurableWidgetType | null {\n const resolvedKeys = [\n resolveSectionTypeKey(sectionTypeId, snapshot),\n resolveSectionTypeKeyFromCode(snapshot?.code),\n resolveSectionTypeKeyFromTitle(sectionTitle),\n resolveSectionTypeKeyFromTitle(snapshot?.title),\n resolveSectionTypeKeyFromDescription(sectionDescription),\n resolveSectionTypeKeyFromDescription(snapshot?.description),\n ];\n if (resolvedKeys.includes('Ppe')) {\n return PPE_ITEM_VIEWER_WIDGET_NAME;\n }\n if (resolvedKeys.includes('HierarchyLevel')) {\n return AXPWidgetsList.Editors.ControlHierarchyDiagram;\n }\n return null;\n}\n\nfunction resolveSectionTypeKeyFromCode(code: string | undefined): AXMSectionTypeCode | undefined {\n const compact = asSafetyPlanDisplayText(code).replace(/\\s+/g, '').toLowerCase();\n if (!compact) {\n return undefined;\n }\n if (compact === 'hierarchylevel' || compact === 'hierarchy') {\n return 'HierarchyLevel';\n }\n if (compact === 'ppe') {\n return 'Ppe';\n }\n return undefined;\n}\n\nfunction resolveSectionTypeKeyFromTitle(title: unknown): AXMSectionTypeCode | undefined {\n const compact = asSafetyPlanDisplayText(title).replace(/\\s+/g, '').toLowerCase();\n if (!compact) {\n return undefined;\n }\n if (compact === 'hierarchylevel' || compact.includes('hierarchy')) {\n return 'HierarchyLevel';\n }\n if (compact === 'ppe' || compact === 'ppeitem' || compact === 'ppeitems') {\n return 'Ppe';\n }\n return undefined;\n}\n\nfunction resolveSectionTypeKeyFromDescription(description: unknown): AXMSectionTypeCode | undefined {\n const text = asSafetyPlanDisplayText(description).toLowerCase();\n if (!text) {\n return undefined;\n }\n if (text.includes('control hierarchy')) {\n return 'HierarchyLevel';\n }\n if (text.includes('personal protective equipment')) {\n return 'Ppe';\n }\n return undefined;\n}\n\nfunction readBuilderSectionTypeId(section: AXPBuilderSection): string | undefined {\n return resolveEntityRefId(section['sectionTypeId']) ?? resolveEntityRefId(section['sectionType']) ?? undefined;\n}\n\nexport function resolveConfigurableWidgetTypeForSection(\n section: AXPBuilderSection,\n): AXMSafetyPlanConfigurableWidgetType | null {\n return resolveSafetyPlanSectionConfigurableWidgetType(\n readBuilderSectionTypeId(section),\n section['sectionType'] as AXMSectionTypeSnapshot | undefined,\n section['title'],\n section['description'],\n );\n}\n\nexport function canConfigureSafetyPlanSectionWidget(section: AXPBuilderSection): boolean {\n return resolveConfigurableWidgetTypeForSection(section) != null;\n}\n\nexport function widgetTitleKeyForConfigurableType(widgetType: AXMSafetyPlanConfigurableWidgetType): string {\n if (widgetType === PPE_ITEM_VIEWER_WIDGET_NAME) {\n return '@workplacesafety-management:ppe-items.components.ppe-item-viewer.widget-title';\n }\n return '@workplacesafety-management:control-measure-types.components.control-hierarchy-diagram.widget-title';\n}\n\n//#endregion\n\n//#region ----- Options -----\n\nexport function readSectionWidgetOptions(section: AXPBuilderSection): AXMSafetyPlanSectionWidgetOptions {\n const raw = section['widgetOptions'];\n if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {\n return {};\n }\n return { ...(raw as AXMSafetyPlanSectionWidgetOptions) };\n}\n\nexport function pickSavedWidgetOptions(\n widgetType: AXMSafetyPlanConfigurableWidgetType,\n existing: AXMSafetyPlanSectionWidgetOptions,\n incoming: Record<string, unknown>,\n): AXMSafetyPlanSectionWidgetOptions {\n const merged = { ...existing, ...incoming };\n const keys = widgetType === PPE_ITEM_VIEWER_WIDGET_NAME ? PPE_OPTION_KEYS : HIERARCHY_OPTION_KEYS;\n const next: AXMSafetyPlanSectionWidgetOptions = {};\n for (const key of keys) {\n const value = merged[key];\n if (value !== undefined && value !== null) {\n (next as Record<string, unknown>)[key] = value;\n }\n }\n return next;\n}\n\nexport function buildSafetyPlanSectionWidgetNode(\n widgetType: AXMSafetyPlanConfigurableWidgetType,\n options: AXMSafetyPlanSectionWidgetOptions,\n): AXPWidgetNode {\n return {\n type: widgetType,\n options: { ...options },\n };\n}\n\nexport function hierarchyWidgetCustomProperties(): AXPWidgetPropertyInjection[] {\n return [\n {\n property: createBooleanProperty({\n name: 'showTitle',\n title:\n '@workplacesafety-management:control-measure-types.components.control-hierarchy-diagram.fields.show-title.title',\n path: 'options.showTitle',\n group: AXP_BEHAVIOR_PROPERTY_GROUP,\n defaultValue: false,\n }),\n },\n {\n property: createBooleanProperty({\n name: 'showViewTypeSelector',\n title:\n '@workplacesafety-management:control-measure-types.components.control-hierarchy-diagram.fields.show-view-type-selector.title',\n path: 'options.showViewTypeSelector',\n group: AXP_BEHAVIOR_PROPERTY_GROUP,\n defaultValue: true,\n }),\n },\n ];\n}\n\n//#endregion\n","//#region ----- Imports -----\n\nimport {\n AXPWidgetPropertyViewerService,\n type AXPBuilderSection,\n type AXPBuilderValue,\n} from '@acorex-platform/framework-client/layout/components';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { Injectable, inject } from '@angular/core';\n\nimport { PPE_ITEM_VIEWER_WIDGET_NAME } from '../ppe-item-viewer/ppe-item-viewer.types';\nimport {\n buildSafetyPlanSectionWidgetNode,\n canConfigureSafetyPlanSectionWidget,\n hierarchyWidgetCustomProperties,\n pickSavedWidgetOptions,\n readSectionWidgetOptions,\n resolveConfigurableWidgetTypeForSection,\n SAFETY_PLAN_HIERARCHY_WIDGET_PROPERTY_EXCLUDE,\n SAFETY_PLAN_PPE_WIDGET_PROPERTY_EXCLUDE,\n widgetTitleKeyForConfigurableType,\n type AXMSafetyPlanConfigurableWidgetType,\n} from './safety-plan-section-widget-options.util';\n\n//#endregion\n\n//#region ----- Service -----\n\n@Injectable({ providedIn: 'root' })\nexport class AXMSafetyPlanSectionWidgetOptionsService {\n //#region ----- Services & Dependencies -----\n\n private readonly widgetPropertyViewer = inject(AXPWidgetPropertyViewerService);\n private readonly translationService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ----- Public API -----\n\n canConfigure(section: AXPBuilderSection): boolean {\n return canConfigureSafetyPlanSectionWidget(section);\n }\n\n async prompt(\n section: AXPBuilderSection,\n _value: AXPBuilderValue,\n ): Promise<Record<string, unknown> | null> {\n const widgetType = resolveConfigurableWidgetTypeForSection(section);\n if (!widgetType) {\n return null;\n }\n\n const existing = readSectionWidgetOptions(section);\n const title =\n (await this.translationService.translateAsync(widgetTitleKeyForConfigurableType(widgetType))) ||\n (await this.translationService.translateAsync('@general:actions.edit.title')) ||\n 'Edit';\n\n const result = await this.widgetPropertyViewer\n .create()\n .dialog((dialog) => {\n dialog\n .setTitle(title)\n .setMode('simple')\n .setWidget(buildSafetyPlanSectionWidgetNode(widgetType, existing))\n .setExclude([...this.excludeFor(widgetType)]);\n if (widgetType !== PPE_ITEM_VIEWER_WIDGET_NAME) {\n dialog.setCustom({ properties: hierarchyWidgetCustomProperties() });\n }\n })\n .show();\n\n if (!result?.values) {\n return null;\n }\n\n const incoming = (result.values.options as Record<string, unknown> | undefined) ?? {};\n return {\n widgetOptions: pickSavedWidgetOptions(widgetType, existing, incoming),\n };\n }\n\n //#endregion\n\n //#region ----- Helpers -----\n\n private excludeFor(widgetType: AXMSafetyPlanConfigurableWidgetType): readonly string[] {\n return widgetType === PPE_ITEM_VIEWER_WIDGET_NAME\n ? SAFETY_PLAN_PPE_WIDGET_PROPERTY_EXCLUDE\n : SAFETY_PLAN_HIERARCHY_WIDGET_PROPERTY_EXCLUDE;\n }\n\n //#endregion\n}\n\n//#endregion\n","import { AXPDataGenerator } from '@acorex-platform/framework-client/core';\nimport { AXPWidgetsCatalog } from '@acorex-platform/framework-shared/core';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport {\n AXPDynamicFormDefinition,\n AXPDynamicFormGroupDefinition,\n AXPLayoutBuilderService,\n} from '@acorex-platform/framework-client/layout/builder';\nimport {\n AXPEntityDataSelectorService,\n AXPEntityDefinitionRegistryService,\n AXPEntityService,\n} from '@acorex-platform/framework-client/layout/entity';\nimport {\n AXPBuilderItem,\n AXPBuilderItemViewModel,\n AXPBuilderSection,\n AXPBuilderValue,\n AXPStandardSectionItemsBuilderComponent,\n AXPStandardSectionItemsBuilderConfig,\n} from '@acorex-platform/framework-client/layout/components';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n untracked,\n viewChild,\n} from '@angular/core';\nimport { isEqual } from 'lodash';\nimport type { AXMSectionTypeSnapshot } from '@acorex-platform/module-workplacesafety-management-client/contracts';\nimport {\n RootConfig,\n WORKPLACE_SAFETY_SECTION_TYPE_LOOKUP_WIDGET_OPTIONS,\n clearDependentItemsOnParentChange,\n dedupeSafetyPlanSectionItemSelection,\n enrichSectionTypeSnapshot,\n isActivitySectionType,\n mapSafetyPlanActivityItemsToSectionSnapshots,\n mapSafetyPlanSectionSelectedItems,\n resolveSafetyPlanSectionItemColumns,\n resolveSafetyPlanSectionItemEntityKey,\n resolveSafetyPlanSectionItemFilterAsync,\n asSafetyPlanDisplayText,\n type AXMWorkplaceSafetyManagementSafetyPlanSectionItemModel,\n} from '@acorex-platform/module-workplacesafety-management-client/contracts';\nimport {\n AXMSafetyPlanSectionBuilderItemValue,\n AXMSafetyPlanSectionBuilderValue,\n AXMSafetyPlanActivityRowBuilderPayload,\n normalizeSafetyPlanSectionBuilderValue,\n} from './safety-plan-section-builder.types';\nimport { AXMSafetyPlanSectionWidgetOptionsService } from './safety-plan-section-widget-options.service';\nimport { AXPCommandService } from '@acorex-platform/framework-client/runtime';\n//#region ----- Types -----\ninterface SafetyPlanSectionDialogValue {\n sectionTypeId: string;\n sectionType?: AXMSectionTypeSnapshot;\n /** Synced from the selected Section Type (display-only in the dialog). */\n sectionTypeDescription?: string;\n /** Derived from Section Type title; not shown in the dialog. */\n title: string;\n /** Optional section description copied from the type description on create/edit. */\n description?: string;\n}\ninterface SafetyPlanSectionItemDialogValue {\n itemIds: string[];\n items?: { id: string; title?: string; code?: string }[];\n}\ninterface SectionBuilderContext {\n sectionTypeId: string;\n sectionType?: AXMSectionTypeSnapshot;\n safetyPlanActivityId?: string;\n safetyPlanActivity?: { id: string; title?: string; code?: string };\n}\n//#endregion\n//#region ----- Component -----\n@Component({\n selector: 'axm-safety-plan-section-builder',\n templateUrl: './safety-plan-section-builder.component.html',\n styleUrl: './safety-plan-section-builder.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, AXButtonModule, AXDecoratorModule, AXTranslationModule, AXPStandardSectionItemsBuilderComponent],\n})\nexport class AXMSafetyPlanSectionBuilderComponent {\n //#region ----- Inputs / Outputs -----\n readonly value = input<AXMSafetyPlanSectionBuilderValue | null | undefined>(null);\n readonly safetyPlanId = input<string | undefined>(undefined);\n readonly options = input<Record<string, unknown>>({});\n readonly valueChange = output<AXMSafetyPlanSectionBuilderValue>();\n //#endregion\n //#region ----- Services & Dependencies -----\n private readonly standardRef = viewChild(AXPStandardSectionItemsBuilderComponent);\n private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n private readonly translationService = inject(AXTranslationService);\n private readonly toastService = inject(AXToastService);\n private readonly entityDataSelector = inject(AXPEntityDataSelectorService);\n private readonly entityRegistry = inject(AXPEntityDefinitionRegistryService);\n private readonly entityService = inject(AXPEntityService);\n private readonly commandService = inject(AXPCommandService);\n private readonly widgetOptionsService = inject(AXMSafetyPlanSectionWidgetOptionsService);\n //#endregion\n //#region ----- State Signals -----\n protected readonly builderValue = signal<AXPBuilderValue>({ sections: [] });\n /** Applied on the next builder commit so section header title survives item add/edit. */\n private readonly pendingSectionTitles = new Map<string, string>();\n protected readonly standardConfig = computed<AXPStandardSectionItemsBuilderConfig>(() => ({\n mapItemToView: (item) => this.mapItemToView(item),\n promptAddSection: this.allowAddSection() ? (value) => this.promptAddSection(value) : async () => null,\n promptEditSection: (section, value) => this.promptSectionHeaderEdit(section, value),\n promptAddItems: this.allowAddItems() ? (sectionId, value) => this.promptAddItems(sectionId, value) : undefined,\n promptEditItem: (item, sectionId, value) => this.promptEditItem(item, sectionId, value),\n showSectionTechnicalName: false,\n allowReorderSections: this.allowReorderSections(),\n minSectionCount: this.allowAddSection() ? 0 : Number.MAX_SAFE_INTEGER,\n texts: {\n addSection: '@workplacesafety-management:safety-plan-sections.entities.safety-plan-section.actions.add-section.title',\n addItem: '@workplacesafety-management:safety-plan-sections.entities.safety-plan-section.actions.add-item.title',\n },\n }));\n protected readonly hideHeaderActions = computed(() => (this.options()['hideHeaderActions'] as boolean) === true);\n protected readonly allowAddSection = computed(() => (this.options()['allowAddSection'] as boolean) !== false);\n protected readonly allowEditSection = computed(() => (this.options()['allowEditSection'] as boolean) === true);\n protected readonly allowEditItem = computed(() => (this.options()['allowEditItem'] as boolean) === true);\n protected readonly allowAddItems = computed(() => (this.options()['allowAddItems'] as boolean) !== false);\n protected readonly allowReorderSections = computed(() => {\n const option = this.options()['allowReorderSections'];\n return typeof option === 'boolean' ? option : true;\n });\n protected readonly readonly = computed(() => (this.options()['readonly'] as boolean) === true);\n //#endregion\n //#region ----- Lifecycle -----\n #syncValueToBuilder = effect(() => {\n const normalized = normalizeSafetyPlanSectionBuilderValue(this.value());\n const next = this.toBuilderValue(normalized);\n if (isEqual(untracked(() => this.builderValue()), next)) {\n return;\n }\n this.builderValue.set(next);\n });\n //#endregion\n //#region ----- Public API -----\n async addSection(): Promise<void> {\n await this.standardRef()?.addSection();\n }\n syncAfterSave(value: AXMSafetyPlanSectionBuilderValue): void {\n const normalized = normalizeSafetyPlanSectionBuilderValue(value);\n this.builderValue.set(this.toBuilderValue(normalized));\n queueMicrotask(() => this.standardRef()?.markClean());\n }\n resetAfterDiscard(): void {\n const normalized = normalizeSafetyPlanSectionBuilderValue(this.value());\n this.builderValue.set(this.toBuilderValue(normalized));\n queueMicrotask(() => this.standardRef()?.markClean());\n }\n //#endregion\n //#region ----- Event Handlers -----\n protected onBuilderValueChange(next: AXPBuilderValue): void {\n const previous = this.fromBuilderValue(this.builderValue());\n let nextValue = clearDependentItemsOnParentChange(previous, this.fromBuilderValue(next));\n if (this.pendingSectionTitles.size > 0) {\n nextValue = {\n sections: nextValue.sections.map((section) => {\n const title = this.pendingSectionTitles.get(section.id);\n return title ? { ...section, title } : section;\n }),\n };\n this.pendingSectionTitles.clear();\n }\n this.builderValue.set(this.toBuilderValue(nextValue));\n this.valueChange.emit(nextValue);\n }\n //#endregion\n //#region ----- Section prompts -----\n private async promptAddSection(value: AXPBuilderValue): Promise<Record<string, unknown> | null> {\n const dialogValue = await this.promptSectionForm('create', {\n sectionTypeId: '',\n sectionTypeDescription: '',\n title: '',\n description: '',\n });\n if (!dialogValue) return null;\n const sectionId = AXPDataGenerator.uuid();\n return {\n id: sectionId,\n name: sectionId,\n sectionTypeId: dialogValue.sectionTypeId,\n sectionType: dialogValue.sectionType,\n title: dialogValue.title,\n description: dialogValue.description ?? '',\n safetyPlanId: this.safetyPlanId() ?? '',\n sortOrder: (value.sections?.length ?? 0) + 1,\n items: [],\n };\n }\n private async promptSectionHeaderEdit(\n section: AXPBuilderSection,\n value: AXPBuilderValue,\n ): Promise<Record<string, unknown> | null> {\n if (this.widgetOptionsService.canConfigure(section)) {\n return this.widgetOptionsService.prompt(section, value);\n }\n if (!this.allowEditSection()) {\n return null;\n }\n return this.promptEditSection(section, value);\n }\n private async promptEditSection(\n section: AXPBuilderSection,\n value: AXPBuilderValue,\n ): Promise<Record<string, unknown> | null> {\n const previousSectionTypeId = String(section['sectionTypeId'] ?? '');\n const sectionTypeSnapshot = section['sectionType'] as AXMSectionTypeSnapshot | undefined;\n const dialogValue = await this.promptSectionForm('edit', {\n sectionTypeId: previousSectionTypeId,\n sectionType: sectionTypeSnapshot,\n sectionTypeDescription:\n enrichSectionTypeSnapshot(previousSectionTypeId, sectionTypeSnapshot)?.description ??\n String(section['description'] ?? ''),\n title: String(section['title'] ?? ''),\n description: String(section['description'] ?? ''),\n });\n if (!dialogValue) return null;\n const sectionTypeChanged = previousSectionTypeId !== dialogValue.sectionTypeId;\n const isActivity = isActivitySectionType(dialogValue.sectionTypeId, dialogValue.sectionType);\n const keepSafetyPlanActivity =\n isActivity && !sectionTypeChanged\n ? {\n safetyPlanActivityId: section['safetyPlanActivityId'],\n safetyPlanActivity: section['safetyPlanActivity'],\n }\n : {\n safetyPlanActivityId: undefined,\n safetyPlanActivity: undefined,\n };\n return {\n ...section,\n sectionTypeId: dialogValue.sectionTypeId,\n sectionType: dialogValue.sectionType,\n title: dialogValue.title,\n description: dialogValue.description ?? '',\n ...keepSafetyPlanActivity,\n ...(sectionTypeChanged ? { items: [] } : {}),\n };\n }\n private async promptSectionForm(\n mode: 'create' | 'edit',\n seed: SafetyPlanSectionDialogValue,\n ): Promise<SafetyPlanSectionDialogValue | null> {\n const titleKey =\n mode === 'create'\n ? '@workplacesafety-management:safety-plan-sections.entities.safety-plan-section.actions.add-section.title'\n : '@general:actions.edit.title';\n const title = (await this.translationService.translateAsync(titleKey)) || (mode === 'create' ? 'Add Section' : 'Edit');\n const result = await this.layoutBuilder\n .create()\n .dialog<{ success: boolean; value?: SafetyPlanSectionDialogValue }>((dialog) => {\n dialog\n .setTitle(title)\n .setSize('md')\n .setCloseButton(true)\n .setContext({ ...seed })\n .content((layout) => {\n layout.mode('edit');\n layout.dynamicForm(this.buildSectionFormDefinition());\n })\n .setActions((actions) => {\n actions.cancel('@general:actions.cancel.title').submit('@general:actions.save.title');\n })\n .onAction((dialogRef) => {\n if (dialogRef.action() === 'cancel') {\n return { success: false };\n }\n const context = dialogRef.context() as Partial<SafetyPlanSectionDialogValue>;\n const sectionTypeId = String(context.sectionTypeId ?? '').trim();\n if (!sectionTypeId) {\n return { success: false };\n }\n const sectionType = enrichSectionTypeSnapshot(sectionTypeId, context.sectionType);\n const titleValue =\n String(context.title ?? '').trim() ||\n String(sectionType?.title ?? '').trim() ||\n String(sectionType?.code ?? '').trim();\n if (!titleValue) {\n return { success: false };\n }\n const description =\n String(context.sectionTypeDescription ?? '').trim() ||\n String(context.description ?? '').trim() ||\n String(sectionType?.description ?? '').trim();\n return {\n success: true,\n kind: 'object',\n value: {\n sectionTypeId,\n sectionType,\n title: titleValue,\n description,\n sectionTypeDescription: description,\n },\n };\n });\n })\n .show();\n return result?.success && result.value ? result.value : null;\n }\n\n private buildSectionFormDefinition(): AXPDynamicFormDefinition {\n const group: AXPDynamicFormGroupDefinition = {\n name: 'section',\n title: '@workplacesafety-management:safety-plan-sections.entities.safety-plan-section.title',\n parameters: [\n {\n path: 'sectionTypeId',\n title: '@workplacesafety-management:safety-plan-sections.entities.safety-plan-section.fields.section-type.title',\n widget: {\n path: 'sectionTypeId',\n type: AXPWidgetsCatalog.lookup,\n options: {\n entity: `${RootConfig.module.name}.${RootConfig.entities.sectionType.name}`,\n ...WORKPLACE_SAFETY_SECTION_TYPE_LOOKUP_WIDGET_OPTIONS,\n },\n },\n },\n {\n path: 'sectionTypeDescription',\n title:\n '@workplacesafety-management:safety-plan-sections.entities.safety-plan-section.fields.description.title',\n widget: {\n path: 'sectionTypeDescription',\n type: AXPWidgetsCatalog.largeText,\n options: {\n readonly: true,\n rows: 2,\n },\n },\n },\n ],\n };\n return { groups: [group] };\n }\n //#endregion\n //#region ----- Item prompts -----\n private async promptAddItems(sectionId: string, value: AXPBuilderValue): Promise<AXPBuilderItem[] | null> {\n const section = value.sections.find((s) => s.id === sectionId);\n if (!section || !this.sectionContextFromBuilderSection(section)) {\n return null;\n }\n const sectionContext = this.sectionContextFromBuilderSection(section)!;\n if (isActivitySectionType(sectionContext.sectionTypeId, sectionContext.sectionType)) {\n const picked = await this.promptActivityPicker();\n if (!picked) {\n return null;\n }\n // Section stays named after the section type (\"Activity\"); item carries the catalog title.\n const sectionTypeTitle =\n String(sectionContext.sectionType?.title ?? '').trim() ||\n (await this.translationService.translateAsync(\n '@workplacesafety-management:safety-plan-sections.entities.safety-plan-section.fields.activity.title',\n )) ||\n 'Activity';\n this.patchSectionTitle(sectionId, sectionTypeTitle);\n const currentSection = this.builderValue().sections.find((entry) => entry.id === sectionId) ?? section;\n const itemCount =\n this.builderValue().sections.find((entry) => entry.id === sectionId)?.items.length ??\n currentSection.items.length;\n const activityTitle = String(picked.title ?? '').trim() || 'Activity';\n return [\n this.toBuilderItemFromActivityRow(\n {\n title: activityTitle,\n code: picked.code,\n description: picked.description,\n sections: picked.sections,\n },\n itemCount,\n picked.id,\n ),\n ];\n }\n const existingIds = this.collectEntityIdsFromBuilderItems(section.items);\n const dialogValue = await this.openItemDataSelector('create', undefined, sectionId, value, section, true);\n if (!dialogValue) return null;\n const selected = this.expandDialogSelectionToLinkedEntities(dialogValue).filter(\n (entry) => !existingIds.has(entry.id),\n );\n if (!selected.length) {\n return null;\n }\n const startOrder = section.items.length;\n return selected.map((entry, index) =>\n this.toBuilderItemFromEntity(sectionId, entry, startOrder + index),\n );\n }\n private async promptEditItem(\n item: AXPBuilderItem,\n sectionId: string,\n value: AXPBuilderValue,\n ): Promise<AXPBuilderItem | null> {\n const section = value.sections.find((s) => s.id === sectionId);\n if (!section || !this.sectionContextFromBuilderSection(section)) {\n return null;\n }\n const sectionContext = this.sectionContextFromBuilderSection(section)!;\n if (isActivitySectionType(sectionContext.sectionTypeId, sectionContext.sectionType)) {\n const activityId = String(item.id ?? item['entityId'] ?? '').trim();\n if (!activityId) {\n return null;\n }\n const edited = await this.openSafetyPlanActivityEditor(activityId);\n if (!edited) {\n return null;\n }\n const activityTitle = String(edited.title ?? '').trim() || 'Activity';\n return this.toBuilderItemFromActivityRow(\n {\n title: activityTitle,\n code: edited.code,\n description: edited.description,\n sections: edited.sections,\n },\n item.order ?? 0,\n edited.id,\n );\n }\n if (!this.allowEditItem()) {\n return null;\n }\n const currentEntityId = this.resolveBuilderItemEntityId(item);\n const seed: SafetyPlanSectionItemDialogValue | undefined = currentEntityId\n ? {\n itemIds: [currentEntityId],\n items: Array.isArray(item['items'])\n ? (item['items'] as AXMSafetyPlanSectionBuilderItemValue['items'])\n : [],\n }\n : undefined;\n const dialogValue = await this.openItemDataSelector('edit', seed, sectionId, value, section, false);\n if (!dialogValue) return null;\n const selected = this.expandDialogSelectionToLinkedEntities(dialogValue);\n if (!selected.length) {\n return null;\n }\n const otherIds = this.collectEntityIdsFromBuilderItems(\n section.items.filter((row) => String(row.id) !== String(item.id)),\n );\n const replacement = selected.find((entry) => !otherIds.has(entry.id)) ?? selected[0];\n return this.toBuilderItemFromEntity(sectionId, replacement, item.order ?? 0);\n }\n private async toastActivityRequired(): Promise<void> {\n this.toastService.show({\n color: 'warning',\n title: await this.translationService.translateAsync('@general:messages.generic.error.title'),\n content: await this.translationService.translateAsync(\n '@workplacesafety-management:safety-plan-sections.messages.activity-required.message',\n ),\n });\n }\n /** Prompts for Activity catalog selection (used by Activity section add/edit). */\n private async promptActivityPicker(): Promise<{\n id: string;\n title?: string;\n code?: string;\n description?: string;\n sections: NonNullable<AXMSafetyPlanActivityRowBuilderPayload['sections']>;\n } | null> {\n const title =\n (await this.translationService.translateAsync(\n '@workplacesafety-management:safety-plan-sections.entities.safety-plan-section.fields.activity.title',\n )) || 'Activity';\n const activityEntity = `${RootConfig.module.name}.${RootConfig.entities.safetyPlanActivity.name}`;\n const result = await this.layoutBuilder\n .create()\n .dialog<{\n success: boolean;\n value?: { safetyPlanActivityId: string; safetyPlanActivity?: { id: string; title?: string; code?: string } };\n }>((dialog) => {\n dialog\n .setTitle(title)\n .setSize('md')\n .setCloseButton(true)\n .setContext({ safetyPlanActivityId: '' })\n .content((layout) => {\n layout.mode('edit');\n layout.dynamicForm({\n groups: [\n {\n name: 'activity',\n title:\n '@workplacesafety-management:safety-plan-sections.entities.safety-plan-section.fields.activity.title',\n parameters: [\n {\n path: 'safetyPlanActivityId',\n title:\n '@workplacesafety-management:safety-plan-sections.entities.safety-plan-section.fields.activity.title',\n widget: {\n path: 'safetyPlanActivityId',\n type: AXPWidgetsCatalog.lookup,\n options: {\n entity: activityEntity,\n look: 'select',\n textField: 'title',\n valueField: 'id',\n columns: ['code', 'title'],\n allowCreate: 'quick',\n expose: [\n { source: 'id', target: 'safetyPlanActivity.id' },\n { source: 'title', target: 'safetyPlanActivity.title' },\n { source: 'code', target: 'safetyPlanActivity.code' },\n ],\n },\n },\n },\n ],\n },\n ],\n });\n })\n .setActions((actions) => {\n actions.cancel('@general:actions.cancel.title').submit('@general:actions.save.title');\n })\n .onAction(async (dialogRef) => {\n if (dialogRef.action() === 'cancel') {\n return { success: false };\n }\n const context = dialogRef.context() as {\n safetyPlanActivityId?: string;\n safetyPlanActivity?: { id: string; title?: string; code?: string };\n };\n const safetyPlanActivityId = String(context.safetyPlanActivityId ?? '').trim();\n if (!safetyPlanActivityId) {\n return { success: false };\n }\n return {\n success: true,\n kind: 'object',\n value: {\n safetyPlanActivityId,\n safetyPlanActivity: context.safetyPlanActivity,\n },\n };\n });\n })\n .show();\n if (!result?.success || !result.value?.safetyPlanActivityId) {\n return null;\n }\n const loaded = await this.loadSafetyPlanActivity(result.value.safetyPlanActivityId);\n if (!loaded) {\n await this.toastActivityRequired();\n return null;\n }\n return loaded;\n }\n private patchSectionTitle(sectionId: string, title: string): void {\n const trimmed = title.trim();\n if (!trimmed) {\n return;\n }\n this.pendingSectionTitles.set(sectionId, trimmed);\n }\n private sectionContextFromBuilderSection(section: AXPBuilderSection): SectionBuilderContext | null {\n const sectionTypeId = String(section['sectionTypeId'] ?? '').trim();\n if (!sectionTypeId) {\n return null;\n }\n return {\n sectionTypeId,\n sectionType: enrichSectionTypeSnapshot(\n sectionTypeId,\n section['sectionType'] as AXMSectionTypeSnapshot | undefined,\n ),\n safetyPlanActivityId:\n typeof section['safetyPlanActivityId'] === 'string' ? section['safetyPlanActivityId'].trim() : undefined,\n safetyPlanActivity: section['safetyPlanActivity'] as SectionBuilderContext['safetyPlanActivity'],\n };\n }\n //#endregion\n //#region ----- Catalog item selector -----\n private resolveSectionIndex(sectionId: string, builderValue: AXPBuilderValue): number {\n const orderedSections = [...builderValue.sections].sort((a, b) => (a.order ?? 0) - (b.order ?? 0));\n return orderedSections.findIndex((section) => section.id === sectionId);\n }\n private async loadHazardRiskRecords(hazardRiskIds: string[]): Promise<Record<string, unknown>[]> {\n if (!hazardRiskIds.length) {\n return [];\n }\n const entityKey = `${RootConfig.module.name}.${RootConfig.entities.hazardRisk.name}`;\n const accessor = this.entityService.withEntity(entityKey);\n const results = await Promise.all(\n hazardRiskIds.map((id) => accessor.data().byKey(id).catch(() => null)),\n );\n return results\n .filter((record): record is NonNullable<(typeof results)[number]> => record != null)\n .map((record) => record as unknown as Record<string, unknown>);\n }\n private async resolveItemFilterForSection(\n sectionTypeId: string,\n sectionId: string,\n builderValue: AXPBuilderValue,\n ): Promise<Record<string, unknown> | null> {\n const orderedSections = [...builderValue.sections].sort((a, b) => (a.order ?? 0) - (b.order ?? 0));\n const sectionIndex = this.resolveSectionIndex(sectionId, builderValue);\n if (sectionIndex < 0) {\n return null;\n }\n const sections = this.fromBuilderValue({ sections: orderedSections }).sections;\n return resolveSafetyPlanSectionItemFilterAsync(\n sectionTypeId,\n sections,\n sectionIndex,\n (ids) => this.loadHazardRiskRecords(ids),\n );\n }\n private async openItemDataSelector(\n mode: 'create' | 'edit',\n seed: SafetyPlanSectionItemDialogValue | undefined,\n sectionId: string,\n builderValue: AXPBuilderValue,\n section: AXPBuilderSection,\n allowMultiple: boolean,\n ): Promise<SafetyPlanSectionItemDialogValue | null> {\n const sectionContext = this.sectionContextFromBuilderSection(section);\n if (!sectionContext) {\n return null;\n }\n const entityKey = resolveSafetyPlanSectionItemEntityKey(\n sectionContext.sectionTypeId,\n sectionContext.sectionType,\n );\n if (!entityKey) {\n return null;\n }\n const dotIndex = entityKey.indexOf('.');\n if (dotIndex <= 0) {\n return null;\n }\n const entity = await this.entityRegistry.resolve(\n entityKey.substring(0, dotIndex),\n entityKey.substring(dotIndex + 1),\n );\n if (!entity) {\n return null;\n }\n const filter = await this.resolveItemFilterForSection(\n sectionContext.sectionTypeId,\n sectionId,\n builderValue,\n );\n const columns = resolveSafetyPlanSectionItemColumns(sectionContext.sectionTypeId);\n const selectedItemIds = (seed?.itemIds ?? []).filter((id): id is string => typeof id === 'string' && id.length > 0);\n const titleKey =\n mode === 'create'\n ? '@workplacesafety-management:safety-plan-sections.entities.safety-plan-section.actions.add-item.title'\n : '@general:actions.edit.title';\n const title = (await this.translationService.translateAsync(titleKey)) || (mode === 'create' ? 'Add Item' : 'Edit');\n const result = await this.entityDataSelector.open({\n entity,\n title,\n allowMultiple,\n selectedItemIds: selectedItemIds.length > 0 ? selectedItemIds : undefined,\n columns,\n filters: filter ?? undefined,\n allowCreate: 'none',\n showCategoryFilter: false,\n });\n if (!result) {\n return null;\n }\n if (!result.items?.length) {\n return mode === 'edit' ? { itemIds: [], items: [] } : null;\n }\n const items = mapSafetyPlanSectionSelectedItems(sectionContext.sectionTypeId, result.items);\n return dedupeSafetyPlanSectionItemSelection({\n id: `${sectionId}__item_1`,\n itemIds: items.map((item) => item.id),\n items,\n });\n }\n //#endregion\n //#region ----- Builder value mapping -----\n private mapItemToView(item: AXPBuilderItem): AXPBuilderItemViewModel {\n const activityRow = item['activityRow'] as AXMSafetyPlanActivityRowBuilderPayload | undefined;\n if (activityRow) {\n const code = String(activityRow.code ?? '').trim();\n const description = String(activityRow.description ?? item['description'] ?? '').trim();\n return {\n icon: 'fa-light fa-list-check',\n title: String(activityRow.title ?? item['title'] ?? '').trim() || 'Row',\n name: description || code || undefined,\n badges: [],\n };\n }\n const snapshot = Array.isArray(item['items'])\n ? (item['items'] as { title?: string; code?: string }[])[0]\n : undefined;\n const title =\n asSafetyPlanDisplayText(item['title']) || asSafetyPlanDisplayText(snapshot?.title);\n const code = asSafetyPlanDisplayText(item['name']) || asSafetyPlanDisplayText(snapshot?.code);\n return {\n icon: 'fa-light fa-list-check',\n title,\n name: code || undefined,\n badges: [],\n };\n }\n private toBuilderValue(value: AXMSafetyPlanSectionBuilderValue): AXPBuilderValue {\n return {\n sections: value.sections.map((section, sectionIndex) => ({\n id: section.id,\n order: sectionIndex,\n name: section.id,\n sectionTypeId: section.sectionTypeId,\n sectionType: enrichSectionTypeSnapshot(section.sectionTypeId, section.sectionType),\n title: section.title,\n description: section.description ?? '',\n code: section.code,\n safetyPlanId: section.safetyPlanId ?? this.safetyPlanId() ?? '',\n sourceSafetyPlanTypeSectionId: section.sourceSafetyPlanTypeSectionId,\n sortOrder: section.sortOrder ?? sectionIndex + 1,\n required: section.required === true,\n safetyPlanActivityId: section.safetyPlanActivityId,\n safetyPlanActivity: section.safetyPlanActivity,\n widgetOptions: section.widgetOptions,\n items: this.expandSectionItemsToBuilderRows(section.id, section.items, section),\n })),\n } as AXPBuilderValue;\n }\n private fromBuilderValue(value: AXPBuilderValue): AXMSafetyPlanSectionBuilderValue {\n return normalizeSafetyPlanSectionBuilderValue({\n sections: value.sections.map((section, sectionIndex) => ({\n id: section.id,\n sectionTypeId: String(section['sectionTypeId'] ?? ''),\n sectionType: enrichSectionTypeSnapshot(\n String(section['sectionTypeId'] ?? ''),\n section['sectionType'] as AXMSectionTypeSnapshot | undefined,\n ),\n title: String(section['title'] ?? ''),\n description: String(section['description'] ?? ''),\n code: typeof section['code'] === 'string' ? section['code'] : undefined,\n safetyPlanId: String(section['safetyPlanId'] ?? this.safetyPlanId() ?? ''),\n sourceSafetyPlanTypeSectionId:\n typeof section['sourceSafetyPlanTypeSectionId'] === 'string'\n ? section['sourceSafetyPlanTypeSectionId']\n : undefined,\n sortOrder:\n typeof section['sortOrder'] === 'number' ? section['sortOrder'] : sectionIndex + 1,\n required: section['required'] === true,\n safetyPlanActivityId:\n typeof section['safetyPlanActivityId'] === 'string' ? section['safetyPlanActivityId'] : undefined,\n safetyPlanActivity:\n section['safetyPlanActivity'] as AXMSafetyPlanSectionBuilderValue['sections'][number]['safetyPlanActivity'],\n widgetOptions:\n section['widgetOptions'] && typeof section['widgetOptions'] === 'object' && !Array.isArray(section['widgetOptions'])\n ? { ...(section['widgetOptions'] as Record<string, unknown>) }\n : undefined,\n items: this.collapseBuilderRowsToStorageItems(section.id, section.items, section),\n })),\n });\n }\n private expandSectionItemsToBuilderRows(\n sectionId: string,\n items: AXMSafetyPlanSectionBuilderItemValue[],\n section: {\n sectionTypeId?: string;\n sectionType?: AXMSectionTypeSnapshot;\n },\n ): AXPBuilderItem[] {\n if (\n isActivitySectionType(section.sectionTypeId, section.sectionType) ||\n items.some((item) => item.activityRow)\n ) {\n return items\n .filter((item) => item.activityRow)\n .map((item, order) =>\n this.toBuilderItemFromActivityRow(\n {\n ...item.activityRow!,\n title: item.activityRow!.title || item.items?.[0]?.title || 'Row',\n },\n order,\n item.id,\n ),\n );\n }\n const linked = this.flattenLinkedEntities(items);\n return linked.map((entry, order) => this.toBuilderItemFromEntity(sectionId, entry, order));\n }\n private collapseBuilderRowsToStorageItems(\n sectionId: string,\n items: AXPBuilderItem[],\n section: AXPBuilderSection,\n ): AXMSafetyPlanSectionBuilderItemValue[] {\n const ordered = [...items].sort((a, b) => (a.order ?? 0) - (b.order ?? 0));\n const sectionTypeId = String(section['sectionTypeId'] ?? '');\n const sectionType = section['sectionType'] as AXMSectionTypeSnapshot | undefined;\n if (isActivitySectionType(sectionTypeId, sectionType) || ordered.some((item) => item['activityRow'])) {\n const stepItems: AXMSafetyPlanSectionBuilderItemValue[] = [];\n ordered.forEach((item, index) => {\n const activityRow = item['activityRow'] as AXMSafetyPlanActivityRowBuilderPayload | undefined;\n if (!activityRow) {\n return;\n }\n const stepId =\n typeof item.id === 'string' && item.id && !String(item.id).includes('__entity_')\n ? String(item.id)\n : AXPDataGenerator.uuid();\n const title = activityRow.title?.trim() || 'Row';\n stepItems.push({\n id: stepId,\n itemIds: [stepId],\n items: [{ id: stepId, title, code: activityRow.code }],\n activityRow: {\n ...activityRow,\n title,\n sortOrder: index + 1,\n },\n });\n });\n return stepItems;\n }\n const itemIds: string[] = [];\n const snapshots: NonNullable<AXMSafetyPlanSectionBuilderItemValue['items']> = [];\n for (const item of ordered) {\n const entityId = this.resolveBuilderItemEntityId(item);\n if (!entityId || itemIds.includes(entityId)) {\n continue;\n }\n itemIds.push(entityId);\n const snapshot = Array.isArray(item['items'])\n ? (item['items'] as NonNullable<AXMSafetyPlanSectionBuilderItemValue['items']>)[0]\n : undefined;\n snapshots.push({\n id: entityId,\n title:\n asSafetyPlanDisplayText(snapshot?.title) ||\n asSafetyPlanDisplayText(item['title']) ||\n undefined,\n code:\n asSafetyPlanDisplayText(snapshot?.code) ||\n asSafetyPlanDisplayText(item['name']) ||\n undefined,\n });\n }\n if (!itemIds.length) {\n return [];\n }\n return [\n dedupeSafetyPlanSectionItemSelection({\n id: `${sectionId}__item_1`,\n itemIds,\n items: snapshots,\n }),\n ];\n }\n private flattenLinkedEntities(\n items: AXMSafetyPlanSectionBuilderItemValue[],\n ): Array<{ id: string; title?: string; code?: string }> {\n const linked: Array<{ id: string; title?: string; code?: string }> = [];\n const seen = new Set<string>();\n for (const slot of items) {\n const ids = Array.isArray(slot.itemIds) ? slot.itemIds : [];\n const snapshots = Array.isArray(slot.items) ? slot.items : [];\n for (let index = 0; index < ids.length; index += 1) {\n const id = String(ids[index] ?? '').trim();\n if (!id || seen.has(id)) {\n continue;\n }\n seen.add(id);\n const snapshot = snapshots.find((entry) => entry?.id === id) ?? snapshots[index];\n linked.push({\n id,\n title: asSafetyPlanDisplayText(snapshot?.title) || undefined,\n code: asSafetyPlanDisplayText(snapshot?.code) || undefined,\n });\n }\n }\n return linked;\n }\n private expandDialogSelectionToLinkedEntities(\n dialogValue: SafetyPlanSectionItemDialogValue,\n ): Array<{ id: string; title?: string; code?: string }> {\n return this.flattenLinkedEntities([\n {\n id: 'dialog',\n itemIds: [...(dialogValue.itemIds ?? [])],\n items: dialogValue.items ? [...dialogValue.items] : [],\n },\n ]);\n }\n private collectEntityIdsFromBuilderItems(items: AXPBuilderItem[]): Set<string> {\n const ids = new Set<string>();\n for (const item of items) {\n const entityId = this.resolveBuilderItemEntityId(item);\n if (entityId) {\n ids.add(entityId);\n }\n }\n return ids;\n }\n private resolveBuilderItemEntityId(item: AXPBuilderItem): string | null {\n if (typeof item['entityId'] === 'string' && item['entityId'].trim()) {\n return item['entityId'].trim();\n }\n if (Array.isArray(item['itemIds']) && typeof item['itemIds'][0] === 'string' && item['itemIds'][0].trim()) {\n return item['itemIds'][0].trim();\n }\n const snapshot = Array.isArray(item['items'])\n ? (item['items'] as { id?: string }[])[0]\n : undefined;\n if (typeof snapshot?.id === 'string' && snapshot.id.trim()) {\n return snapshot.id.trim();\n }\n return null;\n }\n private toBuilderItemFromEntity(\n sectionId: string,\n entry: { id: string; title?: string; code?: string },\n order: number,\n ): AXPBuilderItem {\n const title = asSafetyPlanDisplayText(entry.title);\n const code = asSafetyPlanDisplayText(entry.code);\n return {\n id: `${sectionId}__entity_${entry.id}`,\n order,\n entityId: entry.id,\n itemIds: [entry.id],\n items: [{ id: entry.id, title: title || undefined, code: code || undefined }],\n title,\n name: code,\n };\n }\n private toBuilderItemFromActivityRow(\n row: AXMSafetyPlanActivityRowBuilderPayload,\n order: number,\n id?: string,\n ): AXPBuilderItem {\n const stepId =\n typeof id === 'string' && id.trim() && !id.includes('__item_') && !id.includes('__entity_')\n ? id.trim()\n : AXPDataGenerator.uuid();\n const title = String(row.title ?? '').trim() || 'Row';\n const code = String(row.code ?? '').trim();\n const description = String(row.description ?? '').trim();\n return {\n id: stepId,\n order,\n entityId: stepId,\n itemIds: [stepId],\n items: [{ id: stepId, title, code: code || undefined }],\n title,\n name: code,\n description: description || undefined,\n activityRow: {\n ...row,\n title,\n description: description || undefined,\n sortOrder: order + 1,\n },\n };\n }\n /** Opens the SafetyPlanActivity update form so predefined sections (items) can be viewed/edited. */\n private async openSafetyPlanActivityEditor(activityId: string): Promise<{\n id: string;\n title?: string;\n code?: string;\n description?: string;\n sections: AXMSafetyPlanActivityRowBuilderPayload['sections'];\n } | null> {\n const activityEntity = `${RootConfig.module.name}.${RootConfig.entities.safetyPlanActivity.name}`;\n const result = await this.commandService.execute('Entity:Edit', {\n entity: activityEntity,\n data: activityId,\n dialogSize: 'lg',\n });\n if (!result?.success) {\n return null;\n }\n return this.loadSafetyPlanActivity(activityId);\n }\n\n private async loadSafetyPlanActivity(activityId: string): Promise<{\n id: string;\n title?: string;\n code?: string;\n description?: string;\n sections: NonNullable<AXMSafetyPlanActivityRowBuilderPayload['sections']>;\n } | null> {\n try {\n const entityKey = `${RootConfig.module.name}.${RootConfig.entities.safetyPlanActivity.name}`;\n const row = await this.entityService.withEntity(entityKey).data().byKey(activityId);\n if (!row) {\n return null;\n }\n const record = row as {\n id?: string;\n title?: string;\n code?: string;\n description?: string;\n items?: AXMWorkplaceSafetyManagementSafetyPlanSectionItemModel[];\n };\n return {\n id: String(record.id ?? activityId),\n title: record.title,\n code: record.code,\n description: typeof record.description === 'string' ? record.description : undefined,\n sections: mapSafetyPlanActivityItemsToSectionSnapshots(record.items),\n };\n } catch {\n return null;\n }\n }\n //#endregion\n}\n//#endregion\n","<div class=\"axm-safety-plan-section-builder\">\n @if (!readonly() && !hideHeaderActions() && allowAddSection()) {\n <div class=\"__header\">\n <div class=\"__header-left\"></div>\n <div class=\"__header-right\">\n <ax-button\n class=\"ax-sm\"\n [text]=\"\n '@workplacesafety-management:safety-plan-sections.entities.safety-plan-section.actions.add-section.title'\n | translate\n | async\n \"\n [color]=\"'primary'\"\n (onClick)=\"addSection()\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-layer-group\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n </div>\n }\n\n <axp-standard-section-items-builder\n class=\"block min-h-[200px]\"\n [value]=\"builderValue()\"\n [config]=\"standardConfig()\"\n [readonly]=\"readonly()\"\n (valueChange)=\"onBuilderValueChange($event)\"\n />\n</div>\n","//#region ---- Imports ----\n\nimport { AXPDataGenerator, AXPContextStore } from '@acorex-platform/framework-client/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPCommandService } from '@acorex-platform/framework-client/runtime';\nimport { AXPPageLayoutBase, AXPPageLayoutBaseComponent } from '@acorex-platform/framework-client/layout/views';\nimport type { AXPLayoutDetailsViewAction } from '@acorex-platform/framework-client/layout/views';\nimport type {\n AXMSafetyPlanSectionBuilderValue,\n AXMWorkplaceSafetyManagementSafetyPlanTypeSectionEntityModel,\n} from '@acorex-platform/module-workplacesafety-management-client/contracts';\nimport {\n RootConfig,\n buildSectionStructureFromTypeSections,\n collectBuiltInRepeatableSectionTypeIds,\n dedupeSafetyPlanSectionStructure,\n pickSafetyPlanTypeSectionsForStructure,\n resolveEntityRefId,\n resolveSectionItemEntityName,\n isActivitySectionType,\n toBuilderValueFromStructure,\n asSafetyPlanDisplayText,\n} from '@acorex-platform/module-workplacesafety-management-client/contracts';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n signal,\n untracked,\n viewChild,\n} from '@angular/core';\nimport { cloneDeep, isEqual } from 'lodash';\nimport { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { AXMSafetyPlanSectionBuilderComponent } from './safety-plan-section-builder.component';\nimport {\n normalizeSafetyPlanSectionBuilderValue,\n safetyPlanSectionsToBuilderValue,\n} from './safety-plan-section-builder.types';\nimport { SAFETY_PLAN_SECTIONS_SAVE_COMMAND } from './save-safety-plan-sections.command';\nimport { AXMSafetyPlanPreviewService } from '../safety-plan-preview/safety-plan-preview.service';\nimport { hydrateSafetyPlanActivitySectionsForPreview } from '../safety-plan-preview/hydrate-safety-plan-activity-sections';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\nimport { AXPSystemStatusType } from '@acorex-platform/framework-shared/core';\nimport { resolveEntityRowDisplayText } from '@acorex-platform/framework-client/common';\n\n//#endregion\n\n//#region ---- Constants ----\n\nconst SAFETY_PLAN_SECTIONS_ADD_SECTION_COMMAND = 'SafetyPlan:Sections:AddSection';\nconst SAFETY_PLAN_SECTIONS_PREVIEW_COMMAND = 'SafetyPlan:Sections:Preview';\nconst SAFETY_PLAN_SECTIONS_DISCARD_COMMAND = 'SafetyPlan:Sections:Discard';\n\nconst SAFETY_PLAN_SECTION_ENTITY = `${RootConfig.module.name}.${RootConfig.entities.safetyPlanSection.name}`;\nconst SAFETY_PLAN_TYPE_SECTION_ENTITY = `${RootConfig.module.name}.${RootConfig.entities.safetyPlanTypeSection.name}`;\nconst SECTION_TYPE_ENTITY = `${RootConfig.module.name}.${RootConfig.entities.sectionType.name}`;\n\n//#endregion\n\n//#region ---- Component ----\n\n@Component({\n selector: 'axm-safety-plan-sections-page',\n standalone: true,\n imports: [AXMSafetyPlanSectionBuilderComponent, AXTranslationModule, AsyncPipe, AXSkeletonModule],\n template: `\n @if (safetyPlanId() || hasStructure()) {\n <div class=\"relative block w-full min-h-0\">\n <!-- ----- Skeleton overlay while structure loads (builder stays mounted) ----- -->\n @if (showStructureLoading()) {\n <div class=\"flex flex-col gap-3 p-4 absolute inset-0 z-10 bg-white/80 dark:bg-black/40\">\n <ax-skeleton [animated]=\"true\" class=\"h-5 w-2/5 rounded-md\"></ax-skeleton>\n <ax-skeleton [animated]=\"true\" class=\"h-24 w-full rounded-md\"></ax-skeleton>\n <ax-skeleton [animated]=\"true\" class=\"h-24 w-full rounded-md\"></ax-skeleton>\n <ax-skeleton [animated]=\"true\" class=\"h-4 w-3/5 rounded-md\"></ax-skeleton>\n </div>\n }\n <!-- ----- Sections builder — mounted once structure is known (or editing an existing plan) ----- -->\n <axm-safety-plan-section-builder\n #builderRef\n [value]=\"committedValue()\"\n [safetyPlanId]=\"safetyPlanId() ?? undefined\"\n [options]=\"builderOptions()\"\n (valueChange)=\"onValueChange($event)\"\n />\n </div>\n }\n <!-- ----- Prompt to select plan type + structure before sections can load ----- -->\n @else {\n <p class=\"text-muted p-4\">\n {{\n '@workplacesafety-management:safety-plans.entities.safety-plan.pages.sections.select-plan-type-first'\n | translate\n | async\n }}\n </p>\n }\n `,\n host: {\n class: 'block w-full min-h-0',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMSafetyPlanSectionsPageComponent,\n },\n ],\n})\nexport class AXMSafetyPlanSectionsPageComponent extends AXPPageLayoutBaseComponent {\n /** Default `{}`: avoid NG0950 before page-component-renderer calls setInput. */\n rootContext = input<Record<string, unknown>>({});\n pageConfig = input<Record<string, unknown>>();\n options = input<Record<string, unknown>>({});\n\n protected readonly builderRef = viewChild<AXMSafetyPlanSectionBuilderComponent>('builderRef');\n\n private readonly commandService = inject(AXPCommandService);\n private readonly entityService = inject(AXPEntityService);\n private readonly contextStore = inject(AXPContextStore);\n private readonly hostPageLayout = inject(AXPPageLayoutBase, { optional: true, skipSelf: true });\n private readonly previewService = inject(AXMSafetyPlanPreviewService);\n\n private readonly baselineValue = signal<AXMSafetyPlanSectionBuilderValue | null>(null);\n protected readonly committedValue = signal<AXMSafetyPlanSectionBuilderValue | null>(null);\n protected readonly isLoadingStructure = signal(false);\n /** Prevents re-entrant sync loops when applyStructure mutates shared form context. */\n private readonly lastSyncedKey = signal<string | null>(null);\n /** In-flight sync key — blocks concurrent loads for the same pair without blocking retries after cancel. */\n private readonly inflightSyncKey = signal<string | null>(null);\n private readonly appliedPlanTypeId = signal<string | null>(null);\n private readonly appliedStructureId = signal<string | null>(null);\n /**\n * Bumped only when the user changes structure after a successful sync (see `#detectStructureUserChange`).\n * Keeps `#syncFromContext` from tracking context `structureId` during unrelated context churn.\n */\n private readonly structureReloadToken = signal(0);\n /**\n * Stable builder options — same pattern as questionnaire `prePostConfigStable`\n * (new object every CD caused builder config thrash / flicker).\n */\n private readonly builderOptionsStable = signal<Record<string, unknown>>({\n hideHeaderActions: true,\n readonly: false,\n allowAddSection: true,\n allowAddItems: true,\n allowReorderSections: true,\n allowEditSection: false,\n allowEditItem: false,\n });\n\n protected readonly safetyPlanId = computed((): string | null => {\n const raw = this.rootContext()?.['id'];\n return typeof raw === 'string' && raw.length > 0 ? raw : null;\n });\n\n protected readonly planTypeId = computed((): string | null => {\n const ctx = this.rootContext() ?? {};\n return (\n resolveEntityRefId(ctx['safetyPlanTypeId']) ??\n resolveEntityRefId((ctx['safetyPlanType'] as { id?: unknown } | undefined)?.id) ??\n resolveEntityRefId(ctx['safetyPlanType'])\n );\n });\n\n protected readonly structureId = computed((): string | null => {\n const ctx = this.rootContext() ?? {};\n return (\n resolveEntityRefId(ctx['structureId']) ??\n resolveEntityRefId((ctx['structure'] as { id?: unknown } | undefined)?.id) ??\n resolveEntityRefId(ctx['structure'])\n );\n });\n\n protected readonly hasStructure = computed(() => !!this.structureId());\n\n /**\n * Covers the first paint before `#syncFromContext` sets `isLoadingStructure`, and the full sync span.\n * Avoids flashing an empty builder after create-and-continue.\n */\n protected readonly showStructureLoading = computed((): boolean => {\n if (this.isLoadingStructure()) {\n return true;\n }\n if (!(this.safetyPlanId() || this.hasStructure())) {\n return false;\n }\n return this.lastSyncedKey() == null && this.committedValue() == null;\n });\n\n protected readonly isDraftPlan = computed((): boolean => {\n const status = this.rootContext()?.['status'];\n return !status || status === AXPSystemStatusType.Draft;\n });\n\n /** Stable reference for the builder — updated only when option values change. */\n protected readonly builderOptions = computed(() => this.builderOptionsStable());\n\n protected readonly isDirty = computed(() => {\n return !isEqual(this.baselineValue() ?? { sections: [] }, this.committedValue() ?? { sections: [] });\n });\n\n /** Keep builder options stable across rootContext snapshot churn (questionnaire pattern). */\n #stabilizeBuilderOptions = effect(() => {\n const draft = this.isDraftPlan();\n const next: Record<string, unknown> = {\n hideHeaderActions: true,\n readonly: !draft,\n allowAddSection: draft,\n allowAddItems: draft,\n allowReorderSections: draft,\n allowEditSection: false,\n allowEditItem: false,\n };\n const current = untracked(() => this.builderOptionsStable());\n if (!isEqual(current, next)) {\n this.builderOptionsStable.set(next);\n }\n });\n\n /**\n * Plan type changed on the form — clear structure and wait for a manual structure pick.\n * Does not rebuild sections; structure selection drives the next load.\n */\n #detectPlanTypeUserChange = effect(() => {\n const typeId = this.planTypeId();\n const applied = untracked(() => this.appliedPlanTypeId());\n if (!typeId || applied == null || typeId === applied) {\n return;\n }\n\n this.appliedPlanTypeId.set(typeId);\n this.appliedStructureId.set(null);\n this.lastSyncedKey.set(null);\n this.inflightSyncKey.set(null);\n this.updateRootContextField('structureId', null);\n this.updateRootContextField('structure', null);\n });\n\n /**\n * User changed structure after a successful sync — bump token so `#syncFromContext` reloads.\n */\n #detectStructureUserChange = effect(() => {\n const contextStructureId = this.structureId();\n const applied = untracked(() => this.appliedStructureId());\n if (!contextStructureId || applied == null) {\n return;\n }\n if (contextStructureId === applied) {\n return;\n }\n if (untracked(() => this.lastSyncedKey()) == null) {\n return;\n }\n this.lastSyncedKey.set(null);\n this.structureReloadToken.update((n) => n + 1);\n });\n\n #syncFromContext = effect((onCleanup) => {\n this.structureReloadToken();\n const planId = this.safetyPlanId();\n const typeId = this.planTypeId();\n const structureId = this.structureId();\n const syncKey = this.buildSyncKey(planId, typeId, structureId);\n\n if (\n untracked(() => this.lastSyncedKey()) === syncKey ||\n untracked(() => this.inflightSyncKey()) === syncKey\n ) {\n return;\n }\n\n const inflight = untracked(() => this.inflightSyncKey());\n if (inflight && inflight.startsWith(`${planId ?? ''}|${typeId ?? ''}|`)) {\n return;\n }\n\n this.inflightSyncKey.set(syncKey);\n\n let cancelled = false;\n let activeSyncKey = syncKey;\n\n const clearInflight = (): void => {\n if (untracked(() => this.inflightSyncKey()) === activeSyncKey) {\n this.inflightSyncKey.set(null);\n }\n };\n\n const markSynced = (finalStructureId: string | null = structureId): void => {\n activeSyncKey = this.buildSyncKey(planId, typeId, finalStructureId);\n this.lastSyncedKey.set(activeSyncKey);\n this.inflightSyncKey.set(null);\n };\n\n const run = async (): Promise<void> => {\n if (cancelled) {\n return;\n }\n\n // Create (no plan yet): exit without SectionType query until structure defaults are needed.\n if (!planId) {\n if (!typeId) {\n this.appliedPlanTypeId.set(null);\n this.appliedStructureId.set(null);\n this.applyStructure({ sections: [] }, { asBaseline: true });\n markSynced(null);\n return;\n }\n\n // Plan type alone must not auto-pick a structure or rebuild sections.\n if (!structureId) {\n this.appliedPlanTypeId.set(typeId);\n this.appliedStructureId.set(null);\n markSynced(null);\n return;\n }\n\n this.isLoadingStructure.set(true);\n try {\n const repeatableSectionTypeIds = await this.loadRepeatableSectionTypeIds();\n if (cancelled) {\n return;\n }\n\n const defaults = await this.loadDefaultsForStructure(\n typeId,\n structureId,\n repeatableSectionTypeIds,\n );\n if (cancelled) return;\n this.applyStructure(defaults, { asBaseline: true });\n this.appliedPlanTypeId.set(typeId);\n this.appliedStructureId.set(structureId);\n markSynced(structureId);\n } catch {\n if (cancelled) return;\n clearInflight();\n await this.showStructureLoadError();\n } finally {\n if (!cancelled) {\n this.isLoadingStructure.set(false);\n }\n }\n return;\n }\n\n // Edit / create-and-continue: one continuous loading span through SectionType → sections → defaults.\n this.isLoadingStructure.set(true);\n try {\n const repeatableSectionTypeIds = await this.loadRepeatableSectionTypeIds();\n if (cancelled) {\n return;\n }\n\n // Load independent saved sections once — never append type defaults on top.\n const previousStructureId = untracked(() => this.appliedStructureId());\n const structureChanged =\n !!structureId && !!previousStructureId && previousStructureId !== structureId;\n\n if (structureChanged && this.isDraftPlan()) {\n const defaults = await this.loadDefaultsForStructure(\n typeId ?? '',\n structureId,\n repeatableSectionTypeIds,\n );\n if (cancelled) return;\n this.applyStructure(defaults, { asBaseline: true });\n this.appliedPlanTypeId.set(typeId);\n this.appliedStructureId.set(structureId);\n markSynced(structureId);\n return;\n }\n\n const loaded = await this.fetchSectionsFromBackend(planId, repeatableSectionTypeIds);\n if (cancelled) return;\n\n if (loaded.sections.length > 0) {\n this.applyStructure(loaded, { asBaseline: true });\n this.appliedPlanTypeId.set(typeId);\n this.appliedStructureId.set(structureId);\n markSynced(structureId);\n return;\n }\n\n if (!typeId) {\n this.appliedPlanTypeId.set(null);\n this.appliedStructureId.set(null);\n this.applyStructure({ sections: [] }, { asBaseline: true });\n markSynced(null);\n return;\n }\n\n // Plan type alone must not auto-pick a structure or rebuild sections.\n if (!structureId) {\n this.appliedPlanTypeId.set(typeId);\n this.appliedStructureId.set(null);\n markSynced(null);\n return;\n }\n\n const defaults = await this.loadDefaultsForStructure(\n typeId,\n structureId,\n repeatableSectionTypeIds,\n );\n if (cancelled) return;\n this.applyStructure(defaults, { asBaseline: true });\n this.appliedPlanTypeId.set(typeId);\n this.appliedStructureId.set(structureId);\n markSynced(structureId);\n } catch {\n if (cancelled) return;\n clearInflight();\n await this.showStructureLoadError();\n } finally {\n if (!cancelled) {\n this.isLoadingStructure.set(false);\n }\n }\n };\n\n void run();\n\n onCleanup(() => {\n cancelled = true;\n clearInflight();\n });\n });\n\n protected onValueChange(value: AXMSafetyPlanSectionBuilderValue): void {\n const withOrder = normalizeSafetyPlanSectionBuilderValue({\n sections: value.sections.map((section, index) => ({\n ...section,\n sortOrder: index + 1,\n })),\n });\n if (isEqual(untracked(() => this.committedValue()), withOrder)) {\n return;\n }\n this.committedValue.set(withOrder);\n this.persistContextField('sectionStructure', withOrder, 'user');\n this.persistContextField('sections', withOrder, 'user');\n this.recompute();\n }\n\n override getWizardStepContext(): Record<string, unknown> | null {\n const value = this.committedValue();\n if (!value) {\n return null;\n }\n const cloned = cloneDeep(value);\n return { sectionStructure: cloned, sections: cloned };\n }\n\n override hasUnsavedChanges(): boolean {\n return this.isDirty();\n }\n\n override async getPrimaryMenuItems(): Promise<AXPLayoutDetailsViewAction[]> {\n const actions: AXPLayoutDetailsViewAction[] = [];\n const loading = this.showStructureLoading();\n const canPreview =\n !loading &&\n (!!this.hasStructure() || !!this.safetyPlanId() || (this.committedValue()?.sections.length ?? 0) > 0);\n\n if (this.isDraftPlan() && !loading) {\n actions.push({\n title:\n '@workplacesafety-management:safety-plan-sections.entities.safety-plan-section.actions.add-section.title',\n icon: 'fa-light fa-layer-group',\n zone: 'header' as const,\n priority: 'primary' as const,\n color: 'primary' as const,\n command: { name: SAFETY_PLAN_SECTIONS_ADD_SECTION_COMMAND, options: {} },\n });\n }\n\n if (canPreview) {\n actions.push({\n title:\n '@workplacesafety-management:safety-plan-sections.entities.safety-plan-section.actions.preview.title',\n icon: 'fa-light fa-eye',\n zone: 'header' as const,\n priority: 'primary' as const,\n color: 'default' as const,\n command: { name: SAFETY_PLAN_SECTIONS_PREVIEW_COMMAND, options: {} },\n });\n }\n\n if (!this.isDraftPlan() || loading) {\n return actions;\n }\n\n if (this.safetyPlanId()) {\n actions.push(\n {\n title: '@general:actions.discard.title',\n icon: 'fa-light fa-rotate-left',\n zone: 'footer' as const,\n priority: 'secondary',\n color: 'default',\n visible: this.isDirty(),\n command: { name: SAFETY_PLAN_SECTIONS_DISCARD_COMMAND, options: {} },\n },\n {\n title: '@general:actions.save.title',\n icon: 'fa-light fa-floppy-disk',\n zone: 'footer' as const,\n priority: 'primary',\n color: 'primary',\n visible: this.isDirty(),\n command: { name: SAFETY_PLAN_SECTIONS_SAVE_COMMAND, options: {} },\n },\n );\n }\n\n return actions;\n }\n\n override async execute(command: { name: string; options?: unknown }): Promise<void> {\n if (command.name === SAFETY_PLAN_SECTIONS_ADD_SECTION_COMMAND) {\n await this.builderRef()?.addSection();\n return;\n }\n\n if (command.name === SAFETY_PLAN_SECTIONS_PREVIEW_COMMAND) {\n await this.handlePreview();\n return;\n }\n\n if (command.name === SAFETY_PLAN_SECTIONS_DISCARD_COMMAND) {\n this.handleDiscard();\n return;\n }\n\n if (command.name !== SAFETY_PLAN_SECTIONS_SAVE_COMMAND) return;\n\n await this.handleSave({ silent: false });\n }\n\n private async handlePreview(): Promise<void> {\n const previewLabel =\n (await this.translateService.translateAsync('@general:actions.preview.title')) || 'Preview';\n const locale = this.translateService.getActiveLang?.() ?? 'en-US';\n const planTitle = resolveEntityRowDisplayText(this.rootContext()?.['title'], locale);\n const title = planTitle ? `${previewLabel}: ${planTitle}` : previewLabel;\n const structure = await hydrateSafetyPlanActivitySectionsForPreview(\n this.entityService,\n this.translateService,\n cloneDeep(this.committedValue() ?? { sections: [] }),\n );\n await this.previewService.open({\n title,\n structure,\n });\n }\n\n private async handleSave(options?: { silent?: boolean }): Promise<void> {\n const silent = options?.silent === true;\n const id = this.safetyPlanId();\n const value = this.committedValue() ?? { sections: [] };\n\n if (!id) {\n if (!silent) {\n this.toastService.show({\n color: 'danger',\n title: await this.translateService.translateAsync('@general:messages.generic.error.title'),\n content: await this.translateService.translateAsync(\n '@workplacesafety-management:safety-plans.entities.safety-plan.pages.sections.save-plan-first',\n ),\n });\n }\n return;\n }\n\n const result = await this.commandService.execute(SAFETY_PLAN_SECTIONS_SAVE_COMMAND, { id, value });\n\n if (result?.success) {\n // Always reload from backend after save so UI never keeps a stale/appended local list.\n const repeatableSectionTypeIds = await this.loadRepeatableSectionTypeIds();\n const saved = await this.fetchSectionsFromBackend(id, repeatableSectionTypeIds);\n this.applyStructure(saved, { asBaseline: true });\n this.lastSyncedKey.set(this.buildSyncKey(id, this.planTypeId(), this.structureId()));\n this.inflightSyncKey.set(null);\n this.builderRef()?.syncAfterSave(saved);\n this.recompute();\n if (!silent) {\n this.toastService.show({\n color: 'success',\n title: await this.translateService.translateAsync('@general:messages.generic.success.title'),\n content: await this.translateService.translateAsync('@general:messages.generic.success.description'),\n });\n }\n return;\n }\n\n this.toastService.show({\n color: 'danger',\n title: await this.translateService.translateAsync('@general:messages.generic.error.title'),\n content:\n typeof result?.message?.text === 'string' && result.message.text.startsWith('@')\n ? await this.translateService.translateAsync(result.message.text)\n : await this.translateService.translateAsync('@general:messages.entity.update-failed'),\n });\n }\n\n protected override recompute(): void {\n super.recompute();\n const layout = this.hostPageLayout as unknown as { recompute?: () => void } | null | undefined;\n layout?.recompute?.();\n }\n\n private handleDiscard(): void {\n const baseline = this.baselineValue() ?? { sections: [] };\n this.committedValue.set(baseline);\n this.updateRootContextField('sectionStructure', baseline);\n this.updateRootContextField('sections', baseline);\n this.builderRef()?.resetAfterDiscard();\n this.recompute();\n }\n\n private applyStructure(\n value: AXMSafetyPlanSectionBuilderValue,\n options: { asBaseline: boolean },\n ): void {\n const normalized = normalizeSafetyPlanSectionBuilderValue(value);\n if (options.asBaseline) {\n this.baselineValue.set(normalized);\n }\n if (!isEqual(untracked(() => this.committedValue()), normalized)) {\n this.committedValue.set(normalized);\n }\n // Mirror onto the current rootContext object only (no contextStore.update).\n // Store writes during load re-snapshot rootContext and remount/lazy-reload the page.\n this.mirrorRootContextField('sectionStructure', normalized);\n this.mirrorRootContextField('sections', normalized);\n }\n\n private buildSyncKey(\n planId: string | null,\n typeId: string | null,\n structureId: string | null,\n ): string {\n return `${planId ?? ''}|${typeId ?? ''}|${structureId ?? ''}`;\n }\n\n /** Mutate the current rootContext input object without notifying the context store. */\n private mirrorRootContextField(field: string, value: unknown): void {\n const ctx = this.rootContext() as Record<string, unknown> | undefined;\n if (!ctx || typeof ctx !== 'object') {\n return;\n }\n ctx[field] = cloneDeep(value);\n }\n\n /**\n * User edits / explicit plan-type changes: write through AXPContextStore (skips when equal)\n * and mirror onto the current rootContext input object.\n */\n private persistContextField(\n field: string,\n value: unknown,\n origin: 'user' | 'system',\n ): void {\n this.contextStore.update(field, cloneDeep(value), { origin });\n this.mirrorRootContextField(field, value);\n }\n\n private updateRootContextField(field: string, value: unknown): void {\n // Prefer store writes for explicit field updates (plan type / structure / discard).\n this.persistContextField(field, value, 'system');\n }\n private async fetchSectionsFromBackend(\n planId: string,\n repeatableSectionTypeIds: readonly string[] = [],\n ): Promise<AXMSafetyPlanSectionBuilderValue> {\n const result = await this.entityService.withEntity(SAFETY_PLAN_SECTION_ENTITY).data().query({\n skip: 0,\n take: 1000,\n filter: {\n logic: 'and',\n filters: [{ field: 'safetyPlanId', operator: { type: 'equal' }, value: planId }],\n },\n } as never);\n\n const rawLoaded = safetyPlanSectionsToBuilderValue(\n (result.items ?? []) as Parameters<typeof safetyPlanSectionsToBuilderValue>[0],\n );\n const deduped = dedupeSafetyPlanSectionStructure(rawLoaded, { repeatableSectionTypeIds });\n\n // Activity sections store SafetyPlanActivity rows on items; no column schema to hydrate.\n return this.hydrateCatalogItemSnapshots(deduped);\n }\n\n /**\n * Repeater lookups are not joined on query. Fill missing catalog item titles from\n * Hazard / HazardRisk / PPE / Control records so seeded item cards are not blank.\n */\n private async hydrateCatalogItemSnapshots(\n value: AXMSafetyPlanSectionBuilderValue,\n ): Promise<AXMSafetyPlanSectionBuilderValue> {\n const locale = this.translateService.getActiveLang?.() ?? 'en-US';\n const missingByEntity = new Map<string, Set<string>>();\n\n for (const section of value.sections) {\n if (isActivitySectionType(section.sectionTypeId, section.sectionType)) {\n continue;\n }\n const entityName = resolveSectionItemEntityName(section.sectionTypeId, section.sectionType);\n if (!entityName) {\n continue;\n }\n for (const slot of section.items) {\n for (const id of slot.itemIds ?? []) {\n const snapshot = slot.items?.find((entry) => entry.id === id);\n if (asSafetyPlanDisplayText(snapshot?.title) || asSafetyPlanDisplayText(snapshot?.code)) {\n continue;\n }\n const ids = missingByEntity.get(entityName) ?? new Set<string>();\n ids.add(id);\n missingByEntity.set(entityName, ids);\n }\n }\n }\n\n if (missingByEntity.size === 0) {\n return value;\n }\n\n const loadedById = new Map<string, { title?: string; code?: string }>();\n await Promise.all(\n [...missingByEntity.entries()].map(async ([entityName, ids]) => {\n const idList = [...ids];\n try {\n const result = await this.entityService.withEntity(entityName).data().query({\n skip: 0,\n take: Math.max(idList.length, 1),\n filter:\n idList.length === 1\n ? { field: 'id', operator: { type: 'equal' }, value: idList[0] }\n : { field: 'id', operator: { type: 'in' }, value: idList },\n } as never);\n for (const row of result.items ?? []) {\n const record = row as unknown as Record<string, unknown>;\n const id = resolveEntityRefId(record['id']);\n if (!id) {\n continue;\n }\n loadedById.set(id, {\n title: resolveEntityRowDisplayText(record['title'], locale) || undefined,\n code: asSafetyPlanDisplayText(record['code']) || undefined,\n });\n }\n } catch {\n /* skip entities the session cannot read */\n }\n }),\n );\n\n if (loadedById.size === 0) {\n return value;\n }\n\n return {\n sections: value.sections.map((section) => ({\n ...section,\n items: section.items.map((slot) => ({\n ...slot,\n items: (slot.itemIds ?? []).map((id, index) => {\n const existing = slot.items?.find((entry) => entry.id === id) ?? slot.items?.[index];\n const loaded = loadedById.get(id);\n return {\n id,\n title: asSafetyPlanDisplayText(existing?.title) || loaded?.title,\n code: asSafetyPlanDisplayText(existing?.code) || loaded?.code,\n };\n }),\n })),\n })),\n };\n }\n\n private async loadRepeatableSectionTypeIds(): Promise<string[]> {\n const builtIn = collectBuiltInRepeatableSectionTypeIds();\n try {\n const result = await this.entityService.withEntity(SECTION_TYPE_ENTITY).data().query({\n skip: 0,\n take: 1000,\n } as never);\n const fromQuery = (result.items ?? [])\n .filter((row) => (row as { isRepeatable?: unknown }).isRepeatable === true)\n .map((row) => resolveEntityRefId((row as { id?: unknown }).id))\n .filter((id): id is string => !!id);\n return [...new Set([...fromQuery, ...builtIn])];\n } catch {\n return builtIn;\n }\n }\n\n private async queryTypeSectionsForPlanType(\n typeId: string,\n ): Promise<AXMWorkplaceSafetyManagementSafetyPlanTypeSectionEntityModel[]> {\n const result = await this.entityService.withEntity(SAFETY_PLAN_TYPE_SECTION_ENTITY).data().query({\n skip: 0,\n take: 1000,\n sort: [{ field: 'sortOrder', dir: 'asc' }],\n filter: {\n logic: 'and',\n filters: [\n { field: 'safetyPlanTypeId', operator: { type: 'equal' }, value: typeId },\n { field: 'isArchived', operator: { type: 'equal' }, value: false },\n ],\n },\n } as never);\n\n return ((result.items ?? []) as AXMWorkplaceSafetyManagementSafetyPlanTypeSectionEntityModel[]).filter(\n (row) => resolveEntityRefId(row.safetyPlanTypeId) === typeId,\n );\n }\n\n private async loadDefaultsForStructure(\n typeId: string,\n structureId: string | null,\n repeatableSectionTypeIds: readonly string[] = [],\n ): Promise<AXMSafetyPlanSectionBuilderValue> {\n if (!typeId) {\n return { sections: [] };\n }\n\n const typeSections = await this.queryTypeSectionsForPlanType(typeId);\n const sourceRows = pickSafetyPlanTypeSectionsForStructure(typeSections, structureId);\n\n const structure = dedupeSafetyPlanSectionStructure(\n buildSectionStructureFromTypeSections(sourceRows, {\n createId: () => AXPDataGenerator.uuid(),\n }),\n { repeatableSectionTypeIds },\n );\n\n return toBuilderValueFromStructure(await this.enrichSectionTitlesFromSectionTypes(structure));\n }\n\n /**\n * Fills missing section titles from SectionType records when type-section snapshots omit them.\n */\n private async enrichSectionTitlesFromSectionTypes(\n structure: ReturnType<typeof buildSectionStructureFromTypeSections>,\n ): Promise<ReturnType<typeof buildSectionStructureFromTypeSections>> {\n const missingIds = [\n ...new Set(\n structure.sections\n .filter((section) => !section.sectionType?.title || section.title === section.sectionTypeId)\n .map((section) => section.sectionTypeId)\n .filter((id) => !!id),\n ),\n ];\n if (!missingIds.length) {\n return structure;\n }\n\n const sectionTypeEntity = `${RootConfig.module.name}.${RootConfig.entities.sectionType.name}`;\n const result = await this.entityService.withEntity(sectionTypeEntity).data().query({\n skip: 0,\n take: Math.max(missingIds.length, 1),\n filter: {\n logic: 'or',\n filters: missingIds.map((id) => ({\n field: 'id',\n operator: { type: 'equal' },\n value: id,\n })),\n },\n } as never);\n\n const byId = new Map<string, { title?: string; code?: string }>();\n for (const row of result.items ?? []) {\n const record = row as unknown as Record<string, unknown>;\n const id = resolveEntityRefId(record['id']);\n if (!id) continue;\n const title = record['title'];\n const code = record['code'];\n byId.set(id, {\n title: typeof title === 'string' ? title : undefined,\n code: typeof code === 'string' ? code : undefined,\n });\n }\n\n return {\n sections: structure.sections.map((section) => {\n const meta = byId.get(section.sectionTypeId);\n if (!meta?.title && !meta?.code) {\n return section;\n }\n const title = (meta.title ?? meta.code ?? section.title).trim();\n return {\n ...section,\n title,\n sectionType: {\n id: section.sectionTypeId,\n title: meta.title ?? section.sectionType?.title,\n code: meta.code ?? section.sectionType?.code,\n },\n };\n }),\n };\n }\n\n private async showStructureLoadError(): Promise<void> {\n this.toastService.show({\n color: 'danger',\n title: await this.translateService.translateAsync('@general:messages.generic.error.title'),\n content: await this.translateService.translateAsync(\n '@workplacesafety-management:safety-plans.messages.section-structure.load-failed',\n ),\n });\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport {\n AXPPageComponentDefinition,\n AXPPageComponentProvider,\n} from '@acorex-platform/framework-client/layout/components';\nimport { Injectable } from '@angular/core';\nimport { SAFETY_PLAN_SECTIONS_PAGE_COMPONENT_KEY } from '@acorex-platform/module-workplacesafety-management-client/contracts';\n\n//#endregion\n\n//#region ---- Safety plan sections page provider ----\n\n@Injectable()\nexport class AXMSafetyPlanSectionsPageComponentProvider implements AXPPageComponentProvider {\n async components(): Promise<AXPPageComponentDefinition[]> {\n return [\n {\n key: SAFETY_PLAN_SECTIONS_PAGE_COMPONENT_KEY,\n loader: () =>\n import('./safety-plan-sections-page.component').then((m) => m.AXMSafetyPlanSectionsPageComponent),\n },\n ];\n }\n}\n\n//#endregion\n"],"names":["i4"],"mappings":"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"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { resolveEntityRowDisplayText } from '@acorex-platform/framework-client/common';
|
|
2
|
+
import { RootConfig, dedupeSafetyPlanSectionStructure, collectBuiltInRepeatableSectionTypeIds, resolveEntityRefId, isActivitySectionType, resolveSectionItemEntityName, asSafetyPlanDisplayText } from '@acorex-platform/module-workplacesafety-management-client/contracts';
|
|
3
|
+
import { s as safetyPlanSectionsToBuilderValue } from './acorex-platform-module-workplacesafety-management-client-safety-plan-section-builder.types-C0SEJsVM.mjs';
|
|
4
|
+
import { h as hydrateSafetyPlanActivitySectionsForPreview } from './acorex-platform-module-workplacesafety-management-client-hydrate-safety-plan-activity-sections-TrVl3-T6.mjs';
|
|
5
|
+
|
|
6
|
+
//#region ----- Imports -----
|
|
7
|
+
//#endregion
|
|
8
|
+
//#region ----- Constants -----
|
|
9
|
+
const SAFETY_PLAN_SECTION_ENTITY = `${RootConfig.module.name}.${RootConfig.entities.safetyPlanSection.name}`;
|
|
10
|
+
const SECTION_TYPE_ENTITY = `${RootConfig.module.name}.${RootConfig.entities.sectionType.name}`;
|
|
11
|
+
//#endregion
|
|
12
|
+
//#region ----- Public API -----
|
|
13
|
+
/**
|
|
14
|
+
* Loads a safety plan's section structure for the existing preview modal
|
|
15
|
+
* (same shape the sections page feeds into AXMSafetyPlanPreviewService).
|
|
16
|
+
*/
|
|
17
|
+
async function loadSafetyPlanPreviewStructure(entityService, translationService, planId) {
|
|
18
|
+
const editable = await loadSafetyPlanEditableStructure(entityService, translationService, planId);
|
|
19
|
+
// Activity sections reference SafetyPlanActivity; hydrate nested section items for preview.
|
|
20
|
+
return hydrateSafetyPlanActivitySectionsForPreview(entityService, translationService, editable);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Loads section structure for editing (Fill / sections page shape).
|
|
24
|
+
* Skips preview-only activity hydration so the builder can persist cleanly.
|
|
25
|
+
*/
|
|
26
|
+
async function loadSafetyPlanEditableStructure(entityService, translationService, planId) {
|
|
27
|
+
const repeatableSectionTypeIds = await loadRepeatableSectionTypeIds(entityService);
|
|
28
|
+
const result = await entityService.withEntity(SAFETY_PLAN_SECTION_ENTITY).data().query({
|
|
29
|
+
skip: 0,
|
|
30
|
+
take: 1000,
|
|
31
|
+
filter: {
|
|
32
|
+
logic: 'and',
|
|
33
|
+
filters: [{ field: 'safetyPlanId', operator: { type: 'equal' }, value: planId }],
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
const rawLoaded = safetyPlanSectionsToBuilderValue((result.items ?? []));
|
|
37
|
+
const deduped = dedupeSafetyPlanSectionStructure(rawLoaded, { repeatableSectionTypeIds });
|
|
38
|
+
return hydrateCatalogItemSnapshots(entityService, translationService, deduped);
|
|
39
|
+
}
|
|
40
|
+
//#endregion
|
|
41
|
+
//#region ----- Helpers -----
|
|
42
|
+
async function loadRepeatableSectionTypeIds(entityService) {
|
|
43
|
+
const builtIn = collectBuiltInRepeatableSectionTypeIds();
|
|
44
|
+
try {
|
|
45
|
+
const result = await entityService.withEntity(SECTION_TYPE_ENTITY).data().query({
|
|
46
|
+
skip: 0,
|
|
47
|
+
take: 1000,
|
|
48
|
+
});
|
|
49
|
+
const fromQuery = (result.items ?? [])
|
|
50
|
+
.filter((row) => row.isRepeatable === true)
|
|
51
|
+
.map((row) => resolveEntityRefId(row.id))
|
|
52
|
+
.filter((id) => !!id);
|
|
53
|
+
return [...new Set([...fromQuery, ...builtIn])];
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
return builtIn;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
async function hydrateCatalogItemSnapshots(entityService, translationService, value) {
|
|
60
|
+
const locale = translationService.getActiveLang?.() ?? 'en-US';
|
|
61
|
+
const missingByEntity = new Map();
|
|
62
|
+
for (const section of value.sections) {
|
|
63
|
+
if (isActivitySectionType(section.sectionTypeId, section.sectionType)) {
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
const entityName = resolveSectionItemEntityName(section.sectionTypeId, section.sectionType);
|
|
67
|
+
if (!entityName) {
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
for (const slot of section.items) {
|
|
71
|
+
for (const id of slot.itemIds ?? []) {
|
|
72
|
+
const snapshot = slot.items?.find((entry) => entry.id === id);
|
|
73
|
+
if (asSafetyPlanDisplayText(snapshot?.title) || asSafetyPlanDisplayText(snapshot?.code)) {
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
const ids = missingByEntity.get(entityName) ?? new Set();
|
|
77
|
+
ids.add(id);
|
|
78
|
+
missingByEntity.set(entityName, ids);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
if (missingByEntity.size === 0) {
|
|
83
|
+
return value;
|
|
84
|
+
}
|
|
85
|
+
const loadedById = new Map();
|
|
86
|
+
await Promise.all([...missingByEntity.entries()].map(async ([entityName, ids]) => {
|
|
87
|
+
const idList = [...ids];
|
|
88
|
+
try {
|
|
89
|
+
const result = await entityService.withEntity(entityName).data().query({
|
|
90
|
+
skip: 0,
|
|
91
|
+
take: Math.max(idList.length, 1),
|
|
92
|
+
filter: idList.length === 1
|
|
93
|
+
? { field: 'id', operator: { type: 'equal' }, value: idList[0] }
|
|
94
|
+
: { field: 'id', operator: { type: 'in' }, value: idList },
|
|
95
|
+
});
|
|
96
|
+
for (const row of result.items ?? []) {
|
|
97
|
+
const record = row;
|
|
98
|
+
const id = resolveEntityRefId(record['id']);
|
|
99
|
+
if (!id) {
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
loadedById.set(id, {
|
|
103
|
+
title: resolveEntityRowDisplayText(record['title'], locale) || undefined,
|
|
104
|
+
code: asSafetyPlanDisplayText(record['code']) || undefined,
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
/* skip entities the session cannot read */
|
|
110
|
+
}
|
|
111
|
+
}));
|
|
112
|
+
if (loadedById.size === 0) {
|
|
113
|
+
return value;
|
|
114
|
+
}
|
|
115
|
+
return {
|
|
116
|
+
sections: value.sections.map((section) => ({
|
|
117
|
+
...section,
|
|
118
|
+
items: section.items.map((slot) => ({
|
|
119
|
+
...slot,
|
|
120
|
+
items: (slot.itemIds ?? []).map((id, index) => {
|
|
121
|
+
const existing = slot.items?.find((entry) => entry.id === id) ?? slot.items?.[index];
|
|
122
|
+
const loaded = loadedById.get(id);
|
|
123
|
+
return {
|
|
124
|
+
id,
|
|
125
|
+
title: asSafetyPlanDisplayText(existing?.title) || loaded?.title,
|
|
126
|
+
code: asSafetyPlanDisplayText(existing?.code) || loaded?.code,
|
|
127
|
+
};
|
|
128
|
+
}),
|
|
129
|
+
})),
|
|
130
|
+
})),
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
//#endregion
|
|
134
|
+
|
|
135
|
+
export { loadSafetyPlanPreviewStructure as l };
|
|
136
|
+
//# sourceMappingURL=acorex-platform-module-workplacesafety-management-client-load-safety-plan-preview-structure-Ce67NSIZ.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-workplacesafety-management-client-load-safety-plan-preview-structure-Ce67NSIZ.mjs","sources":["../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan/commands/load-safety-plan-preview-structure.ts"],"sourcesContent":["//#region ----- Imports -----\n\nimport { resolveEntityRowDisplayText } from '@acorex-platform/framework-client/common';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport {\n asSafetyPlanDisplayText,\n collectBuiltInRepeatableSectionTypeIds,\n dedupeSafetyPlanSectionStructure,\n isActivitySectionType,\n resolveEntityRefId,\n resolveSectionItemEntityName,\n RootConfig,\n type AXMSafetyPlanSectionBuilderValue,\n} from '@acorex-platform/module-workplacesafety-management-client/contracts';\nimport { AXTranslationService } from '@acorex/core/translation';\n\nimport { safetyPlanSectionsToBuilderValue } from '../../safety-plan-sections-page/safety-plan-section-builder.types';\nimport { hydrateSafetyPlanActivitySectionsForPreview } from '../../safety-plan-preview/hydrate-safety-plan-activity-sections';\n\n//#endregion\n\n//#region ----- Constants -----\n\nconst SAFETY_PLAN_SECTION_ENTITY = `${RootConfig.module.name}.${RootConfig.entities.safetyPlanSection.name}`;\nconst SECTION_TYPE_ENTITY = `${RootConfig.module.name}.${RootConfig.entities.sectionType.name}`;\n\n//#endregion\n\n//#region ----- Public API -----\n\n/**\n * Loads a safety plan's section structure for the existing preview modal\n * (same shape the sections page feeds into AXMSafetyPlanPreviewService).\n */\nexport async function loadSafetyPlanPreviewStructure(\n entityService: AXPEntityService,\n translationService: AXTranslationService,\n planId: string,\n): Promise<AXMSafetyPlanSectionBuilderValue> {\n const editable = await loadSafetyPlanEditableStructure(entityService, translationService, planId);\n // Activity sections reference SafetyPlanActivity; hydrate nested section items for preview.\n return hydrateSafetyPlanActivitySectionsForPreview(entityService, translationService, editable);\n}\n\n/**\n * Loads section structure for editing (Fill / sections page shape).\n * Skips preview-only activity hydration so the builder can persist cleanly.\n */\nexport async function loadSafetyPlanEditableStructure(\n entityService: AXPEntityService,\n translationService: AXTranslationService,\n planId: string,\n): Promise<AXMSafetyPlanSectionBuilderValue> {\n const repeatableSectionTypeIds = await loadRepeatableSectionTypeIds(entityService);\n\n const result = await entityService.withEntity(SAFETY_PLAN_SECTION_ENTITY).data().query({\n skip: 0,\n take: 1000,\n filter: {\n logic: 'and',\n filters: [{ field: 'safetyPlanId', operator: { type: 'equal' }, value: planId }],\n },\n } as never);\n\n const rawLoaded = safetyPlanSectionsToBuilderValue(\n (result.items ?? []) as Parameters<typeof safetyPlanSectionsToBuilderValue>[0],\n );\n const deduped = dedupeSafetyPlanSectionStructure(rawLoaded, { repeatableSectionTypeIds });\n return hydrateCatalogItemSnapshots(entityService, translationService, deduped);\n}\n\n//#endregion\n\n//#region ----- Helpers -----\n\nasync function loadRepeatableSectionTypeIds(entityService: AXPEntityService): Promise<string[]> {\n const builtIn = collectBuiltInRepeatableSectionTypeIds();\n try {\n const result = await entityService.withEntity(SECTION_TYPE_ENTITY).data().query({\n skip: 0,\n take: 1000,\n } as never);\n const fromQuery = (result.items ?? [])\n .filter((row) => (row as { isRepeatable?: unknown }).isRepeatable === true)\n .map((row) => resolveEntityRefId((row as { id?: unknown }).id))\n .filter((id): id is string => !!id);\n return [...new Set([...fromQuery, ...builtIn])];\n } catch {\n return builtIn;\n }\n}\n\nasync function hydrateCatalogItemSnapshots(\n entityService: AXPEntityService,\n translationService: AXTranslationService,\n value: AXMSafetyPlanSectionBuilderValue,\n): Promise<AXMSafetyPlanSectionBuilderValue> {\n const locale = translationService.getActiveLang?.() ?? 'en-US';\n const missingByEntity = new Map<string, Set<string>>();\n\n for (const section of value.sections) {\n if (isActivitySectionType(section.sectionTypeId, section.sectionType)) {\n continue;\n }\n const entityName = resolveSectionItemEntityName(section.sectionTypeId, section.sectionType);\n if (!entityName) {\n continue;\n }\n for (const slot of section.items) {\n for (const id of slot.itemIds ?? []) {\n const snapshot = slot.items?.find((entry) => entry.id === id);\n if (asSafetyPlanDisplayText(snapshot?.title) || asSafetyPlanDisplayText(snapshot?.code)) {\n continue;\n }\n const ids = missingByEntity.get(entityName) ?? new Set<string>();\n ids.add(id);\n missingByEntity.set(entityName, ids);\n }\n }\n }\n\n if (missingByEntity.size === 0) {\n return value;\n }\n\n const loadedById = new Map<string, { title?: string; code?: string }>();\n await Promise.all(\n [...missingByEntity.entries()].map(async ([entityName, ids]) => {\n const idList = [...ids];\n try {\n const result = await entityService.withEntity(entityName).data().query({\n skip: 0,\n take: Math.max(idList.length, 1),\n filter:\n idList.length === 1\n ? { field: 'id', operator: { type: 'equal' }, value: idList[0] }\n : { field: 'id', operator: { type: 'in' }, value: idList },\n } as never);\n for (const row of result.items ?? []) {\n const record = row as unknown as Record<string, unknown>;\n const id = resolveEntityRefId(record['id']);\n if (!id) {\n continue;\n }\n loadedById.set(id, {\n title: resolveEntityRowDisplayText(record['title'], locale) || undefined,\n code: asSafetyPlanDisplayText(record['code']) || undefined,\n });\n }\n } catch {\n /* skip entities the session cannot read */\n }\n }),\n );\n\n if (loadedById.size === 0) {\n return value;\n }\n\n return {\n sections: value.sections.map((section) => ({\n ...section,\n items: section.items.map((slot) => ({\n ...slot,\n items: (slot.itemIds ?? []).map((id, index) => {\n const existing = slot.items?.find((entry) => entry.id === id) ?? slot.items?.[index];\n const loaded = loadedById.get(id);\n return {\n id,\n title: asSafetyPlanDisplayText(existing?.title) || loaded?.title,\n code: asSafetyPlanDisplayText(existing?.code) || loaded?.code,\n };\n }),\n })),\n })),\n };\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
|
package/fesm2022/acorex-platform-module-workplacesafety-management-client-local-entities.mjs
CHANGED
|
@@ -26,10 +26,10 @@ function provideWorkplacesafetyManagementLocalEntities() {
|
|
|
26
26
|
[RootConfig.entities.safetyPlanSection.name]: () => import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/safety-plan-section').then((m) => m.safetyPlanSectionEntityFactory()),
|
|
27
27
|
[RootConfig.entities.safetyPlanType.name]: () => import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/safety-plan-type').then((m) => m.safetyPlanTypeEntityFactory()),
|
|
28
28
|
[RootConfig.entities.safetyPlanTypeSection.name]: () => import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/safety-plan-type-section').then((m) => m.safetyPlanTypeSectionEntityFactory()),
|
|
29
|
-
[RootConfig.entities.safetyPlanWorkStep.name]: () => import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/safety-plan-work-step').then((m) => m.safetyPlanWorkStepEntityFactory()),
|
|
30
29
|
[RootConfig.entities.safetyTemplate.name]: () => import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/safety-template').then((m) => m.safetyTemplateEntityFactory()),
|
|
31
30
|
[RootConfig.entities.sectionType.name]: () => import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/section-type').then((m) => m.sectionTypeEntityFactory()),
|
|
32
31
|
[RootConfig.entities.workStepType.name]: () => import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/work-step-type').then((m) => m.workStepTypeEntityFactory()),
|
|
32
|
+
[RootConfig.entities.safetyPlanActivity.name]: () => import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/safety-plan-activity').then((m) => m.safetyPlanActivityEntityFactory()),
|
|
33
33
|
},
|
|
34
34
|
});
|
|
35
35
|
}
|
package/fesm2022/acorex-platform-module-workplacesafety-management-client-local-entities.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-workplacesafety-management-client-local-entities.mjs","sources":["../../../../libs/modules/workplacesafety-management/client/src/lib/provide-local-entities.ts","../../../../libs/modules/workplacesafety-management/client/src/lib/acorex-platform-module-workplacesafety-management-client-local-entities.ts"],"sourcesContent":["//#region ----- Imports -----\n\nimport { provideLocalEntityCatalog } from '@acorex-platform/framework-client/layout/entity';\nimport { RootConfig } from '@acorex-platform/module-workplacesafety-management-client/contracts';\n\n//#endregion\n\n//#region ----- Provide local entities -----\n\n/**\n * Registers workplacesafety-management layouts on the client from packaged factories.\n * Each `import()` targets a secondary entry so unused entities stay out of the\n * bundle. Do not add this to the demo app; demo continues to load layouts via\n * `Domain:GetEntityLayout`.\n */\nexport function provideWorkplacesafetyManagementLocalEntities() {\n return provideLocalEntityCatalog({\n moduleName: RootConfig.module.name,\n loaders: {\n [RootConfig.entities.controlHierarchyLevels.name]: () =>\n import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/control-hierarchy-levels').then((m) => m.controlHierarchyLevelsEntityFactory()),\n [RootConfig.entities.controlMeasure.name]: () =>\n import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/control-measure').then((m) => m.controlMeasureEntityFactory()),\n [RootConfig.entities.hazard.name]: () =>\n import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/hazard').then((m) => m.hazardEntityFactory()),\n [RootConfig.entities.hazardPpeRule.name]: () =>\n import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/hazard-ppe-rule').then((m) => m.hazardPpeRuleEntityFactory()),\n [RootConfig.entities.hazardRegister.name]: () =>\n import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/hazard-register').then((m) => m.hazardRegisterEntityFactory()),\n [RootConfig.entities.hazardRisk.name]: () =>\n import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/hazard-risk').then((m) => m.hazardRiskEntityFactory()),\n [RootConfig.entities.ppeItem.name]: () =>\n import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/ppe-item').then((m) => m.ppeItemEntityFactory()),\n [RootConfig.entities.safetyPlan.name]: () =>\n import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/safety-plan').then((m) => m.safetyPlanEntityFactory()),\n [RootConfig.entities.safetyPlanSection.name]: () =>\n import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/safety-plan-section').then((m) => m.safetyPlanSectionEntityFactory()),\n [RootConfig.entities.safetyPlanType.name]: () =>\n import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/safety-plan-type').then((m) => m.safetyPlanTypeEntityFactory()),\n [RootConfig.entities.safetyPlanTypeSection.name]: () =>\n import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/safety-plan-type-section').then((m) => m.safetyPlanTypeSectionEntityFactory()),\n [RootConfig.entities.
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-workplacesafety-management-client-local-entities.mjs","sources":["../../../../libs/modules/workplacesafety-management/client/src/lib/provide-local-entities.ts","../../../../libs/modules/workplacesafety-management/client/src/lib/acorex-platform-module-workplacesafety-management-client-local-entities.ts"],"sourcesContent":["//#region ----- Imports -----\n\nimport { provideLocalEntityCatalog } from '@acorex-platform/framework-client/layout/entity';\nimport { RootConfig } from '@acorex-platform/module-workplacesafety-management-client/contracts';\n\n//#endregion\n\n//#region ----- Provide local entities -----\n\n/**\n * Registers workplacesafety-management layouts on the client from packaged factories.\n * Each `import()` targets a secondary entry so unused entities stay out of the\n * bundle. Do not add this to the demo app; demo continues to load layouts via\n * `Domain:GetEntityLayout`.\n */\nexport function provideWorkplacesafetyManagementLocalEntities() {\n return provideLocalEntityCatalog({\n moduleName: RootConfig.module.name,\n loaders: {\n [RootConfig.entities.controlHierarchyLevels.name]: () =>\n import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/control-hierarchy-levels').then((m) => m.controlHierarchyLevelsEntityFactory()),\n [RootConfig.entities.controlMeasure.name]: () =>\n import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/control-measure').then((m) => m.controlMeasureEntityFactory()),\n [RootConfig.entities.hazard.name]: () =>\n import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/hazard').then((m) => m.hazardEntityFactory()),\n [RootConfig.entities.hazardPpeRule.name]: () =>\n import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/hazard-ppe-rule').then((m) => m.hazardPpeRuleEntityFactory()),\n [RootConfig.entities.hazardRegister.name]: () =>\n import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/hazard-register').then((m) => m.hazardRegisterEntityFactory()),\n [RootConfig.entities.hazardRisk.name]: () =>\n import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/hazard-risk').then((m) => m.hazardRiskEntityFactory()),\n [RootConfig.entities.ppeItem.name]: () =>\n import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/ppe-item').then((m) => m.ppeItemEntityFactory()),\n [RootConfig.entities.safetyPlan.name]: () =>\n import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/safety-plan').then((m) => m.safetyPlanEntityFactory()),\n [RootConfig.entities.safetyPlanSection.name]: () =>\n import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/safety-plan-section').then((m) => m.safetyPlanSectionEntityFactory()),\n [RootConfig.entities.safetyPlanType.name]: () =>\n import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/safety-plan-type').then((m) => m.safetyPlanTypeEntityFactory()),\n [RootConfig.entities.safetyPlanTypeSection.name]: () =>\n import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/safety-plan-type-section').then((m) => m.safetyPlanTypeSectionEntityFactory()),\n [RootConfig.entities.safetyTemplate.name]: () =>\n import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/safety-template').then((m) => m.safetyTemplateEntityFactory()),\n [RootConfig.entities.sectionType.name]: () =>\n import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/section-type').then((m) => m.sectionTypeEntityFactory()),\n [RootConfig.entities.workStepType.name]: () =>\n import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/work-step-type').then((m) => m.workStepTypeEntityFactory()),\n [RootConfig.entities.safetyPlanActivity.name]: () =>\n import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/safety-plan-activity').then(\n (m) => m.safetyPlanActivityEntityFactory(),\n ),\n },\n });\n}\n\nexport { workplacesafetyManagementLocalEntityCatalog } from '@acorex-platform/module-workplacesafety-management-client/contracts/entity-catalog';\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './provide-local-entities';\n"],"names":[],"mappings":"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"}
|