@o3r/components 10.2.0-prerelease.3 → 10.2.0-prerelease.30

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 (35) hide show
  1. package/README.md +3 -0
  2. package/devkit/components-devkit.interface.d.ts +16 -1
  3. package/devkit/components-devkit.interface.d.ts.map +1 -1
  4. package/devkit/components-devtools.message.service.d.ts +1 -0
  5. package/devkit/components-devtools.message.service.d.ts.map +1 -1
  6. package/esm2022/devkit/components-devkit.interface.mjs +2 -1
  7. package/esm2022/devkit/components-devtools.message.service.mjs +16 -5
  8. package/esm2022/devkit/components-devtools.module.mjs +4 -4
  9. package/esm2022/rules-engine/placeholder.action-handler.mjs +3 -3
  10. package/esm2022/rules-engine/placeholder.rules-engine.effect.mjs +4 -4
  11. package/esm2022/rules-engine/placeholder.rules-engine.module.mjs +4 -4
  12. package/esm2022/stores/placeholder-request/placeholder-request.module.mjs +4 -4
  13. package/esm2022/stores/placeholder-template/placeholder-template.module.mjs +4 -4
  14. package/esm2022/tools/component-replacement/c11n.directive.mjs +3 -3
  15. package/esm2022/tools/component-replacement/c11n.mock.module.mjs +10 -10
  16. package/esm2022/tools/component-replacement/c11n.module.mjs +4 -4
  17. package/esm2022/tools/component-replacement/c11n.service.mjs +3 -3
  18. package/esm2022/tools/pipes/capitalize/capitalize.module.mjs +4 -4
  19. package/esm2022/tools/pipes/capitalize/capitalize.pipe.mjs +6 -6
  20. package/esm2022/tools/pipes/duration/duration.module.mjs +4 -4
  21. package/esm2022/tools/pipes/duration/duration.pipe.mjs +6 -6
  22. package/esm2022/tools/pipes/keep-white-space/keep-white-space.module.mjs +4 -4
  23. package/esm2022/tools/pipes/keep-white-space/keep-white-space.pipe.mjs +6 -6
  24. package/esm2022/tools/pipes/replace-with-bold/replace-with-bold.module.mjs +4 -4
  25. package/esm2022/tools/pipes/replace-with-bold/replace-with-bold.pipe.mjs +6 -6
  26. package/esm2022/tools/placeholder/placeholder.component.mjs +3 -3
  27. package/esm2022/tools/placeholder/placeholder.module.mjs +4 -4
  28. package/fesm2022/o3r-components-rules-engine.mjs +10 -10
  29. package/fesm2022/o3r-components-rules-engine.mjs.map +1 -1
  30. package/fesm2022/o3r-components.mjs +95 -83
  31. package/fesm2022/o3r-components.mjs.map +1 -1
  32. package/package.json +22 -22
  33. package/rules-engine/placeholder.rules-engine.effect.d.ts.map +1 -1
  34. package/schematics/ng-add/index.d.ts.map +1 -1
  35. package/schematics/ng-add/index.js +56 -57
@@ -5,11 +5,11 @@ import * as i0 from "@angular/core";
5
5
  * @deprecated please use O3rKeepWhiteSpacePipe, will be removed in v12.
6
6
  */
