{"version":3,"file":"o3r-configuration-rules-engine.mjs","sources":["../../src/rules-engine/configuration.interfaces.ts","../../src/rules-engine/configuration.handler-action.ts","../../src/rules-engine/configuration.rules-engine.module.ts","../../src/rules-engine/o3r-configuration-rules-engine.ts"],"sourcesContent":["import type {\n  RulesEngineAction,\n} from '@o3r/core';\n\n/** ActionUpdateConfigurationBlock  */\nexport const RULES_ENGINE_CONFIGURATION_UPDATE_ACTION_TYPE = 'UPDATE_CONFIG';\n\n/**\n * Content of action that updates a Configuration\n */\nexport interface ActionUpdateConfigBlock extends RulesEngineAction {\n  actionType: typeof RULES_ENGINE_CONFIGURATION_UPDATE_ACTION_TYPE;\n  library: string;\n  component: string;\n  property: string;\n}\n","import {\n  Injectable,\n} from '@angular/core';\nimport {\n  Store,\n} from '@ngrx/store';\nimport type {\n  RulesEngineActionHandler,\n} from '@o3r/core';\nimport {\n  computeItemIdentifier,\n} from '@o3r/core';\nimport {\n  ActionUpdateConfigBlock,\n  RULES_ENGINE_CONFIGURATION_UPDATE_ACTION_TYPE,\n} from './configuration.interfaces';\nimport {\n  ConfigurationStore,\n  PropertyOverride,\n  setConfigOverride,\n} from '@o3r/configuration';\n\n/**\n * Service to handle async Configuration actions\n */\n@Injectable()\nexport class ConfigurationRulesEngineActionHandler implements RulesEngineActionHandler<ActionUpdateConfigBlock> {\n  /** @inheritdoc */\n  public readonly supportingActions = [RULES_ENGINE_CONFIGURATION_UPDATE_ACTION_TYPE] as const;\n\n  constructor(private readonly store: Store<ConfigurationStore>) {}\n\n  /** @inheritdoc */\n  public executeActions(actions: ActionUpdateConfigBlock[]): void | Promise<void> {\n    const configOverrideMap = actions\n      .filter((action) => action.library && action.component && action.property && typeof action.value !== 'undefined')\n      .reduce<Record<string, PropertyOverride>>((acc, ov) => {\n        const configName = computeItemIdentifier(ov.component, ov.library);\n        acc[configName] ||= { overrides: {} };\n        acc[configName].overrides[ov.property] = ov.value;\n        return acc;\n      }, {});\n\n    const configOverrides = Object.entries(configOverrideMap)\n      .reduce<Record<string, PropertyOverride>>((acc, [key, value]) => {\n        acc[key] = value.overrides;\n        return acc;\n      }, {});\n\n    this.store.dispatch(setConfigOverride({ state: { configOverrides } }));\n  }\n}\n","import {\n  NgModule,\n} from '@angular/core';\nimport {\n  ConfigurationRulesEngineActionHandler,\n} from './configuration.handler-action';\nimport {\n  ConfigurationStoreModule,\n} from '@o3r/configuration';\n\n@NgModule({\n  imports: [\n    ConfigurationStoreModule\n  ],\n  providers: [\n    ConfigurationRulesEngineActionHandler\n  ]\n})\nexport class ConfigurationRulesEngineActionModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;AAIA;AACO,MAAM,6CAA6C,GAAG;;ACiB7D;;AAEG;MAEU,qCAAqC,CAAA;AAIhD,IAAA,WAAA,CAA6B,KAAgC,EAAA;QAAhC,IAAK,CAAA,KAAA,GAAL,KAAK;;AAFlB,QAAA,IAAA,CAAA,iBAAiB,GAAG,CAAC,6CAA6C,CAAU;;;AAKrF,IAAA,cAAc,CAAC,OAAkC,EAAA;QACtD,MAAM,iBAAiB,GAAG;aACvB,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,QAAQ,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,WAAW;AAC/G,aAAA,MAAM,CAAmC,CAAC,GAAG,EAAE,EAAE,KAAI;AACpD,YAAA,MAAM,UAAU,GAAG,qBAAqB,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC;YAClE,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE;AACrC,YAAA,GAAG,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK;AACjD,YAAA,OAAO,GAAG;SACX,EAAE,EAAE,CAAC;AAER,QAAA,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,iBAAiB;aACrD,MAAM,CAAmC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;AAC9D,YAAA,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,SAAS;AAC1B,YAAA,OAAO,GAAG;SACX,EAAE,EAAE,CAAC;AAER,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,EAAE,eAAe,EAAE,EAAE,CAAC,CAAC;;iIAvB7D,qCAAqC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;qIAArC,qCAAqC,EAAA,CAAA,CAAA;;2FAArC,qCAAqC,EAAA,UAAA,EAAA,CAAA;kBADjD;;;MCPY,oCAAoC,CAAA;iIAApC,oCAAoC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAApC,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oCAAoC,YAN7C,wBAAwB,CAAA,EAAA,CAAA,CAAA;AAMf,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oCAAoC,EAJpC,SAAA,EAAA;YACT;AACD,SAAA,EAAA,OAAA,EAAA,CAJC,wBAAwB,CAAA,EAAA,CAAA,CAAA;;2FAMf,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBARhD,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP;AACD,qBAAA;AACD,oBAAA,SAAS,EAAE;wBACT;AACD;AACF,iBAAA;;;ACjBD;;AAEG;;;;"}