@acorex-platform/module-workplacesafety-management-client 0.0.32 → 0.0.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. package/fesm2022/{acorex-platform-module-workplacesafety-management-client-acorex-platform-module-workplacesafety-management-client-isnVDChu.mjs → acorex-platform-module-workplacesafety-management-client-acorex-platform-module-workplacesafety-management-client-Ds0Fkspp.mjs} +20 -12
  2. package/fesm2022/{acorex-platform-module-workplacesafety-management-client-acorex-platform-module-workplacesafety-management-client-isnVDChu.mjs.map → acorex-platform-module-workplacesafety-management-client-acorex-platform-module-workplacesafety-management-client-Ds0Fkspp.mjs.map} +1 -1
  3. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-control-hierarchy-levels.mjs +509 -0
  4. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-control-hierarchy-levels.mjs.map +1 -0
  5. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-control-measure.mjs +297 -0
  6. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-control-measure.mjs.map +1 -0
  7. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-hazard-ppe-rule.mjs +431 -0
  8. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-hazard-ppe-rule.mjs.map +1 -0
  9. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-hazard-register.mjs +416 -0
  10. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-hazard-register.mjs.map +1 -0
  11. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-hazard-risk.mjs +476 -0
  12. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-hazard-risk.mjs.map +1 -0
  13. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-hazard.mjs +465 -0
  14. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-hazard.mjs.map +1 -0
  15. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-ppe-item.mjs +345 -0
  16. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-ppe-item.mjs.map +1 -0
  17. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-safety-plan-section.mjs +1492 -0
  18. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-safety-plan-section.mjs.map +1 -0
  19. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-safety-plan-type-section.mjs +1347 -0
  20. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-safety-plan-type-section.mjs.map +1 -0
  21. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-safety-plan-type.mjs +295 -0
  22. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-safety-plan-type.mjs.map +1 -0
  23. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-safety-plan-work-step.mjs +542 -0
  24. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-safety-plan-work-step.mjs.map +1 -0
  25. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-safety-plan.mjs +529 -0
  26. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-safety-plan.mjs.map +1 -0
  27. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-safety-template.mjs +369 -0
  28. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-safety-template.mjs.map +1 -0
  29. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-section-type.mjs +299 -0
  30. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-section-type.mjs.map +1 -0
  31. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-work-step-type.mjs +1392 -0
  32. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-work-step-type.mjs.map +1 -0
  33. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-BI4TLvSE.mjs +170 -0
  34. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-BI4TLvSE.mjs.map +1 -0
  35. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-control-hierarchy-levels.entity-COlCNnyK.mjs +372 -0
  36. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-control-hierarchy-levels.entity-COlCNnyK.mjs.map +1 -0
  37. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-control-measure.entity-BrXGzqZU.mjs +160 -0
  38. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-control-measure.entity-BrXGzqZU.mjs.map +1 -0
  39. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-hazard-ppe-rule.entity-DHJus7OP.mjs +294 -0
  40. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-hazard-ppe-rule.entity-DHJus7OP.mjs.map +1 -0
  41. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-hazard-register.entity-CogjoDox.mjs +279 -0
  42. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-hazard-register.entity-CogjoDox.mjs.map +1 -0
  43. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-hazard-risk.entity-9UWHmIXV.mjs +339 -0
  44. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-hazard-risk.entity-9UWHmIXV.mjs.map +1 -0
  45. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-hazard.entity-CNPbxULL.mjs +328 -0
  46. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-hazard.entity-CNPbxULL.mjs.map +1 -0
  47. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-ppe-item.entity-D5iOBl3P.mjs +208 -0
  48. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-ppe-item.entity-D5iOBl3P.mjs.map +1 -0
  49. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-plan-section-dependency-TdIMIkM7.mjs +1005 -0
  50. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-plan-section-dependency-TdIMIkM7.mjs.map +1 -0
  51. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-plan-section.entity-DJAI-7lB.mjs +356 -0
  52. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-plan-section.entity-DJAI-7lB.mjs.map +1 -0
  53. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-plan-type-section.entity-BGZ1VAW3.mjs +211 -0
  54. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-plan-type-section.entity-BGZ1VAW3.mjs.map +1 -0
  55. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-plan-type.entity-B6NYL4xi.mjs +158 -0
  56. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-plan-type.entity-B6NYL4xi.mjs.map +1 -0
  57. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-plan-work-step.entity-BlCbf5qP.mjs +405 -0
  58. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-plan-work-step.entity-BlCbf5qP.mjs.map +1 -0
  59. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-plan.entity-BSUR9jqs.mjs +392 -0
  60. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-plan.entity-BSUR9jqs.mjs.map +1 -0
  61. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-template.entity-CIHy_hLh.mjs +232 -0
  62. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-template.entity-CIHy_hLh.mjs.map +1 -0
  63. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-section-type.entity-Cs4nIHou.mjs +162 -0
  64. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-section-type.entity-Cs4nIHou.mjs.map +1 -0
  65. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-work-step-type.entity-CJFWDOoh.mjs +256 -0
  66. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-work-step-type.entity-CJFWDOoh.mjs.map +1 -0
  67. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog.mjs +2 -0
  68. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog.mjs.map +1 -0
  69. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts.mjs +38 -3
  70. package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts.mjs.map +1 -1
  71. package/fesm2022/{acorex-platform-module-workplacesafety-management-client-control-hierarchy-diagram-widget-view.component-CZFCMX6R.mjs → acorex-platform-module-workplacesafety-management-client-control-hierarchy-diagram-widget-view.component-eDWG-sJ7.mjs} +2 -2
  72. package/fesm2022/{acorex-platform-module-workplacesafety-management-client-control-hierarchy-diagram-widget-view.component-CZFCMX6R.mjs.map → acorex-platform-module-workplacesafety-management-client-control-hierarchy-diagram-widget-view.component-eDWG-sJ7.mjs.map} +1 -1
  73. package/fesm2022/acorex-platform-module-workplacesafety-management-client-control-hierarchy-diagram.component-CfxHwZtH.mjs +117 -0
  74. package/fesm2022/acorex-platform-module-workplacesafety-management-client-control-hierarchy-diagram.component-CfxHwZtH.mjs.map +1 -0
  75. package/fesm2022/acorex-platform-module-workplacesafety-management-client-control-hierarchy-diagram.service-tMrUDnCb.mjs.map +1 -1
  76. package/fesm2022/{acorex-platform-module-workplacesafety-management-client-hazard-ppe-rule-status.provider-o4bAwYcq.mjs → acorex-platform-module-workplacesafety-management-client-hazard-ppe-rule-status.provider-6ZWaO5DG.mjs} +3 -3
  77. package/fesm2022/acorex-platform-module-workplacesafety-management-client-hazard-ppe-rule-status.provider-6ZWaO5DG.mjs.map +1 -0
  78. package/fesm2022/acorex-platform-module-workplacesafety-management-client-hazard-risk-status.provider-B6IkRYbW.mjs.map +1 -1
  79. package/fesm2022/{acorex-platform-module-workplacesafety-management-client-index-yxxC7i6A.mjs → acorex-platform-module-workplacesafety-management-client-index-gbDgxqrV.mjs} +316 -375
  80. package/fesm2022/acorex-platform-module-workplacesafety-management-client-index-gbDgxqrV.mjs.map +1 -0
  81. package/fesm2022/acorex-platform-module-workplacesafety-management-client-local-entities.mjs +43 -0
  82. package/fesm2022/acorex-platform-module-workplacesafety-management-client-local-entities.mjs.map +1 -0
  83. package/fesm2022/acorex-platform-module-workplacesafety-management-client-ppe-item-viewer-widget-column.component-D2Mmow12.mjs.map +1 -1
  84. package/fesm2022/{acorex-platform-module-workplacesafety-management-client-ppe-item-viewer-widget-edit.component-CQtVhCgw.mjs → acorex-platform-module-workplacesafety-management-client-ppe-item-viewer-widget-edit.component-BqHXrGn9.mjs} +2 -2
  85. package/fesm2022/{acorex-platform-module-workplacesafety-management-client-ppe-item-viewer-widget-edit.component-CQtVhCgw.mjs.map → acorex-platform-module-workplacesafety-management-client-ppe-item-viewer-widget-edit.component-BqHXrGn9.mjs.map} +1 -1
  86. package/fesm2022/{acorex-platform-module-workplacesafety-management-client-ppe-item-viewer.service-YS8FHiRu.mjs → acorex-platform-module-workplacesafety-management-client-ppe-item-viewer.service-BxcGph1I.mjs} +3 -3
  87. package/fesm2022/{acorex-platform-module-workplacesafety-management-client-ppe-item-viewer.service-YS8FHiRu.mjs.map → acorex-platform-module-workplacesafety-management-client-ppe-item-viewer.service-BxcGph1I.mjs.map} +1 -1
  88. package/fesm2022/acorex-platform-module-workplacesafety-management-client-ppe-item-viewer.util-2Kl3_3sg.mjs.map +1 -1
  89. package/fesm2022/acorex-platform-module-workplacesafety-management-client-preview-control-hierarchy-diagram.command-Dd9xdo_y.mjs.map +1 -1
  90. package/fesm2022/acorex-platform-module-workplacesafety-management-client-preview-safety-plan.command-BU95c4xb.mjs +254 -0
  91. package/fesm2022/acorex-platform-module-workplacesafety-management-client-preview-safety-plan.command-BU95c4xb.mjs.map +1 -0
  92. package/fesm2022/acorex-platform-module-workplacesafety-management-client-publish-safety-plan.command-Ci-zcrmO.mjs.map +1 -1
  93. package/fesm2022/{acorex-platform-module-workplacesafety-management-client-safety-plan-preview-modal.component-C7IojUT9.mjs → acorex-platform-module-workplacesafety-management-client-safety-plan-preview-modal.component-CQ2xB7Va.mjs} +10 -10
  94. package/fesm2022/{acorex-platform-module-workplacesafety-management-client-safety-plan-preview-modal.component-C7IojUT9.mjs.map → acorex-platform-module-workplacesafety-management-client-safety-plan-preview-modal.component-CQ2xB7Va.mjs.map} +1 -1
  95. package/fesm2022/acorex-platform-module-workplacesafety-management-client-safety-plan-preview.service-DJP41MuL.mjs +36 -0
  96. package/fesm2022/acorex-platform-module-workplacesafety-management-client-safety-plan-preview.service-DJP41MuL.mjs.map +1 -0
  97. package/fesm2022/acorex-platform-module-workplacesafety-management-client-safety-plan-section-builder.types-LaN1NIgc.mjs +204 -0
  98. package/fesm2022/acorex-platform-module-workplacesafety-management-client-safety-plan-section-builder.types-LaN1NIgc.mjs.map +1 -0
  99. package/fesm2022/acorex-platform-module-workplacesafety-management-client-safety-plan-status.provider-BpWx3gIf.mjs.map +1 -1
  100. package/fesm2022/{acorex-platform-module-workplacesafety-management-client-save-safety-plan-sections.command-BlPzzCc2.mjs → acorex-platform-module-workplacesafety-management-client-save-safety-plan-sections.command-CLj3y_JD.mjs} +4 -209
  101. package/fesm2022/acorex-platform-module-workplacesafety-management-client-save-safety-plan-sections.command-CLj3y_JD.mjs.map +1 -0
  102. package/fesm2022/acorex-platform-module-workplacesafety-management-client.mjs +1 -1
  103. package/package.json +70 -2
  104. package/types/acorex-platform-module-workplacesafety-management-client-contracts-entities-control-hierarchy-levels.d.ts +5 -0
  105. package/types/acorex-platform-module-workplacesafety-management-client-contracts-entities-control-measure.d.ts +5 -0
  106. package/types/acorex-platform-module-workplacesafety-management-client-contracts-entities-hazard-ppe-rule.d.ts +5 -0
  107. package/types/acorex-platform-module-workplacesafety-management-client-contracts-entities-hazard-register.d.ts +5 -0
  108. package/types/acorex-platform-module-workplacesafety-management-client-contracts-entities-hazard-risk.d.ts +5 -0
  109. package/types/acorex-platform-module-workplacesafety-management-client-contracts-entities-hazard.d.ts +5 -0
  110. package/types/acorex-platform-module-workplacesafety-management-client-contracts-entities-ppe-item.d.ts +5 -0
  111. package/types/acorex-platform-module-workplacesafety-management-client-contracts-entities-safety-plan-section.d.ts +9 -0
  112. package/types/acorex-platform-module-workplacesafety-management-client-contracts-entities-safety-plan-type-section.d.ts +5 -0
  113. package/types/acorex-platform-module-workplacesafety-management-client-contracts-entities-safety-plan-type.d.ts +5 -0
  114. package/types/acorex-platform-module-workplacesafety-management-client-contracts-entities-safety-plan-work-step.d.ts +5 -0
  115. package/types/acorex-platform-module-workplacesafety-management-client-contracts-entities-safety-plan.d.ts +5 -0
  116. package/types/acorex-platform-module-workplacesafety-management-client-contracts-entities-safety-template.d.ts +5 -0
  117. package/types/acorex-platform-module-workplacesafety-management-client-contracts-entities-section-type.d.ts +5 -0
  118. package/types/acorex-platform-module-workplacesafety-management-client-contracts-entities-work-step-type.d.ts +5 -0
  119. package/types/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog.d.ts +10 -0
  120. package/types/acorex-platform-module-workplacesafety-management-client-contracts.d.ts +26 -3
  121. package/types/acorex-platform-module-workplacesafety-management-client-local-entities.d.ts +12 -0
  122. package/fesm2022/acorex-platform-module-workplacesafety-management-client-control-hierarchy-diagram.component-D7hofHR0.mjs +0 -118
  123. package/fesm2022/acorex-platform-module-workplacesafety-management-client-control-hierarchy-diagram.component-D7hofHR0.mjs.map +0 -1
  124. package/fesm2022/acorex-platform-module-workplacesafety-management-client-hazard-ppe-rule-status.provider-o4bAwYcq.mjs.map +0 -1
  125. package/fesm2022/acorex-platform-module-workplacesafety-management-client-index-yxxC7i6A.mjs.map +0 -1
  126. package/fesm2022/acorex-platform-module-workplacesafety-management-client-save-safety-plan-sections.command-BlPzzCc2.mjs.map +0 -1
