@acorex-platform/module-risk-management-client 0.0.38 → 0.0.46

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 (56) hide show
  1. package/fesm2022/acorex-platform-module-risk-management-client-contracts-entities-risk-likelihood-scale.mjs +361 -0
  2. package/fesm2022/acorex-platform-module-risk-management-client-contracts-entities-risk-likelihood-scale.mjs.map +1 -0
  3. package/fesm2022/acorex-platform-module-risk-management-client-contracts-entities-risk-matrix.mjs +364 -0
  4. package/fesm2022/acorex-platform-module-risk-management-client-contracts-entities-risk-matrix.mjs.map +1 -0
  5. package/fesm2022/acorex-platform-module-risk-management-client-contracts-entities-risk-rating-scale.mjs +388 -0
  6. package/fesm2022/acorex-platform-module-risk-management-client-contracts-entities-risk-rating-scale.mjs.map +1 -0
  7. package/fesm2022/acorex-platform-module-risk-management-client-contracts-entities-risk-severity-scale.mjs +361 -0
  8. package/fesm2022/acorex-platform-module-risk-management-client-contracts-entities-risk-severity-scale.mjs.map +1 -0
  9. package/fesm2022/acorex-platform-module-risk-management-client-contracts-entity-catalog-acorex-platform-module-risk-management-client-contracts-entity-catalog-D6WaBLYS.mjs +72 -0
  10. package/fesm2022/acorex-platform-module-risk-management-client-contracts-entity-catalog-acorex-platform-module-risk-management-client-contracts-entity-catalog-D6WaBLYS.mjs.map +1 -0
  11. package/fesm2022/acorex-platform-module-risk-management-client-contracts-entity-catalog-risk-likelihood-scale.entity-CVdw2sfd.mjs +311 -0
  12. package/fesm2022/acorex-platform-module-risk-management-client-contracts-entity-catalog-risk-likelihood-scale.entity-CVdw2sfd.mjs.map +1 -0
  13. package/fesm2022/{acorex-platform-module-risk-management-client-contracts-entity-catalog-risk-matrix-cell.entity-b97tbRDA.mjs → acorex-platform-module-risk-management-client-contracts-entity-catalog-risk-matrix.entity-Chp-843O.mjs} +131 -115
  14. package/fesm2022/acorex-platform-module-risk-management-client-contracts-entity-catalog-risk-matrix.entity-Chp-843O.mjs.map +1 -0
  15. package/fesm2022/acorex-platform-module-risk-management-client-contracts-entity-catalog-risk-rating-scale.entity-Cjg7aGMl.mjs +338 -0
  16. package/fesm2022/acorex-platform-module-risk-management-client-contracts-entity-catalog-risk-rating-scale.entity-Cjg7aGMl.mjs.map +1 -0
  17. package/fesm2022/acorex-platform-module-risk-management-client-contracts-entity-catalog-risk-severity-scale.entity-Cgti6Xeo.mjs +311 -0
  18. package/fesm2022/acorex-platform-module-risk-management-client-contracts-entity-catalog-risk-severity-scale.entity-Cgti6Xeo.mjs.map +1 -0
  19. package/fesm2022/acorex-platform-module-risk-management-client-contracts-entity-catalog.mjs +1 -1
  20. package/fesm2022/acorex-platform-module-risk-management-client-contracts.mjs +233 -49
  21. package/fesm2022/acorex-platform-module-risk-management-client-contracts.mjs.map +1 -1
  22. package/fesm2022/acorex-platform-module-risk-management-client-local-entities.mjs +4 -4
  23. package/fesm2022/acorex-platform-module-risk-management-client-local-entities.mjs.map +1 -1
  24. package/fesm2022/{acorex-platform-module-risk-management-client-preview-risk-matrix-cell.command-CTGIFUIa.mjs → acorex-platform-module-risk-management-client-preview-risk-matrix.command-gVKnE3c0.mjs} +14 -12
  25. package/fesm2022/acorex-platform-module-risk-management-client-preview-risk-matrix.command-gVKnE3c0.mjs.map +1 -0
  26. package/fesm2022/acorex-platform-module-risk-management-client.mjs +439 -230
  27. package/fesm2022/acorex-platform-module-risk-management-client.mjs.map +1 -1
  28. package/package.json +13 -13
  29. package/types/acorex-platform-module-risk-management-client-contracts-entities-risk-likelihood-scale.d.ts +5 -0
  30. package/types/acorex-platform-module-risk-management-client-contracts-entities-risk-matrix.d.ts +5 -0
  31. package/types/acorex-platform-module-risk-management-client-contracts-entities-risk-rating-scale.d.ts +5 -0
  32. package/types/acorex-platform-module-risk-management-client-contracts-entities-risk-severity-scale.d.ts +5 -0
  33. package/types/acorex-platform-module-risk-management-client-contracts.d.ts +157 -65
  34. package/types/acorex-platform-module-risk-management-client.d.ts +77 -31
  35. package/fesm2022/acorex-platform-module-risk-management-client-contracts-entities-risk-likelihood.mjs +0 -222
  36. package/fesm2022/acorex-platform-module-risk-management-client-contracts-entities-risk-likelihood.mjs.map +0 -1
  37. package/fesm2022/acorex-platform-module-risk-management-client-contracts-entities-risk-matrix-cell.mjs +0 -348
  38. package/fesm2022/acorex-platform-module-risk-management-client-contracts-entities-risk-matrix-cell.mjs.map +0 -1
  39. package/fesm2022/acorex-platform-module-risk-management-client-contracts-entities-risk-rating.mjs +0 -227
  40. package/fesm2022/acorex-platform-module-risk-management-client-contracts-entities-risk-rating.mjs.map +0 -1
  41. package/fesm2022/acorex-platform-module-risk-management-client-contracts-entities-risk-severity.mjs +0 -222
  42. package/fesm2022/acorex-platform-module-risk-management-client-contracts-entities-risk-severity.mjs.map +0 -1
  43. package/fesm2022/acorex-platform-module-risk-management-client-contracts-entity-catalog-acorex-platform-module-risk-management-client-contracts-entity-catalog-Dc6Me3H6.mjs +0 -72
  44. package/fesm2022/acorex-platform-module-risk-management-client-contracts-entity-catalog-acorex-platform-module-risk-management-client-contracts-entity-catalog-Dc6Me3H6.mjs.map +0 -1
  45. package/fesm2022/acorex-platform-module-risk-management-client-contracts-entity-catalog-risk-likelihood.entity-DzwLi3Ga.mjs +0 -172
  46. package/fesm2022/acorex-platform-module-risk-management-client-contracts-entity-catalog-risk-likelihood.entity-DzwLi3Ga.mjs.map +0 -1
  47. package/fesm2022/acorex-platform-module-risk-management-client-contracts-entity-catalog-risk-matrix-cell.entity-b97tbRDA.mjs.map +0 -1
  48. package/fesm2022/acorex-platform-module-risk-management-client-contracts-entity-catalog-risk-rating.entity-CreMsiCu.mjs +0 -177
  49. package/fesm2022/acorex-platform-module-risk-management-client-contracts-entity-catalog-risk-rating.entity-CreMsiCu.mjs.map +0 -1
  50. package/fesm2022/acorex-platform-module-risk-management-client-contracts-entity-catalog-risk-severity.entity-bEyLH8dE.mjs +0 -172
  51. package/fesm2022/acorex-platform-module-risk-management-client-contracts-entity-catalog-risk-severity.entity-bEyLH8dE.mjs.map +0 -1
  52. package/fesm2022/acorex-platform-module-risk-management-client-preview-risk-matrix-cell.command-CTGIFUIa.mjs.map +0 -1
  53. package/types/acorex-platform-module-risk-management-client-contracts-entities-risk-likelihood.d.ts +0 -5
  54. package/types/acorex-platform-module-risk-management-client-contracts-entities-risk-matrix-cell.d.ts +0 -5
  55. package/types/acorex-platform-module-risk-management-client-contracts-entities-risk-rating.d.ts +0 -5
  56. package/types/acorex-platform-module-risk-management-client-contracts-entities-risk-severity.d.ts +0 -5
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-risk-management-client.mjs","sources":["../../../../libs/modules/risk-management/client/src/lib/menu.provider.ts","../../../../libs/modules/risk-management/client/src/lib/permission-definition.provider.ts","../../../../libs/modules/risk-management/client/src/lib/manifest.ts","../../../../libs/modules/risk-management/client/src/lib/catalog-scope-definition.provider.ts","../../../../libs/modules/risk-management/client/src/lib/features/risk-matrix/risk-matrix-widget.config.ts","../../../../libs/modules/risk-management/client/src/lib/widget-definition.provider.ts","../../../../libs/modules/risk-management/client/src/lib/risk-management.module.ts","../../../../libs/modules/risk-management/client/src/lib/features/shared/risk-matrix-axis-mapping.ts","../../../../libs/modules/risk-management/client/src/lib/features/shared/risk-rating-badge-color.ts","../../../../libs/modules/risk-management/client/src/lib/features/risk-matrix/risk-matrix.component.ts","../../../../libs/modules/risk-management/client/src/lib/features/risk-matrix/risk-matrix.component.html","../../../../libs/modules/risk-management/client/src/lib/features/risk-matrix/risk-matrix-viewer.service.ts","../../../../libs/modules/risk-management/client/src/lib/features/risk-matrix/risk-matrix-viewer-open.util.ts","../../../../libs/modules/risk-management/client/src/lib/features/risk-matrix/risk-matrix-widget-column.component.ts","../../../../libs/modules/risk-management/client/src/lib/features/risk-matrix/risk-matrix-widget-edit.component.ts","../../../../libs/modules/risk-management/client/src/lib/features/risk-matrix/risk-matrix-widget-view.component.ts","../../../../libs/modules/risk-management/client/src/acorex-platform-module-risk-management-client.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport {\n AXPCommonMenuKeys\n} from '@acorex-platform/module-common-client/contracts';\nimport { AXPMenuProvider, AXPMenuProviderContext } from '@acorex-platform/framework-client/common';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { inject } from '@angular/core';\nimport {\n RootConfig,\n AXPSafetyRiskPermissionKeys\n} from '@acorex-platform/module-risk-management-client/contracts';\nimport { AXMRiskManagementMenuKeys } from '@acorex-platform/module-risk-management-client/contracts';\n\n//#endregion\n\n//#region ---- Menu provider ----\n\nexport class AXMRiskManagementMenuProvider implements AXPMenuProvider {\n private readonly entityService = inject(AXPEntityService);\n\n async provide(context: AXPMenuProviderContext): Promise<void> {\n const module = RootConfig.module;\n const entities = RootConfig.entities;\n const keys = AXPSafetyRiskPermissionKeys;\n\n context.find(AXPCommonMenuKeys.Configuration).addItems([\n {\n name: AXMRiskManagementMenuKeys.Root,\n priority: 8950,\n text: `@${RootConfig.config.i18n}:module.menus.risk`,\n icon: module.icon,\n type: 'menu',\n policy: {\n features: [module.name],\n },\n children: [\n {\n name: AXMRiskManagementMenuKeys.RiskMatrixCells,\n text: entities.riskMatrixCell.titlePlural,\n icon: entities.riskMatrixCell.icon,\n priority: 1,\n path: this.entityService.createPath(module.name, entities.riskMatrixCell.name),\n policy: {\n permissions: [keys.MaintainRisk],\n },\n },\n {\n name: AXMRiskManagementMenuKeys.RiskLikelihoods,\n text: entities.riskLikelihood.titlePlural,\n icon: entities.riskLikelihood.icon,\n priority: 2,\n path: this.entityService.createPath(module.name, entities.riskLikelihood.name),\n policy: {\n permissions: [keys.Setup],\n },\n },\n {\n name: AXMRiskManagementMenuKeys.RiskSeverities,\n text: entities.riskSeverity.titlePlural,\n icon: entities.riskSeverity.icon,\n priority: 3,\n path: this.entityService.createPath(module.name, entities.riskSeverity.name),\n policy: {\n permissions: [keys.Setup],\n },\n },\n {\n name: AXMRiskManagementMenuKeys.RiskRatings,\n text: entities.riskRating.titlePlural,\n icon: entities.riskRating.icon,\n priority: 4,\n path: this.entityService.createPath(module.name, entities.riskRating.name),\n policy: {\n permissions: [keys.Setup],\n },\n },\n ],\n },\n ]);\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\r\n\r\nimport {\r\n AXPPermissionDefinitionProvider,\r\n AXPPermissionDefinitionProviderContext,\r\n} from '@acorex-platform/framework-client/auth';\r\nimport {\n AXPCommonPermissionGroupKeys\n} from '@acorex-platform/module-common-client/contracts';\nimport {\n AXPSafetyRiskPermissionKeys\n} from '@acorex-platform/module-risk-management-client/contracts';\n\r\nimport { Injectable } from '@angular/core';\r\n\r\n//#endregion\r\n\r\n//#region ---- Permission Definition Provider ----\r\n\r\n/**\r\n * Registers risk capabilities into the shared Safety & Risk group.\r\n */\r\n@Injectable()\r\nexport class AXMRiskManagementPermissionDefinitionProvider implements AXPPermissionDefinitionProvider {\r\n async define(context: AXPPermissionDefinitionProviderContext): Promise<void> {\r\n const keys = AXPSafetyRiskPermissionKeys;\r\n const groups = AXPCommonPermissionGroupKeys;\r\n const P = '@common:safety-risk.permissions';\r\n const G = '@common:permission-groups';\r\n\r\n context.addGroup(groups.SafetyRisk.Root, `${G}.safety-risk.title`, `${G}.safety-risk.description`, { order: 30 });\n\n context\n .addGroup(\n groups.SafetyRisk.Risk,\n `${G}.safety-risk-risk.title`,\n `${G}.safety-risk-risk.description`,\n { parent: groups.SafetyRisk.Root, order: 20 },\n )\n .addPermission(keys.MaintainRisk, `${P}.maintain-risk.title`, `${P}.maintain-risk.description`)\r\n .endPermission()\r\r\n .endGroup();\r\n }\r\n}\r\n\r\n//#endregion\r\n","//#region ---- Imports ----\n\nimport { AXPModuleManifest } from '@acorex-platform/framework-client/core';\nimport { RootConfig } from '@acorex-platform/module-risk-management-client/contracts';\n\n//#endregion\n\n//#region ---- Manifest Definition ----\n\n/**\n * Risk Management module manifest.\n */\nexport const RiskManagementManifest: AXPModuleManifest = {\n name: RootConfig.module.name,\n version: '1.0.0',\n title: RootConfig.module.title,\n icon: RootConfig.module.icon,\n i18n: RootConfig.config.i18n,\n type: 'domain',\n domain: 'workplace-safety',\n required: false,\n};\n\n//#endregion\n","//#region ---- Imports ----\n\nimport type {\n AXPCatalogScopeDefinition,\n AXPCatalogScopeDefinitionProvider,\n} from '@acorex-platform/framework-client/core';\nimport { Injectable } from '@angular/core';\nimport { RootConfig } from '@acorex-platform/module-risk-management-client/contracts';\nimport { RISK_CATALOG_SCOPE_HAZARD, RISK_CATALOG_SCOPE_PPE_ITEMS } from '@acorex-platform/module-risk-management-client/contracts';\n\n//#endregion\n\n//#region ---- Constants ----\n\nconst RISK_MATRIX_CELL = `${RootConfig.module.name}.${RootConfig.entities.riskMatrixCell.name}`;\n\nconst RISK_MATRIX_CELL_CATALOG_TARGETS = [RISK_MATRIX_CELL] as const;\n\n//#endregion\n\n//#region ---- Provider ----\n\n@Injectable()\nexport class AXMRiskManagementCatalogScopeDefinitionProvider implements AXPCatalogScopeDefinitionProvider {\n async items(): Promise<AXPCatalogScopeDefinition[]> {\n return [\n {\n name: RISK_CATALOG_SCOPE_HAZARD,\n title: '@risk-management:catalog-scopes.hazard.title',\n description: '@risk-management:catalog-scopes.hazard.description',\n targets: [...RISK_MATRIX_CELL_CATALOG_TARGETS],\n icon: 'fa-light fa-triangle-exclamation',\n cssClass: 'warning-lighter-surface',\n order: 20,\n },\n {\n name: RISK_CATALOG_SCOPE_PPE_ITEMS,\n title: '@risk-management:catalog-scopes.ppe-items.title',\n description: '@risk-management:catalog-scopes.ppe-items.description',\n targets: [...RISK_MATRIX_CELL_CATALOG_TARGETS],\n icon: 'fa-light fa-helmet-safety',\n cssClass: 'info-lighter-surface',\n order: 21,\n },\n ];\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex-platform/framework-shared/widget-core';\nimport { AXP_WIDGETS_EDITOR_CATEGORY } from '@acorex-platform/framework-client/layout/widget-core';\nimport {\n AXP_DATA_PATH_PROPERTY,\n AXP_DISABLED_PROPERTY,\n AXP_LABEL_PROPERTY,\n AXP_NAME_PROPERTY,\n AXP_READONLY_PROPERTY,\n} from '@acorex-platform/framework-client/layout/widgets';\n\n//#endregion\n\n//#region ---- Widget Config ----\n\nexport const AXMRiskMatrixWidget: AXPWidgetConfig<AXMRiskMatrixWidgetConfigType> = {\n name: 'risk-matrix-editor',\n title: 'Risk Matrix',\n categories: AXP_WIDGETS_EDITOR_CATEGORY,\n groups: [AXPWidgetGroupEnum.UtilityWidget],\n description: 'Matrix widget for mapping likelihood and severity combinations to risk ratings',\n icon: 'fa-light fa-table-cells',\n type: 'editor',\n options: {\n needLabel: false,\n },\n properties: [\n AXP_NAME_PROPERTY,\n AXP_DATA_PATH_PROPERTY,\n AXP_LABEL_PROPERTY,\n AXP_READONLY_PROPERTY,\n AXP_DISABLED_PROPERTY,\n ],\n components: {\n view: {\n component: () => import('./risk-matrix-widget-view.component').then((c) => c.AXMRiskMatrixWidgetViewComponent),\n },\n edit: {\n component: () => import('./risk-matrix-widget-edit.component').then((c) => c.AXMRiskMatrixWidgetEditComponent),\n },\n column: {\n component: () =>\n import('./risk-matrix-widget-column.component').then((c) => c.AXMRiskMatrixWidgetColumnComponent),\n },\n },\n};\n\nexport type AXMRiskMatrixWidgetConfigType = {\n type: 'editor';\n};\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPWidgetDefinitionProvider } from '@acorex-platform/framework-client/layout/widget-core';\nimport { Injectable } from '@angular/core';\nimport { AXMRiskMatrixWidget } from './features/risk-matrix/risk-matrix-widget.config';\n\n//#endregion\n\n//#region ---- Risk Management Widgets Provider ----\n\n@Injectable()\nexport class AXMRiskManagementWidgetsProvider implements AXPWidgetDefinitionProvider {\n getWidgets() {\n return [AXMRiskMatrixWidget];\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/auth';\nimport { AXP_MENU_PROVIDER } from '@acorex-platform/framework-client/common';\nimport {\n AXP_CATALOG_SCOPE_DEFINITION_PROVIDER,\n AXP_MODULE_MANIFEST_PROVIDER,\n provideLazyProvider,\n} from '@acorex-platform/framework-client/core';\nimport { AXP_WIDGET_DEFINITION_PROVIDER, AXPWidgetCoreModule } from '@acorex-platform/framework-client/layout/widget-core';\nimport { provideCommandSetups } from '@acorex-platform/framework-client/runtime';\nimport { NgModule } from '@angular/core';\n\nimport { RootConfig } from '@acorex-platform/module-risk-management-client/contracts';\n\nimport { RiskManagementManifest } from './manifest';\nimport { AXMRiskManagementCatalogScopeDefinitionProvider } from './catalog-scope-definition.provider';\nimport { AXMRiskManagementWidgetsProvider } from './widget-definition.provider';\n//#endregion\n\n//#region ---- Module ----\n\n@NgModule({\n imports: [\n AXPWidgetCoreModule,\n ],\n providers: [\n {\n provide: AXP_MODULE_MANIFEST_PROVIDER,\n useValue: RiskManagementManifest,\n multi: true,\n },\n\n provideLazyProvider(AXP_PERMISSION_DEFINITION_PROVIDER, () =>\n import('./permission-definition.provider').then((m) => m.AXMRiskManagementPermissionDefinitionProvider),\n ),\n provideLazyProvider(AXP_MENU_PROVIDER, () =>\n import('./menu.provider').then((m) => m.AXMRiskManagementMenuProvider),\n ),\n \n {\n provide: AXP_WIDGET_DEFINITION_PROVIDER,\n useClass: AXMRiskManagementWidgetsProvider,\n multi: true,\n },\n {\n provide: AXP_CATALOG_SCOPE_DEFINITION_PROVIDER,\n useClass: AXMRiskManagementCatalogScopeDefinitionProvider,\n multi: true,\n },\n provideCommandSetups([\n {\n key: `${RootConfig.module.name}.${RootConfig.entities.riskMatrixCell.name}:Preview`,\n command: () =>\n import('./features/risk-matrix/commands/preview-risk-matrix-cell.command').then(\n (c) => c.AXMPreviewRiskMatrixCellCommand,\n ),\n },\n ]),\n ],\n})\nexport class AXMRiskManagementModule {}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { extractValue } from '@acorex-platform/framework-shared/core';\nimport type { AXPSpreadsheetData } from '@acorex-platform/framework-client/layout/components';\nimport {\n DEFAULT_RISK_MATRIX_AXIS_MAPPING,\n DEFAULT_RISK_MATRIX_ORIENTATION,\n RISK_MATRIX_AXIS_PROPERTIES,\n RISK_MATRIX_ORIENTATION_TITLE_KEYS,\n type AXMRiskMatrixAxisMapping,\n type AXMRiskMatrixAxisProperty,\n type AXMRiskMatrixOrientation,\n} from '@acorex-platform/module-risk-management-client/contracts';\n\n//#endregion\n\n//#region ---- Helpers ----\n\nexport function isRiskMatrixAxisProperty(value: unknown): value is AXMRiskMatrixAxisProperty {\n return typeof value === 'string' && (RISK_MATRIX_AXIS_PROPERTIES as readonly string[]).includes(value);\n}\n\nexport function resolveRiskMatrixAxisMapping(\n mapping?: Partial<AXMRiskMatrixAxisMapping> | null,\n): AXMRiskMatrixAxisMapping {\n const rowProperty = isRiskMatrixAxisProperty(mapping?.rowProperty)\n ? mapping.rowProperty\n : DEFAULT_RISK_MATRIX_AXIS_MAPPING.rowProperty;\n const columnProperty = isRiskMatrixAxisProperty(mapping?.columnProperty)\n ? mapping.columnProperty\n : DEFAULT_RISK_MATRIX_AXIS_MAPPING.columnProperty;\n const depthProperty = isRiskMatrixAxisProperty(mapping?.depthProperty)\n ? mapping.depthProperty\n : DEFAULT_RISK_MATRIX_AXIS_MAPPING.depthProperty;\n\n if (validateRiskMatrixAxisMapping({ rowProperty, columnProperty, depthProperty })) {\n return { rowProperty, columnProperty, depthProperty };\n }\n\n return { ...DEFAULT_RISK_MATRIX_AXIS_MAPPING };\n}\n\nexport function isRiskMatrixOrientation(value: unknown): value is AXMRiskMatrixOrientation {\n return value === 'likelihood-rows' || value === 'severity-rows';\n}\n\n/**\n * Normalizes orientation from persisted strings or SelectionList row objects (`{ id }`).\n */\nexport function resolveRiskMatrixOrientation(value: unknown): AXMRiskMatrixOrientation {\n const candidate = extractValue(value, 'id') ?? value;\n\n return isRiskMatrixOrientation(candidate) ? candidate : DEFAULT_RISK_MATRIX_ORIENTATION;\n}\n\n/** Translation key for the spreadsheet corner title (`row axis / column axis`). */\nexport function resolveRiskMatrixTitleKey(orientation?: unknown): string {\n return RISK_MATRIX_ORIENTATION_TITLE_KEYS[resolveRiskMatrixOrientation(orientation)];\n}\n\nfunction pickDefinedAxisMapping(\n mapping?: Partial<AXMRiskMatrixAxisMapping> | null,\n): Partial<AXMRiskMatrixAxisMapping> {\n if (!mapping) {\n return {};\n }\n\n const picked: Partial<AXMRiskMatrixAxisMapping> = {};\n\n if (isRiskMatrixAxisProperty(mapping.rowProperty)) {\n picked.rowProperty = mapping.rowProperty;\n }\n if (isRiskMatrixAxisProperty(mapping.columnProperty)) {\n picked.columnProperty = mapping.columnProperty;\n }\n if (isRiskMatrixAxisProperty(mapping.depthProperty)) {\n picked.depthProperty = mapping.depthProperty;\n }\n\n return picked;\n}\n\nexport function resolveRiskMatrixAxisMappingFromOrientation(\n orientation?: unknown,\n mapping?: Partial<AXMRiskMatrixAxisMapping> | null,\n): AXMRiskMatrixAxisMapping {\n const resolvedOrientation = resolveRiskMatrixOrientation(orientation);\n\n const orientationMapping: AXMRiskMatrixAxisMapping =\n resolvedOrientation === 'severity-rows'\n ? { rowProperty: 'severityId', columnProperty: 'likelihoodId', depthProperty: 'riskRatingId' }\n : { rowProperty: 'likelihoodId', columnProperty: 'severityId', depthProperty: 'riskRatingId' };\n\n return resolveRiskMatrixAxisMapping({\n ...pickDefinedAxisMapping(mapping),\n ...orientationMapping,\n });\n}\n\n/**\n * Persisted matrix shape is always likelihood × severity → risk rating.\n * Transpose only for display when severity is shown as rows.\n */\nexport function toDisplayMatrixData(\n canonical: AXPSpreadsheetData,\n orientation?: unknown,\n): AXPSpreadsheetData {\n if (resolveRiskMatrixOrientation(orientation) === 'likelihood-rows') {\n return canonical;\n }\n\n const display: AXPSpreadsheetData = {};\n\n Object.entries(canonical).forEach(([likelihoodId, severityMap]) => {\n if (!severityMap) {\n return;\n }\n\n Object.entries(severityMap).forEach(([severityId, ratingId]) => {\n display[severityId] ??= {};\n display[severityId][likelihoodId] = ratingId;\n });\n });\n\n return display;\n}\n\n/** Converts display-oriented matrix data back to canonical likelihood × severity storage. */\nexport function toCanonicalMatrixData(\n display: AXPSpreadsheetData,\n orientation?: unknown,\n): AXPSpreadsheetData {\n if (resolveRiskMatrixOrientation(orientation) === 'likelihood-rows') {\n return display;\n }\n\n const canonical: AXPSpreadsheetData = {};\n\n Object.entries(display).forEach(([severityId, likelihoodMap]) => {\n if (!likelihoodMap) {\n return;\n }\n\n Object.entries(likelihoodMap).forEach(([likelihoodId, ratingId]) => {\n canonical[likelihoodId] ??= {};\n canonical[likelihoodId][severityId] = ratingId;\n });\n });\n\n return canonical;\n}\n\n/**\n * Reads selected axis ids from a risk-matrix-cell record.\n * Prefers `*Ids` (multi-lookup convention), then legacy `*Id`, then joined `*List`.\n */\nexport function resolveRiskMatrixCellAxisIds(\n data: unknown,\n axis: 'likelihood' | 'severity',\n): string[] {\n if (data == null || typeof data !== 'object') {\n return [];\n }\n\n const record = data as Record<string, unknown>;\n const idsField = axis === 'likelihood' ? 'likelihoodIds' : 'severityIds';\n const legacyField = axis === 'likelihood' ? 'likelihoodId' : 'severityId';\n const listField = axis === 'likelihood' ? 'likelihoodList' : 'severityList';\n\n return normalizeRiskMatrixAxisIds(record[idsField] ?? record[legacyField] ?? record[listField]);\n}\n\n/** Normalizes lookup axis values (ids or `{ id }` rows) to string ids. */\nexport function normalizeRiskMatrixAxisIds(value: unknown): string[] {\n const items = Array.isArray(value) ? value : value != null ? [value] : [];\n\n return items\n .map((item) => {\n if (item != null && typeof item === 'object' && 'id' in item) {\n return String((item as { id: unknown }).id);\n }\n return item != null ? String(item) : '';\n })\n .filter((id) => id.length > 0);\n}\n\n/**\n * Drops matrix entries for axes no longer selected on the record.\n * Persisted shape stays likelihood × severity → risk rating.\n */\nexport function pruneMatrixToAxes(\n matrix: AXPSpreadsheetData,\n likelihoodIds: string[],\n severityIds: string[],\n): AXPSpreadsheetData {\n const likelihoodSet = new Set(likelihoodIds);\n const severitySet = new Set(severityIds);\n const pruned: AXPSpreadsheetData = {};\n\n Object.entries(matrix ?? {}).forEach(([likelihoodId, severityMap]) => {\n if (!likelihoodSet.has(likelihoodId) || severityMap == null) {\n return;\n }\n\n const row: Record<string, string | null> = {};\n Object.entries(severityMap).forEach(([severityId, ratingId]) => {\n if (severitySet.has(severityId)) {\n row[severityId] = ratingId;\n }\n });\n\n if (Object.keys(row).length > 0) {\n pruned[likelihoodId] = row;\n }\n });\n\n return pruned;\n}\n\nexport function validateRiskMatrixAxisMapping(mapping: Partial<AXMRiskMatrixAxisMapping>): boolean {\n const rowProperty = mapping.rowProperty;\n const columnProperty = mapping.columnProperty;\n const depthProperty = mapping.depthProperty;\n\n if (!isRiskMatrixAxisProperty(rowProperty)) {\n return false;\n }\n if (!isRiskMatrixAxisProperty(columnProperty)) {\n return false;\n }\n if (!isRiskMatrixAxisProperty(depthProperty)) {\n return false;\n }\n\n const values = [rowProperty, columnProperty, depthProperty];\n return new Set(values).size === values.length;\n}\n\n//#endregion\n","//#region ----- Imports -----\n\nimport { resolveToSurfaceClass } from '@acorex-platform/framework-shared/core';\n\n//#endregion\n\n//#region ----- Constants -----\n\n/** Default matrix badge surfaces when {@link color} is not set on a risk rating record. */\nexport const DEFAULT_RISK_RATING_BADGE_COLORS = {\n low: 'success-lighter-surface',\n medium: 'warning-lighter-surface',\n high: 'danger-lighter-surface',\n} as const;\n\n//#endregion\n\n//#region ----- Helpers -----\n\nexport function resolveRiskRatingBadgeColor(rating: {\n code?: string;\n title?: string;\n color?: string | null;\n}): string | undefined {\n const fromColor = resolveToSurfaceClass(rating.color);\n if (fromColor) {\n return fromColor;\n }\n\n const code = rating.code?.trim().toUpperCase();\n if (code?.endsWith('0001')) {\n return DEFAULT_RISK_RATING_BADGE_COLORS.low;\n }\n if (code?.endsWith('0002')) {\n return DEFAULT_RISK_RATING_BADGE_COLORS.medium;\n }\n if (code?.endsWith('0003')) {\n return DEFAULT_RISK_RATING_BADGE_COLORS.high;\n }\n\n const title = rating.title?.trim().toLowerCase();\n if (title === 'low') {\n return DEFAULT_RISK_RATING_BADGE_COLORS.low;\n }\n if (title === 'medium') {\n return DEFAULT_RISK_RATING_BADGE_COLORS.medium;\n }\n if (title === 'high') {\n return DEFAULT_RISK_RATING_BADGE_COLORS.high;\n }\n\n return undefined;\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { type AXPWidgetNode, AXPWidgetsList } from '@acorex-platform/framework-shared/core';\nimport {\n AXPSpreadsheetCellChangeEvent,\n AXPSpreadsheetColumn,\n AXPSpreadsheetComponent,\n AXPSpreadsheetData,\n AXPSpreadsheetItem,\n} from '@acorex-platform/framework-client/layout/components';\nimport { ensureRuntimeSurfaceClass } from '@acorex-platform/framework-client/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { isEmpty } from 'lodash';\nimport { type AXMRiskMatrixAxisMapping, type AXMRiskMatrixAxisProperty, RootConfig } from '@acorex-platform/module-risk-management-client/contracts';\nimport type { AXMRiskManagementRiskLikelihoodEntityModel } from '@acorex-platform/module-risk-management-client/contracts';\nimport type { AXMRiskManagementRiskRatingEntityModel } from '@acorex-platform/module-risk-management-client/contracts';\nimport type { AXMRiskManagementRiskSeverityEntityModel } from '@acorex-platform/module-risk-management-client/contracts';\nimport {\n resolveRiskMatrixAxisMappingFromOrientation,\n resolveRiskMatrixOrientation,\n resolveRiskMatrixTitleKey,\n toCanonicalMatrixData,\n toDisplayMatrixData,\n} from '../shared/risk-matrix-axis-mapping';\nimport { resolveRiskRatingBadgeColor } from '../shared/risk-rating-badge-color';\n\n//#endregion\n\n//#region ---- Types ----\n\ntype AxisEntityModel = {\n id: string;\n title: string;\n description?: string;\n color?: string;\n};\n\n//#endregion\n\n//#region ---- Component Definition ----\n\n@Component({\n selector: 'axm-risk-matrix',\n standalone: true,\n imports: [CommonModule, AXPSpreadsheetComponent, AXTranslationModule],\n templateUrl: './risk-matrix.component.html',\n styleUrl: './risk-matrix.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'axm-risk-matrix',\n },\n})\nexport class AXMRiskManagementRiskMatrixComponent {\n //#endregion\n\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly likelihoodDataAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.riskLikelihood.name)\n .data<string, AXMRiskManagementRiskLikelihoodEntityModel>();\n private readonly severityDataAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.riskSeverity.name)\n .data<string, AXMRiskManagementRiskSeverityEntityModel>();\n private readonly riskRatingDataAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.riskRating.name)\n .data<string, AXMRiskManagementRiskRatingEntityModel>();\n private readonly multiLanguageResolver = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- Inputs ----\n\n /** Axis mapping. Defaults to likelihood × severity → risk rating. */\n axisMapping = input<Partial<AXMRiskMatrixAxisMapping>>({});\n\n /** Selected axis item ids from the parent matrix record. */\n likelihoodIds = input<string[] | null | undefined>(null);\n severityIds = input<string[] | null | undefined>(null);\n\n /** Controls row/column layout only; persisted matrix stays likelihood × severity. */\n matrixOrientation = input<string | null | undefined>(null);\n\n /** Matrix data: { [likelihoodId]: { [severityId]: riskRatingId } } */\n value = input<AXPSpreadsheetData>({});\n\n readonly = input<boolean>(false);\n\n //#endregion\n\n //#region ---- Outputs ----\n\n valueChange = output<AXPSpreadsheetData>();\n cellChange = output<AXPSpreadsheetCellChangeEvent>();\n\n //#endregion\n\n //#region ---- Class Properties ----\n\n private readonly likelihoodItems = signal<AxisEntityModel[]>([]);\n private readonly severityItems = signal<AxisEntityModel[]>([]);\n private readonly depthItems = signal<AxisEntityModel[]>([]);\n private readonly hasLoadedAxesOnce = signal<boolean>(false);\n protected readonly isLoading = signal<boolean>(false);\n\n //#endregion\n\n //#region ---- Computed Properties ----\n\n protected readonly resolvedMatrixOrientation = computed(() =>\n resolveRiskMatrixOrientation(this.matrixOrientation()),\n );\n\n protected readonly resolvedAxisMapping = computed(() =>\n resolveRiskMatrixAxisMappingFromOrientation(this.resolvedMatrixOrientation(), this.axisMapping()),\n );\n\n protected readonly displayMatrix = computed(() =>\n toDisplayMatrixData(this.value(), this.resolvedMatrixOrientation()),\n );\n\n protected readonly matrixTitleKey = computed(() => resolveRiskMatrixTitleKey(this.resolvedMatrixOrientation()));\n\n protected readonly verticalTitles = computed<AXPSpreadsheetItem[]>(() =>\n this.toSpreadsheetItems(this.resolvedRowItems()),\n );\n\n protected readonly horizontalTitles = computed<AXPSpreadsheetItem[]>(() =>\n this.toSpreadsheetItems(this.resolvedColumnItems()),\n );\n\n protected readonly cellOptions = computed<AXPSpreadsheetItem[]>(() => this.toSpreadsheetItems(this.depthItems()));\n\n private readonly resolvedRowItems = computed(() => {\n const mapping = this.resolvedAxisMapping();\n return mapping.rowProperty === 'likelihoodId' ? this.likelihoodItems() : this.severityItems();\n });\n\n private readonly resolvedColumnItems = computed(() => {\n const mapping = this.resolvedAxisMapping();\n return mapping.columnProperty === 'likelihoodId' ? this.likelihoodItems() : this.severityItems();\n });\n\n protected readonly spreadsheetColumns = computed<AXPSpreadsheetColumn[]>(() => {\n const horizontalTitles = this.horizontalTitles();\n const ratingItems = this.depthItems();\n const cellOptions = this.toSpreadsheetItems(ratingItems);\n\n const selectBoxWidget: AXPWidgetNode = {\n type: AXPWidgetsList.Editors.SelectBox,\n options: {\n valueField: 'id',\n textField: 'title',\n cssClassField: 'color',\n dataSource: cellOptions.map((option, index) => ({\n id: option.id,\n title: option.title,\n description: option.description,\n color: ratingItems[index]?.color,\n })),\n },\n };\n\n return horizontalTitles.map((title) => ({\n name: title.id,\n title: title.title,\n description: title.description,\n path: title.id,\n widget: selectBoxWidget,\n }));\n });\n\n protected readonly spreadsheetRows = computed<Record<string, unknown>[]>(() => {\n const verticalTitles = this.verticalTitles();\n const horizontalTitles = this.horizontalTitles();\n const matrixData = this.displayMatrix();\n\n return verticalTitles.map((row) => {\n const rowData: Record<string, unknown> = {\n name: row.id,\n _rowTitle: row.title,\n _rowDescription: row.description,\n };\n\n horizontalTitles.forEach((column) => {\n rowData[column.id] = matrixData[row.id]?.[column.id] ?? null;\n });\n\n return rowData;\n });\n });\n\n //#endregion\n\n //#region ---- Lifecycle Methods ----\n\n constructor() {\n effect(() => {\n const likelihoodIds = this.likelihoodIds();\n const severityIds = this.severityIds();\n void this.loadMatrixAxes(likelihoodIds, severityIds);\n });\n }\n\n //#endregion\n\n //#region ---- Data Loading Methods ----\n\n private async loadMatrixAxes(\n likelihoodIds: string[] | null | undefined,\n severityIds: string[] | null | undefined,\n ): Promise<void> {\n const isInitialLoad = !this.hasLoadedAxesOnce();\n\n try {\n if (isInitialLoad) {\n this.isLoading.set(true);\n }\n\n const query = {\n skip: 0,\n take: 1000,\n sort: [{ field: 'levelValue', dir: 'asc' as const }],\n };\n\n const [likelihoodResult, severityResult, depthResult] = await Promise.all([\n this.queryAxisItems('likelihoodId', query, likelihoodIds),\n this.queryAxisItems('severityId', query, severityIds),\n this.queryAxisItems('riskRatingId', query),\n ]);\n\n this.likelihoodItems.set(likelihoodResult);\n this.severityItems.set(severityResult);\n this.depthItems.set(depthResult);\n this.hasLoadedAxesOnce.set(true);\n } catch (error) {\n console.error('Error loading risk matrix axes:', error);\n this.likelihoodItems.set([]);\n this.severityItems.set([]);\n this.depthItems.set([]);\n } finally {\n if (isInitialLoad) {\n this.isLoading.set(false);\n }\n }\n }\n\n private async queryAxisItems(\n property: AXMRiskMatrixAxisProperty,\n query: {\n skip: number;\n take: number;\n sort: { field: string; dir: 'asc' }[];\n },\n selectedIds?: string[] | null,\n ): Promise<AxisEntityModel[]> {\n const accessor = this.getAxisDataAccessor(property);\n const result = await accessor.query(query);\n const items = (result.items ?? []).map((item) => {\n const base = {\n id: item.id,\n title: item.title,\n description: item.description,\n };\n\n if (property !== 'riskRatingId') {\n return base;\n }\n\n const rating = item as AXMRiskManagementRiskRatingEntityModel;\n const color = ensureRuntimeSurfaceClass(resolveRiskRatingBadgeColor(rating));\n return color ? { ...base, color } : base;\n });\n\n if (isEmpty(selectedIds)) {\n return items;\n }\n\n const selectedIdSet = new Set(selectedIds);\n return items.filter((item) => selectedIdSet.has(item.id));\n }\n\n private getAxisDataAccessor(property: AXMRiskMatrixAxisProperty) {\n switch (property) {\n case 'severityId':\n return this.severityDataAccessor;\n case 'riskRatingId':\n return this.riskRatingDataAccessor;\n case 'likelihoodId':\n default:\n return this.likelihoodDataAccessor;\n }\n }\n\n //#endregion\n\n //#region ---- Data Transformation Methods ----\n\n private toSpreadsheetItems(items: AxisEntityModel[]): AXPSpreadsheetItem[] {\n const resolve = (v: unknown) => this.multiLanguageResolver.resolve(v as never);\n return items.map((item) => ({\n id: item.id,\n title: resolve(item.title),\n description: item.description ? resolve(item.description) : undefined,\n }));\n }\n\n private convertSpreadsheetRowsToMatrixData(rows: Record<string, unknown>[]): AXPSpreadsheetData {\n const horizontalTitles = this.horizontalTitles();\n const matrixData: AXPSpreadsheetData = {};\n\n rows.forEach((row) => {\n const rowId = row['name'] as string | undefined;\n if (!rowId) {\n return;\n }\n\n matrixData[rowId] = {};\n horizontalTitles.forEach((column) => {\n matrixData[rowId][column.id] = (row[column.id] as string | null) ?? null;\n });\n });\n\n return matrixData;\n }\n\n //#endregion\n\n //#region ---- Event Handlers ----\n\n protected handleSpreadsheetChange(rows: Record<string, unknown>[]): void {\n const displayMatrix = this.convertSpreadsheetRowsToMatrixData(rows);\n this.valueChange.emit(toCanonicalMatrixData(displayMatrix, this.resolvedMatrixOrientation()));\n }\n\n protected handleCellChange(event: AXPSpreadsheetCellChangeEvent): void {\n this.cellChange.emit(event);\n }\n\n //#endregion\n}\n\n//#endregion\n","<div class=\"__container\">\n <div class=\"__matrix-section\">\n @if (isLoading()) {\n <div class=\"__loading\">\n <span>{{ '@risk-management:risk-matrix-cells.components.risk-matrix.messages.loading' | translate | async }}</span>\n </div>\n } @else {\n @for (_ of [resolvedMatrixOrientation()]; track _) {\n <axp-spreadsheet\n [title]=\"(matrixTitleKey() | translate | async) ?? ''\"\n [columns]=\"spreadsheetColumns()\"\n [rowsInput]=\"spreadsheetRows()\"\n [rowMode]=\"'fixed'\"\n [readonly]=\"readonly()\"\n [allowRemoveRows]=\"false\"\n [rowTitlePath]=\"'_rowTitle'\"\n [rowDescriptionPath]=\"'_rowDescription'\"\n (cellChange)=\"handleCellChange($event)\"\n (spreadsheetChange)=\"handleSpreadsheetChange($event)\"\n ></axp-spreadsheet>\n }\n }\n </div>\n</div>\n","//#region ---- Imports ----\n\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { resolveEntityRowDisplayText } from '@acorex-platform/framework-client/common';\nimport { AXPWidgetsList } from '@acorex-platform/framework-shared/core';\nimport { AXPLayoutBuilderService } from '@acorex-platform/framework-client/layout/builder';\nimport { inject, Injectable } from '@angular/core';\nimport { defaultTo, get, isEmpty } from 'lodash';\n\n//#endregion\n\n//#region ---- Types ----\n\nexport interface AXMRiskMatrixViewerOpenOptions {\n context: Record<string, unknown>;\n matrixPath?: string;\n title?: string;\n}\n\n//#endregion\n\n//#region ---- Risk Matrix Viewer Service ----\n\n/**\n * Opens a read-only risk matrix preview dialog from row or record context.\n */\n@Injectable({ providedIn: 'root' })\nexport class AXMRiskMatrixViewerService {\n //#region ---- Services & Dependencies ----\n\n private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n private readonly translation = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- Public API ----\n\n async open(options: AXMRiskMatrixViewerOpenOptions): Promise<void> {\n const matrixPath = defaultTo(options.matrixPath, 'matrix');\n const matrixValue = get(options.context, matrixPath);\n\n if (isEmpty(matrixValue)) {\n return;\n }\n\n await this.layoutBuilder\n .create()\n .dialog((dialog) => {\n dialog\n .setTitle(this.resolveDialogTitle(options.title))\n .setSize('lg')\n .setCloseButton(true)\n .setContext({ ...options.context })\n .content((layout) => {\n layout.flex((flex) => {\n flex.setDirection('column');\n flex.formField('', (field) => {\n field\n .path(matrixPath)\n .setShowLabel(false)\n .customWidget(AXPWidgetsList.Editors.RiskMatrix, { readonly: true });\n });\n });\n });\n })\n .show();\n }\n\n //#endregion\n\n //#region ---- Utility Methods ----\n\n private resolveDialogTitle(title: string | undefined): string {\n const resolved = resolveEntityRowDisplayText(title, this.translation.getActiveLang());\n return resolved || 'Risk Matrix';\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXFormatService } from '@acorex/core/format';\nimport { AXPEntity } from '@acorex-platform/framework-shared/entity';\nimport { resolveEntityRowDisplayTitle } from '@acorex-platform/framework-client/common';\n\nimport { AXMRiskMatrixViewerOpenOptions, AXMRiskMatrixViewerService } from './risk-matrix-viewer.service';\n\n//#endregion\n\n//#region ---- Types ----\n\nexport interface AXMRiskMatrixViewerOpenParams {\n context: Record<string, unknown>;\n matrixPath?: string;\n widgetOptions?: Record<string, unknown>;\n formatService: AXFormatService;\n activeLang: string;\n data?: Record<string, unknown>;\n entity?: AXPEntity | null;\n fallbackTitleKey?: string;\n}\n\n//#endregion\n\n//#region ---- Viewer Open Helper ----\n\nexport function buildRiskMatrixViewerOpenOptions(\n params: AXMRiskMatrixViewerOpenParams,\n): AXMRiskMatrixViewerOpenOptions {\n const matrixPath = params.matrixPath ?? 'matrix';\n const title = params.data\n ? resolveEntityRowDisplayTitle({\n data: params.data,\n widgetOptions: params.widgetOptions,\n formatService: params.formatService,\n activeLang: params.activeLang,\n entity: params.entity,\n })\n : '';\n\n return {\n context: params.context,\n matrixPath,\n title: title || params.fallbackTitleKey,\n };\n}\n\nexport async function openRiskMatrixViewer(\n viewer: AXMRiskMatrixViewerService,\n params: AXMRiskMatrixViewerOpenParams,\n): Promise<void> {\n await viewer.open(buildRiskMatrixViewerOpenOptions(params));\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXFormatService } from '@acorex/core/format';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPColumnWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { isEmpty } from 'lodash';\n\nimport { openRiskMatrixViewer } from './risk-matrix-viewer-open.util';\nimport { AXMRiskMatrixViewerService } from './risk-matrix-viewer.service';\n\n//#endregion\n\n//#region ---- Component: Risk Matrix Widget Column ----\n\n@Component({\n selector: 'axm-risk-matrix-widget-column',\n imports: [AXButtonModule, AXDecoratorModule],\n template: `\n <div class=\"flex items-center gap-2\">\n @if (hasMatrix()) {\n <ax-button class=\"ax-sm\" look=\"twotone\" color=\"default\" (click)=\"showPopup()\">\n <ax-icon>\n <i class=\"fa-light fa-table-cells\"></i>\n </ax-icon>\n </ax-button>\n } @else {\n <span>-</span>\n }\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n inputs: ['rawValue', 'rowData'],\n})\nexport class AXMRiskMatrixWidgetColumnComponent extends AXPColumnWidgetComponent<Record<string, unknown>> {\n //#region ---- Services & Dependencies ----\n\n private readonly riskMatrixViewer = inject(AXMRiskMatrixViewerService);\n private readonly formatService = inject(AXFormatService);\n private readonly translation = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- UI Handlers ----\n\n hasMatrix(): boolean {\n return !isEmpty(this.rawValue);\n }\n\n async showPopup(): Promise<void> {\n const rowData = this.rowData as Record<string, unknown> | undefined;\n if (!rowData || isEmpty(this.rawValue)) {\n return;\n }\n\n await openRiskMatrixViewer(this.riskMatrixViewer, {\n context: rowData,\n matrixPath: this.path,\n data: rowData,\n widgetOptions: { ...(this.options as Record<string, unknown>) },\n formatService: this.formatService,\n activeLang: this.translation.getActiveLang(),\n fallbackTitleKey: '@risk-management:risk-matrix-cells.entities.risk-matrix-cell.fields.matrix.title',\n });\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPSpreadsheetData } from '@acorex-platform/framework-client/layout/components';\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed, effect, ViewEncapsulation } from '@angular/core';\nimport { get, isEqual } from 'lodash';\nimport { type AXMRiskMatrixAxisMapping } from '@acorex-platform/module-risk-management-client/contracts';\nimport {\n pruneMatrixToAxes,\n resolveRiskMatrixAxisMappingFromOrientation,\n resolveRiskMatrixCellAxisIds,\n resolveRiskMatrixOrientation,\n} from '../shared/risk-matrix-axis-mapping';\nimport { AXMRiskManagementRiskMatrixComponent } from './risk-matrix.component';\n\n//#endregion\n\n//#region ---- Component Definition ----\n\n@Component({\n selector: 'axm-risk-matrix-widget-edit',\n standalone: true,\n imports: [AXMRiskManagementRiskMatrixComponent],\n template: `\n <axm-risk-matrix\n [axisMapping]=\"axisMapping()\"\n [matrixOrientation]=\"matrixOrientation()\"\n [likelihoodIds]=\"likelihoodIds()\"\n [severityIds]=\"severityIds()\"\n [value]=\"matrixValue()\"\n [readonly]=\"readonly()\"\n (valueChange)=\"handleValueChange($any($event))\"\n ></axm-risk-matrix>\n `,\n host: {\n class: 'block w-full',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXMRiskMatrixWidgetEditComponent extends AXPValueWidgetComponent<AXPSpreadsheetData> {\n //#region ---- Lifecycle Methods ----\n\n constructor() {\n super();\n\n effect(() => {\n const likelihoodIds = this.likelihoodIds();\n const severityIds = this.severityIds();\n const matrix = (this.getValue() as AXPSpreadsheetData) ?? {};\n const prunedMatrix = pruneMatrixToAxes(matrix, likelihoodIds, severityIds);\n\n if (!isEqual(matrix, prunedMatrix)) {\n this.setValue(prunedMatrix);\n }\n });\n }\n\n //#endregion\n\n //#region ---- Computed Properties ----\n\n protected readonly = computed<boolean>(() => {\n const options = this.options();\n return options?.['readonly'] ?? false;\n });\n\n protected axisMapping = computed<AXMRiskMatrixAxisMapping>(() => {\n this.contextService.changeEvent();\n const options = this.options();\n const orientation = get(this.contextService.data(), 'matrixOrientation') as string | null | undefined;\n\n return resolveRiskMatrixAxisMappingFromOrientation(orientation, {\n rowProperty: options?.['rowProperty'],\n columnProperty: options?.['columnProperty'],\n depthProperty: options?.['depthProperty'],\n });\n });\n\n protected matrixOrientation = computed(() => {\n this.contextService.changeEvent();\n return resolveRiskMatrixOrientation(get(this.contextService.data(), 'matrixOrientation'));\n });\n\n protected likelihoodIds = computed<string[]>(() => {\n this.contextService.changeEvent();\n return resolveRiskMatrixCellAxisIds(this.contextService.data(), 'likelihood');\n });\n\n protected severityIds = computed<string[]>(() => {\n this.contextService.changeEvent();\n return resolveRiskMatrixCellAxisIds(this.contextService.data(), 'severity');\n });\n\n protected matrixValue = computed<AXPSpreadsheetData>(() => {\n return (this.getValue() as AXPSpreadsheetData) || {};\n });\n\n //#endregion\n\n //#region ---- Event Handlers ----\n\n protected handleValueChange(data: AXPSpreadsheetData): void {\n if (data) {\n this.setValue(data);\n }\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPSpreadsheetData } from '@acorex-platform/framework-client/layout/components';\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed, ViewEncapsulation } from '@angular/core';\nimport { get } from 'lodash';\nimport { type AXMRiskMatrixAxisMapping } from '@acorex-platform/module-risk-management-client/contracts';\nimport {\n resolveRiskMatrixAxisMappingFromOrientation,\n resolveRiskMatrixCellAxisIds,\n resolveRiskMatrixOrientation,\n} from '../shared/risk-matrix-axis-mapping';\nimport { AXMRiskManagementRiskMatrixComponent } from './risk-matrix.component';\n\n//#endregion\n\n//#region ---- Component Definition ----\n\n@Component({\n selector: 'axm-risk-matrix-widget-view',\n standalone: true,\n imports: [AXMRiskManagementRiskMatrixComponent],\n template: `\n <axm-risk-matrix\n [axisMapping]=\"axisMapping()\"\n [matrixOrientation]=\"matrixOrientation()\"\n [likelihoodIds]=\"likelihoodIds()\"\n [severityIds]=\"severityIds()\"\n [value]=\"matrixValue()\"\n [readonly]=\"true\"\n ></axm-risk-matrix>\n `,\n host: {\n class: 'block w-full',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXMRiskMatrixWidgetViewComponent extends AXPValueWidgetComponent<AXPSpreadsheetData> {\n //#region ---- Computed Properties ----\n\n protected axisMapping = computed<AXMRiskMatrixAxisMapping>(() => {\n this.contextService.changeEvent();\n const options = this.options();\n const orientation = get(this.contextService.data(), 'matrixOrientation') as string | null | undefined;\n\n return resolveRiskMatrixAxisMappingFromOrientation(orientation, {\n rowProperty: options?.['rowProperty'],\n columnProperty: options?.['columnProperty'],\n depthProperty: options?.['depthProperty'],\n });\n });\n\n protected matrixOrientation = computed(() => {\n this.contextService.changeEvent();\n return resolveRiskMatrixOrientation(get(this.contextService.data(), 'matrixOrientation'));\n });\n\n protected likelihoodIds = computed<string[]>(() => {\n this.contextService.changeEvent();\n return resolveRiskMatrixCellAxisIds(this.contextService.data(), 'likelihood');\n });\n\n protected severityIds = computed<string[]>(() => {\n this.contextService.changeEvent();\n return resolveRiskMatrixCellAxisIds(this.contextService.data(), 'severity');\n });\n\n protected matrixValue = computed<AXPSpreadsheetData>(() => {\n return (this.getValue() as AXPSpreadsheetData) || {};\n });\n\n //#endregion\n}\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2"],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-module-risk-management-client.mjs","sources":["../../../../libs/modules/risk-management/client/src/lib/menu.provider.ts","../../../../libs/modules/risk-management/client/src/lib/permission-definition.provider.ts","../../../../libs/modules/risk-management/client/src/lib/catalog-scope-definition.provider.ts","../../../../libs/modules/risk-management/client/src/lib/features/risk-matrix/risk-matrix-widget.config.ts","../../../../libs/modules/risk-management/client/src/lib/widget-definition.provider.ts","../../../../libs/modules/risk-management/client/src/lib/risk-management.module.ts","../../../../libs/modules/risk-management/client/src/lib/features/shared/risk-matrix-axis-mapping.ts","../../../../libs/modules/risk-management/client/src/lib/features/shared/risk-rating-badge-color.ts","../../../../libs/modules/risk-management/client/src/lib/features/risk-matrix/risk-matrix.component.ts","../../../../libs/modules/risk-management/client/src/lib/features/risk-matrix/risk-matrix.component.html","../../../../libs/modules/risk-management/client/src/lib/features/risk-matrix/risk-matrix-viewer.service.ts","../../../../libs/modules/risk-management/client/src/lib/features/risk-matrix/risk-matrix-viewer-open.util.ts","../../../../libs/modules/risk-management/client/src/lib/features/risk-matrix/risk-matrix-widget-column.component.ts","../../../../libs/modules/risk-management/client/src/lib/features/risk-matrix/risk-matrix-widget-edit.component.ts","../../../../libs/modules/risk-management/client/src/lib/features/risk-matrix/risk-matrix-widget-view.component.ts","../../../../libs/modules/risk-management/client/src/acorex-platform-module-risk-management-client.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXPCommonMenuKeys } from '@acorex-platform/module-common-client/contracts';\nimport { AXPMenuProvider, AXPMenuProviderContext } from '@acorex-platform/framework-client/common';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { inject } from '@angular/core';\nimport {\n RootConfig,\n AXPSafetyRiskPermissionKeys,\n AXMRiskManagementMenuKeys,\n} from '@acorex-platform/module-risk-management-client/contracts';\n\n//#endregion\n\n//#region ---- Menu provider ----\n\nexport class AXMRiskManagementMenuProvider implements AXPMenuProvider {\n private readonly entityService = inject(AXPEntityService);\n\n async provide(context: AXPMenuProviderContext): Promise<void> {\n const module = RootConfig.module;\n const entities = RootConfig.entities;\n const keys = AXPSafetyRiskPermissionKeys;\n\n context.find(AXPCommonMenuKeys.Configuration).addItems([\n {\n name: AXMRiskManagementMenuKeys.Root,\n priority: 8950,\n text: `@${RootConfig.config.i18n}:module.menus.risk`,\n icon: module.icon,\n type: 'menu',\n policy: {\n features: [module.name],\n },\n children: [\n {\n name: AXMRiskManagementMenuKeys.RiskMatrices,\n text: entities.riskMatrix.titlePlural,\n icon: entities.riskMatrix.icon,\n priority: 1,\n path: this.entityService.createPath(module.name, entities.riskMatrix.name),\n policy: {\n permissions: [keys.MaintainRisk],\n },\n },\n {\n name: AXMRiskManagementMenuKeys.RiskLikelihoodScales,\n text: entities.riskLikelihoodScale.titlePlural,\n icon: entities.riskLikelihoodScale.icon,\n priority: 2,\n path: this.entityService.createPath(module.name, entities.riskLikelihoodScale.name),\n policy: {\n permissions: [keys.Setup],\n },\n },\n {\n name: AXMRiskManagementMenuKeys.RiskSeverityScales,\n text: entities.riskSeverityScale.titlePlural,\n icon: entities.riskSeverityScale.icon,\n priority: 3,\n path: this.entityService.createPath(module.name, entities.riskSeverityScale.name),\n policy: {\n permissions: [keys.Setup],\n },\n },\n {\n name: AXMRiskManagementMenuKeys.RiskRatingScales,\n text: entities.riskRatingScale.titlePlural,\n icon: entities.riskRatingScale.icon,\n priority: 4,\n path: this.entityService.createPath(module.name, entities.riskRatingScale.name),\n policy: {\n permissions: [keys.Setup],\n },\n },\n ],\n },\n ]);\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\r\n\r\nimport {\r\n AXPPermissionDefinitionProvider,\r\n AXPPermissionDefinitionProviderContext,\r\n} from '@acorex-platform/framework-client/auth';\r\nimport {\n AXPCommonPermissionGroupKeys\n} from '@acorex-platform/module-common-client/contracts';\nimport {\n AXPSafetyRiskPermissionKeys\n} from '@acorex-platform/module-risk-management-client/contracts';\n\r\nimport { Injectable } from '@angular/core';\r\n\r\n//#endregion\r\n\r\n//#region ---- Permission Definition Provider ----\r\n\r\n/**\r\n * Registers risk capabilities into the shared Safety & Risk group.\r\n */\r\n@Injectable()\r\nexport class AXMRiskManagementPermissionDefinitionProvider implements AXPPermissionDefinitionProvider {\r\n async define(context: AXPPermissionDefinitionProviderContext): Promise<void> {\r\n const keys = AXPSafetyRiskPermissionKeys;\r\n const groups = AXPCommonPermissionGroupKeys;\r\n const P = '@common:safety-risk.permissions';\r\n const G = '@common:permission-groups';\r\n\r\n context.addGroup(groups.SafetyRisk.Root, `${G}.safety-risk.title`, `${G}.safety-risk.description`, { order: 30 });\n\n context\n .addGroup(\n groups.SafetyRisk.Risk,\n `${G}.safety-risk-risk.title`,\n `${G}.safety-risk-risk.description`,\n { parent: groups.SafetyRisk.Root, order: 20 },\n )\n .addPermission(keys.MaintainRisk, `${P}.maintain-risk.title`, `${P}.maintain-risk.description`)\r\n .endPermission()\r\r\n .endGroup();\r\n }\r\n}\r\n\r\n//#endregion\r\n","//#region ---- Imports ----\n\nimport type {\n AXPCatalogScopeDefinition,\n AXPCatalogScopeDefinitionProvider,\n} from '@acorex-platform/framework-client/core';\nimport { Injectable } from '@angular/core';\nimport {\n RootConfig,\n RISK_CATALOG_SCOPE_HAZARD,\n RISK_CATALOG_SCOPE_PPE_ITEMS,\n} from '@acorex-platform/module-risk-management-client/contracts';\n\n//#endregion\n\n//#region ---- Constants ----\n\nconst RISK_MATRIX = `${RootConfig.module.name}.${RootConfig.entities.riskMatrix.name}`;\n\nconst RISK_MATRIX_CATALOG_TARGETS = [RISK_MATRIX] as const;\n\n//#endregion\n\n//#region ---- Provider ----\n\n@Injectable()\nexport class AXMRiskManagementCatalogScopeDefinitionProvider implements AXPCatalogScopeDefinitionProvider {\n async items(): Promise<AXPCatalogScopeDefinition[]> {\n return [\n {\n name: RISK_CATALOG_SCOPE_HAZARD,\n title: '@risk-management:catalog-scopes.hazard.title',\n description: '@risk-management:catalog-scopes.hazard.description',\n targets: [...RISK_MATRIX_CATALOG_TARGETS],\n icon: 'fa-light fa-triangle-exclamation',\n cssClass: 'warning-lighter-surface',\n order: 20,\n },\n {\n name: RISK_CATALOG_SCOPE_PPE_ITEMS,\n title: '@risk-management:catalog-scopes.ppe-items.title',\n description: '@risk-management:catalog-scopes.ppe-items.description',\n targets: [...RISK_MATRIX_CATALOG_TARGETS],\n icon: 'fa-light fa-helmet-safety',\n cssClass: 'info-lighter-surface',\n order: 21,\n },\n ];\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex-platform/framework-shared/widget-core';\nimport { AXP_WIDGETS_EDITOR_CATEGORY } from '@acorex-platform/framework-client/layout/widget-core';\nimport {\n AXP_DATA_PATH_PROPERTY,\n AXP_DISABLED_PROPERTY,\n AXP_LABEL_PROPERTY,\n AXP_NAME_PROPERTY,\n AXP_READONLY_PROPERTY,\n} from '@acorex-platform/framework-client/layout/widgets';\n\n//#endregion\n\n//#region ---- Widget Config ----\n\nexport const AXMRiskMatrixWidget: AXPWidgetConfig<AXMRiskMatrixWidgetConfigType> = {\n name: 'risk-matrix-editor',\n title: 'Risk Matrix',\n categories: AXP_WIDGETS_EDITOR_CATEGORY,\n groups: [AXPWidgetGroupEnum.UtilityWidget],\n description: 'Matrix widget for mapping likelihood and severity combinations to risk ratings',\n icon: 'fa-light fa-table-cells',\n type: 'editor',\n options: {\n needLabel: false,\n },\n properties: [\n AXP_NAME_PROPERTY,\n AXP_DATA_PATH_PROPERTY,\n AXP_LABEL_PROPERTY,\n AXP_READONLY_PROPERTY,\n AXP_DISABLED_PROPERTY,\n ],\n components: {\n view: {\n component: () => import('./risk-matrix-widget-view.component').then((c) => c.AXMRiskMatrixWidgetViewComponent),\n },\n edit: {\n component: () => import('./risk-matrix-widget-edit.component').then((c) => c.AXMRiskMatrixWidgetEditComponent),\n },\n column: {\n component: () =>\n import('./risk-matrix-widget-column.component').then((c) => c.AXMRiskMatrixWidgetColumnComponent),\n },\n },\n};\n\nexport type AXMRiskMatrixWidgetConfigType = {\n type: 'editor';\n};\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPWidgetDefinitionProvider } from '@acorex-platform/framework-client/layout/widget-core';\nimport { Injectable } from '@angular/core';\nimport { AXMRiskMatrixWidget } from './features/risk-matrix/risk-matrix-widget.config';\n\n//#endregion\n\n//#region ---- Risk Management Widgets Provider ----\n\n@Injectable()\nexport class AXMRiskManagementWidgetsProvider implements AXPWidgetDefinitionProvider {\n getWidgets() {\n return [AXMRiskMatrixWidget];\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/auth';\nimport { AXP_MENU_PROVIDER } from '@acorex-platform/framework-client/common';\nimport {\n AXP_CATALOG_SCOPE_DEFINITION_PROVIDER,\n provideLazyProvider,\n} from '@acorex-platform/framework-client/core';\nimport { AXP_WIDGET_DEFINITION_PROVIDER, AXPWidgetCoreModule } from '@acorex-platform/framework-client/layout/widget-core';\nimport { provideCommandSetups } from '@acorex-platform/framework-client/runtime';\nimport { NgModule } from '@angular/core';\n\nimport { RootConfig } from '@acorex-platform/module-risk-management-client/contracts';\n\nimport { AXMRiskManagementCatalogScopeDefinitionProvider } from './catalog-scope-definition.provider';\nimport { AXMRiskManagementWidgetsProvider } from './widget-definition.provider';\n//#endregion\n\n//#region ---- Module ----\n\n@NgModule({\n imports: [\n AXPWidgetCoreModule,\n ],\n providers: [\n\n provideLazyProvider(AXP_PERMISSION_DEFINITION_PROVIDER, () =>\n import('./permission-definition.provider').then((m) => m.AXMRiskManagementPermissionDefinitionProvider),\n ),\n provideLazyProvider(AXP_MENU_PROVIDER, () =>\n import('./menu.provider').then((m) => m.AXMRiskManagementMenuProvider),\n ),\n \n {\n provide: AXP_WIDGET_DEFINITION_PROVIDER,\n useClass: AXMRiskManagementWidgetsProvider,\n multi: true,\n },\n {\n provide: AXP_CATALOG_SCOPE_DEFINITION_PROVIDER,\n useClass: AXMRiskManagementCatalogScopeDefinitionProvider,\n multi: true,\n },\n provideCommandSetups([\n {\n key: `${RootConfig.module.name}.${RootConfig.entities.riskMatrix.name}:Preview`,\n command: () =>\n import('./features/risk-matrix/commands/preview-risk-matrix.command').then(\n (c) => c.AXMPreviewRiskMatrixCommand,\n ),\n },\n ]),\n ],\n})\nexport class AXMRiskManagementModule {}\n\n//#endregion\n","//#region ----- Imports -----\n\nimport { extractValue } from '@acorex-platform/framework-shared/core';\nimport type { AXPSpreadsheetData } from '@acorex-platform/framework-client/layout/components';\nimport {\n DEFAULT_RISK_MATRIX_AXIS_MAPPING,\n DEFAULT_RISK_MATRIX_ORIENTATION,\n RISK_MATRIX_AXIS_PROPERTIES,\n RISK_MATRIX_ORIENTATION_TITLE_KEYS,\n resolveRiskLikelihoodLevelCodes,\n resolveRiskRatingLevelCodes,\n resolveRiskSeverityLevelCodes,\n type AXMRiskLikelihoodLevelItemModel,\n type AXMRiskMatrixAxisMapping,\n type AXMRiskMatrixAxisProperty,\n type AXMRiskMatrixOrientation,\n type AXMRiskRatingLevelItemModel,\n type AXMRiskSeverityLevelItemModel,\n} from '@acorex-platform/module-risk-management-client/contracts';\n\n//#endregion\n\n//#region ----- Types -----\n\ntype RiskMatrixScaleIdField = 'likelihoodScaleId' | 'severityScaleId' | 'ratingScaleId';\ntype RiskMatrixScaleSnapshotField = 'likelihoodScale' | 'severityScale' | 'ratingScale';\n\n//#endregion\n\n//#region ----- Helpers -----\n\nexport function isRiskMatrixAxisProperty(value: unknown): value is AXMRiskMatrixAxisProperty {\n return typeof value === 'string' && (RISK_MATRIX_AXIS_PROPERTIES as readonly string[]).includes(value);\n}\n\nexport function resolveRiskMatrixAxisMapping(\n mapping?: Partial<AXMRiskMatrixAxisMapping> | null,\n): AXMRiskMatrixAxisMapping {\n const rowProperty = isRiskMatrixAxisProperty(mapping?.rowProperty)\n ? mapping.rowProperty\n : DEFAULT_RISK_MATRIX_AXIS_MAPPING.rowProperty;\n const columnProperty = isRiskMatrixAxisProperty(mapping?.columnProperty)\n ? mapping.columnProperty\n : DEFAULT_RISK_MATRIX_AXIS_MAPPING.columnProperty;\n const depthProperty = isRiskMatrixAxisProperty(mapping?.depthProperty)\n ? mapping.depthProperty\n : DEFAULT_RISK_MATRIX_AXIS_MAPPING.depthProperty;\n\n if (validateRiskMatrixAxisMapping({ rowProperty, columnProperty, depthProperty })) {\n return { rowProperty, columnProperty, depthProperty };\n }\n\n return { ...DEFAULT_RISK_MATRIX_AXIS_MAPPING };\n}\n\nexport function isRiskMatrixOrientation(value: unknown): value is AXMRiskMatrixOrientation {\n return value === 'likelihood-rows' || value === 'severity-rows';\n}\n\n/**\n * Normalizes orientation from persisted strings or SelectionList row objects (`{ id }`).\n */\nexport function resolveRiskMatrixOrientation(value: unknown): AXMRiskMatrixOrientation {\n const candidate = extractValue(value, 'id') ?? value;\n\n return isRiskMatrixOrientation(candidate) ? candidate : DEFAULT_RISK_MATRIX_ORIENTATION;\n}\n\n/** Translation key for the spreadsheet corner title (`row axis / column axis`). */\nexport function resolveRiskMatrixTitleKey(orientation?: unknown): string {\n return RISK_MATRIX_ORIENTATION_TITLE_KEYS[resolveRiskMatrixOrientation(orientation)];\n}\n\nfunction pickDefinedAxisMapping(\n mapping?: Partial<AXMRiskMatrixAxisMapping> | null,\n): Partial<AXMRiskMatrixAxisMapping> {\n if (!mapping) {\n return {};\n }\n\n const picked: Partial<AXMRiskMatrixAxisMapping> = {};\n\n if (isRiskMatrixAxisProperty(mapping.rowProperty)) {\n picked.rowProperty = mapping.rowProperty;\n }\n if (isRiskMatrixAxisProperty(mapping.columnProperty)) {\n picked.columnProperty = mapping.columnProperty;\n }\n if (isRiskMatrixAxisProperty(mapping.depthProperty)) {\n picked.depthProperty = mapping.depthProperty;\n }\n\n return picked;\n}\n\nexport function resolveRiskMatrixAxisMappingFromOrientation(\n orientation?: unknown,\n mapping?: Partial<AXMRiskMatrixAxisMapping> | null,\n): AXMRiskMatrixAxisMapping {\n const resolvedOrientation = resolveRiskMatrixOrientation(orientation);\n\n const orientationMapping: AXMRiskMatrixAxisMapping =\n resolvedOrientation === 'severity-rows'\n ? { rowProperty: 'severityId', columnProperty: 'likelihoodId', depthProperty: 'riskRatingId' }\n : { rowProperty: 'likelihoodId', columnProperty: 'severityId', depthProperty: 'riskRatingId' };\n\n return resolveRiskMatrixAxisMapping({\n ...pickDefinedAxisMapping(mapping),\n ...orientationMapping,\n });\n}\n\n/**\n * Persisted matrix shape is always likelihood × severity → risk rating.\n * Transpose only for display when severity is shown as rows.\n */\nexport function toDisplayMatrixData(\n canonical: AXPSpreadsheetData,\n orientation?: unknown,\n): AXPSpreadsheetData {\n if (resolveRiskMatrixOrientation(orientation) === 'likelihood-rows') {\n return canonical;\n }\n\n const display: AXPSpreadsheetData = {};\n\n Object.entries(canonical).forEach(([likelihoodId, severityMap]) => {\n if (!severityMap) {\n return;\n }\n\n Object.entries(severityMap).forEach(([severityId, ratingId]) => {\n display[severityId] ??= {};\n display[severityId][likelihoodId] = ratingId;\n });\n });\n\n return display;\n}\n\n/** Converts display-oriented matrix data back to canonical likelihood × severity storage. */\nexport function toCanonicalMatrixData(\n display: AXPSpreadsheetData,\n orientation?: unknown,\n): AXPSpreadsheetData {\n if (resolveRiskMatrixOrientation(orientation) === 'likelihood-rows') {\n return display;\n }\n\n const canonical: AXPSpreadsheetData = {};\n\n Object.entries(display).forEach(([severityId, likelihoodMap]) => {\n if (!likelihoodMap) {\n return;\n }\n\n Object.entries(likelihoodMap).forEach(([likelihoodId, ratingId]) => {\n canonical[likelihoodId] ??= {};\n canonical[likelihoodId][severityId] = ratingId;\n });\n });\n\n return canonical;\n}\n\n/**\n * Reads selected axis **level codes** from a risk-matrix record.\n * Codes come from the selected scale snapshot (`*.scale.levels`), never from scale entity ids.\n */\nexport function resolveRiskMatrixAxisCodes(\n data: unknown,\n axis: 'likelihood' | 'severity' | 'rating',\n): string[] {\n if (data == null || typeof data !== 'object') {\n return [];\n }\n\n const record = data as Record<string, unknown>;\n\n if (axis === 'likelihood') {\n const scale = record['likelihoodScale'] as { levels?: AXMRiskLikelihoodLevelItemModel[] } | undefined;\n return resolveRiskLikelihoodLevelCodes(scale?.levels);\n }\n\n if (axis === 'severity') {\n const scale = record['severityScale'] as { levels?: AXMRiskSeverityLevelItemModel[] } | undefined;\n return resolveRiskSeverityLevelCodes(scale?.levels);\n }\n\n const scale = record['ratingScale'] as { levels?: AXMRiskRatingLevelItemModel[] } | undefined;\n return resolveRiskRatingLevelCodes(scale?.levels);\n}\n\n/** Resolves a lookup uuid that may be stored as a string or `{ id }` row. */\nexport function resolveRiskMatrixScaleId(value: unknown): string | undefined {\n const candidate = extractValue(value, 'id') ?? value;\n if (typeof candidate === 'string' && candidate.trim().length > 0) {\n return candidate.trim();\n }\n\n return undefined;\n}\n\n/**\n * Create mode may have the snapshot (`ratingScale.id`) before `ratingScaleId` is committed.\n * Edit mode has both after GET join.\n */\nexport function resolveRiskMatrixScaleIdFromRecord(\n data: unknown,\n idField: RiskMatrixScaleIdField,\n snapshotField: RiskMatrixScaleSnapshotField,\n): string | undefined {\n if (data == null || typeof data !== 'object') {\n return undefined;\n }\n\n const record = data as Record<string, unknown>;\n return resolveRiskMatrixScaleId(record[idField]) ?? resolveRiskMatrixScaleId(record[snapshotField]);\n}\n\n/**\n * Widget-context scale id: path `getValue` first, then the full record snapshot.\n */\nexport function resolveRiskMatrixWidgetScaleId(\n getValue: (path: string) => unknown,\n data: unknown,\n idField: RiskMatrixScaleIdField,\n snapshotField: RiskMatrixScaleSnapshotField,\n): string | undefined {\n return (\n resolveRiskMatrixScaleId(getValue(idField)) ??\n resolveRiskMatrixScaleId(getValue(snapshotField)) ??\n resolveRiskMatrixScaleIdFromRecord(data, idField, snapshotField)\n );\n}\n\nfunction asNonEmptyLevelArray<T>(value: unknown): T[] | undefined {\n if (!Array.isArray(value) || value.length === 0) {\n return undefined;\n }\n\n return value as T[];\n}\n\n/**\n * Nested `levels` from a lookup expose snapshot (`likelihoodScale.levels`, …).\n * Empty arrays are treated as missing so create-mode can still fetch by id.\n */\nexport function resolveRiskMatrixScaleLevels<T>(\n data: unknown,\n snapshotField: RiskMatrixScaleSnapshotField,\n levelsFromPath?: unknown,\n): T[] | undefined {\n const fromPath = asNonEmptyLevelArray<T>(levelsFromPath);\n if (fromPath) {\n return fromPath;\n }\n\n if (data == null || typeof data !== 'object') {\n return undefined;\n }\n\n const snapshot = (data as Record<string, unknown>)[snapshotField];\n const fromSnapshotRoot = asNonEmptyLevelArray<T>(snapshot);\n if (fromSnapshotRoot) {\n return fromSnapshotRoot;\n }\n\n if (snapshot == null || typeof snapshot !== 'object') {\n return undefined;\n }\n\n const record = snapshot as { levels?: T[]; items?: T[] };\n return asNonEmptyLevelArray<T>(record.levels) ?? asNonEmptyLevelArray<T>(record.items);\n}\n\n/** Widget-context scale levels: nested path, then snapshot on the record. */\nexport function resolveRiskMatrixWidgetScaleLevels<T>(\n getValue: (path: string) => unknown,\n data: unknown,\n snapshotField: RiskMatrixScaleSnapshotField,\n): T[] | undefined {\n return resolveRiskMatrixScaleLevels<T>(data, snapshotField, getValue(`${snapshotField}.levels`));\n}\n\nexport function validateRiskMatrixAxisMapping(mapping: Partial<AXMRiskMatrixAxisMapping>): boolean {\n const rowProperty = mapping.rowProperty;\n const columnProperty = mapping.columnProperty;\n const depthProperty = mapping.depthProperty;\n\n if (!isRiskMatrixAxisProperty(rowProperty)) {\n return false;\n }\n if (!isRiskMatrixAxisProperty(columnProperty)) {\n return false;\n }\n if (!isRiskMatrixAxisProperty(depthProperty)) {\n return false;\n }\n\n const values = [rowProperty, columnProperty, depthProperty];\n return new Set(values).size === values.length;\n}\n\n//#endregion\n","//#region ----- Imports -----\n\nimport { resolveToSurfaceClass } from '@acorex-platform/framework-shared/core';\n\n//#endregion\n\n//#region ----- Constants -----\n\n/** Default matrix badge surfaces when {@link color} is not set on a risk rating record. */\nexport const DEFAULT_RISK_RATING_BADGE_COLORS = {\n low: 'success-lighter-surface',\n medium: 'warning-lighter-surface',\n high: 'danger-lighter-surface',\n} as const;\n\n//#endregion\n\n//#region ----- Helpers -----\n\nexport function resolveRiskRatingBadgeColor(rating: {\n code?: string;\n title?: string;\n color?: string | null;\n}): string | undefined {\n const fromColor = resolveToSurfaceClass(rating.color);\n if (fromColor) {\n return fromColor;\n }\n\n const code = rating.code?.trim().toUpperCase();\n if (code?.endsWith('0001')) {\n return DEFAULT_RISK_RATING_BADGE_COLORS.low;\n }\n if (code?.endsWith('0002')) {\n return DEFAULT_RISK_RATING_BADGE_COLORS.medium;\n }\n if (code?.endsWith('0003')) {\n return DEFAULT_RISK_RATING_BADGE_COLORS.high;\n }\n\n const title = rating.title?.trim().toLowerCase();\n if (title === 'low') {\n return DEFAULT_RISK_RATING_BADGE_COLORS.low;\n }\n if (title === 'medium') {\n return DEFAULT_RISK_RATING_BADGE_COLORS.medium;\n }\n if (title === 'high') {\n return DEFAULT_RISK_RATING_BADGE_COLORS.high;\n }\n\n return undefined;\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { type AXPQueryRequest, AXPWidgetsList } from '@acorex-platform/framework-shared/core';\nimport {\n AXPSpreadsheetCellChangeEvent,\n AXPSpreadsheetColumn,\n AXPSpreadsheetComponent,\n AXPSpreadsheetData,\n AXPSpreadsheetItem,\n} from '@acorex-platform/framework-client/layout/components';\nimport { ensureRuntimeSurfaceClass } from '@acorex-platform/framework-client/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n ViewEncapsulation,\n type WritableSignal,\n} from '@angular/core';\nimport {\n type AXMRiskLikelihoodLevelItemModel,\n type AXMRiskManagementRiskLikelihoodScaleEntityModel,\n type AXMRiskManagementRiskRatingScaleEntityModel,\n type AXMRiskManagementRiskSeverityScaleEntityModel,\n type AXMRiskMatrixAxisMapping,\n type AXMRiskRatingLevelItemModel,\n type AXMRiskSeverityLevelItemModel,\n RootConfig,\n sortRiskLikelihoodLevels,\n sortRiskRatingLevels,\n sortRiskSeverityLevels,\n} from '@acorex-platform/module-risk-management-client/contracts';\nimport {\n resolveRiskMatrixAxisMappingFromOrientation,\n resolveRiskMatrixOrientation,\n resolveRiskMatrixTitleKey,\n toCanonicalMatrixData,\n toDisplayMatrixData,\n} from '../shared/risk-matrix-axis-mapping';\nimport { resolveRiskRatingBadgeColor } from '../shared/risk-rating-badge-color';\n\n//#endregion\n\n//#region ---- Types ----\n\ntype AxisEntityModel = {\n id: string;\n title: string;\n description?: string;\n color?: string;\n};\n\ntype ScaleWithLevels = {\n id?: string;\n levels?: unknown[];\n items?: unknown[];\n};\n\ntype ScaleDataAccessor = {\n byKey: (key: string) => Promise<ScaleWithLevels | null | undefined>;\n query: (request?: AXPQueryRequest) => Promise<{ items?: ScaleWithLevels[] }>;\n};\n\n//#endregion\n\n//#region ---- Constants ----\n\nconst SCALE_AXIS_QUERY_FIELDS = [\n 'id',\n 'code',\n 'title',\n 'levels',\n 'levels.id',\n 'levels.code',\n 'levels.title',\n 'levels.score',\n 'levels.color',\n 'levels.order',\n];\n\n//#endregion\n\n//#region ---- Component Definition ----\n\n@Component({\n selector: 'axm-risk-matrix',\n standalone: true,\n imports: [AsyncPipe, AXPSpreadsheetComponent, AXTranslationModule],\n templateUrl: './risk-matrix.component.html',\n styleUrl: './risk-matrix.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'axm-risk-matrix',\n },\n})\nexport class AXMRiskManagementRiskMatrixComponent {\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly likelihoodScaleDataAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.riskLikelihoodScale.name)\n .data<string, AXMRiskManagementRiskLikelihoodScaleEntityModel>();\n private readonly severityScaleDataAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.riskSeverityScale.name)\n .data<string, AXMRiskManagementRiskSeverityScaleEntityModel>();\n private readonly riskRatingScaleDataAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.riskRatingScale.name)\n .data<string, AXMRiskManagementRiskRatingScaleEntityModel>();\n private readonly multiLanguageResolver = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- Inputs ----\n\n /** Axis mapping. Defaults to likelihood × severity → risk rating. */\n axisMapping = input<Partial<AXMRiskMatrixAxisMapping>>({});\n\n /** Selected scale ids from the parent matrix record. Axes load from that scale's levels. */\n likelihoodScaleId = input<string | null | undefined>(null);\n severityScaleId = input<string | null | undefined>(null);\n ratingScaleId = input<string | null | undefined>(null);\n\n /** Lookup expose snapshots — used in create before (or instead of) byKey. */\n likelihoodScaleLevels = input<AXMRiskLikelihoodLevelItemModel[] | null | undefined>(null);\n severityScaleLevels = input<AXMRiskSeverityLevelItemModel[] | null | undefined>(null);\n ratingScaleLevels = input<AXMRiskRatingLevelItemModel[] | null | undefined>(null);\n\n /** Controls row/column layout only; persisted cells stay likelihood × severity. */\n matrixOrientation = input<string | null | undefined>(null);\n\n /** Spreadsheet data keyed by **level codes**: { [likelihoodCode]: { [severityCode]: ratingCode } } */\n value = input<AXPSpreadsheetData>({});\n\n readonly = input<boolean>(false);\n\n //#endregion\n\n //#region ---- Outputs ----\n\n valueChange = output<AXPSpreadsheetData>();\n cellChange = output<AXPSpreadsheetCellChangeEvent>();\n\n //#endregion\n\n //#region ---- Class Properties ----\n\n private readonly likelihoodItems = signal<AxisEntityModel[]>([]);\n private readonly severityItems = signal<AxisEntityModel[]>([]);\n private readonly depthItems = signal<AxisEntityModel[]>([]);\n /** Drops overlapping create-mode loads so an earlier request cannot wipe later rating levels. */\n private loadAxesRequestId = 0;\n\n //#endregion\n\n //#region ---- Computed Properties ----\n\n protected readonly resolvedMatrixOrientation = computed(() =>\n resolveRiskMatrixOrientation(this.matrixOrientation()),\n );\n\n protected readonly resolvedAxisMapping = computed(() =>\n resolveRiskMatrixAxisMappingFromOrientation(this.resolvedMatrixOrientation(), this.axisMapping()),\n );\n\n protected readonly displayMatrix = computed(() =>\n toDisplayMatrixData(this.value(), this.resolvedMatrixOrientation()),\n );\n\n protected readonly spreadsheetIdentity = computed(() =>\n [\n this.resolvedMatrixOrientation(),\n this.likelihoodScaleId() ?? '',\n this.severityScaleId() ?? '',\n this.ratingScaleId() ?? '',\n this.depthItems()\n .map((item) => item.id)\n .join(','),\n ].join('|'),\n );\n\n /** Create mode: do not open empty cell editors before rating levels are loaded. */\n protected readonly cellSelectLocked = computed(\n () => !!this.ratingScaleId() && this.depthItems().length === 0,\n );\n\n protected readonly matrixTitleKey = computed(() => resolveRiskMatrixTitleKey(this.resolvedMatrixOrientation()));\n\n protected readonly verticalTitles = computed<AXPSpreadsheetItem[]>(() =>\n this.toSpreadsheetItems(this.resolvedRowItems()),\n );\n\n protected readonly horizontalTitles = computed<AXPSpreadsheetItem[]>(() =>\n this.toSpreadsheetItems(this.resolvedColumnItems()),\n );\n\n protected readonly cellOptions = computed<AXPSpreadsheetItem[]>(() => this.toSpreadsheetItems(this.depthItems()));\n\n private readonly resolvedRowItems = computed(() => {\n const mapping = this.resolvedAxisMapping();\n return mapping.rowProperty === 'likelihoodId' ? this.likelihoodItems() : this.severityItems();\n });\n\n private readonly resolvedColumnItems = computed(() => {\n const mapping = this.resolvedAxisMapping();\n return mapping.columnProperty === 'likelihoodId' ? this.likelihoodItems() : this.severityItems();\n });\n\n protected readonly spreadsheetColumns = computed<AXPSpreadsheetColumn[]>(() => {\n const horizontalTitles = this.horizontalTitles();\n const ratingItems = this.depthItems();\n const cellOptions = this.toSpreadsheetItems(ratingItems);\n\n return horizontalTitles.map((title) => ({\n name: title.id,\n title: title.title,\n description: title.description,\n path: title.id,\n widget: {\n type: AXPWidgetsList.Editors.SelectBox,\n options: {\n valueField: 'id',\n textField: 'title',\n cssClassField: 'color',\n dataSource: cellOptions.map((option, index) => ({\n id: option.id,\n title: option.title,\n description: option.description,\n color: ratingItems[index]?.color,\n })),\n },\n },\n }));\n });\n\n protected readonly spreadsheetRows = computed<Record<string, unknown>[]>(() => {\n const verticalTitles = this.verticalTitles();\n const horizontalTitles = this.horizontalTitles();\n const matrixData = this.displayMatrix();\n\n return verticalTitles.map((row) => {\n const rowData: Record<string, unknown> = {\n name: row.id,\n _rowTitle: row.title,\n _rowDescription: row.description,\n };\n\n horizontalTitles.forEach((column) => {\n rowData[column.id] = matrixData[row.id]?.[column.id] ?? null;\n });\n\n return rowData;\n });\n });\n\n //#endregion\n\n //#region ---- Lifecycle Methods ----\n\n constructor() {\n effect(() => {\n const likelihoodScaleId = this.likelihoodScaleId();\n const severityScaleId = this.severityScaleId();\n const ratingScaleId = this.ratingScaleId();\n const likelihoodScaleLevels = this.likelihoodScaleLevels();\n const severityScaleLevels = this.severityScaleLevels();\n const ratingScaleLevels = this.ratingScaleLevels();\n void this.loadMatrixAxes(\n likelihoodScaleId,\n severityScaleId,\n ratingScaleId,\n likelihoodScaleLevels,\n severityScaleLevels,\n ratingScaleLevels,\n );\n });\n }\n\n //#endregion\n\n //#region ---- Data Loading Methods ----\n\n private async loadMatrixAxes(\n likelihoodScaleId: string | null | undefined,\n severityScaleId: string | null | undefined,\n ratingScaleId: string | null | undefined,\n likelihoodScaleLevels: AXMRiskLikelihoodLevelItemModel[] | null | undefined,\n severityScaleLevels: AXMRiskSeverityLevelItemModel[] | null | undefined,\n ratingScaleLevels: AXMRiskRatingLevelItemModel[] | null | undefined,\n ): Promise<void> {\n const requestId = ++this.loadAxesRequestId;\n const snapshotLikelihood = this.mapLikelihoodLevels(likelihoodScaleLevels);\n const snapshotSeverity = this.mapSeverityLevels(severityScaleLevels);\n const snapshotRating = this.mapRatingLevels(ratingScaleLevels);\n const hasSnapshotAxes =\n snapshotLikelihood.length > 0 || snapshotSeverity.length > 0 || snapshotRating.length > 0;\n\n if (!likelihoodScaleId && !severityScaleId && !ratingScaleId && !hasSnapshotAxes) {\n this.likelihoodItems.set([]);\n this.severityItems.set([]);\n this.depthItems.set([]);\n return;\n }\n\n if (snapshotLikelihood.length > 0) {\n this.likelihoodItems.set(snapshotLikelihood);\n }\n if (snapshotSeverity.length > 0) {\n this.severityItems.set(snapshotSeverity);\n }\n if (snapshotRating.length > 0) {\n this.depthItems.set(snapshotRating);\n }\n\n if (!likelihoodScaleId && !severityScaleId && !ratingScaleId) {\n return;\n }\n\n try {\n const [likelihoodResult, severityResult, depthResult] = await Promise.all([\n this.queryAxisItems(this.likelihoodScaleDataAccessor, likelihoodScaleId, (levels) =>\n this.mapLikelihoodLevels(levels),\n likelihoodScaleLevels,\n ),\n this.queryAxisItems(this.severityScaleDataAccessor, severityScaleId, (levels) =>\n this.mapSeverityLevels(levels),\n severityScaleLevels,\n ),\n this.queryAxisItems(this.riskRatingScaleDataAccessor, ratingScaleId, (levels) =>\n this.mapRatingLevels(levels),\n ratingScaleLevels,\n ),\n ]);\n\n if (requestId !== this.loadAxesRequestId) {\n return;\n }\n\n this.applyAxisItems(this.likelihoodItems, likelihoodResult, snapshotLikelihood);\n this.applyAxisItems(this.severityItems, severityResult, snapshotSeverity);\n this.applyAxisItems(this.depthItems, depthResult, snapshotRating);\n } catch (error) {\n if (requestId !== this.loadAxesRequestId) {\n return;\n }\n\n console.error('Error loading risk matrix axes:', error);\n if (!hasSnapshotAxes && this.depthItems().length === 0) {\n this.likelihoodItems.set([]);\n this.severityItems.set([]);\n this.depthItems.set([]);\n }\n }\n }\n\n private applyAxisItems(\n target: WritableSignal<AxisEntityModel[]>,\n fetched: AxisEntityModel[],\n snapshot: AxisEntityModel[],\n ): void {\n if (fetched.length > 0) {\n target.set(fetched);\n return;\n }\n if (snapshot.length > 0) {\n target.set(snapshot);\n }\n }\n\n private async queryAxisItems<TLevel>(\n accessor: ScaleDataAccessor,\n scaleId: string | null | undefined,\n mapLevels: (levels: TLevel[] | null | undefined) => AxisEntityModel[],\n snapshotLevels?: TLevel[] | null,\n ): Promise<AxisEntityModel[]> {\n const snapshot = mapLevels(snapshotLevels);\n const scale = await this.loadScaleWithLevels(accessor, scaleId);\n const fetched = mapLevels(this.readScaleLevels<TLevel>(scale));\n return fetched.length > 0 ? fetched : snapshot;\n }\n\n private readScaleLevels<T>(scale: ScaleWithLevels | null | undefined): T[] | undefined {\n if (!scale || typeof scale !== 'object') {\n return undefined;\n }\n\n const levels = scale.levels ?? scale.items;\n return Array.isArray(levels) && levels.length > 0 ? (levels as T[]) : undefined;\n }\n\n private mapLikelihoodLevels(\n levels: AXMRiskLikelihoodLevelItemModel[] | null | undefined,\n ): AxisEntityModel[] {\n return this.mapAxisLevels(sortRiskLikelihoodLevels(levels));\n }\n\n private mapSeverityLevels(\n levels: AXMRiskSeverityLevelItemModel[] | null | undefined,\n ): AxisEntityModel[] {\n return this.mapAxisLevels(sortRiskSeverityLevels(levels));\n }\n\n private mapRatingLevels(levels: AXMRiskRatingLevelItemModel[] | null | undefined): AxisEntityModel[] {\n return this.mapAxisLevels(sortRiskRatingLevels(levels), (level) => {\n const color = ensureRuntimeSurfaceClass(resolveRiskRatingBadgeColor(level));\n return color ? { color } : {};\n });\n }\n\n private mapAxisLevels<T extends { code?: unknown; id?: unknown; title: string }>(\n levels: T[],\n extra?: (level: T) => Partial<AxisEntityModel>,\n ): AxisEntityModel[] {\n return levels\n .map((level) => {\n const id = this.toAxisLevelKey(level);\n return {\n id,\n title: level.title,\n ...(extra?.(level) ?? {}),\n };\n })\n .filter((item) => item.id.length > 0);\n }\n\n private toAxisLevelKey(level: { code?: unknown; id?: unknown } | null | undefined): string {\n if (level == null) {\n return '';\n }\n\n const code = level.code;\n if (typeof code === 'string' && code.trim()) {\n return code.trim();\n }\n if (typeof code === 'number' && Number.isFinite(code)) {\n return String(code);\n }\n\n const id = level.id;\n if (typeof id === 'string' && id.trim()) {\n return id.trim();\n }\n if (typeof id === 'number' && Number.isFinite(id)) {\n return String(id);\n }\n\n return '';\n }\n\n private async loadScaleWithLevels(\n accessor: ScaleDataAccessor,\n scaleId?: string | null,\n ): Promise<ScaleWithLevels | null> {\n if (!scaleId) {\n return null;\n }\n\n const fromQuery = await this.queryScaleById(accessor, scaleId);\n if (this.readScaleLevels(fromQuery)) {\n return fromQuery;\n }\n\n try {\n const fromByKey = (await accessor.byKey(scaleId)) ?? null;\n return this.readScaleLevels(fromByKey) ? fromByKey : fromQuery ?? fromByKey;\n } catch {\n return fromQuery;\n }\n }\n\n private async queryScaleById(\n accessor: Pick<ScaleDataAccessor, 'query'>,\n scaleId: string,\n ): Promise<ScaleWithLevels | null> {\n try {\n const page = await accessor.query({\n skip: 0,\n take: 1,\n fields: [...SCALE_AXIS_QUERY_FIELDS],\n filter: {\n field: 'id',\n operator: { type: 'equal' },\n value: scaleId,\n },\n });\n return page?.items?.[0] ?? null;\n } catch {\n return null;\n }\n }\n\n //#endregion\n\n //#region ---- Data Transformation Methods ----\n\n private toSpreadsheetItems(items: AxisEntityModel[]): AXPSpreadsheetItem[] {\n const resolve = (v: unknown) => this.multiLanguageResolver.resolve(v as never);\n return items.map((item) => ({\n id: item.id,\n title: resolve(item.title),\n description: item.description ? resolve(item.description) : undefined,\n }));\n }\n\n private convertSpreadsheetRowsToMatrixData(rows: Record<string, unknown>[]): AXPSpreadsheetData {\n const horizontalTitles = this.horizontalTitles();\n const matrixData: AXPSpreadsheetData = {};\n\n rows.forEach((row) => {\n const rowId = row['name'] as string | undefined;\n if (!rowId) {\n return;\n }\n\n matrixData[rowId] = {};\n horizontalTitles.forEach((column) => {\n matrixData[rowId][column.id] = (row[column.id] as string | null) ?? null;\n });\n });\n\n return matrixData;\n }\n\n //#endregion\n\n //#region ---- Event Handlers ----\n\n protected handleSpreadsheetChange(rows: Record<string, unknown>[]): void {\n const displayMatrix = this.convertSpreadsheetRowsToMatrixData(rows);\n this.valueChange.emit(toCanonicalMatrixData(displayMatrix, this.resolvedMatrixOrientation()));\n }\n\n protected handleCellChange(event: AXPSpreadsheetCellChangeEvent): void {\n this.cellChange.emit(event);\n }\n\n //#endregion\n}\n\n//#endregion\n","<div class=\"__container\">\n <div class=\"__matrix-section\">\n @for (_ of [spreadsheetIdentity()]; track _) {\n <axp-spreadsheet\n [title]=\"(matrixTitleKey() | translate | async) ?? ''\"\n [columns]=\"spreadsheetColumns()\"\n [rowsInput]=\"spreadsheetRows()\"\n [rowMode]=\"'fixed'\"\n [readonly]=\"readonly() || cellSelectLocked()\"\n [allowRemoveRows]=\"false\"\n [rowTitlePath]=\"'_rowTitle'\"\n [rowDescriptionPath]=\"'_rowDescription'\"\n (cellChange)=\"handleCellChange($event)\"\n (spreadsheetChange)=\"handleSpreadsheetChange($event)\"\n ></axp-spreadsheet>\n }\n </div>\n</div>\n","//#region ---- Imports ----\n\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { resolveEntityRowDisplayText } from '@acorex-platform/framework-client/common';\nimport { AXPWidgetsList } from '@acorex-platform/framework-shared/core';\nimport { AXPLayoutBuilderService } from '@acorex-platform/framework-client/layout/builder';\nimport { inject, Injectable } from '@angular/core';\nimport { defaultTo, get, isEmpty } from 'lodash';\n\n//#endregion\n\n//#region ---- Types ----\n\nexport interface AXMRiskMatrixViewerOpenOptions {\n context: Record<string, unknown>;\n matrixPath?: string;\n title?: string;\n}\n\n//#endregion\n\n//#region ---- Risk Matrix Viewer Service ----\n\n/**\n * Opens a read-only risk matrix preview dialog from row or record context.\n */\n@Injectable({ providedIn: 'root' })\nexport class AXMRiskMatrixViewerService {\n //#region ---- Services & Dependencies ----\n\n private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n private readonly translation = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- Public API ----\n\n async open(options: AXMRiskMatrixViewerOpenOptions): Promise<void> {\n const matrixPath = defaultTo(options.matrixPath, 'cells');\n const matrixValue = get(options.context, matrixPath);\n\n if (isEmpty(matrixValue)) {\n return;\n }\n\n await this.layoutBuilder\n .create()\n .dialog((dialog) => {\n dialog\n .setTitle(this.resolveDialogTitle(options.title))\n .setSize('lg')\n .setCloseButton(true)\n .setContext({ ...options.context })\n .content((layout) => {\n layout.flex((flex) => {\n flex.setDirection('column');\n flex.formField('', (field) => {\n field\n .path(matrixPath)\n .setShowLabel(false)\n .customWidget(AXPWidgetsList.Editors.RiskMatrix, { readonly: true });\n });\n });\n });\n })\n .show();\n }\n\n //#endregion\n\n //#region ---- Utility Methods ----\n\n private resolveDialogTitle(title: string | undefined): string {\n const resolved = resolveEntityRowDisplayText(title, this.translation.getActiveLang());\n return resolved || 'Risk Matrix';\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXFormatService } from '@acorex/core/format';\nimport { AXPEntity } from '@acorex-platform/framework-shared/entity';\nimport { resolveEntityRowDisplayTitle } from '@acorex-platform/framework-client/common';\n\nimport { AXMRiskMatrixViewerOpenOptions, AXMRiskMatrixViewerService } from './risk-matrix-viewer.service';\n\n//#endregion\n\n//#region ---- Types ----\n\nexport interface AXMRiskMatrixViewerOpenParams {\n context: Record<string, unknown>;\n matrixPath?: string;\n widgetOptions?: Record<string, unknown>;\n formatService: AXFormatService;\n activeLang: string;\n data?: Record<string, unknown>;\n entity?: AXPEntity | null;\n fallbackTitleKey?: string;\n}\n\n//#endregion\n\n//#region ---- Viewer Open Helper ----\n\nexport function buildRiskMatrixViewerOpenOptions(\n params: AXMRiskMatrixViewerOpenParams,\n): AXMRiskMatrixViewerOpenOptions {\n const matrixPath = params.matrixPath ?? 'cells';\n const title = params.data\n ? resolveEntityRowDisplayTitle({\n data: params.data,\n widgetOptions: params.widgetOptions,\n formatService: params.formatService,\n activeLang: params.activeLang,\n entity: params.entity,\n })\n : '';\n\n return {\n context: params.context,\n matrixPath,\n title: title || params.fallbackTitleKey,\n };\n}\n\nexport async function openRiskMatrixViewer(\n viewer: AXMRiskMatrixViewerService,\n params: AXMRiskMatrixViewerOpenParams,\n): Promise<void> {\n await viewer.open(buildRiskMatrixViewerOpenOptions(params));\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXFormatService } from '@acorex/core/format';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPColumnWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { isEmpty } from 'lodash';\n\nimport { openRiskMatrixViewer } from './risk-matrix-viewer-open.util';\nimport { AXMRiskMatrixViewerService } from './risk-matrix-viewer.service';\n\n//#endregion\n\n//#region ---- Component: Risk Matrix Widget Column ----\n\n@Component({\n selector: 'axm-risk-matrix-widget-column',\n imports: [AXButtonModule, AXDecoratorModule],\n template: `\n <div class=\"flex items-center gap-2\">\n @if (hasMatrix()) {\n <ax-button class=\"ax-sm\" look=\"twotone\" color=\"default\" (click)=\"showPopup()\">\n <ax-icon>\n <i class=\"fa-light fa-table-cells\"></i>\n </ax-icon>\n </ax-button>\n } @else {\n <span>-</span>\n }\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n inputs: ['rawValue', 'rowData'],\n})\nexport class AXMRiskMatrixWidgetColumnComponent extends AXPColumnWidgetComponent<Record<string, unknown>> {\n //#region ---- Services & Dependencies ----\n\n private readonly riskMatrixViewer = inject(AXMRiskMatrixViewerService);\n private readonly formatService = inject(AXFormatService);\n private readonly translation = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- UI Handlers ----\n\n hasMatrix(): boolean {\n return !isEmpty(this.rawValue);\n }\n\n async showPopup(): Promise<void> {\n const rowData = this.rowData as Record<string, unknown> | undefined;\n if (!rowData || isEmpty(this.rawValue)) {\n return;\n }\n\n await openRiskMatrixViewer(this.riskMatrixViewer, {\n context: rowData,\n matrixPath: this.path,\n data: rowData,\n widgetOptions: { ...(this.options as Record<string, unknown>) },\n formatService: this.formatService,\n activeLang: this.translation.getActiveLang(),\n fallbackTitleKey: '@risk-management:risk-matrices.entities.risk-matrix.fields.cells.title',\n });\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport type { AXPSpreadsheetData } from '@acorex-platform/framework-shared/core';\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed, effect, ViewEncapsulation } from '@angular/core';\nimport { get, isEqual } from 'lodash';\nimport {\n pruneRiskMatrixCells,\n resolveRiskMatrixCells,\n toRiskMatrixSpreadsheetData,\n fromRiskMatrixSpreadsheetData,\n type AXMRiskLikelihoodLevelItemModel,\n type AXMRiskMatrixAxisMapping,\n type AXMRiskMatrixCellValueObject,\n type AXMRiskRatingLevelItemModel,\n type AXMRiskSeverityLevelItemModel,\n} from '@acorex-platform/module-risk-management-client/contracts';\nimport {\n resolveRiskMatrixAxisCodes,\n resolveRiskMatrixAxisMappingFromOrientation,\n resolveRiskMatrixOrientation,\n resolveRiskMatrixWidgetScaleId,\n resolveRiskMatrixWidgetScaleLevels,\n} from '../shared/risk-matrix-axis-mapping';\nimport { AXMRiskManagementRiskMatrixComponent } from './risk-matrix.component';\n\n//#endregion\n\n//#region ---- Component Definition ----\n\n@Component({\n selector: 'axm-risk-matrix-widget-edit',\n standalone: true,\n imports: [AXMRiskManagementRiskMatrixComponent],\n template: `\n <axm-risk-matrix\n [axisMapping]=\"axisMapping()\"\n [matrixOrientation]=\"matrixOrientation()\"\n [likelihoodScaleId]=\"likelihoodScaleId()\"\n [severityScaleId]=\"severityScaleId()\"\n [ratingScaleId]=\"ratingScaleId()\"\n [likelihoodScaleLevels]=\"likelihoodScaleLevels()\"\n [severityScaleLevels]=\"severityScaleLevels()\"\n [ratingScaleLevels]=\"ratingScaleLevels()\"\n [value]=\"matrixValue()\"\n [readonly]=\"readonly()\"\n (valueChange)=\"handleValueChange($any($event))\"\n ></axm-risk-matrix>\n `,\n host: {\n class: 'block w-full',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXMRiskMatrixWidgetEditComponent extends AXPValueWidgetComponent<AXMRiskMatrixCellValueObject[]> {\n //#region ---- Lifecycle Methods ----\n\n constructor() {\n super();\n\n effect(() => {\n const likelihoodCodes = this.likelihoodCodes();\n const severityCodes = this.severityCodes();\n const ratingCodes = this.ratingCodes();\n const cells = resolveRiskMatrixCells(this.getValue());\n const prunedCells = pruneRiskMatrixCells(cells, likelihoodCodes, severityCodes, ratingCodes);\n\n if (!isEqual(cells, prunedCells)) {\n this.setValue(prunedCells);\n }\n });\n }\n\n //#endregion\n\n //#region ---- Computed Properties ----\n\n protected readonly = computed<boolean>(() => {\n const options = this.options();\n return options?.['readonly'] ?? false;\n });\n\n protected axisMapping = computed<AXMRiskMatrixAxisMapping>(() => {\n this.contextService.changeEvent();\n const options = this.options();\n const orientation = get(this.contextService.data(), 'matrixOrientation') as string | null | undefined;\n\n return resolveRiskMatrixAxisMappingFromOrientation(orientation, {\n rowProperty: options?.['rowProperty'],\n columnProperty: options?.['columnProperty'],\n depthProperty: options?.['depthProperty'],\n });\n });\n\n protected matrixOrientation = computed(() => {\n this.contextService.changeEvent();\n return resolveRiskMatrixOrientation(get(this.contextService.data(), 'matrixOrientation'));\n });\n\n protected likelihoodScaleId = computed(() => {\n this.contextService.changeEvent();\n return this.resolveScaleId('likelihoodScaleId', 'likelihoodScale');\n });\n\n protected severityScaleId = computed(() => {\n this.contextService.changeEvent();\n return this.resolveScaleId('severityScaleId', 'severityScale');\n });\n\n protected ratingScaleId = computed(() => {\n this.contextService.changeEvent();\n return this.resolveScaleId('ratingScaleId', 'ratingScale');\n });\n\n protected likelihoodScaleLevels = computed(() => {\n this.contextService.changeEvent();\n return this.resolveScaleLevels<AXMRiskLikelihoodLevelItemModel>('likelihoodScale');\n });\n\n protected severityScaleLevels = computed(() => {\n this.contextService.changeEvent();\n return this.resolveScaleLevels<AXMRiskSeverityLevelItemModel>('severityScale');\n });\n\n protected ratingScaleLevels = computed(() => {\n this.contextService.changeEvent();\n return this.resolveScaleLevels<AXMRiskRatingLevelItemModel>('ratingScale');\n });\n\n protected likelihoodCodes = computed<string[]>(() => {\n this.contextService.changeEvent();\n return resolveRiskMatrixAxisCodes(this.contextService.data(), 'likelihood');\n });\n\n protected severityCodes = computed<string[]>(() => {\n this.contextService.changeEvent();\n return resolveRiskMatrixAxisCodes(this.contextService.data(), 'severity');\n });\n\n protected ratingCodes = computed<string[]>(() => {\n this.contextService.changeEvent();\n return resolveRiskMatrixAxisCodes(this.contextService.data(), 'rating');\n });\n\n protected matrixValue = computed(() => {\n return toRiskMatrixSpreadsheetData(resolveRiskMatrixCells(this.getValue()));\n });\n\n //#endregion\n\n //#region ---- Event Handlers ----\n\n protected handleValueChange(data: AXPSpreadsheetData): void {\n if (data) {\n this.setValue(fromRiskMatrixSpreadsheetData(data));\n }\n }\n\n //#endregion\n\n //#region ----- Scale bindings -----\n\n private resolveScaleId(\n idField: 'likelihoodScaleId' | 'severityScaleId' | 'ratingScaleId',\n snapshotField: 'likelihoodScale' | 'severityScale' | 'ratingScale',\n ): string | undefined {\n return resolveRiskMatrixWidgetScaleId(\n (path) => this.contextService.getValue(path),\n this.contextService.data(),\n idField,\n snapshotField,\n );\n }\n\n private resolveScaleLevels<T>(\n snapshotField: 'likelihoodScale' | 'severityScale' | 'ratingScale',\n ): T[] | undefined {\n return resolveRiskMatrixWidgetScaleLevels<T>(\n (path) => this.contextService.getValue(path),\n this.contextService.data(),\n snapshotField,\n );\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ----- Imports -----\n\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed, ViewEncapsulation } from '@angular/core';\nimport { get } from 'lodash';\nimport {\n resolveRiskMatrixCells,\n toRiskMatrixSpreadsheetData,\n type AXMRiskLikelihoodLevelItemModel,\n type AXMRiskMatrixAxisMapping,\n type AXMRiskMatrixCellValueObject,\n type AXMRiskRatingLevelItemModel,\n type AXMRiskSeverityLevelItemModel,\n} from '@acorex-platform/module-risk-management-client/contracts';\nimport {\n resolveRiskMatrixAxisMappingFromOrientation,\n resolveRiskMatrixOrientation,\n resolveRiskMatrixWidgetScaleId,\n resolveRiskMatrixWidgetScaleLevels,\n} from '../shared/risk-matrix-axis-mapping';\nimport { AXMRiskManagementRiskMatrixComponent } from './risk-matrix.component';\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axm-risk-matrix-widget-view',\n standalone: true,\n imports: [AXMRiskManagementRiskMatrixComponent],\n template: `\n <axm-risk-matrix\n [axisMapping]=\"axisMapping()\"\n [matrixOrientation]=\"matrixOrientation()\"\n [likelihoodScaleId]=\"likelihoodScaleId()\"\n [severityScaleId]=\"severityScaleId()\"\n [ratingScaleId]=\"ratingScaleId()\"\n [likelihoodScaleLevels]=\"likelihoodScaleLevels()\"\n [severityScaleLevels]=\"severityScaleLevels()\"\n [ratingScaleLevels]=\"ratingScaleLevels()\"\n [value]=\"matrixValue()\"\n [readonly]=\"true\"\n ></axm-risk-matrix>\n `,\n host: {\n class: 'block w-full',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXMRiskMatrixWidgetViewComponent extends AXPValueWidgetComponent<AXMRiskMatrixCellValueObject[]> {\n //#region ----- Computed Properties -----\n\n protected axisMapping = computed<AXMRiskMatrixAxisMapping>(() => {\n this.contextService.changeEvent();\n const options = this.options();\n const orientation = get(this.contextService.data(), 'matrixOrientation') as string | null | undefined;\n\n return resolveRiskMatrixAxisMappingFromOrientation(orientation, {\n rowProperty: options?.['rowProperty'],\n columnProperty: options?.['columnProperty'],\n depthProperty: options?.['depthProperty'],\n });\n });\n\n protected matrixOrientation = computed(() => {\n this.contextService.changeEvent();\n return resolveRiskMatrixOrientation(get(this.contextService.data(), 'matrixOrientation'));\n });\n\n protected likelihoodScaleId = computed(() => {\n this.contextService.changeEvent();\n return this.resolveScaleId('likelihoodScaleId', 'likelihoodScale');\n });\n\n protected severityScaleId = computed(() => {\n this.contextService.changeEvent();\n return this.resolveScaleId('severityScaleId', 'severityScale');\n });\n\n protected ratingScaleId = computed(() => {\n this.contextService.changeEvent();\n return this.resolveScaleId('ratingScaleId', 'ratingScale');\n });\n\n protected likelihoodScaleLevels = computed(() => {\n this.contextService.changeEvent();\n return this.resolveScaleLevels<AXMRiskLikelihoodLevelItemModel>('likelihoodScale');\n });\n\n protected severityScaleLevels = computed(() => {\n this.contextService.changeEvent();\n return this.resolveScaleLevels<AXMRiskSeverityLevelItemModel>('severityScale');\n });\n\n protected ratingScaleLevels = computed(() => {\n this.contextService.changeEvent();\n return this.resolveScaleLevels<AXMRiskRatingLevelItemModel>('ratingScale');\n });\n\n protected matrixValue = computed(() => {\n return toRiskMatrixSpreadsheetData(resolveRiskMatrixCells(this.getValue()));\n });\n\n //#endregion\n\n //#region ----- Scale bindings -----\n\n private resolveScaleId(\n idField: 'likelihoodScaleId' | 'severityScaleId' | 'ratingScaleId',\n snapshotField: 'likelihoodScale' | 'severityScale' | 'ratingScale',\n ): string | undefined {\n return resolveRiskMatrixWidgetScaleId(\n (path) => this.contextService.getValue(path),\n this.contextService.data(),\n idField,\n snapshotField,\n );\n }\n\n private resolveScaleLevels<T>(\n snapshotField: 'likelihoodScale' | 'severityScale' | 'ratingScale',\n ): T[] | undefined {\n return resolveRiskMatrixWidgetScaleLevels<T>(\n (path) => this.contextService.getValue(path),\n this.contextService.data(),\n snapshotField,\n );\n }\n\n //#endregion\n}\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@acorex-platform/module-risk-management-client",
3
- "version": "0.0.38",
3
+ "version": "0.0.46",
4
4
  "sideEffects": false,