7
7
  export class KeepWhiteSpacePipeModule {
8
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: KeepWhiteSpacePipeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
9
- /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.2.3", ngImport: i0, type: KeepWhiteSpacePipeModule, declarations: [KeepWhiteSpacePipe], exports: [KeepWhiteSpacePipe] }); }
10
- /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: KeepWhiteSpacePipeModule }); }
8
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: KeepWhiteSpacePipeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
9
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.0", ngImport: i0, type: KeepWhiteSpacePipeModule, declarations: [KeepWhiteSpacePipe], exports: [KeepWhiteSpacePipe] }); }
10
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: KeepWhiteSpacePipeModule }); }
11
11
  }
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: KeepWhiteSpacePipeModule, decorators: [{
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: KeepWhiteSpacePipeModule, decorators: [{
13
13
  type: NgModule,
14
14
  args: [{
15
15
  declarations: [KeepWhiteSpacePipe],
@@ -4,10 +4,10 @@ export class O3rKeepWhiteSpacePipe {
4
4
  transform(value) {
5
5
  return value.replace(/\s/g, ' ');
6
6
  }
7
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: O3rKeepWhiteSpacePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
8
- /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.2.3", ngImport: i0, type: O3rKeepWhiteSpacePipe, name: "o3rKeepWhiteSpace" }); }
7
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: O3rKeepWhiteSpacePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
8
+ /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.0", ngImport: i0, type: O3rKeepWhiteSpacePipe, name: "o3rKeepWhiteSpace" }); }
9
9
  }
10
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: O3rKeepWhiteSpacePipe, decorators: [{
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: O3rKeepWhiteSpacePipe, decorators: [{
11
11
  type: Pipe,
12
12
  args: [{
13
13
  name: 'o3rKeepWhiteSpace'
@@ -17,10 +17,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
17
17
  * @deprecated please use O3rKeepWhiteSpacePipe, will be removed in v12.
18
18
  */
19
19
  export class KeepWhiteSpacePipe extends O3rKeepWhiteSpacePipe {
20
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: KeepWhiteSpacePipe, deps: null, target: i0.ɵɵFactoryTarget.Pipe }); }
21
- /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.2.3", ngImport: i0, type: KeepWhiteSpacePipe, name: "keepWhiteSpace" }); }
20
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: KeepWhiteSpacePipe, deps: null, target: i0.ɵɵFactoryTarget.Pipe }); }
21
+ /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.0", ngImport: i0, type: KeepWhiteSpacePipe, name: "keepWhiteSpace" }); }
22
22
  }
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: KeepWhiteSpacePipe, decorators: [{
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: KeepWhiteSpacePipe, decorators: [{
24
24
  type: Pipe,
25
25
  args: [{
26
26
  name: 'keepWhiteSpace'
@@ -5,11 +5,11 @@ import * as i0 from "@angular/core";
5
5
  * @deprecated please use O3rReplaceWithBoldPipe, will be removed in v12.
6
6
  */
7
7
  export class ReplaceWithBoldPipeModule {
8
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: ReplaceWithBoldPipeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
9
- /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.2.3", ngImport: i0, type: ReplaceWithBoldPipeModule, declarations: [ReplaceWithBoldPipe], exports: [ReplaceWithBoldPipe] }); }
10
- /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: ReplaceWithBoldPipeModule }); }
8
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: ReplaceWithBoldPipeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
9
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.0", ngImport: i0, type: ReplaceWithBoldPipeModule, declarations: [ReplaceWithBoldPipe], exports: [ReplaceWithBoldPipe] }); }
10
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: ReplaceWithBoldPipeModule }); }
11
11
  }
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: ReplaceWithBoldPipeModule, decorators: [{
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: ReplaceWithBoldPipeModule, decorators: [{
13
13
  type: NgModule,
14
14
  args: [{
15
15
  declarations: [ReplaceWithBoldPipe],
@@ -11,10 +11,10 @@ export class O3rReplaceWithBoldPipe {
11
11
  return value;
12
12
  }
13
13
  }
14
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: O3rReplaceWithBoldPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
15
- /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.2.3", ngImport: i0, type: O3rReplaceWithBoldPipe, isStandalone: true, name: "o3rReplaceWithBold" }); }
14
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: O3rReplaceWithBoldPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
15
+ /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.0", ngImport: i0, type: O3rReplaceWithBoldPipe, isStandalone: true, name: "o3rReplaceWithBold" }); }
16
16
  }
17
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: O3rReplaceWithBoldPipe, decorators: [{
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: O3rReplaceWithBoldPipe, decorators: [{
18
18
  type: Pipe,
19
19
  args: [{
20
20
  name: 'o3rReplaceWithBold',
@@ -28,10 +28,10 @@ export class ReplaceWithBoldPipe extends O3rReplaceWithBoldPipe {
28
28
  escapeRegExp(str) {
29
29
  return escapeRegExp(str);
30
30
  }
31
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: ReplaceWithBoldPipe, deps: null, target: i0.ɵɵFactoryTarget.Pipe }); }
32
- /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.2.3", ngImport: i0, type: ReplaceWithBoldPipe, name: "replaceWithBold" }); }
31
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: ReplaceWithBoldPipe, deps: null, target: i0.ɵɵFactoryTarget.Pipe }); }
32
+ /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.0", ngImport: i0, type: ReplaceWithBoldPipe, name: "replaceWithBold" }); }
33
33
  }
34
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: ReplaceWithBoldPipe, decorators: [{
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: ReplaceWithBoldPipe, decorators: [{
35
35
  type: Pipe,
36
36
  args: [{
37
37
  name: 'replaceWithBold'
@@ -70,10 +70,10 @@ export class PlaceholderComponent {
70
70
  this.afterViewInit$.complete();
71
71
  this.subscription.unsubscribe();
72
72
  }
73
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: PlaceholderComponent, deps: [{ token: i1.Store }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
74
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: PlaceholderComponent, selector: "o3r-placeholder", inputs: { id: "id" }, ngImport: i0, template: "<ng-content *ngIf=\"isPending; else displayTemplate\"></ng-content><ng-template #displayTemplate><div [innerHTML]=\"template\"></div></ng-template>", isInline: true, dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
73
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: PlaceholderComponent, deps: [{ token: i1.Store }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
74
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: PlaceholderComponent, selector: "o3r-placeholder", inputs: { id: "id" }, ngImport: i0, template: "<ng-content *ngIf=\"isPending; else displayTemplate\"></ng-content><ng-template #displayTemplate><div [innerHTML]=\"template\"></div></ng-template>", isInline: true, dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
75
75
  }
76
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: PlaceholderComponent, decorators: [{
76
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: PlaceholderComponent, decorators: [{
77
77
  type: Component,
78
78
  args: [{
79
79
  selector: 'o3r-placeholder',
@@ -6,17 +6,17 @@ import { PlaceholderComponent } from './placeholder.component';
6
6
  import { PlaceholderRequestStoreModule } from '../../stores/placeholder-request/index';
7
7
  import * as i0 from "@angular/core";
8
8
  export class PlaceholderModule {
9
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: PlaceholderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
10
- /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.2.3", ngImport: i0, type: PlaceholderModule, declarations: [PlaceholderComponent], imports: [CommonModule,
9
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: PlaceholderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
10
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.0", ngImport: i0, type: PlaceholderModule, declarations: [PlaceholderComponent], imports: [CommonModule,
11
11
  StoreModule,
12
12
  PlaceholderTemplateStoreModule,
13
13
  PlaceholderRequestStoreModule], exports: [PlaceholderComponent] }); }
14
- /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: PlaceholderModule, imports: [CommonModule,
14
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: PlaceholderModule, imports: [CommonModule,
15
15
  StoreModule,
16
16
  PlaceholderTemplateStoreModule,
17
17
  PlaceholderRequestStoreModule] }); }
18
18
  }
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: PlaceholderModule, decorators: [{
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: PlaceholderModule, decorators: [{
20
20
  type: NgModule,
21
21
  args: [{
22
22
  imports: [
@@ -151,10 +151,10 @@ class PlaceholderRulesEngineActionHandler {
151
151
  ngOnDestroy() {
152
152
  this.subscription.unsubscribe();
153
153
  }
154
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: PlaceholderRulesEngineActionHandler, deps: [{ token: i1.Store }, { token: i2.LoggerService }, { token: i3.LocalizationService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
155
- /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: PlaceholderRulesEngineActionHandler }); }
154
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: PlaceholderRulesEngineActionHandler, deps: [{ token: i1.Store }, { token: i2.LoggerService }, { token: i3.LocalizationService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
155
+ /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: PlaceholderRulesEngineActionHandler }); }
156
156
  }
157
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: PlaceholderRulesEngineActionHandler, decorators: [{
157
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: PlaceholderRulesEngineActionHandler, decorators: [{
158
158
  type: Injectable
159
159
  }], ctorParameters: () => [{ type: i1.Store }, { type: i2.LoggerService }, { type: i3.LocalizationService, decorators: [{
160
160
  type: Optional
@@ -257,10 +257,10 @@ class PlaceholderTemplateResponseEffect {
257
257
  unknownTypeFound
258
258
  }))) : of({ renderedTemplate: template, unknownTypeFound });
259
259
  }
260
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: PlaceholderTemplateResponseEffect, deps: [{ token: i1$1.Actions }, { token: i1.Store }, { token: i3$1.RulesEngineRunnerService, optional: true }, { token: i4.DynamicContentService, optional: true }, { token: i3.LocalizationService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
261
- /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: PlaceholderTemplateResponseEffect }); }
260
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: PlaceholderTemplateResponseEffect, deps: [{ token: i1$1.Actions }, { token: i1.Store }, { token: i3$1.RulesEngineRunnerService, optional: true }, { token: i4.DynamicContentService, optional: true }, { token: i3.LocalizationService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
261
+ /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: PlaceholderTemplateResponseEffect }); }
262
262
  }
263
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: PlaceholderTemplateResponseEffect, decorators: [{
263
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: PlaceholderTemplateResponseEffect, decorators: [{
264
264
  type: Injectable
265
265
  }], ctorParameters: () => [{ type: i1$1.Actions }, { type: i1.Store }, { type: i3$1.RulesEngineRunnerService, decorators: [{
266
266
  type: Optional
@@ -271,16 +271,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
271
271
  }] }] });
272
272
 
273
273
  class PlaceholderRulesEngineActionModule {
274
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: PlaceholderRulesEngineActionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
275
- /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.2.3", ngImport: i0, type: PlaceholderRulesEngineActionModule, imports: [i1$1.EffectsFeatureModule, PlaceholderRequestStoreModule,
274
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: PlaceholderRulesEngineActionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
275
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.0", ngImport: i0, type: PlaceholderRulesEngineActionModule, imports: [i1$1.EffectsFeatureModule, PlaceholderRequestStoreModule,
276
276
  PlaceholderTemplateStoreModule] }); }
277
- /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: PlaceholderRulesEngineActionModule, providers: [
277
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: PlaceholderRulesEngineActionModule, providers: [
278
278
  PlaceholderRulesEngineActionHandler
279
279
  ], imports: [EffectsModule.forFeature([PlaceholderTemplateResponseEffect]),
280
280
  PlaceholderRequestStoreModule,
281
281
  PlaceholderTemplateStoreModule] }); }
282
282
  }
283
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: PlaceholderRulesEngineActionModule, decorators: [{
283
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: PlaceholderRulesEngineActionModule, decorators: [{
284
284
  type: NgModule,
285
285
  args: [{
286
286
  imports: [
@@ -1 +1 @@
1
- {"version":3,"file":"o3r-components-rules-engine.mjs","sources":["../../src/rules-engine/placeholder.interfaces.ts","../../src/rules-engine/placeholder.action-handler.ts","../../src/rules-engine/placeholder.rules-engine.effect.ts","../../src/rules-engine/placeholder.rules-engine.module.ts","../../src/rules-engine/o3r-components-rules-engine.ts"],"sourcesContent":["import type { RulesEngineAction } from '@o3r/core';\n\n/** ActionUpdatePlaceholderBlock */\nexport const RULES_ENGINE_PLACEHOLDER_UPDATE_ACTION_TYPE = 'UPDATE_PLACEHOLDER';\n\n/**\n * Content of action that updates a placeholder\n */\nexport interface ActionUpdatePlaceholderBlock extends RulesEngineAction {\n actionType: typeof RULES_ENGINE_PLACEHOLDER_UPDATE_ACTION_TYPE;\n placeholderId: string;\n value: string;\n priority?: number;\n}\n","import { inject, Injectable, OnDestroy, Optional } from '@angular/core';\nimport type { RulesEngineActionHandler } from '@o3r/core';\nimport { LoggerService } from '@o3r/logger';\nimport { combineLatest, distinctUntilChanged, firstValueFrom, map, of, Subject, Subscription, withLatestFrom } from 'rxjs';\nimport {\n deletePlaceholderTemplateEntity,\n PlaceholderRequestReply,\n PlaceholderTemplateStore,\n selectPlaceholderRequestEntities,\n selectPlaceholderTemplateEntities,\n setPlaceholderRequestEntityFromUrl,\n setPlaceholderTemplateEntity,\n updatePlaceholderRequestEntity\n} from '@o3r/components';\nimport { select, Store } from '@ngrx/store';\nimport { LocalizationService } from '@o3r/localization';\nimport { ActionUpdatePlaceholderBlock, RULES_ENGINE_PLACEHOLDER_UPDATE_ACTION_TYPE } from './placeholder.interfaces';\nimport { DynamicContentService } from '@o3r/dynamic-content';\n\n/**\n * Service to handle async PlaceholderTemplate actions\n */\n@Injectable()\nexport class PlaceholderRulesEngineActionHandler implements OnDestroy, RulesEngineActionHandler<ActionUpdatePlaceholderBlock> {\n\n protected subscription = new Subscription();\n\n protected placeholdersActions$: Subject<{ placeholderId: string; templateUrl: string; priority: number }[]> = new Subject();\n\n /** @inheritdoc */\n public readonly supportingActions = [RULES_ENGINE_PLACEHOLDER_UPDATE_ACTION_TYPE] as const;\n\n constructor(store: Store<PlaceholderTemplateStore>, private readonly logger: LoggerService, @Optional() translateService?: LocalizationService) {\n\n const lang$ = translateService ? translateService.getTranslateService().onLangChange.pipe(\n map(({ lang }) => lang),\n distinctUntilChanged()\n ) : of(null);\n\n const filteredActions$ = combineLatest([lang$, this.placeholdersActions$.pipe(\n distinctUntilChanged((prev, next) => JSON.stringify(prev) === JSON.stringify(next)))]).pipe(\n withLatestFrom(\n combineLatest([store.pipe(select(selectPlaceholderTemplateEntities)), store.pipe(select(selectPlaceholderRequestEntities))])\n ),\n map(([langAndTemplatesUrls, storedPlaceholdersAndRequests]) => {\n const [lang, placeholderActions] = langAndTemplatesUrls;\n const storedPlaceholders = storedPlaceholdersAndRequests[0] || {};\n const storedPlaceholderRequests = storedPlaceholdersAndRequests[1] || {};\n const placeholderNewRequests: { rawUrl: string; resolvedUrl: string }[] = [];\n // Stores all raw Urls used from the current engine execution\n const usedUrls: Record<string, boolean> = {};\n // Get all Urls that needs to be resolved from current rules engine output\n const placeholdersTemplates = placeholderActions.reduce((acc, placeholderAction) => {\n const placeholdersTemplateUrl = {\n rawUrl: placeholderAction.templateUrl,\n priority: placeholderAction.priority\n };\n if (acc[placeholderAction.placeholderId]) {\n acc[placeholderAction.placeholderId].push(placeholdersTemplateUrl);\n } else {\n acc[placeholderAction.placeholderId] = [placeholdersTemplateUrl];\n }\n const resolvedUrl = this.resolveUrlWithLang(placeholderAction.templateUrl, lang);\n // Filters duplicates and resolved urls that are already in the store\n if (!usedUrls[placeholderAction.templateUrl] && (!storedPlaceholderRequests[placeholderAction.templateUrl]\n || storedPlaceholderRequests[placeholderAction.templateUrl]!.resolvedUrl !== resolvedUrl)) {\n placeholderNewRequests.push({\n rawUrl: placeholderAction.templateUrl,\n resolvedUrl: this.resolveUrlWithLang(placeholderAction.templateUrl, lang)\n });\n }\n usedUrls[placeholderAction.templateUrl] = true;\n return acc;\n }, {} as { [key: string]: { rawUrl: string; priority: number }[] });\n // Urls not used anymore and not already disabled\n const placeholderRequestsToDisable: string[] = [];\n // Urls used that were disabled\n const placeholderRequestsToEnable: string[] = [];\n Object.keys(storedPlaceholderRequests).forEach((storedPlaceholderRequestRawUrl) => {\n const usedFromEngineIteration = usedUrls[storedPlaceholderRequestRawUrl];\n const usedFromStore = (storedPlaceholderRequests && storedPlaceholderRequests[storedPlaceholderRequestRawUrl]) ? storedPlaceholderRequests[storedPlaceholderRequestRawUrl]!.used : false;\n if (!usedFromEngineIteration && usedFromStore) {\n placeholderRequestsToDisable.push(storedPlaceholderRequestRawUrl);\n } else if (usedFromEngineIteration && !usedFromStore) {\n placeholderRequestsToEnable.push(storedPlaceholderRequestRawUrl);\n }\n });\n // Placeholder that are no longer filled by the current engine execution output will be cleared\n const placeholdersTemplatesToBeCleanedUp = Object.keys(storedPlaceholders)\n .filter(placeholderId => !placeholdersTemplates[placeholderId]);\n\n const placeholdersTemplatesToBeSet = Object.keys(placeholdersTemplates).reduce((changedPlaceholderTemplates, placeholderTemplateId) => {\n // Caching if the placeholder template already exists with the same urls\n if (!storedPlaceholders[placeholderTemplateId] ||\n !(JSON.stringify(storedPlaceholders[placeholderTemplateId]!.urlsWithPriority) === JSON.stringify(placeholdersTemplates[placeholderTemplateId]))) {\n changedPlaceholderTemplates.push({\n id: placeholderTemplateId,\n urlsWithPriority: placeholdersTemplates[placeholderTemplateId]\n });\n }\n return changedPlaceholderTemplates;\n }, [] as { id: string; urlsWithPriority: { rawUrl: string; priority: number }[] }[]);\n return {\n placeholdersTemplatesToBeCleanedUp,\n placeholderRequestsToDisable,\n placeholderRequestsToEnable,\n placeholdersTemplatesToBeSet,\n placeholderNewRequests\n };\n })\n );\n this.subscription.add(filteredActions$.subscribe((placeholdersUpdates) => {\n placeholdersUpdates.placeholdersTemplatesToBeCleanedUp.forEach(placeholderId =>\n store.dispatch(deletePlaceholderTemplateEntity({\n id: placeholderId\n }))\n );\n placeholdersUpdates.placeholdersTemplatesToBeSet.forEach(placeholdersTemplateToBeSet => {\n store.dispatch(setPlaceholderTemplateEntity({ entity: placeholdersTemplateToBeSet }));\n });\n placeholdersUpdates.placeholderRequestsToDisable.forEach(placeholderRequestToDisable => {\n store.dispatch(updatePlaceholderRequestEntity({ entity: { id: placeholderRequestToDisable, used: false } }));\n });\n placeholdersUpdates.placeholderRequestsToEnable.forEach(placeholderRequestToEnable => {\n store.dispatch(updatePlaceholderRequestEntity({ entity: { id: placeholderRequestToEnable, used: true } }));\n });\n placeholdersUpdates.placeholderNewRequests.forEach(placeholderNewRequest => {\n store.dispatch(setPlaceholderRequestEntityFromUrl({\n resolvedUrl: placeholderNewRequest.resolvedUrl,\n id: placeholderNewRequest.rawUrl,\n call: this.retrieveTemplate(placeholderNewRequest.resolvedUrl)\n }));\n });\n }));\n }\n\n /**\n * Localize the url, replacing the language marker\n * @param url\n * @param language\n */\n protected resolveUrlWithLang(url: string, language: string | null): string {\n if (!language && url.includes('[LANGUAGE]')) {\n this.logger.warn(`Missing language when trying to resolve ${url}`);\n }\n return language ? url.replace(/\\[LANGUAGE]/g, language) : url;\n }\n\n /**\n * Retrieve template as json from a given url\n * @param url\n */\n protected async retrieveTemplate(url: string): Promise<PlaceholderRequestReply> {\n const resolvedUrl$ = inject(DynamicContentService, { optional: true })?.getContentPathStream(url) || of(url);\n const fullUrl = await firstValueFrom(resolvedUrl$);\n return fetch(fullUrl).then((response) => response.json());\n }\n\n /** @inheritdoc */\n public executeActions(actions: ActionUpdatePlaceholderBlock[]) {\n const templates = actions.map((action) => ({\n placeholderId: action.placeholderId,\n templateUrl: action.value,\n priority: action.priority || 0\n }));\n\n this.placeholdersActions$.next(templates);\n }\n\n /** @inheritdoc */\n public ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n}\n","import {Injectable, Optional} from '@angular/core';\nimport {Actions, createEffect, ofType} from '@ngrx/effects';\nimport {\n cancelPlaceholderRequest,\n failPlaceholderRequestEntity,\n PlaceholderRequestStore,\n PlaceholderVariable,\n selectPlaceholderRequestEntityUsage,\n setPlaceholderRequestEntityFromUrl,\n updatePlaceholderRequestEntity\n} from '@o3r/components';\nimport {fromApiEffectSwitchMapById} from '@o3r/core';\nimport {DynamicContentService} from '@o3r/dynamic-content';\nimport {LocalizationService} from '@o3r/localization';\nimport {RulesEngineRunnerService} from '@o3r/rules-engine';\nimport {combineLatest, EMPTY, Observable, of} from 'rxjs';\nimport {distinctUntilChanged, map, switchMap, take} from 'rxjs/operators';\nimport {Store} from '@ngrx/store';\nimport { JSONPath } from 'jsonpath-plus';\n\n/**\n * Service to handle async PlaceholderTemplate actions\n */\n@Injectable()\nexport class PlaceholderTemplateResponseEffect {\n /**\n * Set the PlaceholderRequest entity with the reply content, dispatch failPlaceholderRequestEntity if it catches a failure\n * Handles the rendering of the HTML content from the template and creates the combine latest from facts list if needed\n * Disables unused templates refresh if used is false in the store\n */\n public setPlaceholderRequestEntityFromUrl$ = createEffect(() =>\n this.actions$.pipe(\n ofType(setPlaceholderRequestEntityFromUrl),\n fromApiEffectSwitchMapById(\n (templateResponse, action) => {\n const facts = templateResponse.vars ? Object.values(templateResponse.vars).filter((variable: PlaceholderVariable) => variable.type === 'fact') : [];\n const factsStreamsList = this.rulesEngineService ? facts.map((fact) =>\n this.rulesEngineService!.engine.retrieveOrCreateFactStream(fact.value).pipe(\n map((factValue) => ({\n name: fact.value,\n // eslint-disable-next-line new-cap\n factValue: (fact.path && factValue) ? JSONPath({ wrap: false, json: factValue, path: fact.path }) : factValue\n })),\n distinctUntilChanged((previous, current) => previous.factValue === current.factValue)\n )) : [];\n\n const factsStreamsList$ = factsStreamsList.length ? combineLatest(factsStreamsList) : of([]);\n return combineLatest([factsStreamsList$, this.store.select(selectPlaceholderRequestEntityUsage(action.id)).pipe(distinctUntilChanged())]).pipe(\n switchMap(([factsUsedInTemplate, placeholderRequestUsage]) => {\n if (!placeholderRequestUsage) {\n return EMPTY;\n }\n return this.getRenderedHTML$(templateResponse.template, templateResponse.vars, factsUsedInTemplate).pipe(\n map(({renderedTemplate, unknownTypeFound}) =>\n // Update instead of set because used already set by the update from url action\n updatePlaceholderRequestEntity({\n entity: {\n ...templateResponse,\n resolvedUrl: action.resolvedUrl,\n id: action.id,\n renderedTemplate,\n unknownTypeFound\n },\n requestId: action.requestId\n })\n )\n );\n }));\n },\n (error, action) => of(failPlaceholderRequestEntity({ids: [action.id], error, requestId: action.requestId})),\n (requestIdPayload, action) => cancelPlaceholderRequest({...requestIdPayload, id: action.id})\n )\n )\n );\n\n constructor(\n private readonly actions$: Actions,\n private readonly store: Store<PlaceholderRequestStore>,\n @Optional() private readonly rulesEngineService: RulesEngineRunnerService | null,\n @Optional() private readonly dynamicContentService: DynamicContentService | null,\n @Optional() private readonly translationService: LocalizationService | null) {\n }\n\n /**\n * Renders the html template, replacing facts and urls and localizationKeys\n * @param template\n * @param vars\n * @param facts\n */\n private getRenderedHTML$(template?: string, vars?: Record<string, PlaceholderVariable>, facts?: { name: string; factValue: any }[]) {\n let unknownTypeFound = false;\n const factset = (facts || []).reduce((set: { [key: string]: any }, fact) => {\n set[fact.name] = fact.factValue;\n return set;\n }, {});\n const replacements$: Observable<{ ejsVar: RegExp; value: string } | null>[] = [];\n if (vars && template) {\n for (const varName in vars) {\n if (Object.prototype.hasOwnProperty.call(vars, varName)) {\n const ejsVar = new RegExp(`<%=\\\\s*${varName}\\\\s*%>`, 'g');\n switch (vars[varName].type) {\n case 'relativeUrl': {\n replacements$.push(\n this.dynamicContentService?.getMediaPathStream(vars[varName].value).pipe(\n take(1),\n map((value: string) => ({ejsVar, value}))\n ) || of({ ejsVar, value: vars[varName].value })\n );\n break;\n }\n case 'fullUrl': {\n template = template.replace(ejsVar, vars[varName].value);\n break;\n }\n case 'fact': {\n template = template.replace(ejsVar, factset[vars[varName].value] ?? '');\n break;\n }\n case 'localisation': {\n const linkedParams = (vars[varName].vars || []).reduce((acc: { [key: string]: any }, parameter) => {\n const paramName = vars[parameter].value;\n acc[paramName] = factset[paramName];\n return acc;\n }, {});\n replacements$.push(\n this.translationService ?\n this.translationService.translate(vars[varName].value, linkedParams).pipe(\n map((value) => (value ? { ejsVar, value } : null))\n ) :\n of(null)\n );\n break;\n }\n default : {\n unknownTypeFound = true;\n break;\n }\n }\n }\n }\n }\n return replacements$.length > 0 && !!template ?\n combineLatest(replacements$).pipe(\n map((replacements) => ({\n renderedTemplate: replacements.reduce((acc, replacement) =>\n replacement ? acc.replace(replacement.ejsVar, replacement.value) : acc,\n template!\n ),\n unknownTypeFound\n }))\n ) : of({renderedTemplate: template, unknownTypeFound});\n }\n}\n","import { NgModule } from '@angular/core';\nimport { EffectsModule } from '@ngrx/effects';\nimport { PlaceholderRequestStoreModule, PlaceholderTemplateStoreModule } from '@o3r/components';\nimport { PlaceholderRulesEngineActionHandler } from './placeholder.action-handler';\nimport { PlaceholderTemplateResponseEffect } from './placeholder.rules-engine.effect';\n\n@NgModule({\n imports: [\n EffectsModule.forFeature([PlaceholderTemplateResponseEffect]),\n PlaceholderRequestStoreModule,\n PlaceholderTemplateStoreModule\n ],\n providers: [\n PlaceholderRulesEngineActionHandler\n ]\n})\nexport class PlaceholderRulesEngineActionModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["map","distinctUntilChanged","i1","i2","i3","i5"],"mappings":";;;;;;;;;;;;;;;;;AAEA;AACO,MAAM,2CAA2C,GAAG;;ACgB3D;;AAEG;MAEU,mCAAmC,CAAA;AAS9C,IAAA,WAAA,CAAY,KAAsC,EAAmB,MAAqB,EAAc,gBAAsC,EAAA;QAAzE,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;AAPhF,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;AAElC,QAAA,IAAA,CAAA,oBAAoB,GAAgF,IAAI,OAAO,EAAE,CAAC;;AAG5G,QAAA,IAAA,CAAA,iBAAiB,GAAG,CAAC,2CAA2C,CAAU,CAAC;AAIzF,QAAA,MAAM,KAAK,GAAG,gBAAgB,GAAG,gBAAgB,CAAC,mBAAmB,EAAE,CAAC,YAAY,CAAC,IAAI,CACvF,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC,EACvB,oBAAoB,EAAE,CACvB,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;AAEb,QAAA,MAAM,gBAAgB,GAAG,aAAa,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAC3E,oBAAoB,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAC3F,cAAc,CACZ,aAAa,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,gCAAgC,CAAC,CAAC,CAAC,CAAC,CAC7H,EACD,GAAG,CAAC,CAAC,CAAC,oBAAoB,EAAE,6BAA6B,CAAC,KAAI;AAC5D,YAAA,MAAM,CAAC,IAAI,EAAE,kBAAkB,CAAC,GAAG,oBAAoB,CAAC;YACxD,MAAM,kBAAkB,GAAG,6BAA6B,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAClE,MAAM,yBAAyB,GAAG,6BAA6B,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACzE,MAAM,sBAAsB,GAA8C,EAAE,CAAC;;YAE7E,MAAM,QAAQ,GAA4B,EAAE,CAAC;;YAE7C,MAAM,qBAAqB,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,iBAAiB,KAAI;AACjF,gBAAA,MAAM,uBAAuB,GAAG;oBAC9B,MAAM,EAAE,iBAAiB,CAAC,WAAW;oBACrC,QAAQ,EAAE,iBAAiB,CAAC,QAAQ;iBACrC,CAAC;AACF,gBAAA,IAAI,GAAG,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE;oBACxC,GAAG,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;iBACpE;qBAAM;oBACL,GAAG,CAAC,iBAAiB,CAAC,aAAa,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;iBAClE;AACD,gBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;;AAEjF,gBAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,WAAW,CAAC,KAAK,CAAC,yBAAyB,CAAC,iBAAiB,CAAC,WAAW,CAAC;uBACrG,yBAAyB,CAAC,iBAAiB,CAAC,WAAW,CAAE,CAAC,WAAW,KAAK,WAAW,CAAC,EAAE;oBAC3F,sBAAsB,CAAC,IAAI,CAAC;wBAC1B,MAAM,EAAE,iBAAiB,CAAC,WAAW;wBACrC,WAAW,EAAE,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,WAAW,EAAE,IAAI,CAAC;AAC1E,qBAAA,CAAC,CAAC;iBACJ;AACD,gBAAA,QAAQ,CAAC,iBAAiB,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;AAC/C,gBAAA,OAAO,GAAG,CAAC;aACZ,EAAE,EAA+D,CAAC,CAAC;;YAEpE,MAAM,4BAA4B,GAAa,EAAE,CAAC;;YAElD,MAAM,2BAA2B,GAAa,EAAE,CAAC;YACjD,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,OAAO,CAAC,CAAC,8BAA8B,KAAI;AAChF,gBAAA,MAAM,uBAAuB,GAAG,QAAQ,CAAC,8BAA8B,CAAC,CAAC;gBACzE,MAAM,aAAa,GAAG,CAAC,yBAAyB,IAAI,yBAAyB,CAAC,8BAA8B,CAAC,IAAI,yBAAyB,CAAC,8BAA8B,CAAE,CAAC,IAAI,GAAG,KAAK,CAAC;AACzL,gBAAA,IAAI,CAAC,uBAAuB,IAAI,aAAa,EAAE;AAC7C,oBAAA,4BAA4B,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;iBACnE;AAAM,qBAAA,IAAI,uBAAuB,IAAI,CAAC,aAAa,EAAE;AACpD,oBAAA,2BAA2B,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;iBAClE;AACH,aAAC,CAAC,CAAC;;AAEH,YAAA,MAAM,kCAAkC,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC;iBACvE,MAAM,CAAC,aAAa,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC,CAAC;AAElE,YAAA,MAAM,4BAA4B,GAAG,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC,2BAA2B,EAAE,qBAAqB,KAAI;;AAEpI,gBAAA,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,CAAC;oBAC5C,EAAE,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,qBAAqB,CAAE,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE;oBACjJ,2BAA2B,CAAC,IAAI,CAAC;AAC/B,wBAAA,EAAE,EAAE,qBAAqB;AACzB,wBAAA,gBAAgB,EAAE,qBAAqB,CAAC,qBAAqB,CAAC;AAC/D,qBAAA,CAAC,CAAC;iBACJ;AACD,gBAAA,OAAO,2BAA2B,CAAC;aACpC,EAAE,EAAgF,CAAC,CAAC;YACrF,OAAO;gBACL,kCAAkC;gBAClC,4BAA4B;gBAC5B,2BAA2B;gBAC3B,4BAA4B;gBAC5B,sBAAsB;aACvB,CAAC;SACH,CAAC,CACH,CAAC;AACF,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,mBAAmB,KAAI;AACvE,YAAA,mBAAmB,CAAC,kCAAkC,CAAC,OAAO,CAAC,aAAa,IAC1E,KAAK,CAAC,QAAQ,CAAC,+BAA+B,CAAC;AAC7C,gBAAA,EAAE,EAAE,aAAa;aAClB,CAAC,CAAC,CACJ,CAAC;AACF,YAAA,mBAAmB,CAAC,4BAA4B,CAAC,OAAO,CAAC,2BAA2B,IAAG;AACrF,gBAAA,KAAK,CAAC,QAAQ,CAAC,4BAA4B,CAAC,EAAE,MAAM,EAAE,2BAA2B,EAAE,CAAC,CAAC,CAAC;AACxF,aAAC,CAAC,CAAC;AACH,YAAA,mBAAmB,CAAC,4BAA4B,CAAC,OAAO,CAAC,2BAA2B,IAAG;gBACrF,KAAK,CAAC,QAAQ,CAAC,8BAA8B,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,2BAA2B,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/G,aAAC,CAAC,CAAC;AACH,YAAA,mBAAmB,CAAC,2BAA2B,CAAC,OAAO,CAAC,0BAA0B,IAAG;gBACnF,KAAK,CAAC,QAAQ,CAAC,8BAA8B,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,0BAA0B,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;AAC7G,aAAC,CAAC,CAAC;AACH,YAAA,mBAAmB,CAAC,sBAAsB,CAAC,OAAO,CAAC,qBAAqB,IAAG;AACzE,gBAAA,KAAK,CAAC,QAAQ,CAAC,kCAAkC,CAAC;oBAChD,WAAW,EAAE,qBAAqB,CAAC,WAAW;oBAC9C,EAAE,EAAE,qBAAqB,CAAC,MAAM;oBAChC,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,WAAW,CAAC;AAC/D,iBAAA,CAAC,CAAC,CAAC;AACN,aAAC,CAAC,CAAC;SACJ,CAAC,CAAC,CAAC;KACL;AAED;;;;AAIG;IACO,kBAAkB,CAAC,GAAW,EAAE,QAAuB,EAAA;QAC/D,IAAI,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;YAC3C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAA2C,wCAAA,EAAA,GAAG,CAAE,CAAA,CAAC,CAAC;SACpE;AACD,QAAA,OAAO,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,QAAQ,CAAC,GAAG,GAAG,CAAC;KAC/D;AAED;;;AAGG;IACO,MAAM,gBAAgB,CAAC,GAAW,EAAA;QAC1C,MAAM,YAAY,GAAG,MAAM,CAAC,qBAAqB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,oBAAoB,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;AAC7G,QAAA,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,YAAY,CAAC,CAAC;AACnD,QAAA,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;KAC3D;;AAGM,IAAA,cAAc,CAAC,OAAuC,EAAA;QAC3D,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,MAAM;YACzC,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,WAAW,EAAE,MAAM,CAAC,KAAK;AACzB,YAAA,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,CAAC;AAC/B,SAAA,CAAC,CAAC,CAAC;AAEJ,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KAC3C;;IAGM,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;KACjC;iIArJU,mCAAmC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;qIAAnC,mCAAmC,EAAA,CAAA,CAAA,EAAA;;2FAAnC,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAD/C,UAAU;;0BAUoF,QAAQ;;;ACZvG;;AAEG;MAEU,iCAAiC,CAAA;IAmD5C,WACmB,CAAA,QAAiB,EACjB,KAAqC,EACzB,kBAAmD,EACnD,qBAAmD,EACnD,kBAA8C,EAAA;QAJ1D,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAS;QACjB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgC;QACzB,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAiC;QACnD,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CAA8B;QACnD,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAA4B;AAvD7E;;;;AAIG;QACI,IAAmC,CAAA,mCAAA,GAAG,YAAY,CAAC,MACxD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,kCAAkC,CAAC,EAC1C,0BAA0B,CACxB,CAAC,gBAAgB,EAAE,MAAM,KAAI;AAC3B,YAAA,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,QAA6B,KAAK,QAAQ,CAAC,IAAI,KAAK,MAAM,CAAC,GAAG,EAAE,CAAC;AACpJ,YAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAChE,IAAI,CAAC,kBAAmB,CAAC,MAAM,CAAC,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CACzEA,KAAG,CAAC,CAAC,SAAS,MAAM;gBAClB,IAAI,EAAE,IAAI,CAAC,KAAK;;AAEhB,gBAAA,SAAS,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,SAAS,IAAI,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,SAAS;aAC9G,CAAC,CAAC,EACHC,sBAAoB,CAAC,CAAC,QAAQ,EAAE,OAAO,KAAK,QAAQ,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS,CAAC,CACtF,CAAC,GAAG,EAAE,CAAC;AAEV,YAAA,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,MAAM,GAAG,aAAa,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AAC7F,YAAA,OAAO,aAAa,CAAC,CAAC,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mCAAmC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAACA,sBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAC5I,SAAS,CAAC,CAAC,CAAC,mBAAmB,EAAE,uBAAuB,CAAC,KAAI;gBAC3D,IAAI,CAAC,uBAAuB,EAAE;AAC5B,oBAAA,OAAO,KAAK,CAAC;iBACd;gBACD,OAAO,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,QAAQ,EAAE,gBAAgB,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC,IAAI,CACtGD,KAAG,CAAC,CAAC,EAAC,gBAAgB,EAAE,gBAAgB,EAAC;;AAEvC,gBAAA,8BAA8B,CAAC;AAC7B,oBAAA,MAAM,EAAE;AACN,wBAAA,GAAG,gBAAgB;wBACnB,WAAW,EAAE,MAAM,CAAC,WAAW;wBAC/B,EAAE,EAAE,MAAM,CAAC,EAAE;wBACb,gBAAgB;wBAChB,gBAAgB;AACjB,qBAAA;oBACD,SAAS,EAAE,MAAM,CAAC,SAAS;iBAC5B,CAAC,CACH,CACF,CAAC;aACH,CAAC,CAAC,CAAC;SACP,EACD,CAAC,KAAK,EAAE,MAAM,KAAK,EAAE,CAAC,4BAA4B,CAAC,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAC,CAAC,CAAC,EAC3G,CAAC,gBAAgB,EAAE,MAAM,KAAK,wBAAwB,CAAC,EAAC,GAAG,gBAAgB,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAC,CAAC,CAC7F,CACF,CACF,CAAC;KAQD;AAED;;;;;AAKG;AACK,IAAA,gBAAgB,CAAC,QAAiB,EAAE,IAA0C,EAAE,KAA0C,EAAA;QAChI,IAAI,gBAAgB,GAAG,KAAK,CAAC;AAC7B,QAAA,MAAM,OAAO,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC,GAA2B,EAAE,IAAI,KAAI;YACzE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;AAChC,YAAA,OAAO,GAAG,CAAC;SACZ,EAAE,EAAE,CAAC,CAAC;QACP,MAAM,aAAa,GAA2D,EAAE,CAAC;AACjF,QAAA,IAAI,IAAI,IAAI,QAAQ,EAAE;AACpB,YAAA,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE;AAC1B,gBAAA,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;oBACvD,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,CAAU,OAAA,EAAA,OAAO,CAAQ,MAAA,CAAA,EAAE,GAAG,CAAC,CAAC;AAC1D,oBAAA,QAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI;wBACxB,KAAK,aAAa,EAAE;4BAClB,aAAa,CAAC,IAAI,CAChB,IAAI,CAAC,qBAAqB,EAAE,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CACtE,IAAI,CAAC,CAAC,CAAC,EACPA,KAAG,CAAC,CAAC,KAAa,MAAM,EAAC,MAAM,EAAE,KAAK,EAAC,CAAC,CAAC,CAC1C,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,CAChD,CAAC;4BACF,MAAM;yBACP;wBACD,KAAK,SAAS,EAAE;AACd,4BAAA,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC;4BACzD,MAAM;yBACP;wBACD,KAAK,MAAM,EAAE;AACX,4BAAA,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;4BACxE,MAAM;yBACP;wBACD,KAAK,cAAc,EAAE;4BACnB,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC,GAA2B,EAAE,SAAS,KAAI;gCAChG,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC;gCACxC,GAAG,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AACpC,gCAAA,OAAO,GAAG,CAAC;6BACZ,EAAE,EAAE,CAAC,CAAC;AACP,4BAAA,aAAa,CAAC,IAAI,CAChB,IAAI,CAAC,kBAAkB;AACrB,gCAAA,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,IAAI,CACvEA,KAAG,CAAC,CAAC,KAAK,MAAM,KAAK,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC,CACnD;AACD,gCAAA,EAAE,CAAC,IAAI,CAAC,CACX,CAAC;4BACF,MAAM;yBACP;wBACD,SAAU;4BACR,gBAAgB,GAAG,IAAI,CAAC;4BACxB,MAAM;yBACP;qBACF;iBACF;aACF;SACF;QACD,OAAO,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ;AAC3C,YAAA,aAAa,CAAC,aAAa,CAAC,CAAC,IAAI,CAC/BA,KAAG,CAAC,CAAC,YAAY,MAAM;AACrB,gBAAA,gBAAgB,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,WAAW,KACrD,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,GAAG,EACtE,QAAS,CACV;gBACD,gBAAgB;AACjB,aAAA,CAAC,CAAC,CACJ,GAAG,EAAE,CAAC,EAAC,gBAAgB,EAAE,QAAQ,EAAE,gBAAgB,EAAC,CAAC,CAAC;KAC1D;iIA/HU,iCAAiC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAE,IAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;qIAAjC,iCAAiC,EAAA,CAAA,CAAA,EAAA;;2FAAjC,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAD7C,UAAU;;0BAuDN,QAAQ;;0BACR,QAAQ;;0BACR,QAAQ;;;MChEA,kCAAkC,CAAA;iIAAlC,kCAAkC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAlC,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,kCAAkC,uCAP3C,6BAA6B;YAC7B,8BAA8B,CAAA,EAAA,CAAA,CAAA,EAAA;AAMrB,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,kCAAkC,EAJlC,SAAA,EAAA;YACT,mCAAmC;AACpC,SAAA,EAAA,OAAA,EAAA,CANC,aAAa,CAAC,UAAU,CAAC,CAAC,iCAAiC,CAAC,CAAC;YAC7D,6BAA6B;YAC7B,8BAA8B,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAMrB,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAV9C,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;AACP,wBAAA,aAAa,CAAC,UAAU,CAAC,CAAC,iCAAiC,CAAC,CAAC;wBAC7D,6BAA6B;wBAC7B,8BAA8B;AAC/B,qBAAA;AACD,oBAAA,SAAS,EAAE;wBACT,mCAAmC;AACpC,qBAAA;AACF,iBAAA,CAAA;;;ACfD;;AAEG;;;;"}
1
+ {"version":3,"file":"o3r-components-rules-engine.mjs","sources":["../../src/rules-engine/placeholder.interfaces.ts","../../src/rules-engine/placeholder.action-handler.ts","../../src/rules-engine/placeholder.rules-engine.effect.ts","../../src/rules-engine/placeholder.rules-engine.module.ts","../../src/rules-engine/o3r-components-rules-engine.ts"],"sourcesContent":["import type { RulesEngineAction } from '@o3r/core';\n\n/** ActionUpdatePlaceholderBlock */\nexport const RULES_ENGINE_PLACEHOLDER_UPDATE_ACTION_TYPE = 'UPDATE_PLACEHOLDER';\n\n/**\n * Content of action that updates a placeholder\n */\nexport interface ActionUpdatePlaceholderBlock extends RulesEngineAction {\n actionType: typeof RULES_ENGINE_PLACEHOLDER_UPDATE_ACTION_TYPE;\n placeholderId: string;\n value: string;\n priority?: number;\n}\n","import { inject, Injectable, OnDestroy, Optional } from '@angular/core';\nimport type { RulesEngineActionHandler } from '@o3r/core';\nimport { LoggerService } from '@o3r/logger';\nimport { combineLatest, distinctUntilChanged, firstValueFrom, map, of, Subject, Subscription, withLatestFrom } from 'rxjs';\nimport {\n deletePlaceholderTemplateEntity,\n PlaceholderRequestReply,\n PlaceholderTemplateStore,\n selectPlaceholderRequestEntities,\n selectPlaceholderTemplateEntities,\n setPlaceholderRequestEntityFromUrl,\n setPlaceholderTemplateEntity,\n updatePlaceholderRequestEntity\n} from '@o3r/components';\nimport { select, Store } from '@ngrx/store';\nimport { LocalizationService } from '@o3r/localization';\nimport { ActionUpdatePlaceholderBlock, RULES_ENGINE_PLACEHOLDER_UPDATE_ACTION_TYPE } from './placeholder.interfaces';\nimport { DynamicContentService } from '@o3r/dynamic-content';\n\n/**\n * Service to handle async PlaceholderTemplate actions\n */\n@Injectable()\nexport class PlaceholderRulesEngineActionHandler implements OnDestroy, RulesEngineActionHandler<ActionUpdatePlaceholderBlock> {\n\n protected subscription = new Subscription();\n\n protected placeholdersActions$: Subject<{ placeholderId: string; templateUrl: string; priority: number }[]> = new Subject();\n\n /** @inheritdoc */\n public readonly supportingActions = [RULES_ENGINE_PLACEHOLDER_UPDATE_ACTION_TYPE] as const;\n\n constructor(store: Store<PlaceholderTemplateStore>, private readonly logger: LoggerService, @Optional() translateService?: LocalizationService) {\n\n const lang$ = translateService ? translateService.getTranslateService().onLangChange.pipe(\n map(({ lang }) => lang),\n distinctUntilChanged()\n ) : of(null);\n\n const filteredActions$ = combineLatest([lang$, this.placeholdersActions$.pipe(\n distinctUntilChanged((prev, next) => JSON.stringify(prev) === JSON.stringify(next)))]).pipe(\n withLatestFrom(\n combineLatest([store.pipe(select(selectPlaceholderTemplateEntities)), store.pipe(select(selectPlaceholderRequestEntities))])\n ),\n map(([langAndTemplatesUrls, storedPlaceholdersAndRequests]) => {\n const [lang, placeholderActions] = langAndTemplatesUrls;\n const storedPlaceholders = storedPlaceholdersAndRequests[0] || {};\n const storedPlaceholderRequests = storedPlaceholdersAndRequests[1] || {};\n const placeholderNewRequests: { rawUrl: string; resolvedUrl: string }[] = [];\n // Stores all raw Urls used from the current engine execution\n const usedUrls: Record<string, boolean> = {};\n // Get all Urls that needs to be resolved from current rules engine output\n const placeholdersTemplates = placeholderActions.reduce((acc, placeholderAction) => {\n const placeholdersTemplateUrl = {\n rawUrl: placeholderAction.templateUrl,\n priority: placeholderAction.priority\n };\n if (acc[placeholderAction.placeholderId]) {\n acc[placeholderAction.placeholderId].push(placeholdersTemplateUrl);\n } else {\n acc[placeholderAction.placeholderId] = [placeholdersTemplateUrl];\n }\n const resolvedUrl = this.resolveUrlWithLang(placeholderAction.templateUrl, lang);\n // Filters duplicates and resolved urls that are already in the store\n if (!usedUrls[placeholderAction.templateUrl] && (!storedPlaceholderRequests[placeholderAction.templateUrl]\n || storedPlaceholderRequests[placeholderAction.templateUrl]!.resolvedUrl !== resolvedUrl)) {\n placeholderNewRequests.push({\n rawUrl: placeholderAction.templateUrl,\n resolvedUrl: this.resolveUrlWithLang(placeholderAction.templateUrl, lang)\n });\n }\n usedUrls[placeholderAction.templateUrl] = true;\n return acc;\n }, {} as { [key: string]: { rawUrl: string; priority: number }[] });\n // Urls not used anymore and not already disabled\n const placeholderRequestsToDisable: string[] = [];\n // Urls used that were disabled\n const placeholderRequestsToEnable: string[] = [];\n Object.keys(storedPlaceholderRequests).forEach((storedPlaceholderRequestRawUrl) => {\n const usedFromEngineIteration = usedUrls[storedPlaceholderRequestRawUrl];\n const usedFromStore = (storedPlaceholderRequests && storedPlaceholderRequests[storedPlaceholderRequestRawUrl]) ? storedPlaceholderRequests[storedPlaceholderRequestRawUrl]!.used : false;\n if (!usedFromEngineIteration && usedFromStore) {\n placeholderRequestsToDisable.push(storedPlaceholderRequestRawUrl);\n } else if (usedFromEngineIteration && !usedFromStore) {\n placeholderRequestsToEnable.push(storedPlaceholderRequestRawUrl);\n }\n });\n // Placeholder that are no longer filled by the current engine execution output will be cleared\n const placeholdersTemplatesToBeCleanedUp = Object.keys(storedPlaceholders)\n .filter(placeholderId => !placeholdersTemplates[placeholderId]);\n\n const placeholdersTemplatesToBeSet = Object.keys(placeholdersTemplates).reduce((changedPlaceholderTemplates, placeholderTemplateId) => {\n // Caching if the placeholder template already exists with the same urls\n if (!storedPlaceholders[placeholderTemplateId] ||\n !(JSON.stringify(storedPlaceholders[placeholderTemplateId]!.urlsWithPriority) === JSON.stringify(placeholdersTemplates[placeholderTemplateId]))) {\n changedPlaceholderTemplates.push({\n id: placeholderTemplateId,\n urlsWithPriority: placeholdersTemplates[placeholderTemplateId]\n });\n }\n return changedPlaceholderTemplates;\n }, [] as { id: string; urlsWithPriority: { rawUrl: string; priority: number }[] }[]);\n return {\n placeholdersTemplatesToBeCleanedUp,\n placeholderRequestsToDisable,\n placeholderRequestsToEnable,\n placeholdersTemplatesToBeSet,\n placeholderNewRequests\n };\n })\n );\n this.subscription.add(filteredActions$.subscribe((placeholdersUpdates) => {\n placeholdersUpdates.placeholdersTemplatesToBeCleanedUp.forEach(placeholderId =>\n store.dispatch(deletePlaceholderTemplateEntity({\n id: placeholderId\n }))\n );\n placeholdersUpdates.placeholdersTemplatesToBeSet.forEach(placeholdersTemplateToBeSet => {\n store.dispatch(setPlaceholderTemplateEntity({ entity: placeholdersTemplateToBeSet }));\n });\n placeholdersUpdates.placeholderRequestsToDisable.forEach(placeholderRequestToDisable => {\n store.dispatch(updatePlaceholderRequestEntity({ entity: { id: placeholderRequestToDisable, used: false } }));\n });\n placeholdersUpdates.placeholderRequestsToEnable.forEach(placeholderRequestToEnable => {\n store.dispatch(updatePlaceholderRequestEntity({ entity: { id: placeholderRequestToEnable, used: true } }));\n });\n placeholdersUpdates.placeholderNewRequests.forEach(placeholderNewRequest => {\n store.dispatch(setPlaceholderRequestEntityFromUrl({\n resolvedUrl: placeholderNewRequest.resolvedUrl,\n id: placeholderNewRequest.rawUrl,\n call: this.retrieveTemplate(placeholderNewRequest.resolvedUrl)\n }));\n });\n }));\n }\n\n /**\n * Localize the url, replacing the language marker\n * @param url\n * @param language\n */\n protected resolveUrlWithLang(url: string, language: string | null): string {\n if (!language && url.includes('[LANGUAGE]')) {\n this.logger.warn(`Missing language when trying to resolve ${url}`);\n }\n return language ? url.replace(/\\[LANGUAGE]/g, language) : url;\n }\n\n /**\n * Retrieve template as json from a given url\n * @param url\n */\n protected async retrieveTemplate(url: string): Promise<PlaceholderRequestReply> {\n const resolvedUrl$ = inject(DynamicContentService, { optional: true })?.getContentPathStream(url) || of(url);\n const fullUrl = await firstValueFrom(resolvedUrl$);\n return fetch(fullUrl).then((response) => response.json());\n }\n\n /** @inheritdoc */\n public executeActions(actions: ActionUpdatePlaceholderBlock[]) {\n const templates = actions.map((action) => ({\n placeholderId: action.placeholderId,\n templateUrl: action.value,\n priority: action.priority || 0\n }));\n\n this.placeholdersActions$.next(templates);\n }\n\n /** @inheritdoc */\n public ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n}\n","import {Injectable, Optional} from '@angular/core';\nimport {Actions, createEffect, ofType} from '@ngrx/effects';\nimport {\n cancelPlaceholderRequest,\n failPlaceholderRequestEntity,\n PlaceholderRequestStore,\n PlaceholderVariable,\n selectPlaceholderRequestEntityUsage,\n setPlaceholderRequestEntityFromUrl,\n updatePlaceholderRequestEntity\n} from '@o3r/components';\nimport {fromApiEffectSwitchMapById} from '@o3r/core';\nimport {DynamicContentService} from '@o3r/dynamic-content';\nimport {LocalizationService} from '@o3r/localization';\nimport {RulesEngineRunnerService} from '@o3r/rules-engine';\nimport {combineLatest, EMPTY, Observable, of} from 'rxjs';\nimport {distinctUntilChanged, map, switchMap, take} from 'rxjs/operators';\nimport {Store} from '@ngrx/store';\nimport { JSONPath } from 'jsonpath-plus';\n\n/**\n * Service to handle async PlaceholderTemplate actions\n */\n@Injectable()\nexport class PlaceholderTemplateResponseEffect {\n /**\n * Set the PlaceholderRequest entity with the reply content, dispatch failPlaceholderRequestEntity if it catches a failure\n * Handles the rendering of the HTML content from the template and creates the combine latest from facts list if needed\n * Disables unused templates refresh if used is false in the store\n */\n public setPlaceholderRequestEntityFromUrl$ = createEffect(() =>\n this.actions$.pipe(\n ofType(setPlaceholderRequestEntityFromUrl),\n fromApiEffectSwitchMapById(\n (templateResponse, action) => {\n const facts = templateResponse.vars ? Object.values(templateResponse.vars).filter((variable: PlaceholderVariable) => variable.type === 'fact') : [];\n const factsStreamsList = this.rulesEngineService ? facts.map((fact) =>\n this.rulesEngineService!.engine.retrieveOrCreateFactStream(fact.value).pipe(\n map((factValue) => ({\n name: fact.value,\n // eslint-disable-next-line new-cap\n factValue: (fact.path && factValue) ? JSONPath({ wrap: false, json: factValue, path: fact.path }) : factValue\n })),\n distinctUntilChanged((previous, current) => previous.factValue === current.factValue)\n )) : [];\n\n const factsStreamsList$ = factsStreamsList.length ? combineLatest(factsStreamsList) : of([]);\n return combineLatest([factsStreamsList$, this.store.select(selectPlaceholderRequestEntityUsage(action.id)).pipe(distinctUntilChanged())]).pipe(\n switchMap(([factsUsedInTemplate, placeholderRequestUsage]) => {\n if (!placeholderRequestUsage) {\n return EMPTY;\n }\n return this.getRenderedHTML$(templateResponse.template, templateResponse.vars, factsUsedInTemplate).pipe(\n map(({renderedTemplate, unknownTypeFound}) =>\n // Update instead of set because used already set by the update from url action\n updatePlaceholderRequestEntity({\n entity: {\n ...templateResponse,\n resolvedUrl: action.resolvedUrl,\n id: action.id,\n renderedTemplate,\n unknownTypeFound\n },\n requestId: action.requestId\n })\n )\n );\n }));\n },\n (error, action) => of(failPlaceholderRequestEntity({ids: [action.id], error, requestId: action.requestId})),\n (requestIdPayload, action) => cancelPlaceholderRequest({...requestIdPayload, id: action.id})\n )\n )\n );\n\n constructor(\n private readonly actions$: Actions,\n private readonly store: Store<PlaceholderRequestStore>,\n @Optional() private readonly rulesEngineService: RulesEngineRunnerService | null,\n @Optional() private readonly dynamicContentService: DynamicContentService | null,\n @Optional() private readonly translationService: LocalizationService | null) {\n }\n\n /**\n * Renders the html template, replacing facts and urls and localizationKeys\n * @param template\n * @param vars\n * @param facts\n */\n private getRenderedHTML$(template?: string, vars?: Record<string, PlaceholderVariable>, facts?: { name: string; factValue: any }[]) {\n let unknownTypeFound = false;\n const factset = (facts || []).reduce((set: { [key: string]: any }, fact) => {\n set[fact.name] = fact.factValue;\n return set;\n }, {});\n const replacements$: Observable<{ ejsVar: RegExp; value: string } | null>[] = [];\n if (vars && template) {\n for (const varName in vars) {\n if (Object.prototype.hasOwnProperty.call(vars, varName)) {\n const ejsVar = new RegExp(`<%=\\\\s*${varName}\\\\s*%>`, 'g');\n switch (vars[varName].type) {\n case 'relativeUrl': {\n replacements$.push(\n this.dynamicContentService?.getMediaPathStream(vars[varName].value).pipe(\n take(1),\n map((value: string) => ({ejsVar, value}))\n ) || of({ ejsVar, value: vars[varName].value })\n );\n break;\n }\n case 'fullUrl': {\n template = template.replace(ejsVar, vars[varName].value);\n break;\n }\n case 'fact': {\n template = template.replace(ejsVar, factset[vars[varName].value] ?? '');\n break;\n }\n case 'localisation': {\n const linkedParams = (vars[varName].vars || []).reduce((acc: { [key: string]: any }, parameter) => {\n const paramName = vars[parameter].value;\n acc[paramName] = factset[paramName];\n return acc;\n }, {});\n replacements$.push(\n this.translationService ?\n this.translationService.translate(vars[varName].value, linkedParams).pipe(\n map((value) => (value ? { ejsVar, value } : null))\n ) :\n of(null)\n );\n break;\n }\n default : {\n unknownTypeFound = true;\n break;\n }\n }\n }\n }\n }\n return replacements$.length > 0 && !!template ?\n combineLatest(replacements$).pipe(\n map((replacements) => ({\n renderedTemplate: replacements.reduce(\n (acc, replacement) =>\n replacement ? acc.replace(replacement.ejsVar, replacement.value) : acc,\n template\n ),\n unknownTypeFound\n }))\n ) : of({renderedTemplate: template, unknownTypeFound});\n }\n}\n","import { NgModule } from '@angular/core';\nimport { EffectsModule } from '@ngrx/effects';\nimport { PlaceholderRequestStoreModule, PlaceholderTemplateStoreModule } from '@o3r/components';\nimport { PlaceholderRulesEngineActionHandler } from './placeholder.action-handler';\nimport { PlaceholderTemplateResponseEffect } from './placeholder.rules-engine.effect';\n\n@NgModule({\n imports: [\n EffectsModule.forFeature([PlaceholderTemplateResponseEffect]),\n PlaceholderRequestStoreModule,\n PlaceholderTemplateStoreModule\n ],\n providers: [\n PlaceholderRulesEngineActionHandler\n ]\n})\nexport class PlaceholderRulesEngineActionModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["map","distinctUntilChanged","i1","i2","i3","i5"],"mappings":"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"}