@@ -1,15 +1,15 @@
1
1
  import { AXBasePageComponent } from '@acorex/components/page';
2
- import * as i1 from '@acorex/core/translation';
2
+ import * as i2 from '@acorex/core/translation';
3
3
  import { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';
4
4
  import { AsyncPipe } from '@angular/common';
5
5
  import * as i0 from '@angular/core';
6
6
  import { input, ChangeDetectionStrategy, Component, inject, signal, computed, effect, ViewEncapsulation } from '@angular/core';
7
- import { n as normalizeSafetyPlanSectionBuilderValue } from './acorex-platform-module-workplacesafety-management-client-save-safety-plan-sections.command-BlPzzCc2.mjs';
8
- import { A as AXMControlHierarchyDiagramComponent } from './acorex-platform-module-workplacesafety-management-client-control-hierarchy-diagram.component-D7hofHR0.mjs';
7
+ import { n as normalizeSafetyPlanSectionBuilderValue } from './acorex-platform-module-workplacesafety-management-client-safety-plan-section-builder.types-LaN1NIgc.mjs';
8
+ import { A as AXMControlHierarchyDiagramComponent } from './acorex-platform-module-workplacesafety-management-client-control-hierarchy-diagram.component-CfxHwZtH.mjs';
9
9
  import { A as AXMControlHierarchyDiagramService, r as resolveControlHierarchyDiagramViewType } from './acorex-platform-module-workplacesafety-management-client-control-hierarchy-diagram.service-tMrUDnCb.mjs';
10
- import { A as AXMPpeItemViewerService, a as AXMPpeItemViewerComponent } from './acorex-platform-module-workplacesafety-management-client-ppe-item-viewer.service-YS8FHiRu.mjs';
10
+ import { A as AXMPpeItemViewerService, a as AXMPpeItemViewerComponent } from './acorex-platform-module-workplacesafety-management-client-ppe-item-viewer.service-BxcGph1I.mjs';
11
11
  import { r as resolvePpeItemViewerLayout } from './acorex-platform-module-workplacesafety-management-client-ppe-item-viewer.util-2Kl3_3sg.mjs';
12
- import * as i1$1 from '@acorex/components/loading';
12
+ import * as i1 from '@acorex/components/loading';
13
13
  import { AXLoadingModule } from '@acorex/components/loading';
14
14
  import { AXPLayoutBuilderService, AXPLayoutRendererComponent } from '@acorex-platform/framework-client/layout/builder';
15
15
  import { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';
@@ -27,7 +27,7 @@ class AXMCatalogSectionPreviewComponent {
27
27
  ...(ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []));
28
28
  }
29
29
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMCatalogSectionPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
30
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXMCatalogSectionPreviewComponent, isStandalone: true, selector: "axm-catalog-section-preview", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "axm-catalog-section-preview block" }, ngImport: i0, template: "<div class=\"axm-catalog-section-preview\">\n @if (items().length > 0) {\n <!-- ----- Linked catalog items as a document bullet list ----- -->\n <ul class=\"__list\">\n @for (item of items(); track item.id) {\n <li class=\"__item\">\n <span class=\"__title\">{{ item.title }}</span>\n <!--->\n <!-- ----- Optional business code after the item title ----- -->\n @if (item.code) {\n <span class=\"__code\">({{ item.code }})</span>\n }\n </li>\n }\n </ul>\n }\n <!-- ----- Empty catalog section ----- -->\n @else {\n <p class=\"__empty\">\n {{ '@workplacesafety-management:safety-plan-sections.preview.empty-items' | translate | async }}\n </p>\n }\n</div>\n", styles: [".axm-catalog-section-preview .__list{margin:0;list-style-type:disc;padding-inline-start:calc(var(--spacing, .25rem) * 5)}.axm-catalog-section-preview .__item{margin-bottom:var(--spacing, .25rem)}.axm-catalog-section-preview .__code{margin-inline-start:var(--spacing, .25rem);color:rgba(var(--ax-sys-color-text-default))}@supports (color: color-mix(in lab,red,red)){.axm-catalog-section-preview .__code{color:color-mix(in oklab,rgba(var(--ax-sys-color-text-default)) 80%,transparent)}}.axm-catalog-section-preview .__empty{margin:0;color:rgba(var(--ax-sys-color-text-default))}@supports (color: color-mix(in lab,red,red)){.axm-catalog-section-preview .__empty{color:color-mix(in oklab,rgba(var(--ax-sys-color-text-default)) 80%,transparent)}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i1.AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
30
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXMCatalogSectionPreviewComponent, isStandalone: true, selector: "axm-catalog-section-preview", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "axm-catalog-section-preview block" }, ngImport: i0, template: "<div class=\"axm-catalog-section-preview\">\n @if (items().length > 0) {\n <!-- ----- Linked catalog items as a document bullet list ----- -->\n <ul class=\"__list\">\n @for (item of items(); track item.id) {\n <li class=\"__item\">\n <span class=\"__title\">{{ item.title }}</span>\n <!--->\n <!-- ----- Optional business code after the item title ----- -->\n @if (item.code) {\n <span class=\"__code\">({{ item.code }})</span>\n }\n </li>\n }\n </ul>\n }\n <!-- ----- Empty catalog section ----- -->\n @else {\n <p class=\"__empty\">\n {{ '@workplacesafety-management:safety-plan-sections.preview.empty-items' | translate | async }}\n </p>\n }\n</div>\n", styles: [".axm-catalog-section-preview .__list{margin:0;list-style-type:disc;padding-inline-start:calc(var(--spacing, .25rem) * 5)}.axm-catalog-section-preview .__item{margin-bottom:var(--spacing, .25rem)}.axm-catalog-section-preview .__code{margin-inline-start:var(--spacing, .25rem);color:rgba(var(--ax-sys-color-text-default))}@supports (color: color-mix(in lab,red,red)){.axm-catalog-section-preview .__code{color:color-mix(in oklab,rgba(var(--ax-sys-color-text-default)) 80%,transparent)}}.axm-catalog-section-preview .__empty{margin:0;color:rgba(var(--ax-sys-color-text-default))}@supports (color: color-mix(in lab,red,red)){.axm-catalog-section-preview .__empty{color:color-mix(in oklab,rgba(var(--ax-sys-color-text-default)) 80%,transparent)}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i2.AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
31
31
  }