5
5
  "peerDependencies": {
6
6
  "@angular/common": "^21.0.0 || ^22.0.0",
@@ -23,21 +23,21 @@
23
23
  "types": "./types/acorex-platform-module-risk-management-client-contracts.d.ts",
24
24
  "default": "./fesm2022/acorex-platform-module-risk-management-client-contracts.mjs"
25
25
  },
26
- "./contracts/entities/risk-likelihood": {
27
- "types": "./types/acorex-platform-module-risk-management-client-contracts-entities-risk-likelihood.d.ts",
28
- "default": "./fesm2022/acorex-platform-module-risk-management-client-contracts-entities-risk-likelihood.mjs"
26
+ "./contracts/entities/risk-likelihood-scale": {
27
+ "types": "./types/acorex-platform-module-risk-management-client-contracts-entities-risk-likelihood-scale.d.ts",
28
+ "default": "./fesm2022/acorex-platform-module-risk-management-client-contracts-entities-risk-likelihood-scale.mjs"
29
29
  },
30
- "./contracts/entities/risk-matrix-cell": {
31
- "types": "./types/acorex-platform-module-risk-management-client-contracts-entities-risk-matrix-cell.d.ts",
32
- "default": "./fesm2022/acorex-platform-module-risk-management-client-contracts-entities-risk-matrix-cell.mjs"
30
+ "./contracts/entities/risk-matrix": {
31
+ "types": "./types/acorex-platform-module-risk-management-client-contracts-entities-risk-matrix.d.ts",
32
+ "default": "./fesm2022/acorex-platform-module-risk-management-client-contracts-entities-risk-matrix.mjs"
33
33
  },
34
- "./contracts/entities/risk-rating": {
35
- "types": "./types/acorex-platform-module-risk-management-client-contracts-entities-risk-rating.d.ts",
36
- "default": "./fesm2022/acorex-platform-module-risk-management-client-contracts-entities-risk-rating.mjs"
34
+ "./contracts/entities/risk-rating-scale": {
35
+ "types": "./types/acorex-platform-module-risk-management-client-contracts-entities-risk-rating-scale.d.ts",
36
+ "default": "./fesm2022/acorex-platform-module-risk-management-client-contracts-entities-risk-rating-scale.mjs"
37
37
  },
38
- "./contracts/entities/risk-severity": {
39
- "types": "./types/acorex-platform-module-risk-management-client-contracts-entities-risk-severity.d.ts",
40
- "default": "./fesm2022/acorex-platform-module-risk-management-client-contracts-entities-risk-severity.mjs"
38
+ "./contracts/entities/risk-severity-scale": {
39
+ "types": "./types/acorex-platform-module-risk-management-client-contracts-entities-risk-severity-scale.d.ts",
40
+ "default": "./fesm2022/acorex-platform-module-risk-management-client-contracts-entities-risk-severity-scale.mjs"
41
41
  },
42
42
  "./contracts/entity-catalog": {
43
43
  "types": "./types/acorex-platform-module-risk-management-client-contracts-entity-catalog.d.ts",
@@ -0,0 +1,5 @@
1
+ import { AXPEntity } from '@acorex-platform/framework-shared/entity';
2
+
3
+ declare function factoryRiskLikelihoodScale(): Promise<AXPEntity | null>;
4
+
5
+ export { factoryRiskLikelihoodScale };
@@ -0,0 +1,5 @@
1
+ import { AXPEntity } from '@acorex-platform/framework-shared/entity';
2
+
3
+ declare function factoryRiskMatrix(): Promise<AXPEntity | null>;
4
+
5
+ export { factoryRiskMatrix };
@@ -0,0 +1,5 @@
1
+ import { AXPEntity } from '@acorex-platform/framework-shared/entity';
2
+
3
+ declare function factoryRiskRatingScale(): Promise<AXPEntity | null>;
4
+
5
+ export { factoryRiskRatingScale };
@@ -0,0 +1,5 @@
1
+ import { AXPEntity } from '@acorex-platform/framework-shared/entity';
2
+
3
+ declare function factoryRiskSeverityScale(): Promise<AXPEntity | null>;
4
+
5
+ export { factoryRiskSeverityScale };