32
32
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMCatalogSectionPreviewComponent, decorators: [{
33
33
  type: Component,
@@ -427,7 +427,7 @@ class AXMRiskMatrixPreviewComponent {
427
427
  .build();
428
428
  }
429
429
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMRiskMatrixPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
430
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXMRiskMatrixPreviewComponent, isStandalone: true, selector: "axm-risk-matrix-preview", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "axm-risk-matrix-preview block" }, ngImport: i0, template: "<div class=\"axm-risk-matrix-preview\">\n @if (loading()) {\n <!-- ----- Loading indicator while risk matrix records are fetched ----- -->\n <ax-loading></ax-loading>\n }\n <!-- ----- Empty state when no risk matrices are selected ----- -->\n @else if (matrices().length === 0) {\n <p class=\"__empty\">\n {{ '@workplacesafety-management:safety-plan-sections.preview.empty-items' | translate | async }}\n </p>\n }\n <!-- ----- Selected risk matrices rendered with the RiskMatrix widget ----- -->\n @else {\n <div class=\"__items\">\n @for (item of matrices(); track item.id) {\n <article class=\"__item\">\n <header class=\"__item-header\">\n <h4 class=\"__item-title\">{{ item.title }}</h4>\n <!--->\n <!-- ----- Optional business code after the matrix title ----- -->\n @if (item.code) {\n <span class=\"__code\">({{ item.code }})</span>\n }\n </header>\n <div class=\"__matrix\">\n <axp-layout-renderer [layout]=\"item.layout\" [context]=\"item.context\" mode=\"view\" look=\"container\" />\n </div>\n </article>\n }\n </div>\n }\n</div>\n", styles: ["@layer properties;.axm-risk-matrix-preview{display:block;width:100%}.axm-risk-matrix-preview .__empty{margin:0;color:rgba(var(--ax-sys-color-text-default))}@supports (color: color-mix(in lab,red,red)){.axm-risk-matrix-preview .__empty{color:color-mix(in oklab,rgba(var(--ax-sys-color-text-default)) 80%,transparent)}}.axm-risk-matrix-preview .__items{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 6)}.axm-risk-matrix-preview .__item{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2)}.axm-risk-matrix-preview .__item-header{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--spacing, .25rem)}.axm-risk-matrix-preview .__item-title{margin:0;font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500)}.axm-risk-matrix-preview .__code{color:rgba(var(--ax-sys-color-text-default))}@supports (color: color-mix(in lab,red,red)){.axm-risk-matrix-preview .__code{color:color-mix(in oklab,rgba(var(--ax-sys-color-text-default)) 80%,transparent)}}.axm-risk-matrix-preview .__matrix{width:100%;overflow-x:auto}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i1$1.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "component", type: AXPLayoutRendererComponent, selector: "axp-layout-renderer", inputs: ["layout", "context", "look", "mode"], outputs: ["contextChange", "contextInitiated", "validityChange"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i1.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
430
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXMRiskMatrixPreviewComponent, isStandalone: true, selector: "axm-risk-matrix-preview", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "axm-risk-matrix-preview block" }, ngImport: i0, template: "<div class=\"axm-risk-matrix-preview\">\n @if (loading()) {\n <!-- ----- Loading indicator while risk matrix records are fetched ----- -->\n <ax-loading></ax-loading>\n }\n <!-- ----- Empty state when no risk matrices are selected ----- -->\n @else if (matrices().length === 0) {\n <p class=\"__empty\">\n {{ '@workplacesafety-management:safety-plan-sections.preview.empty-items' | translate | async }}\n </p>\n }\n <!-- ----- Selected risk matrices rendered with the RiskMatrix widget ----- -->\n @else {\n <div class=\"__items\">\n @for (item of matrices(); track item.id) {\n <article class=\"__item\">\n <header class=\"__item-header\">\n <h4 class=\"__item-title\">{{ item.title }}</h4>\n <!--->\n <!-- ----- Optional business code after the matrix title ----- -->\n @if (item.code) {\n <span class=\"__code\">({{ item.code }})</span>\n }\n </header>\n <div class=\"__matrix\">\n <axp-layout-renderer [layout]=\"item.layout\" [context]=\"item.context\" mode=\"view\" look=\"container\" />\n </div>\n </article>\n }\n </div>\n }\n</div>\n", styles: ["@layer properties;.axm-risk-matrix-preview{display:block;width:100%}.axm-risk-matrix-preview .__empty{margin:0;color:rgba(var(--ax-sys-color-text-default))}@supports (color: color-mix(in lab,red,red)){.axm-risk-matrix-preview .__empty{color:color-mix(in oklab,rgba(var(--ax-sys-color-text-default)) 80%,transparent)}}.axm-risk-matrix-preview .__items{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 6)}.axm-risk-matrix-preview .__item{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2)}.axm-risk-matrix-preview .__item-header{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--spacing, .25rem)}.axm-risk-matrix-preview .__item-title{margin:0;font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500)}.axm-risk-matrix-preview .__code{color:rgba(var(--ax-sys-color-text-default))}@supports (color: color-mix(in lab,red,red)){.axm-risk-matrix-preview .__code{color:color-mix(in oklab,rgba(var(--ax-sys-color-text-default)) 80%,transparent)}}.axm-risk-matrix-preview .__matrix{width:100%;overflow-x:auto}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i1.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "component", type: AXPLayoutRendererComponent, selector: "axp-layout-renderer", inputs: ["layout", "context", "look", "mode"], outputs: ["contextChange", "contextInitiated", "validityChange"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i2.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
431
431
  }
432
432
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMRiskMatrixPreviewComponent, decorators: [{
433
433
  type: Component,
@@ -468,7 +468,7 @@ class AXMWorkStepTablePreviewComponent {
468
468
  return formatSafetyPlanPreviewStepTableCell(cell, this.translationService.getActiveLang() ?? 'en-US');
469
469
  }
470
470
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMWorkStepTablePreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
471
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXMWorkStepTablePreviewComponent, isStandalone: true, selector: "axm-work-step-table-preview", inputs: { section: { classPropertyName: "section", publicName: "section", isSignal: true, isRequired: true, transformFunction: null } }, host: { classAttribute: "axm-work-step-table-preview block" }, ngImport: i0, template: "<div class=\"axm-work-step-table-preview\">\n @if (columns().length > 0 && rows().length > 0) {\n <!-- ----- Read-only work-step table ----- -->\n <div class=\"__table-wrap\">\n <table class=\"__table\">\n <thead>\n <tr>\n @for (column of columns(); track column.sectionTypeId) {\n <th>{{ columnLabel(column) }}</th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of rows(); track $index) {\n <tr>\n @for (column of columns(); track column.sectionTypeId) {\n <td>{{ cellText(row, column) }}</td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n <!-- ----- Empty work-step table ----- -->\n @else {\n <p class=\"__empty\">\n {{ '@workplacesafety-management:safety-plan-sections.preview.empty-items' | translate | async }}\n </p>\n }\n</div>\n", styles: ["@layer properties;.axm-work-step-table-preview .__table-wrap{overflow-x:auto}.axm-work-step-table-preview .__table{width:100%;border-collapse:collapse;font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)))}.axm-work-step-table-preview .__table th,.axm-work-step-table-preview .__table td{border-style:var(--tw-border-style);border-width:1px;border-color:rgba(var(--ax-sys-color-surface));padding-inline:calc(var(--spacing, .25rem) * 3);padding-block:calc(var(--spacing, .25rem) * 2);text-align:start;vertical-align:top}.axm-work-step-table-preview .__table th{background-color:rgba(var(--ax-sys-color-surface));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}.axm-work-step-table-preview .__empty{margin:0;color:rgba(var(--ax-sys-color-text-default))}@supports (color: color-mix(in lab,red,red)){.axm-work-step-table-preview .__empty{color:color-mix(in oklab,rgba(var(--ax-sys-color-text-default)) 80%,transparent)}}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i1.AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
471
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXMWorkStepTablePreviewComponent, isStandalone: true, selector: "axm-work-step-table-preview", inputs: { section: { classPropertyName: "section", publicName: "section", isSignal: true, isRequired: true, transformFunction: null } }, host: { classAttribute: "axm-work-step-table-preview block" }, ngImport: i0, template: "<div class=\"axm-work-step-table-preview\">\n @if (columns().length > 0 && rows().length > 0) {\n <!-- ----- Read-only work-step table ----- -->\n <div class=\"__table-wrap\">\n <table class=\"__table\">\n <thead>\n <tr>\n @for (column of columns(); track column.sectionTypeId) {\n <th>{{ columnLabel(column) }}</th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of rows(); track $index) {\n <tr>\n @for (column of columns(); track column.sectionTypeId) {\n <td>{{ cellText(row, column) }}</td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n <!-- ----- Empty work-step table ----- -->\n @else {\n <p class=\"__empty\">\n {{ '@workplacesafety-management:safety-plan-sections.preview.empty-items' | translate | async }}\n </p>\n }\n</div>\n", styles: ["@layer properties;.axm-work-step-table-preview .__table-wrap{overflow-x:auto}.axm-work-step-table-preview .__table{width:100%;border-collapse:collapse;font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)))}.axm-work-step-table-preview .__table th,.axm-work-step-table-preview .__table td{border-style:var(--tw-border-style);border-width:1px;border-color:rgba(var(--ax-sys-color-surface));padding-inline:calc(var(--spacing, .25rem) * 3);padding-block:calc(var(--spacing, .25rem) * 2);text-align:start;vertical-align:top}.axm-work-step-table-preview .__table th{background-color:rgba(var(--ax-sys-color-surface));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}.axm-work-step-table-preview .__empty{margin:0;color:rgba(var(--ax-sys-color-text-default))}@supports (color: color-mix(in lab,red,red)){.axm-work-step-table-preview .__empty{color:color-mix(in oklab,rgba(var(--ax-sys-color-text-default)) 80%,transparent)}}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i2.AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
472
472
  }
473
473
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMWorkStepTablePreviewComponent, decorators: [{
474
474
  type: Component,
@@ -544,7 +544,7 @@ class AXMSafetyPlanPreviewModalComponent extends AXBasePageComponent {
544
544
  return typeof inputOrValue === 'function' ? inputOrValue() : inputOrValue;
545
545
  }
546
546
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMSafetyPlanPreviewModalComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
547
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXMSafetyPlanPreviewModalComponent, isStandalone: true, selector: "axm-safety-plan-preview-modal", inputs: { structure: { classPropertyName: "structure", publicName: "structure", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "axm-safety-plan-preview-modal-host flex flex-col w-full h-full" }, usesInheritance: true, ngImport: i0, template: "<div class=\"axm-safety-plan-preview-modal __content-area\">\n @if (sections().length === 0) {\n <!-- ----- Empty state when the plan has no sections ----- -->\n <p class=\"__empty\">\n {{ '@workplacesafety-management:safety-plan-sections.preview.empty' | translate | async }}\n </p>\n }\n <!-- ----- Read-only document blocks in configured section order ----- -->\n @else {\n <div class=\"__document\">\n @for (section of sections(); track section.id) {\n <axm-safety-plan-section-preview [section]=\"section\" />\n }\n </div>\n }\n</div>\n", styles: ["axm-safety-plan-preview-modal{display:flex;height:100%;max-height:90vh;min-height:0px;width:100%;flex:1;flex-direction:column;overflow:hidden}@media(width>=64rem){axm-safety-plan-preview-modal{max-height:75vh}}.axm-safety-plan-preview-modal{display:flex;min-height:0px;flex:1;flex-direction:column;overflow-y:auto;padding:calc(var(--spacing, .25rem) * 6)}.axm-safety-plan-preview-modal .__empty{margin:0;color:rgba(var(--ax-sys-color-text-default))}@supports (color: color-mix(in lab,red,red)){.axm-safety-plan-preview-modal .__empty{color:color-mix(in oklab,rgba(var(--ax-sys-color-text-default)) 80%,transparent)}}.axm-safety-plan-preview-modal .__document{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 8)}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: AXTranslationModule }, { kind: "component", type: AXMSafetyPlanSectionPreviewComponent, selector: "axm-safety-plan-section-preview", inputs: ["section"] }, { kind: "pipe", type: i1.AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
547
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXMSafetyPlanPreviewModalComponent, isStandalone: true, selector: "axm-safety-plan-preview-modal", inputs: { structure: { classPropertyName: "structure", publicName: "structure", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "axm-safety-plan-preview-modal-host flex flex-col w-full h-full" }, usesInheritance: true, ngImport: i0, template: "<div class=\"axm-safety-plan-preview-modal __content-area\">\n @if (sections().length === 0) {\n <!-- ----- Empty state when the plan has no sections ----- -->\n <p class=\"__empty\">\n {{ '@workplacesafety-management:safety-plan-sections.preview.empty' | translate | async }}\n </p>\n }\n <!-- ----- Read-only document blocks in configured section order ----- -->\n @else {\n <div class=\"__document\">\n @for (section of sections(); track section.id) {\n <axm-safety-plan-section-preview [section]=\"section\" />\n }\n </div>\n }\n</div>\n", styles: ["axm-safety-plan-preview-modal{display:flex;height:100%;max-height:90vh;min-height:0px;width:100%;flex:1;flex-direction:column;overflow:hidden}@media(width>=64rem){axm-safety-plan-preview-modal{max-height:75vh}}.axm-safety-plan-preview-modal{display:flex;min-height:0px;flex:1;flex-direction:column;overflow-y:auto;padding:calc(var(--spacing, .25rem) * 6)}.axm-safety-plan-preview-modal .__empty{margin:0;color:rgba(var(--ax-sys-color-text-default))}@supports (color: color-mix(in lab,red,red)){.axm-safety-plan-preview-modal .__empty{color:color-mix(in oklab,rgba(var(--ax-sys-color-text-default)) 80%,transparent)}}.axm-safety-plan-preview-modal .__document{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 8)}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: AXTranslationModule }, { kind: "component", type: AXMSafetyPlanSectionPreviewComponent, selector: "axm-safety-plan-section-preview", inputs: ["section"] }, { kind: "pipe", type: i2.AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
548
548
  }
549
549
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMSafetyPlanPreviewModalComponent, decorators: [{
550
550
  type: Component,
@@ -554,4 +554,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
554
554
  }], propDecorators: { structure: [{ type: i0.Input, args: [{ isSignal: true, alias: "structure", required: false }] }] } });
555
555
 
556
556
  export { AXMSafetyPlanPreviewModalComponent };
557
- //# sourceMappingURL=acorex-platform-module-workplacesafety-management-client-safety-plan-preview-modal.component-C7IojUT9.mjs.map
557
+ //# sourceMappingURL=acorex-platform-module-workplacesafety-management-client-safety-plan-preview-modal.component-CQ2xB7Va.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-workplacesafety-management-client-safety-plan-preview-modal.component-C7IojUT9.mjs","sources":["../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-preview/catalog-section-preview.component.ts","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-preview/catalog-section-preview.component.html","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-preview/hierarchy-section-preview.component.ts","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-preview/hierarchy-section-preview.component.html","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-preview/ppe-section-preview.component.ts","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-preview/ppe-section-preview.component.html","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-preview/safety-plan-preview.util.ts","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-preview/risk-matrix-preview.component.ts","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-preview/risk-matrix-preview.component.html","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-preview/work-step-table-preview.component.ts","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-preview/work-step-table-preview.component.html","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-preview/safety-plan-section-preview.component.ts","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-preview/safety-plan-section-preview.component.html","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-preview/safety-plan-preview-modal.component.ts","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-preview/safety-plan-preview-modal.component.html"],"sourcesContent":["//#region ----- Imports -----\n\nimport { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { AsyncPipe } from '@angular/common';\nimport { AXTranslationModule } from '@acorex/core/translation';\n\nimport type { AXMSafetyPlanPreviewCatalogItem } from './safety-plan-preview.types';\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axm-catalog-section-preview',\n templateUrl: './catalog-section-preview.component.html',\n styleUrl: './catalog-section-preview.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXTranslationModule, AsyncPipe],\n host: {\n class: 'axm-catalog-section-preview block',\n },\n})\nexport class AXMCatalogSectionPreviewComponent {\n readonly items = input<AXMSafetyPlanPreviewCatalogItem[]>([]);\n}\n\n//#endregion\n","<div class=\"axm-catalog-section-preview\">\n @if (items().length > 0) {\n <!-- ----- Linked catalog items as a document bullet list ----- -->\n <ul class=\"__list\">\n @for (item of items(); track item.id) {\n <li class=\"__item\">\n <span class=\"__title\">{{ item.title }}</span>\n <!--->\n <!-- ----- Optional business code after the item title ----- -->\n @if (item.code) {\n <span class=\"__code\">({{ item.code }})</span>\n }\n </li>\n }\n </ul>\n }\n <!-- ----- Empty catalog section ----- -->\n @else {\n <p class=\"__empty\">\n {{ '@workplacesafety-management:safety-plan-sections.preview.empty-items' | translate | async }}\n </p>\n }\n</div>\n","//#region ----- Imports -----\n\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, input, signal } from '@angular/core';\n\nimport { AXMControlHierarchyDiagramComponent } from '../control-hierarchy-diagram/control-hierarchy-diagram.component';\nimport { AXMControlHierarchyDiagramService } from '../control-hierarchy-diagram/control-hierarchy-diagram.service';\nimport {\n resolveControlHierarchyDiagramViewType,\n type AXMControlHierarchyDiagramItem,\n type AXMControlHierarchyDiagramViewType,\n} from '../control-hierarchy-diagram/control-hierarchy-diagram.types';\nimport type { AXMSafetyPlanPreviewCatalogItem } from './safety-plan-preview.types';\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axm-hierarchy-section-preview',\n templateUrl: './hierarchy-section-preview.component.html',\n styleUrl: './hierarchy-section-preview.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXMControlHierarchyDiagramComponent],\n host: {\n class: 'axm-hierarchy-section-preview block',\n },\n})\nexport class AXMHierarchySectionPreviewComponent {\n //#region ----- Services & Dependencies -----\n\n private readonly diagramService = inject(AXMControlHierarchyDiagramService);\n\n //#endregion\n\n //#region ----- Inputs -----\n\n readonly items = input<AXMSafetyPlanPreviewCatalogItem[]>([]);\n readonly viewType = input<unknown>();\n readonly showTitle = input<boolean | undefined>(undefined);\n\n //#endregion\n\n //#region ----- State Signals -----\n\n protected readonly diagramItems = signal<AXMControlHierarchyDiagramItem[]>([]);\n\n //#endregion\n\n //#region ----- Computed Properties -----\n\n protected readonly resolvedViewType = computed<AXMControlHierarchyDiagramViewType>(() =>\n resolveControlHierarchyDiagramViewType(this.viewType() as Parameters<typeof resolveControlHierarchyDiagramViewType>[0]),\n );\n\n protected readonly resolvedShowTitle = computed(() => this.showTitle() === true);\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n private readonly loadItems = effect((onCleanup) => {\n const catalogItems = this.items();\n let cancelled = false;\n onCleanup(() => {\n cancelled = true;\n });\n void this.refresh(catalogItems, () => cancelled);\n });\n\n //#endregion\n\n //#region ----- Data Loading -----\n\n private async refresh(\n catalogItems: AXMSafetyPlanPreviewCatalogItem[],\n isCancelled: () => boolean,\n ): Promise<void> {\n if (catalogItems.length === 0) {\n this.diagramItems.set([]);\n return;\n }\n\n try {\n const loaded = await this.diagramService.loadDiagramItemsByLevelIds(catalogItems.map((item) => item.id));\n if (!isCancelled()) {\n this.diagramItems.set(loaded);\n }\n } catch {\n if (!isCancelled()) {\n this.diagramItems.set([]);\n }\n }\n }\n\n //#endregion\n}\n\n//#endregion\n","<!-- ----- Control hierarchy diagram using saved section widget options ----- -->\n<axm-control-hierarchy-diagram\n [viewType]=\"resolvedViewType()\"\n [items]=\"diagramItems()\"\n [showTitle]=\"resolvedShowTitle()\"\n [showViewTypeSelector]=\"false\"\n/>\n","//#region ----- Imports -----\n\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, input, signal } from '@angular/core';\n\nimport { AXMPpeItemViewerComponent } from '../ppe-item-viewer/ppe-item-viewer.component';\nimport { AXMPpeItemViewerService } from '../ppe-item-viewer/ppe-item-viewer.service';\nimport type { AXMPpeItemViewerDisplayItem, AXMPpeItemViewerLayout } from '../ppe-item-viewer/ppe-item-viewer.types';\nimport { resolvePpeItemViewerLayout } from '../ppe-item-viewer/ppe-item-viewer.util';\nimport type { AXMSafetyPlanPreviewCatalogItem } from './safety-plan-preview.types';\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axm-ppe-section-preview',\n templateUrl: './ppe-section-preview.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXMPpeItemViewerComponent],\n host: {\n class: 'axm-ppe-section-preview block',\n },\n})\nexport class AXMPpeSectionPreviewComponent {\n //#region ----- Services & Dependencies -----\n\n private readonly ppeItemViewerService = inject(AXMPpeItemViewerService);\n\n //#endregion\n\n //#region ----- Inputs -----\n\n readonly items = input<AXMSafetyPlanPreviewCatalogItem[]>([]);\n readonly layout = input<unknown>();\n\n //#endregion\n\n //#region ----- State Signals -----\n\n protected readonly loading = signal(false);\n protected readonly displayItems = signal<AXMPpeItemViewerDisplayItem[]>([]);\n protected readonly selectedIds = signal<string[]>([]);\n\n protected readonly resolvedLayout = computed<AXMPpeItemViewerLayout>(() =>\n resolvePpeItemViewerLayout(this.layout() as Parameters<typeof resolvePpeItemViewerLayout>[0]),\n );\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n private readonly loadItems = effect((onCleanup) => {\n const catalogItems = this.items();\n let cancelled = false;\n onCleanup(() => {\n cancelled = true;\n });\n void this.refresh(catalogItems, () => cancelled);\n });\n\n //#endregion\n\n //#region ----- Event Handlers -----\n\n protected onSelectedIdsChange(ids: string[]): void {\n this.selectedIds.set(ids);\n }\n\n //#endregion\n\n //#region ----- Data Loading -----\n\n private async refresh(\n catalogItems: AXMSafetyPlanPreviewCatalogItem[],\n isCancelled: () => boolean,\n ): Promise<void> {\n if (catalogItems.length === 0) {\n this.displayItems.set([]);\n this.loading.set(false);\n return;\n }\n\n this.loading.set(true);\n const fallback = catalogItems.map((item) => this.toDisplayItem(item));\n try {\n const loaded = await this.ppeItemViewerService.loadDisplayItems(catalogItems.map((item) => item.id));\n if (isCancelled()) {\n return;\n }\n const byId = new Map(loaded.map((row) => [row.id, row]));\n this.displayItems.set(fallback.map((item) => byId.get(item.id) ?? item));\n } catch {\n if (!isCancelled()) {\n this.displayItems.set(fallback);\n }\n } finally {\n if (!isCancelled()) {\n this.loading.set(false);\n }\n }\n }\n\n private toDisplayItem(item: AXMSafetyPlanPreviewCatalogItem): AXMPpeItemViewerDisplayItem {\n return {\n id: item.id,\n title: item.title,\n code: item.code,\n imageUrl: null,\n };\n }\n\n //#endregion\n}\n\n//#endregion\n","<!-- ----- PPE Item viewer (same component as Questionnaire; checkboxes can be toggled) ----- -->\n<axm-ppe-item-viewer\n [items]=\"displayItems()\"\n [layout]=\"resolvedLayout()\"\n [selectedIds]=\"selectedIds()\"\n [loading]=\"loading()\"\n (selectedIdsChange)=\"onSelectedIdsChange($event)\"\n/>\n","//#region ----- Imports -----\n\nimport { resolveEntityRowDisplayText } from '@acorex-platform/framework-client/common';\nimport {\n isStepTableSectionType,\n normalizeStepTableColumns,\n resolveSectionTypeKey,\n sortStepTableColumns,\n stepTableColumnTitle,\n type AXMSafetyPlanSectionBuilderItemValue,\n type AXMSafetyPlanSectionBuilderSectionValue,\n type AXMStepTableCellValue,\n type AXMStepTableColumnDef,\n} from '@acorex-platform/module-workplacesafety-management-client/contracts';\n\nimport type {\n AXMSafetyPlanPreviewCatalogItem,\n AXMSafetyPlanSectionPreviewKind,\n} from './safety-plan-preview.types';\n\n//#endregion\n\n//#region ----- Display helpers -----\n\nexport function toSafetyPlanPreviewDisplayText(value: unknown, locale: string): string {\n return resolveEntityRowDisplayText(value, locale).trim();\n}\n\nexport function resolveSafetyPlanPreviewSectionTitle(\n section: AXMSafetyPlanSectionBuilderSectionValue,\n locale: string,\n): string {\n return (\n toSafetyPlanPreviewDisplayText(section.title, locale) ||\n toSafetyPlanPreviewDisplayText(section.sectionType?.title, locale) ||\n toSafetyPlanPreviewDisplayText(section.sectionType?.code, locale)\n );\n}\n\n/**\n * Maps a section type to a preview renderer. New document kinds (SWMS, JSA, SOP, Permit)\n * can add cases here without changing the editor.\n */\nexport function resolveSafetyPlanSectionPreviewKind(\n section: AXMSafetyPlanSectionBuilderSectionValue,\n): AXMSafetyPlanSectionPreviewKind {\n if (isStepTableSectionType(section.sectionTypeId, section.sectionType)) {\n return 'work-step-table';\n }\n if (resolveSectionTypeKey(section.sectionTypeId, section.sectionType) === 'RiskMatrix') {\n return 'risk-matrix';\n }\n if (resolveSectionTypeKey(section.sectionTypeId, section.sectionType) === 'Ppe') {\n return 'ppe';\n }\n if (resolveSectionTypeKey(section.sectionTypeId, section.sectionType) === 'HierarchyLevel') {\n return 'hierarchy';\n }\n return 'catalog';\n}\n\n/** True when the section has at least one previewable item (catalog row or work-step row). */\nexport function safetyPlanPreviewSectionHasItems(\n section: AXMSafetyPlanSectionBuilderSectionValue,\n): boolean {\n if (isStepTableSectionType(section.sectionTypeId, section.sectionType)) {\n return (section.items ?? []).some((item) => item.stepTableRow != null);\n }\n return collectSafetyPlanPreviewCatalogItems(section, '').length > 0;\n}\n\nexport function collectSafetyPlanPreviewCatalogItems(\n section: AXMSafetyPlanSectionBuilderSectionValue,\n locale: string,\n): AXMSafetyPlanPreviewCatalogItem[] {\n const linked: AXMSafetyPlanPreviewCatalogItem[] = [];\n const seen = new Set<string>();\n\n for (const slot of section.items ?? []) {\n for (const item of flattenCatalogSlot(slot, locale)) {\n if (!item.id || seen.has(item.id)) {\n continue;\n }\n seen.add(item.id);\n linked.push(item);\n }\n }\n\n return linked;\n}\n\nexport function resolveSafetyPlanPreviewStepTableColumns(\n section: AXMSafetyPlanSectionBuilderSectionValue,\n): AXMStepTableColumnDef[] {\n return sortStepTableColumns(normalizeStepTableColumns(section.columns));\n}\n\nexport function formatSafetyPlanPreviewStepTableCell(\n cell: AXMStepTableCellValue | undefined,\n locale: string,\n): string {\n if (!cell) {\n return '';\n }\n const fromRefs = (cell.refs ?? [])\n .map((ref) => toSafetyPlanPreviewDisplayText(ref.title, locale) || String(ref.code ?? '').trim())\n .filter((text) => text.length > 0);\n if (fromRefs.length) {\n return fromRefs.join(', ');\n }\n const text = cell.textValue?.trim();\n if (text) {\n return text;\n }\n if (typeof cell.numberValue === 'number' && Number.isFinite(cell.numberValue)) {\n return String(cell.numberValue);\n }\n return '';\n}\n\nexport function stepTablePreviewColumnLabel(column: AXMStepTableColumnDef, locale: string): string {\n return (\n toSafetyPlanPreviewDisplayText(column.title, locale) ||\n toSafetyPlanPreviewDisplayText(column.sectionType?.title, locale) ||\n stepTableColumnTitle(column)\n );\n}\n\nfunction flattenCatalogSlot(\n slot: AXMSafetyPlanSectionBuilderItemValue,\n locale: string,\n): AXMSafetyPlanPreviewCatalogItem[] {\n const ids = Array.isArray(slot.itemIds) ? slot.itemIds : [];\n const snapshots = Array.isArray(slot.items) ? slot.items : [];\n const items: AXMSafetyPlanPreviewCatalogItem[] = [];\n\n for (let index = 0; index < ids.length; index += 1) {\n const id = String(ids[index] ?? '').trim();\n if (!id) {\n continue;\n }\n const snapshot = snapshots.find((entry) => entry?.id === id) ?? snapshots[index];\n const title =\n toSafetyPlanPreviewDisplayText(snapshot?.title, locale) ||\n String(snapshot?.code ?? '').trim() ||\n id;\n items.push({\n id,\n title,\n code: snapshot?.code,\n });\n }\n\n if (items.length === 0 && snapshots.length > 0) {\n for (const snapshot of snapshots) {\n const id = String(snapshot?.id ?? '').trim();\n if (!id) {\n continue;\n }\n items.push({\n id,\n title: toSafetyPlanPreviewDisplayText(snapshot.title, locale) || String(snapshot.code ?? '').trim() || id,\n code: snapshot.code,\n });\n }\n }\n\n return items;\n}\n\n//#endregion\n","//#region ----- Imports -----\n\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { AXPLayoutBuilderService, AXPLayoutRendererComponent } from '@acorex-platform/framework-client/layout/builder';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPWidgetsList, type AXPWidgetNode } from '@acorex-platform/framework-shared/core';\nimport { RISK_MANAGEMENT_RISK_MATRIX_CELL_ENTITY } from '@acorex-platform/module-workplacesafety-management-client/contracts';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, effect, inject, input, signal } from '@angular/core';\nimport { cloneDeep } from 'lodash';\n\nimport type { AXMSafetyPlanPreviewCatalogItem } from './safety-plan-preview.types';\nimport { toSafetyPlanPreviewDisplayText } from './safety-plan-preview.util';\n\n//#endregion\n\n//#region ----- Types -----\n\ninterface AXMRiskMatrixCellRecord {\n id: string;\n title?: unknown;\n code?: unknown;\n}\n\ninterface AXMRiskMatrixPreviewItem {\n id: string;\n title: string;\n code?: string;\n context: Record<string, unknown>;\n layout: AXPWidgetNode;\n}\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axm-risk-matrix-preview',\n templateUrl: './risk-matrix-preview.component.html',\n styleUrl: './risk-matrix-preview.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AsyncPipe, AXLoadingModule, AXTranslationModule, AXPLayoutRendererComponent],\n host: {\n class: 'axm-risk-matrix-preview block',\n },\n})\nexport class AXMRiskMatrixPreviewComponent {\n //#region ----- Services & Dependencies -----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n private readonly translationService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ----- Inputs -----\n\n readonly items = input<AXMSafetyPlanPreviewCatalogItem[]>([]);\n\n //#endregion\n\n //#region ----- State Signals -----\n\n protected readonly loading = signal(false);\n protected readonly matrices = signal<AXMRiskMatrixPreviewItem[]>([]);\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n private readonly loadItems = effect((onCleanup) => {\n const catalogItems = this.items();\n let cancelled = false;\n onCleanup(() => {\n cancelled = true;\n });\n void this.refresh(catalogItems, () => cancelled);\n });\n\n //#endregion\n\n //#region ----- Data Loading -----\n\n private async refresh(\n catalogItems: AXMSafetyPlanPreviewCatalogItem[],\n isCancelled: () => boolean,\n ): Promise<void> {\n if (catalogItems.length === 0) {\n this.matrices.set([]);\n this.loading.set(false);\n return;\n }\n\n this.loading.set(true);\n try {\n const loaded = await this.queryByIds(catalogItems.map((item) => item.id));\n if (isCancelled()) {\n return;\n }\n const byId = new Map(loaded.map((row) => [row.id, row]));\n const locale = this.translationService.getActiveLang() ?? 'en-US';\n this.matrices.set(\n catalogItems.flatMap((item) => {\n const row = byId.get(item.id);\n if (!row) {\n return [];\n }\n return [this.toPreviewItem(item, row, locale)];\n }),\n );\n } catch {\n if (!isCancelled()) {\n this.matrices.set([]);\n }\n } finally {\n if (!isCancelled()) {\n this.loading.set(false);\n }\n }\n }\n\n private async queryByIds(ids: string[]): Promise<AXMRiskMatrixCellRecord[]> {\n const dataAccessor = this.entityService\n .withEntity(RISK_MANAGEMENT_RISK_MATRIX_CELL_ENTITY)\n .data<string, AXMRiskMatrixCellRecord>();\n\n try {\n const result = await dataAccessor.query({\n skip: 0,\n take: Math.max(ids.length, 100),\n filter:\n ids.length === 1\n ? { field: 'id', operator: { type: 'equal' }, value: ids[0] }\n : { field: 'id', operator: { type: 'in' }, value: ids },\n });\n return result?.items ?? [];\n } catch {\n const loaded: AXMRiskMatrixCellRecord[] = [];\n for (const id of ids) {\n try {\n const row = await dataAccessor.byKey(id);\n if (row) {\n loaded.push(row);\n }\n } catch {\n /* skip missing rows */\n }\n }\n return loaded;\n }\n }\n\n private toPreviewItem(\n catalogItem: AXMSafetyPlanPreviewCatalogItem,\n row: AXMRiskMatrixCellRecord,\n locale: string,\n ): AXMRiskMatrixPreviewItem {\n const code = typeof row.code === 'string' ? row.code.trim() : catalogItem.code;\n return {\n id: catalogItem.id,\n title: toSafetyPlanPreviewDisplayText(row.title, locale) || catalogItem.title,\n code: code && code.length > 0 ? code : undefined,\n context: { ...row },\n layout: cloneDeep(this.buildMatrixLayout()),\n };\n }\n\n //#endregion\n\n //#region ----- Layout -----\n\n private buildMatrixLayout(): AXPWidgetNode {\n return this.layoutBuilder\n .create()\n .flex((flex) => {\n flex.mode('view').setDirection('column');\n flex.formField('', (field) => {\n field\n .path('matrix')\n .setShowLabel(false)\n .mode('view')\n .customWidget(AXPWidgetsList.Editors.RiskMatrix, { readonly: true });\n });\n })\n .build();\n }\n\n //#endregion\n}\n\n//#endregion\n","<div class=\"axm-risk-matrix-preview\">\n @if (loading()) {\n <!-- ----- Loading indicator while risk matrix records are fetched ----- -->\n <ax-loading></ax-loading>\n }\n <!-- ----- Empty state when no risk matrices are selected ----- -->\n @else if (matrices().length === 0) {\n <p class=\"__empty\">\n {{ '@workplacesafety-management:safety-plan-sections.preview.empty-items' | translate | async }}\n </p>\n }\n <!-- ----- Selected risk matrices rendered with the RiskMatrix widget ----- -->\n @else {\n <div class=\"__items\">\n @for (item of matrices(); track item.id) {\n <article class=\"__item\">\n <header class=\"__item-header\">\n <h4 class=\"__item-title\">{{ item.title }}</h4>\n <!--->\n <!-- ----- Optional business code after the matrix title ----- -->\n @if (item.code) {\n <span class=\"__code\">({{ item.code }})</span>\n }\n </header>\n <div class=\"__matrix\">\n <axp-layout-renderer [layout]=\"item.layout\" [context]=\"item.context\" mode=\"view\" look=\"container\" />\n </div>\n </article>\n }\n </div>\n }\n</div>\n","//#region ----- Imports -----\n\nimport { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { AsyncPipe } from '@angular/common';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport {\n stepTableColumnKey,\n type AXMSafetyPlanSectionBuilderSectionValue,\n type AXMSafetyPlanStepTableRowBuilderPayload,\n type AXMStepTableColumnDef,\n} from '@acorex-platform/module-workplacesafety-management-client/contracts';\n\nimport {\n formatSafetyPlanPreviewStepTableCell,\n resolveSafetyPlanPreviewStepTableColumns,\n stepTablePreviewColumnLabel,\n} from './safety-plan-preview.util';\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axm-work-step-table-preview',\n templateUrl: './work-step-table-preview.component.html',\n styleUrl: './work-step-table-preview.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXTranslationModule, AsyncPipe],\n host: {\n class: 'axm-work-step-table-preview block',\n },\n})\nexport class AXMWorkStepTablePreviewComponent {\n //#region ----- Services & Dependencies -----\n\n private readonly translationService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ----- Inputs -----\n\n readonly section = input.required<AXMSafetyPlanSectionBuilderSectionValue>();\n\n //#endregion\n\n //#region ----- Computed Properties -----\n\n protected readonly columns = computed(() => resolveSafetyPlanPreviewStepTableColumns(this.section()));\n\n protected readonly rows = computed((): AXMSafetyPlanStepTableRowBuilderPayload[] =>\n (this.section().items ?? [])\n .map((item) => item.stepTableRow)\n .filter((row): row is AXMSafetyPlanStepTableRowBuilderPayload => !!row)\n .sort((a, b) => (a.sortOrder ?? 0) - (b.sortOrder ?? 0)),\n );\n\n //#endregion\n\n //#region ----- Display -----\n\n protected columnLabel(column: AXMStepTableColumnDef): string {\n return stepTablePreviewColumnLabel(column, this.translationService.getActiveLang() ?? 'en-US');\n }\n\n protected cellText(\n row: AXMSafetyPlanStepTableRowBuilderPayload,\n column: AXMStepTableColumnDef,\n ): string {\n const key = stepTableColumnKey(column);\n const cell = (row.cells ?? []).find((entry) => entry.columnKey === key);\n return formatSafetyPlanPreviewStepTableCell(cell, this.translationService.getActiveLang() ?? 'en-US');\n }\n\n //#endregion\n}\n\n//#endregion\n","<div class=\"axm-work-step-table-preview\">\n @if (columns().length > 0 && rows().length > 0) {\n <!-- ----- Read-only work-step table ----- -->\n <div class=\"__table-wrap\">\n <table class=\"__table\">\n <thead>\n <tr>\n @for (column of columns(); track column.sectionTypeId) {\n <th>{{ columnLabel(column) }}</th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of rows(); track $index) {\n <tr>\n @for (column of columns(); track column.sectionTypeId) {\n <td>{{ cellText(row, column) }}</td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n <!-- ----- Empty work-step table ----- -->\n @else {\n <p class=\"__empty\">\n {{ '@workplacesafety-management:safety-plan-sections.preview.empty-items' | translate | async }}\n </p>\n }\n</div>\n","//#region ----- Imports -----\n\nimport { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport type { AXMSafetyPlanSectionBuilderSectionValue } from '@acorex-platform/module-workplacesafety-management-client/contracts';\n\nimport { AXMCatalogSectionPreviewComponent } from './catalog-section-preview.component';\nimport { AXMHierarchySectionPreviewComponent } from './hierarchy-section-preview.component';\nimport { AXMPpeSectionPreviewComponent } from './ppe-section-preview.component';\nimport { AXMRiskMatrixPreviewComponent } from './risk-matrix-preview.component';\nimport { AXMWorkStepTablePreviewComponent } from './work-step-table-preview.component';\nimport {\n collectSafetyPlanPreviewCatalogItems,\n resolveSafetyPlanPreviewSectionTitle,\n resolveSafetyPlanSectionPreviewKind,\n safetyPlanPreviewSectionHasItems,\n} from './safety-plan-preview.util';\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axm-safety-plan-section-preview',\n templateUrl: './safety-plan-section-preview.component.html',\n styleUrl: './safety-plan-section-preview.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n AXMCatalogSectionPreviewComponent,\n AXMHierarchySectionPreviewComponent,\n AXMPpeSectionPreviewComponent,\n AXMRiskMatrixPreviewComponent,\n AXMWorkStepTablePreviewComponent,\n ],\n host: {\n class: 'axm-safety-plan-section-preview',\n '[class.block]': 'hasItems()',\n '[hidden]': '!hasItems()',\n },\n})\nexport class AXMSafetyPlanSectionPreviewComponent {\n //#region ----- Services & Dependencies -----\n\n private readonly translationService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ----- Inputs -----\n\n readonly section = input.required<AXMSafetyPlanSectionBuilderSectionValue>();\n\n //#endregion\n\n //#region ----- Computed Properties -----\n\n private readonly locale = computed(() => this.translationService.getActiveLang() ?? 'en-US');\n\n protected readonly kind = computed(() => resolveSafetyPlanSectionPreviewKind(this.section()));\n\n protected readonly title = computed(() =>\n resolveSafetyPlanPreviewSectionTitle(this.section(), this.locale()),\n );\n\n protected readonly catalogItems = computed(() =>\n collectSafetyPlanPreviewCatalogItems(this.section(), this.locale()),\n );\n\n protected readonly hasItems = computed(() => safetyPlanPreviewSectionHasItems(this.section()));\n\n //#endregion\n}\n\n//#endregion\n","@if (hasItems()) {\n <!-- ----- Section with at least one item ----- -->\n <section class=\"axm-safety-plan-section-preview\">\n <header class=\"__header\">\n <h3 class=\"__title\">{{ title() }}</h3>\n </header>\n\n @switch (kind()) {\n @case ('work-step-table') {\n <axm-work-step-table-preview [section]=\"section()\" />\n }\n @case ('risk-matrix') {\n <axm-risk-matrix-preview [items]=\"catalogItems()\" />\n }\n @case ('ppe') {\n <axm-ppe-section-preview [items]=\"catalogItems()\" [layout]=\"section().widgetOptions?.layout\" />\n }\n @case ('hierarchy') {\n <axm-hierarchy-section-preview\n [items]=\"catalogItems()\"\n [viewType]=\"section().widgetOptions?.viewType\"\n [showTitle]=\"section().widgetOptions?.showTitle\"\n />\n }\n @default {\n <axm-catalog-section-preview [items]=\"catalogItems()\" />\n }\n }\n </section>\n}\n","//#region ----- Imports -----\n\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy, Component, computed, input, ViewEncapsulation,\n} from '@angular/core';\nimport type { AXMSafetyPlanSectionBuilderValue } from '@acorex-platform/module-workplacesafety-management-client/contracts';\nimport { normalizeSafetyPlanSectionBuilderValue } from '../safety-plan-sections-page/safety-plan-section-builder.types';\n\nimport { AXMSafetyPlanSectionPreviewComponent } from './safety-plan-section-preview.component';\nimport { safetyPlanPreviewSectionHasItems } from './safety-plan-preview.util';\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axm-safety-plan-preview-modal',\n templateUrl: './safety-plan-preview-modal.component.html',\n styleUrl: './safety-plan-preview-modal.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [AXTranslationModule, AsyncPipe, AXMSafetyPlanSectionPreviewComponent],\n host: {\n class: 'axm-safety-plan-preview-modal-host flex flex-col w-full h-full',\n },\n})\nexport class AXMSafetyPlanPreviewModalComponent extends AXBasePageComponent {\n //#region ----- Inputs -----\n\n readonly structure = input<AXMSafetyPlanSectionBuilderValue>({ sections: [] });\n\n //#endregion\n\n //#region ----- Computed Properties -----\n\n protected readonly sections = computed(() => {\n const raw = this.safeInputValue(this.structure);\n return [...normalizeSafetyPlanSectionBuilderValue(raw).sections]\n .sort((a, b) => (a.sortOrder ?? 0) - (b.sortOrder ?? 0))\n .filter((section) => safetyPlanPreviewSectionHasItems(section));\n });\n\n //#endregion\n\n //#region ----- Helpers -----\n\n private safeInputValue<T>(inputOrValue: T | (() => T)): T {\n return typeof inputOrValue === 'function' ? (inputOrValue as () => T)() : (inputOrValue as T);\n }\n\n //#endregion\n}\n\n//#endregion\n","<div class=\"axm-safety-plan-preview-modal __content-area\">\n @if (sections().length === 0) {\n <!-- ----- Empty state when the plan has no sections ----- -->\n <p class=\"__empty\">\n {{ '@workplacesafety-management:safety-plan-sections.preview.empty' | translate | async }}\n </p>\n }\n <!-- ----- Read-only document blocks in configured section order ----- -->\n @else {\n <div class=\"__document\">\n @for (section of sections(); track section.id) {\n <axm-safety-plan-section-preview [section]=\"section\" />\n }\n </div>\n }\n</div>\n"],"names":["i2"],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-module-workplacesafety-management-client-safety-plan-preview-modal.component-CQ2xB7Va.mjs","sources":["../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-preview/catalog-section-preview.component.ts","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-preview/catalog-section-preview.component.html","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-preview/hierarchy-section-preview.component.ts","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-preview/hierarchy-section-preview.component.html","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-preview/ppe-section-preview.component.ts","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-preview/ppe-section-preview.component.html","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-preview/safety-plan-preview.util.ts","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-preview/risk-matrix-preview.component.ts","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-preview/risk-matrix-preview.component.html","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-preview/work-step-table-preview.component.ts","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-preview/work-step-table-preview.component.html","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-preview/safety-plan-section-preview.component.ts","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-preview/safety-plan-section-preview.component.html","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-preview/safety-plan-preview-modal.component.ts","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-preview/safety-plan-preview-modal.component.html"],"sourcesContent":["//#region ----- Imports -----\n\nimport { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { AsyncPipe } from '@angular/common';\nimport { AXTranslationModule } from '@acorex/core/translation';\n\nimport type { AXMSafetyPlanPreviewCatalogItem } from './safety-plan-preview.types';\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axm-catalog-section-preview',\n templateUrl: './catalog-section-preview.component.html',\n styleUrl: './catalog-section-preview.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXTranslationModule, AsyncPipe],\n host: {\n class: 'axm-catalog-section-preview block',\n },\n})\nexport class AXMCatalogSectionPreviewComponent {\n readonly items = input<AXMSafetyPlanPreviewCatalogItem[]>([]);\n}\n\n//#endregion\n","<div class=\"axm-catalog-section-preview\">\n @if (items().length > 0) {\n <!-- ----- Linked catalog items as a document bullet list ----- -->\n <ul class=\"__list\">\n @for (item of items(); track item.id) {\n <li class=\"__item\">\n <span class=\"__title\">{{ item.title }}</span>\n <!--->\n <!-- ----- Optional business code after the item title ----- -->\n @if (item.code) {\n <span class=\"__code\">({{ item.code }})</span>\n }\n </li>\n }\n </ul>\n }\n <!-- ----- Empty catalog section ----- -->\n @else {\n <p class=\"__empty\">\n {{ '@workplacesafety-management:safety-plan-sections.preview.empty-items' | translate | async }}\n </p>\n }\n</div>\n","//#region ----- Imports -----\n\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, input, signal } from '@angular/core';\n\nimport { AXMControlHierarchyDiagramComponent } from '../control-hierarchy-diagram/control-hierarchy-diagram.component';\nimport { AXMControlHierarchyDiagramService } from '../control-hierarchy-diagram/control-hierarchy-diagram.service';\nimport {\n resolveControlHierarchyDiagramViewType,\n type AXMControlHierarchyDiagramItem,\n type AXMControlHierarchyDiagramViewType,\n} from '../control-hierarchy-diagram/control-hierarchy-diagram.types';\nimport type { AXMSafetyPlanPreviewCatalogItem } from './safety-plan-preview.types';\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axm-hierarchy-section-preview',\n templateUrl: './hierarchy-section-preview.component.html',\n styleUrl: './hierarchy-section-preview.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXMControlHierarchyDiagramComponent],\n host: {\n class: 'axm-hierarchy-section-preview block',\n },\n})\nexport class AXMHierarchySectionPreviewComponent {\n //#region ----- Services & Dependencies -----\n\n private readonly diagramService = inject(AXMControlHierarchyDiagramService);\n\n //#endregion\n\n //#region ----- Inputs -----\n\n readonly items = input<AXMSafetyPlanPreviewCatalogItem[]>([]);\n readonly viewType = input<unknown>();\n readonly showTitle = input<boolean | undefined>(undefined);\n\n //#endregion\n\n //#region ----- State Signals -----\n\n protected readonly diagramItems = signal<AXMControlHierarchyDiagramItem[]>([]);\n\n //#endregion\n\n //#region ----- Computed Properties -----\n\n protected readonly resolvedViewType = computed<AXMControlHierarchyDiagramViewType>(() =>\n resolveControlHierarchyDiagramViewType(this.viewType() as Parameters<typeof resolveControlHierarchyDiagramViewType>[0]),\n );\n\n protected readonly resolvedShowTitle = computed(() => this.showTitle() === true);\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n private readonly loadItems = effect((onCleanup) => {\n const catalogItems = this.items();\n let cancelled = false;\n onCleanup(() => {\n cancelled = true;\n });\n void this.refresh(catalogItems, () => cancelled);\n });\n\n //#endregion\n\n //#region ----- Data Loading -----\n\n private async refresh(\n catalogItems: AXMSafetyPlanPreviewCatalogItem[],\n isCancelled: () => boolean,\n ): Promise<void> {\n if (catalogItems.length === 0) {\n this.diagramItems.set([]);\n return;\n }\n\n try {\n const loaded = await this.diagramService.loadDiagramItemsByLevelIds(catalogItems.map((item) => item.id));\n if (!isCancelled()) {\n this.diagramItems.set(loaded);\n }\n } catch {\n if (!isCancelled()) {\n this.diagramItems.set([]);\n }\n }\n }\n\n //#endregion\n}\n\n//#endregion\n","<!-- ----- Control hierarchy diagram using saved section widget options ----- -->\n<axm-control-hierarchy-diagram\n [viewType]=\"resolvedViewType()\"\n [items]=\"diagramItems()\"\n [showTitle]=\"resolvedShowTitle()\"\n [showViewTypeSelector]=\"false\"\n/>\n","//#region ----- Imports -----\n\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, input, signal } from '@angular/core';\n\nimport { AXMPpeItemViewerComponent } from '../ppe-item-viewer/ppe-item-viewer.component';\nimport { AXMPpeItemViewerService } from '../ppe-item-viewer/ppe-item-viewer.service';\nimport type { AXMPpeItemViewerDisplayItem, AXMPpeItemViewerLayout } from '../ppe-item-viewer/ppe-item-viewer.types';\nimport { resolvePpeItemViewerLayout } from '../ppe-item-viewer/ppe-item-viewer.util';\nimport type { AXMSafetyPlanPreviewCatalogItem } from './safety-plan-preview.types';\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axm-ppe-section-preview',\n templateUrl: './ppe-section-preview.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXMPpeItemViewerComponent],\n host: {\n class: 'axm-ppe-section-preview block',\n },\n})\nexport class AXMPpeSectionPreviewComponent {\n //#region ----- Services & Dependencies -----\n\n private readonly ppeItemViewerService = inject(AXMPpeItemViewerService);\n\n //#endregion\n\n //#region ----- Inputs -----\n\n readonly items = input<AXMSafetyPlanPreviewCatalogItem[]>([]);\n readonly layout = input<unknown>();\n\n //#endregion\n\n //#region ----- State Signals -----\n\n protected readonly loading = signal(false);\n protected readonly displayItems = signal<AXMPpeItemViewerDisplayItem[]>([]);\n protected readonly selectedIds = signal<string[]>([]);\n\n protected readonly resolvedLayout = computed<AXMPpeItemViewerLayout>(() =>\n resolvePpeItemViewerLayout(this.layout() as Parameters<typeof resolvePpeItemViewerLayout>[0]),\n );\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n private readonly loadItems = effect((onCleanup) => {\n const catalogItems = this.items();\n let cancelled = false;\n onCleanup(() => {\n cancelled = true;\n });\n void this.refresh(catalogItems, () => cancelled);\n });\n\n //#endregion\n\n //#region ----- Event Handlers -----\n\n protected onSelectedIdsChange(ids: string[]): void {\n this.selectedIds.set(ids);\n }\n\n //#endregion\n\n //#region ----- Data Loading -----\n\n private async refresh(\n catalogItems: AXMSafetyPlanPreviewCatalogItem[],\n isCancelled: () => boolean,\n ): Promise<void> {\n if (catalogItems.length === 0) {\n this.displayItems.set([]);\n this.loading.set(false);\n return;\n }\n\n this.loading.set(true);\n const fallback = catalogItems.map((item) => this.toDisplayItem(item));\n try {\n const loaded = await this.ppeItemViewerService.loadDisplayItems(catalogItems.map((item) => item.id));\n if (isCancelled()) {\n return;\n }\n const byId = new Map(loaded.map((row) => [row.id, row]));\n this.displayItems.set(fallback.map((item) => byId.get(item.id) ?? item));\n } catch {\n if (!isCancelled()) {\n this.displayItems.set(fallback);\n }\n } finally {\n if (!isCancelled()) {\n this.loading.set(false);\n }\n }\n }\n\n private toDisplayItem(item: AXMSafetyPlanPreviewCatalogItem): AXMPpeItemViewerDisplayItem {\n return {\n id: item.id,\n title: item.title,\n code: item.code,\n imageUrl: null,\n };\n }\n\n //#endregion\n}\n\n//#endregion\n","<!-- ----- PPE Item viewer (same component as Questionnaire; checkboxes can be toggled) ----- -->\n<axm-ppe-item-viewer\n [items]=\"displayItems()\"\n [layout]=\"resolvedLayout()\"\n [selectedIds]=\"selectedIds()\"\n [loading]=\"loading()\"\n (selectedIdsChange)=\"onSelectedIdsChange($event)\"\n/>\n","//#region ----- Imports -----\n\nimport { resolveEntityRowDisplayText } from '@acorex-platform/framework-client/common';\nimport {\n isStepTableSectionType,\n normalizeStepTableColumns,\n resolveSectionTypeKey,\n sortStepTableColumns,\n stepTableColumnTitle,\n type AXMSafetyPlanSectionBuilderItemValue,\n type AXMSafetyPlanSectionBuilderSectionValue,\n type AXMStepTableCellValue,\n type AXMStepTableColumnDef,\n} from '@acorex-platform/module-workplacesafety-management-client/contracts';\n\nimport type {\n AXMSafetyPlanPreviewCatalogItem,\n AXMSafetyPlanSectionPreviewKind,\n} from './safety-plan-preview.types';\n\n//#endregion\n\n//#region ----- Display helpers -----\n\nexport function toSafetyPlanPreviewDisplayText(value: unknown, locale: string): string {\n return resolveEntityRowDisplayText(value, locale).trim();\n}\n\nexport function resolveSafetyPlanPreviewSectionTitle(\n section: AXMSafetyPlanSectionBuilderSectionValue,\n locale: string,\n): string {\n return (\n toSafetyPlanPreviewDisplayText(section.title, locale) ||\n toSafetyPlanPreviewDisplayText(section.sectionType?.title, locale) ||\n toSafetyPlanPreviewDisplayText(section.sectionType?.code, locale)\n );\n}\n\n/**\n * Maps a section type to a preview renderer. New document kinds (SWMS, JSA, SOP, Permit)\n * can add cases here without changing the editor.\n */\nexport function resolveSafetyPlanSectionPreviewKind(\n section: AXMSafetyPlanSectionBuilderSectionValue,\n): AXMSafetyPlanSectionPreviewKind {\n if (isStepTableSectionType(section.sectionTypeId, section.sectionType)) {\n return 'work-step-table';\n }\n if (resolveSectionTypeKey(section.sectionTypeId, section.sectionType) === 'RiskMatrix') {\n return 'risk-matrix';\n }\n if (resolveSectionTypeKey(section.sectionTypeId, section.sectionType) === 'Ppe') {\n return 'ppe';\n }\n if (resolveSectionTypeKey(section.sectionTypeId, section.sectionType) === 'HierarchyLevel') {\n return 'hierarchy';\n }\n return 'catalog';\n}\n\n/** True when the section has at least one previewable item (catalog row or work-step row). */\nexport function safetyPlanPreviewSectionHasItems(\n section: AXMSafetyPlanSectionBuilderSectionValue,\n): boolean {\n if (isStepTableSectionType(section.sectionTypeId, section.sectionType)) {\n return (section.items ?? []).some((item) => item.stepTableRow != null);\n }\n return collectSafetyPlanPreviewCatalogItems(section, '').length > 0;\n}\n\nexport function collectSafetyPlanPreviewCatalogItems(\n section: AXMSafetyPlanSectionBuilderSectionValue,\n locale: string,\n): AXMSafetyPlanPreviewCatalogItem[] {\n const linked: AXMSafetyPlanPreviewCatalogItem[] = [];\n const seen = new Set<string>();\n\n for (const slot of section.items ?? []) {\n for (const item of flattenCatalogSlot(slot, locale)) {\n if (!item.id || seen.has(item.id)) {\n continue;\n }\n seen.add(item.id);\n linked.push(item);\n }\n }\n\n return linked;\n}\n\nexport function resolveSafetyPlanPreviewStepTableColumns(\n section: AXMSafetyPlanSectionBuilderSectionValue,\n): AXMStepTableColumnDef[] {\n return sortStepTableColumns(normalizeStepTableColumns(section.columns));\n}\n\nexport function formatSafetyPlanPreviewStepTableCell(\n cell: AXMStepTableCellValue | undefined,\n locale: string,\n): string {\n if (!cell) {\n return '';\n }\n const fromRefs = (cell.refs ?? [])\n .map((ref) => toSafetyPlanPreviewDisplayText(ref.title, locale) || String(ref.code ?? '').trim())\n .filter((text) => text.length > 0);\n if (fromRefs.length) {\n return fromRefs.join(', ');\n }\n const text = cell.textValue?.trim();\n if (text) {\n return text;\n }\n if (typeof cell.numberValue === 'number' && Number.isFinite(cell.numberValue)) {\n return String(cell.numberValue);\n }\n return '';\n}\n\nexport function stepTablePreviewColumnLabel(column: AXMStepTableColumnDef, locale: string): string {\n return (\n toSafetyPlanPreviewDisplayText(column.title, locale) ||\n toSafetyPlanPreviewDisplayText(column.sectionType?.title, locale) ||\n stepTableColumnTitle(column)\n );\n}\n\nfunction flattenCatalogSlot(\n slot: AXMSafetyPlanSectionBuilderItemValue,\n locale: string,\n): AXMSafetyPlanPreviewCatalogItem[] {\n const ids = Array.isArray(slot.itemIds) ? slot.itemIds : [];\n const snapshots = Array.isArray(slot.items) ? slot.items : [];\n const items: AXMSafetyPlanPreviewCatalogItem[] = [];\n\n for (let index = 0; index < ids.length; index += 1) {\n const id = String(ids[index] ?? '').trim();\n if (!id) {\n continue;\n }\n const snapshot = snapshots.find((entry) => entry?.id === id) ?? snapshots[index];\n const title =\n toSafetyPlanPreviewDisplayText(snapshot?.title, locale) ||\n String(snapshot?.code ?? '').trim() ||\n id;\n items.push({\n id,\n title,\n code: snapshot?.code,\n });\n }\n\n if (items.length === 0 && snapshots.length > 0) {\n for (const snapshot of snapshots) {\n const id = String(snapshot?.id ?? '').trim();\n if (!id) {\n continue;\n }\n items.push({\n id,\n title: toSafetyPlanPreviewDisplayText(snapshot.title, locale) || String(snapshot.code ?? '').trim() || id,\n code: snapshot.code,\n });\n }\n }\n\n return items;\n}\n\n//#endregion\n","//#region ----- Imports -----\n\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { AXPLayoutBuilderService, AXPLayoutRendererComponent } from '@acorex-platform/framework-client/layout/builder';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPWidgetsList, type AXPWidgetNode } from '@acorex-platform/framework-shared/core';\nimport { RISK_MANAGEMENT_RISK_MATRIX_CELL_ENTITY } from '@acorex-platform/module-workplacesafety-management-client/contracts';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, effect, inject, input, signal } from '@angular/core';\nimport { cloneDeep } from 'lodash';\n\nimport type { AXMSafetyPlanPreviewCatalogItem } from './safety-plan-preview.types';\nimport { toSafetyPlanPreviewDisplayText } from './safety-plan-preview.util';\n\n//#endregion\n\n//#region ----- Types -----\n\ninterface AXMRiskMatrixCellRecord {\n id: string;\n title?: unknown;\n code?: unknown;\n}\n\ninterface AXMRiskMatrixPreviewItem {\n id: string;\n title: string;\n code?: string;\n context: Record<string, unknown>;\n layout: AXPWidgetNode;\n}\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axm-risk-matrix-preview',\n templateUrl: './risk-matrix-preview.component.html',\n styleUrl: './risk-matrix-preview.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AsyncPipe, AXLoadingModule, AXTranslationModule, AXPLayoutRendererComponent],\n host: {\n class: 'axm-risk-matrix-preview block',\n },\n})\nexport class AXMRiskMatrixPreviewComponent {\n //#region ----- Services & Dependencies -----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n private readonly translationService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ----- Inputs -----\n\n readonly items = input<AXMSafetyPlanPreviewCatalogItem[]>([]);\n\n //#endregion\n\n //#region ----- State Signals -----\n\n protected readonly loading = signal(false);\n protected readonly matrices = signal<AXMRiskMatrixPreviewItem[]>([]);\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n private readonly loadItems = effect((onCleanup) => {\n const catalogItems = this.items();\n let cancelled = false;\n onCleanup(() => {\n cancelled = true;\n });\n void this.refresh(catalogItems, () => cancelled);\n });\n\n //#endregion\n\n //#region ----- Data Loading -----\n\n private async refresh(\n catalogItems: AXMSafetyPlanPreviewCatalogItem[],\n isCancelled: () => boolean,\n ): Promise<void> {\n if (catalogItems.length === 0) {\n this.matrices.set([]);\n this.loading.set(false);\n return;\n }\n\n this.loading.set(true);\n try {\n const loaded = await this.queryByIds(catalogItems.map((item) => item.id));\n if (isCancelled()) {\n return;\n }\n const byId = new Map(loaded.map((row) => [row.id, row]));\n const locale = this.translationService.getActiveLang() ?? 'en-US';\n this.matrices.set(\n catalogItems.flatMap((item) => {\n const row = byId.get(item.id);\n if (!row) {\n return [];\n }\n return [this.toPreviewItem(item, row, locale)];\n }),\n );\n } catch {\n if (!isCancelled()) {\n this.matrices.set([]);\n }\n } finally {\n if (!isCancelled()) {\n this.loading.set(false);\n }\n }\n }\n\n private async queryByIds(ids: string[]): Promise<AXMRiskMatrixCellRecord[]> {\n const dataAccessor = this.entityService\n .withEntity(RISK_MANAGEMENT_RISK_MATRIX_CELL_ENTITY)\n .data<string, AXMRiskMatrixCellRecord>();\n\n try {\n const result = await dataAccessor.query({\n skip: 0,\n take: Math.max(ids.length, 100),\n filter:\n ids.length === 1\n ? { field: 'id', operator: { type: 'equal' }, value: ids[0] }\n : { field: 'id', operator: { type: 'in' }, value: ids },\n });\n return result?.items ?? [];\n } catch {\n const loaded: AXMRiskMatrixCellRecord[] = [];\n for (const id of ids) {\n try {\n const row = await dataAccessor.byKey(id);\n if (row) {\n loaded.push(row);\n }\n } catch {\n /* skip missing rows */\n }\n }\n return loaded;\n }\n }\n\n private toPreviewItem(\n catalogItem: AXMSafetyPlanPreviewCatalogItem,\n row: AXMRiskMatrixCellRecord,\n locale: string,\n ): AXMRiskMatrixPreviewItem {\n const code = typeof row.code === 'string' ? row.code.trim() : catalogItem.code;\n return {\n id: catalogItem.id,\n title: toSafetyPlanPreviewDisplayText(row.title, locale) || catalogItem.title,\n code: code && code.length > 0 ? code : undefined,\n context: { ...row },\n layout: cloneDeep(this.buildMatrixLayout()),\n };\n }\n\n //#endregion\n\n //#region ----- Layout -----\n\n private buildMatrixLayout(): AXPWidgetNode {\n return this.layoutBuilder\n .create()\n .flex((flex) => {\n flex.mode('view').setDirection('column');\n flex.formField('', (field) => {\n field\n .path('matrix')\n .setShowLabel(false)\n .mode('view')\n .customWidget(AXPWidgetsList.Editors.RiskMatrix, { readonly: true });\n });\n })\n .build();\n }\n\n //#endregion\n}\n\n//#endregion\n","<div class=\"axm-risk-matrix-preview\">\n @if (loading()) {\n <!-- ----- Loading indicator while risk matrix records are fetched ----- -->\n <ax-loading></ax-loading>\n }\n <!-- ----- Empty state when no risk matrices are selected ----- -->\n @else if (matrices().length === 0) {\n <p class=\"__empty\">\n {{ '@workplacesafety-management:safety-plan-sections.preview.empty-items' | translate | async }}\n </p>\n }\n <!-- ----- Selected risk matrices rendered with the RiskMatrix widget ----- -->\n @else {\n <div class=\"__items\">\n @for (item of matrices(); track item.id) {\n <article class=\"__item\">\n <header class=\"__item-header\">\n <h4 class=\"__item-title\">{{ item.title }}</h4>\n <!--->\n <!-- ----- Optional business code after the matrix title ----- -->\n @if (item.code) {\n <span class=\"__code\">({{ item.code }})</span>\n }\n </header>\n <div class=\"__matrix\">\n <axp-layout-renderer [layout]=\"item.layout\" [context]=\"item.context\" mode=\"view\" look=\"container\" />\n </div>\n </article>\n }\n </div>\n }\n</div>\n","//#region ----- Imports -----\n\nimport { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { AsyncPipe } from '@angular/common';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport {\n stepTableColumnKey,\n type AXMSafetyPlanSectionBuilderSectionValue,\n type AXMSafetyPlanStepTableRowBuilderPayload,\n type AXMStepTableColumnDef,\n} from '@acorex-platform/module-workplacesafety-management-client/contracts';\n\nimport {\n formatSafetyPlanPreviewStepTableCell,\n resolveSafetyPlanPreviewStepTableColumns,\n stepTablePreviewColumnLabel,\n} from './safety-plan-preview.util';\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axm-work-step-table-preview',\n templateUrl: './work-step-table-preview.component.html',\n styleUrl: './work-step-table-preview.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXTranslationModule, AsyncPipe],\n host: {\n class: 'axm-work-step-table-preview block',\n },\n})\nexport class AXMWorkStepTablePreviewComponent {\n //#region ----- Services & Dependencies -----\n\n private readonly translationService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ----- Inputs -----\n\n readonly section = input.required<AXMSafetyPlanSectionBuilderSectionValue>();\n\n //#endregion\n\n //#region ----- Computed Properties -----\n\n protected readonly columns = computed(() => resolveSafetyPlanPreviewStepTableColumns(this.section()));\n\n protected readonly rows = computed((): AXMSafetyPlanStepTableRowBuilderPayload[] =>\n (this.section().items ?? [])\n .map((item) => item.stepTableRow)\n .filter((row): row is AXMSafetyPlanStepTableRowBuilderPayload => !!row)\n .sort((a, b) => (a.sortOrder ?? 0) - (b.sortOrder ?? 0)),\n );\n\n //#endregion\n\n //#region ----- Display -----\n\n protected columnLabel(column: AXMStepTableColumnDef): string {\n return stepTablePreviewColumnLabel(column, this.translationService.getActiveLang() ?? 'en-US');\n }\n\n protected cellText(\n row: AXMSafetyPlanStepTableRowBuilderPayload,\n column: AXMStepTableColumnDef,\n ): string {\n const key = stepTableColumnKey(column);\n const cell = (row.cells ?? []).find((entry) => entry.columnKey === key);\n return formatSafetyPlanPreviewStepTableCell(cell, this.translationService.getActiveLang() ?? 'en-US');\n }\n\n //#endregion\n}\n\n//#endregion\n","<div class=\"axm-work-step-table-preview\">\n @if (columns().length > 0 && rows().length > 0) {\n <!-- ----- Read-only work-step table ----- -->\n <div class=\"__table-wrap\">\n <table class=\"__table\">\n <thead>\n <tr>\n @for (column of columns(); track column.sectionTypeId) {\n <th>{{ columnLabel(column) }}</th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of rows(); track $index) {\n <tr>\n @for (column of columns(); track column.sectionTypeId) {\n <td>{{ cellText(row, column) }}</td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n <!-- ----- Empty work-step table ----- -->\n @else {\n <p class=\"__empty\">\n {{ '@workplacesafety-management:safety-plan-sections.preview.empty-items' | translate | async }}\n </p>\n }\n</div>\n","//#region ----- Imports -----\n\nimport { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport type { AXMSafetyPlanSectionBuilderSectionValue } from '@acorex-platform/module-workplacesafety-management-client/contracts';\n\nimport { AXMCatalogSectionPreviewComponent } from './catalog-section-preview.component';\nimport { AXMHierarchySectionPreviewComponent } from './hierarchy-section-preview.component';\nimport { AXMPpeSectionPreviewComponent } from './ppe-section-preview.component';\nimport { AXMRiskMatrixPreviewComponent } from './risk-matrix-preview.component';\nimport { AXMWorkStepTablePreviewComponent } from './work-step-table-preview.component';\nimport {\n collectSafetyPlanPreviewCatalogItems,\n resolveSafetyPlanPreviewSectionTitle,\n resolveSafetyPlanSectionPreviewKind,\n safetyPlanPreviewSectionHasItems,\n} from './safety-plan-preview.util';\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axm-safety-plan-section-preview',\n templateUrl: './safety-plan-section-preview.component.html',\n styleUrl: './safety-plan-section-preview.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n AXMCatalogSectionPreviewComponent,\n AXMHierarchySectionPreviewComponent,\n AXMPpeSectionPreviewComponent,\n AXMRiskMatrixPreviewComponent,\n AXMWorkStepTablePreviewComponent,\n ],\n host: {\n class: 'axm-safety-plan-section-preview',\n '[class.block]': 'hasItems()',\n '[hidden]': '!hasItems()',\n },\n})\nexport class AXMSafetyPlanSectionPreviewComponent {\n //#region ----- Services & Dependencies -----\n\n private readonly translationService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ----- Inputs -----\n\n readonly section = input.required<AXMSafetyPlanSectionBuilderSectionValue>();\n\n //#endregion\n\n //#region ----- Computed Properties -----\n\n private readonly locale = computed(() => this.translationService.getActiveLang() ?? 'en-US');\n\n protected readonly kind = computed(() => resolveSafetyPlanSectionPreviewKind(this.section()));\n\n protected readonly title = computed(() =>\n resolveSafetyPlanPreviewSectionTitle(this.section(), this.locale()),\n );\n\n protected readonly catalogItems = computed(() =>\n collectSafetyPlanPreviewCatalogItems(this.section(), this.locale()),\n );\n\n protected readonly hasItems = computed(() => safetyPlanPreviewSectionHasItems(this.section()));\n\n //#endregion\n}\n\n//#endregion\n","@if (hasItems()) {\n <!-- ----- Section with at least one item ----- -->\n <section class=\"axm-safety-plan-section-preview\">\n <header class=\"__header\">\n <h3 class=\"__title\">{{ title() }}</h3>\n </header>\n\n @switch (kind()) {\n @case ('work-step-table') {\n <axm-work-step-table-preview [section]=\"section()\" />\n }\n @case ('risk-matrix') {\n <axm-risk-matrix-preview [items]=\"catalogItems()\" />\n }\n @case ('ppe') {\n <axm-ppe-section-preview [items]=\"catalogItems()\" [layout]=\"section().widgetOptions?.layout\" />\n }\n @case ('hierarchy') {\n <axm-hierarchy-section-preview\n [items]=\"catalogItems()\"\n [viewType]=\"section().widgetOptions?.viewType\"\n [showTitle]=\"section().widgetOptions?.showTitle\"\n />\n }\n @default {\n <axm-catalog-section-preview [items]=\"catalogItems()\" />\n }\n }\n </section>\n}\n","//#region ----- Imports -----\n\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy, Component, computed, input, ViewEncapsulation,\n} from '@angular/core';\nimport type { AXMSafetyPlanSectionBuilderValue } from '@acorex-platform/module-workplacesafety-management-client/contracts';\nimport { normalizeSafetyPlanSectionBuilderValue } from '../safety-plan-sections-page/safety-plan-section-builder.types';\n\nimport { AXMSafetyPlanSectionPreviewComponent } from './safety-plan-section-preview.component';\nimport { safetyPlanPreviewSectionHasItems } from './safety-plan-preview.util';\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axm-safety-plan-preview-modal',\n templateUrl: './safety-plan-preview-modal.component.html',\n styleUrl: './safety-plan-preview-modal.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [AXTranslationModule, AsyncPipe, AXMSafetyPlanSectionPreviewComponent],\n host: {\n class: 'axm-safety-plan-preview-modal-host flex flex-col w-full h-full',\n },\n})\nexport class AXMSafetyPlanPreviewModalComponent extends AXBasePageComponent {\n //#region ----- Inputs -----\n\n readonly structure = input<AXMSafetyPlanSectionBuilderValue>({ sections: [] });\n\n //#endregion\n\n //#region ----- Computed Properties -----\n\n protected readonly sections = computed(() => {\n const raw = this.safeInputValue(this.structure);\n return [...normalizeSafetyPlanSectionBuilderValue(raw).sections]\n .sort((a, b) => (a.sortOrder ?? 0) - (b.sortOrder ?? 0))\n .filter((section) => safetyPlanPreviewSectionHasItems(section));\n });\n\n //#endregion\n\n //#region ----- Helpers -----\n\n private safeInputValue<T>(inputOrValue: T | (() => T)): T {\n return typeof inputOrValue === 'function' ? (inputOrValue as () => T)() : (inputOrValue as T);\n }\n\n //#endregion\n}\n\n//#endregion\n","<div class=\"axm-safety-plan-preview-modal __content-area\">\n @if (sections().length === 0) {\n <!-- ----- Empty state when the plan has no sections ----- -->\n <p class=\"__empty\">\n {{ '@workplacesafety-management:safety-plan-sections.preview.empty' | translate | async }}\n </p>\n }\n <!-- ----- Read-only document blocks in configured section order ----- -->\n @else {\n <div class=\"__document\">\n @for (section of sections(); track section.id) {\n <axm-safety-plan-section-preview [section]=\"section\" />\n }\n </div>\n }\n</div>\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, Injectable } from '@angular/core';
3
+ import { AXPopupService } from '@acorex/components/popup';
4
+ import { AXPDeviceService } from '@acorex-platform/framework-client/core';
5
+
6
+ //#region ----- Imports -----
7
+ //#endregion
8
+ //#region ----- Service -----
9
+ class AXMSafetyPlanPreviewService {
10
+ constructor() {
11
+ //#region ----- Services & Dependencies -----
12
+ this.popupService = inject(AXPopupService);
13
+ this.deviceService = inject(AXPDeviceService);
14
+ }
15
+ //#endregion
16
+ //#region ----- Public API -----
17
+ async open(options) {
18
+ const { AXMSafetyPlanPreviewModalComponent } = await import('./acorex-platform-module-workplacesafety-management-client-safety-plan-preview-modal.component-CQ2xB7Va.mjs');
19
+ await this.popupService.open(AXMSafetyPlanPreviewModalComponent, {
20
+ title: options.title,
21
+ size: this.deviceService.isSmall() ? 'full' : 'lg',
22
+ data: {
23
+ structure: options.structure,
24
+ },
25
+ });
26
+ }
27
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMSafetyPlanPreviewService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
28
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMSafetyPlanPreviewService, providedIn: 'root' }); }
29
+ }
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMSafetyPlanPreviewService, decorators: [{
31
+ type: Injectable,
32
+ args: [{ providedIn: 'root' }]
33
+ }] });
34
+
35
+ export { AXMSafetyPlanPreviewService as A };
36
+ //# sourceMappingURL=acorex-platform-module-workplacesafety-management-client-safety-plan-preview.service-DJP41MuL.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-module-workplacesafety-management-client-safety-plan-preview.service-DJP41MuL.mjs","sources":["../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-preview/safety-plan-preview.service.ts"],"sourcesContent":["//#region ----- Imports -----\n\nimport { Injectable, inject } from '@angular/core';\nimport { AXPopupService } from '@acorex/components/popup';\nimport { AXPDeviceService } from '@acorex-platform/framework-client/core';\n\nimport type { AXMSafetyPlanPreviewOpenOptions } from './safety-plan-preview.types';\n\n//#endregion\n\n//#region ----- Service -----\n\n@Injectable({ providedIn: 'root' })\nexport class AXMSafetyPlanPreviewService {\n //#region ----- Services & Dependencies -----\n\n private readonly popupService = inject(AXPopupService);\n private readonly deviceService = inject(AXPDeviceService);\n\n //#endregion\n\n //#region ----- Public API -----\n\n async open(options: AXMSafetyPlanPreviewOpenOptions): Promise<void> {\n const { AXMSafetyPlanPreviewModalComponent } = await import('./safety-plan-preview-modal.component');\n await this.popupService.open(AXMSafetyPlanPreviewModalComponent, {\n title: options.title,\n size: this.deviceService.isSmall() ? 'full' : 'lg',\n data: {\n structure: options.structure,\n },\n });\n }\n\n //#endregion\n}\n\n//#endregion\n"],"names":[],"mappings":";;;;;AAAA;AAQA;AAEA;MAGa,2BAA2B,CAAA;AADxC,IAAA,WAAA,GAAA;;AAImB,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC;AACrC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAkB1D,IAAA;;;IAZC,MAAM,IAAI,CAAC,OAAwC,EAAA;QACjD,MAAM,EAAE,kCAAkC,EAAE,GAAG,MAAM,OAAO,6GAAuC,CAAC;AACpG,QAAA,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,kCAAkC,EAAE;YAC/D,KAAK,EAAE,OAAO,CAAC,KAAK;AACpB,YAAA,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,MAAM,GAAG,IAAI;AAClD,YAAA,IAAI,EAAE;gBACJ,SAAS,EAAE,OAAO,CAAC,SAAS;AAC7B,aAAA;AACF,SAAA,CAAC;IACJ;8GAnBW,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,cADd,MAAM,EAAA,CAAA,CAAA;;2FACnB,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBADvC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;"}