@o3r/rules-engine 12.0.0-next.6 → 12.0.0-next.9

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 (91) hide show
  1. package/builders/package.json +3 -0
  2. package/components/rules-engine/rule-actions/rule-actions-pres.component.d.ts +1 -1
  3. package/components/rules-engine/rule-actions/rule-actions-pres.component.d.ts.map +1 -1
  4. package/components/rules-engine/rule-condition/rule-condition-pres.component.d.ts +1 -1
  5. package/components/rules-engine/rule-condition/rule-condition-pres.component.d.ts.map +1 -1
  6. package/components/rules-engine/rule-key-value/rule-key-value-pres.component.d.ts +1 -1
  7. package/components/rules-engine/rule-key-value/rule-key-value-pres.component.d.ts.map +1 -1
  8. package/components/rules-engine/rule-tree/rule-tree-pres.component.d.ts +1 -1
  9. package/components/rules-engine/rule-tree/rule-tree-pres.component.d.ts.map +1 -1
  10. package/components/rules-engine/ruleset-history/ruleset-history-pres.component.d.ts +1 -1
  11. package/components/rules-engine/ruleset-history/ruleset-history-pres.component.d.ts.map +1 -1
  12. package/components/rules-engine/ruleset-history/ruleset-history-pres.module.d.ts +7 -9
  13. package/components/rules-engine/ruleset-history/ruleset-history-pres.module.d.ts.map +1 -1
  14. package/components/rules-engine/shared/json-or-string.pipe.d.ts.map +1 -1
  15. package/engine/helpers/filter-ruleset-event.operator.d.ts.map +1 -1
  16. package/fesm2022/o3r-rules-engine.mjs +180 -165
  17. package/fesm2022/o3r-rules-engine.mjs.map +1 -1
  18. package/fixtures/jasmine/package.json +3 -0
  19. package/fixtures/jest/package.json +3 -0
  20. package/package.json +15 -21
  21. package/schematics/package.json +3 -0
  22. package/esm2022/components/index.mjs +0 -2
  23. package/esm2022/components/rules-engine/index.mjs +0 -4
  24. package/esm2022/components/rules-engine/rule-actions/rule-actions-pres.component.mjs +0 -35
  25. package/esm2022/components/rules-engine/rule-condition/rule-condition-pres.component.mjs +0 -36
  26. package/esm2022/components/rules-engine/rule-key-value/rule-key-value-pres.component.mjs +0 -63
  27. package/esm2022/components/rules-engine/rule-tree/rule-tree-pres.component.mjs +0 -48
  28. package/esm2022/components/rules-engine/ruleset-history/ruleset-history-pres.component.mjs +0 -50
  29. package/esm2022/components/rules-engine/ruleset-history/ruleset-history-pres.module.mjs +0 -23
  30. package/esm2022/components/rules-engine/shared/fallback-to.pipe.mjs +0 -14
  31. package/esm2022/components/rules-engine/shared/index.mjs +0 -4
  32. package/esm2022/components/rules-engine/shared/json-or-string.pipe.mjs +0 -23
  33. package/esm2022/components/rules-engine/shared/ruleset-history.helper.mjs +0 -51
  34. package/esm2022/devkit/index.mjs +0 -7
  35. package/esm2022/devkit/rules-engine-devkit.interface.mjs +0 -6
  36. package/esm2022/devkit/rules-engine-devtools.console.service.mjs +0 -111
  37. package/esm2022/devkit/rules-engine-devtools.message.service.mjs +0 -115
  38. package/esm2022/devkit/rules-engine-devtools.module.mjs +0 -47
  39. package/esm2022/devkit/rules-engine-devtools.service.mjs +0 -130
  40. package/esm2022/devkit/rules-engine-devtools.token.mjs +0 -6
  41. package/esm2022/engine/debug/engine.debug.mjs +0 -195
  42. package/esm2022/engine/debug/helpers.mjs +0 -92
  43. package/esm2022/engine/engine.interface.mjs +0 -2
  44. package/esm2022/engine/engine.mjs +0 -134
  45. package/esm2022/engine/fact/fact.interfaces.mjs +0 -2
  46. package/esm2022/engine/fact/index.mjs +0 -2
  47. package/esm2022/engine/helpers/filter-ruleset-event.operator.mjs +0 -19
  48. package/esm2022/engine/index.mjs +0 -8
  49. package/esm2022/engine/operator/index.mjs +0 -4
  50. package/esm2022/engine/operator/operator.helpers.mjs +0 -107
  51. package/esm2022/engine/operator/operator.interface.mjs +0 -2
  52. package/esm2022/engine/operator/operators/array-based.operators.mjs +0 -266
  53. package/esm2022/engine/operator/operators/basic.operators.mjs +0 -93
  54. package/esm2022/engine/operator/operators/date-based.operators.mjs +0 -119
  55. package/esm2022/engine/operator/operators/index.mjs +0 -10
  56. package/esm2022/engine/operator/operators/number-based.operators.mjs +0 -44
  57. package/esm2022/engine/rule/index.mjs +0 -2
  58. package/esm2022/engine/rule/rule.helpers.mjs +0 -50
  59. package/esm2022/engine/ruleset-executor.mjs +0 -255
  60. package/esm2022/engine/structure.mjs +0 -2
  61. package/esm2022/fact/fact.abstract-service.mjs +0 -12
  62. package/esm2022/fact/index.mjs +0 -3
  63. package/esm2022/fact/reserved.facts.mjs +0 -2
  64. package/esm2022/fixtures/jasmine/index.mjs +0 -2
  65. package/esm2022/fixtures/jasmine/o3r-rules-engine-fixtures-jasmine.mjs +0 -5
  66. package/esm2022/fixtures/jasmine/rules-engine.runner.service.fixture.jasmine.mjs +0 -14
  67. package/esm2022/fixtures/jest/index.mjs +0 -2
  68. package/esm2022/fixtures/jest/o3r-rules-engine-fixtures-jest.mjs +0 -5
  69. package/esm2022/fixtures/jest/rules-engine.runner.service.fixture.jest.mjs +0 -14
  70. package/esm2022/inner-facts/current-time/current-time-fact.service.mjs +0 -29
  71. package/esm2022/inner-facts/current-time/current-time.facts.mjs +0 -2
  72. package/esm2022/inner-facts/current-time/index.mjs +0 -3
  73. package/esm2022/inner-facts/index.mjs +0 -2
  74. package/esm2022/interfaces/index.mjs +0 -2
  75. package/esm2022/interfaces/linkable-to-ruleset.interfaces.mjs +0 -2
  76. package/esm2022/o3r-rules-engine.mjs +0 -5
  77. package/esm2022/public_api.mjs +0 -9
  78. package/esm2022/services/index.mjs +0 -3
  79. package/esm2022/services/rules-engine.token.mjs +0 -9
  80. package/esm2022/services/runner/index.mjs +0 -3
  81. package/esm2022/services/runner/rules-engine.runner.module.mjs +0 -37
  82. package/esm2022/services/runner/rules-engine.runner.service.mjs +0 -132
  83. package/esm2022/stores/index.mjs +0 -2
  84. package/esm2022/stores/rulesets/index.mjs +0 -8
  85. package/esm2022/stores/rulesets/rulesets.actions.mjs +0 -42
  86. package/esm2022/stores/rulesets/rulesets.effect.mjs +0 -30
  87. package/esm2022/stores/rulesets/rulesets.module.mjs +0 -42
  88. package/esm2022/stores/rulesets/rulesets.reducer.mjs +0 -35
  89. package/esm2022/stores/rulesets/rulesets.selectors.mjs +0 -79
  90. package/esm2022/stores/rulesets/rulesets.state.mjs +0 -5
  91. package/esm2022/stores/rulesets/rulesets.sync.mjs +0 -20
@@ -0,0 +1,3 @@
1
+ {
2
+ "module": "../../fesm2022/o3r-rules-engine-fixtures-jasmine.mjs"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "module": "../../fesm2022/o3r-rules-engine-fixtures-jest.mjs"
3
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@o3r/rules-engine",
3
- "version": "12.0.0-next.6",
3
+ "version": "12.0.0-next.9",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -21,39 +21,33 @@
21
21
  },
22
22
  ".": {
23
23
  "types": "./index.d.ts",
24
- "esm2022": "./esm2022/o3r-rules-engine.mjs",
25
- "esm": "./esm2022/o3r-rules-engine.mjs",
26
24
  "default": "./fesm2022/o3r-rules-engine.mjs"
27
25
  },
28
26
  "./fixtures/jasmine": {
29
27
  "types": "./fixtures/jasmine/index.d.ts",
30
- "esm2022": "./esm2022/fixtures/jasmine/o3r-rules-engine-fixtures-jasmine.mjs",
31
- "esm": "./esm2022/fixtures/jasmine/o3r-rules-engine-fixtures-jasmine.mjs",
32
28
  "default": "./fesm2022/o3r-rules-engine-fixtures-jasmine.mjs"
33
29
  },
34
30
  "./fixtures/jest": {
35
31
  "types": "./fixtures/jest/index.d.ts",
36
- "esm2022": "./esm2022/fixtures/jest/o3r-rules-engine-fixtures-jest.mjs",
37
- "esm": "./esm2022/fixtures/jest/o3r-rules-engine-fixtures-jest.mjs",
38
32
  "default": "./fesm2022/o3r-rules-engine-fixtures-jest.mjs"
39
33
  }
40
34
  },
41
35
  "peerDependencies": {
42
- "@angular-devkit/architect": "^0.1802.0",
43
- "@angular-devkit/core": "^18.2.0",
44
- "@angular-devkit/schematics": "^18.2.0",
45
- "@angular/common": "^18.2.0",
46
- "@angular/core": "^18.2.0",
47
- "@angular/platform-browser-dynamic": "^18.2.0",
48
- "@ngrx/effects": "^18.0.0",
49
- "@ngrx/entity": "^18.0.0",
50
- "@ngrx/store": "^18.0.0",
36
+ "@angular-devkit/architect": "^0.1900.0",
37
+ "@angular-devkit/core": "^19.0.0",
38
+ "@angular-devkit/schematics": "^19.0.0",
39
+ "@angular/common": "^19.0.0",
40
+ "@angular/core": "^19.0.0",
41
+ "@angular/platform-browser-dynamic": "^19.0.0",
42
+ "@ngrx/effects": "^19.0.0",
43
+ "@ngrx/entity": "^19.0.0",
44
+ "@ngrx/store": "^19.0.0",
51
45
  "@ngx-translate/core": "^15.0.0",
52
- "@o3r/core": "^12.0.0-next.6",
53
- "@o3r/extractors": "^12.0.0-next.6",
54
- "@o3r/logger": "^12.0.0-next.6",
55
- "@o3r/schematics": "^12.0.0-next.6",
56
- "@schematics/angular": "^18.2.0",
46
+ "@o3r/core": "^12.0.0-next.9",
47
+ "@o3r/extractors": "^12.0.0-next.9",
48
+ "@o3r/logger": "^12.0.0-next.9",
49
+ "@o3r/schematics": "^12.0.0-next.9",
50
+ "@schematics/angular": "^19.0.0",
57
51
  "globby": "^11.1.0",
58
52
  "jasmine": "^5.0.0",
59
53
  "jsonpath-plus": "^9.0.0 || ^10.0.0",
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "commonjs"
3
+ }
@@ -1,2 +0,0 @@
1
- export * from './rules-engine/index';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9ydWxlcy1lbmdpbmUvaW5kZXgnO1xuIl19
@@ -1,4 +0,0 @@
1
- export * from './ruleset-history/ruleset-history-pres.component';
2
- export * from './ruleset-history/ruleset-history-pres.module';
3
- export * from './shared/index';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9ydWxlcy1lbmdpbmUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrREFBa0QsQ0FBQztBQUNqRSxjQUFjLCtDQUErQyxDQUFDO0FBQzlELGNBQWMsZ0JBQWdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3J1bGVzZXQtaGlzdG9yeS9ydWxlc2V0LWhpc3RvcnktcHJlcy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9ydWxlc2V0LWhpc3RvcnkvcnVsZXNldC1oaXN0b3J5LXByZXMubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vc2hhcmVkL2luZGV4JztcbiJdfQ==
@@ -1,35 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation, } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/common";
4
- import * as i2 from "../rule-key-value/rule-key-value-pres.component";
5
- import * as i3 from "../shared/fallback-to.pipe";
6
- export class RuleActionsPresComponent {
7
- constructor() {
8
- /**
9
- * List of all the output actions of a rules or ruleset execution
10
- */
11
- this.actions = [];
12
- /**
13
- * The list of temporary facts used and/or modified within the rule or the ruleset.
14
- * They are scoped to the ruleset and their value is the one after the rule or ruleset execution.
15
- */
16
- this.temporaryFacts = {};
17
- /**
18
- * List of temporary facts that will be modified by the ruleset or the rule.
19
- */
20
- this.runtimeOutputs = [];
21
- }
22
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RuleActionsPresComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
23
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: RuleActionsPresComponent, selector: "o3r-rule-actions-pres", inputs: { actions: "actions", temporaryFacts: "temporaryFacts", runtimeOutputs: "runtimeOutputs" }, ngImport: i0, template: "<div class=\"ruleset-panel-category-title\">Output Actions</div>\n<div *ngIf=\"actions.length === 0 && runtimeOutputs.length === 0\" class=\"ruleset-panel-category-body empty\">\n No action\n</div>\n<ul class=\"ruleset-panel-category-body\">\n <li *ngFor=\"let action of actions\">\n <ng-container *ngIf=\"action.actionType\">\n <ng-container [ngSwitch]=\"action.actionType\">\n <div *ngSwitchCase=\"'SET_FACT'\">\n <div>Set Fact</div>\n <div>\n <o3r-rule-key-value-pres\n [key]=\"action.fact | o3rFallbackTo: 'Missing \\'fact\\''\"\n [value]=\"action.value | o3rFallbackTo\"\n [type]=\"'assignment'\"></o3r-rule-key-value-pres>\n </div>\n </div>\n <div *ngSwitchCase=\"'UPDATE_CONFIG'\">\n <div>Update Config {{action.component}} {{action.library}}</div>\n <div>\n <o3r-rule-key-value-pres\n [key]=\"action.property | o3rFallbackTo: 'Missing \\'property\\''\"\n [value]=\"action.value | o3rFallbackTo\"\n [type]=\"'assignment'\"></o3r-rule-key-value-pres>\n </div>\n </div>\n <div *ngSwitchCase=\"'UPDATE_ASSET'\">\n <div>Update Asset:</div>\n <div>\n <o3r-rule-key-value-pres\n [oldValue]=\"action.asset | o3rFallbackTo: 'Missing \\'asset\\''\"\n [value]=\"action.value | o3rFallbackTo\"\n [type]=\"'state'\"></o3r-rule-key-value-pres>\n </div>\n </div>\n <div *ngSwitchCase=\"'UPDATE_LOCALISATION'\">\n <div>Update localization:</div>\n <div>\n <o3r-rule-key-value-pres\n [oldValue]=\"action.key | o3rFallbackTo: 'Missing \\'key\\''\"\n [value]=\"action.value | o3rFallbackTo\"\n [type]=\"'state'\"></o3r-rule-key-value-pres>\n </div>\n </div>\n <div\n *ngSwitchCase=\"'UPDATE_PLACEHOLDER'\"\n [class.error]=\"!action.placeholderId\">\n <div>Update placeholder in {{action.component}} {{action.library}}</div>\n <div>\n <o3r-rule-key-value-pres\n [oldValue]=\"action.placeholderId | o3rFallbackTo: 'Missing \\'placeholderId\\''\"\n [value]=\"action.value\"\n [type]=\"'state'\"></o3r-rule-key-value-pres>\n </div>\n </div>\n <div *ngSwitchDefault class=\"error\">\n <div>Unrecognized action</div>\n <div>{{action | json}}</div>\n </div>\n </ng-container>\n </ng-container>\n </li>\n <li *ngFor=\"let runtimeOutput of runtimeOutputs\">\n <div>Set temporary fact</div>\n <div>\n <o3r-rule-key-value-pres\n [key]=\"runtimeOutput | o3rFallbackTo: 'Missing \\'fact\\''\"\n [value]=\"temporaryFacts[runtimeOutput] | o3rFallbackTo\"\n [type]=\"'assignment'\"></o3r-rule-key-value-pres>\n </div>\n </li>\n</ul>\n", styles: ["o3r-rule-actions-pres .ruleset-panel-title,o3r-rule-actions-pres .ruleset-panel-category-title{display:flex;justify-content:space-between;align-items:center}o3r-rule-actions-pres .ruleset-panel-title{font-size:1rem;padding:.5rem 0 .1rem}o3r-rule-actions-pres .ruleset-expansion-action,o3r-rule-actions-pres .icon-caret-down,o3r-rule-actions-pres .icon-caret-up{cursor:pointer}o3r-rule-actions-pres .ruleset-panel-subtitle{font-size:.75rem}o3r-rule-actions-pres .ruleset-panel-title-aside{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;min-width:fit-content}o3r-rule-actions-pres .ruleset-panel-category-title{font-size:.95rem;background:#eee;padding:.5rem;margin-bottom:.5rem;margin-top:1rem}o3r-rule-actions-pres .rule-description .ruleset-panel-category-title{font-size:.893rem;cursor:default}o3r-rule-actions-pres .rule-description .ruleset-panel-title{font-size:.94rem}o3r-rule-actions-pres .rule-description .ruleset-panel-category-body{padding-bottom:.5rem;padding-left:1.5rem}o3r-rule-actions-pres .rule-description .ruleset-panel-category-body:empty{margin:0;padding:0 0 0 1.5rem}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i2.RuleKeyValuePresComponent, selector: "o3r-rule-key-value-pres", inputs: ["key", "value", "oldValue", "type"] }, { kind: "pipe", type: i3.O3rFallbackToPipe, name: "o3rFallbackTo" }, { kind: "pipe", type: i1.JsonPipe, name: "json" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
24
- }
25
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RuleActionsPresComponent, decorators: [{
26
- type: Component,
27
- args: [{ selector: 'o3r-rule-actions-pres', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"ruleset-panel-category-title\">Output Actions</div>\n<div *ngIf=\"actions.length === 0 && runtimeOutputs.length === 0\" class=\"ruleset-panel-category-body empty\">\n No action\n</div>\n<ul class=\"ruleset-panel-category-body\">\n <li *ngFor=\"let action of actions\">\n <ng-container *ngIf=\"action.actionType\">\n <ng-container [ngSwitch]=\"action.actionType\">\n <div *ngSwitchCase=\"'SET_FACT'\">\n <div>Set Fact</div>\n <div>\n <o3r-rule-key-value-pres\n [key]=\"action.fact | o3rFallbackTo: 'Missing \\'fact\\''\"\n [value]=\"action.value | o3rFallbackTo\"\n [type]=\"'assignment'\"></o3r-rule-key-value-pres>\n </div>\n </div>\n <div *ngSwitchCase=\"'UPDATE_CONFIG'\">\n <div>Update Config {{action.component}} {{action.library}}</div>\n <div>\n <o3r-rule-key-value-pres\n [key]=\"action.property | o3rFallbackTo: 'Missing \\'property\\''\"\n [value]=\"action.value | o3rFallbackTo\"\n [type]=\"'assignment'\"></o3r-rule-key-value-pres>\n </div>\n </div>\n <div *ngSwitchCase=\"'UPDATE_ASSET'\">\n <div>Update Asset:</div>\n <div>\n <o3r-rule-key-value-pres\n [oldValue]=\"action.asset | o3rFallbackTo: 'Missing \\'asset\\''\"\n [value]=\"action.value | o3rFallbackTo\"\n [type]=\"'state'\"></o3r-rule-key-value-pres>\n </div>\n </div>\n <div *ngSwitchCase=\"'UPDATE_LOCALISATION'\">\n <div>Update localization:</div>\n <div>\n <o3r-rule-key-value-pres\n [oldValue]=\"action.key | o3rFallbackTo: 'Missing \\'key\\''\"\n [value]=\"action.value | o3rFallbackTo\"\n [type]=\"'state'\"></o3r-rule-key-value-pres>\n </div>\n </div>\n <div\n *ngSwitchCase=\"'UPDATE_PLACEHOLDER'\"\n [class.error]=\"!action.placeholderId\">\n <div>Update placeholder in {{action.component}} {{action.library}}</div>\n <div>\n <o3r-rule-key-value-pres\n [oldValue]=\"action.placeholderId | o3rFallbackTo: 'Missing \\'placeholderId\\''\"\n [value]=\"action.value\"\n [type]=\"'state'\"></o3r-rule-key-value-pres>\n </div>\n </div>\n <div *ngSwitchDefault class=\"error\">\n <div>Unrecognized action</div>\n <div>{{action | json}}</div>\n </div>\n </ng-container>\n </ng-container>\n </li>\n <li *ngFor=\"let runtimeOutput of runtimeOutputs\">\n <div>Set temporary fact</div>\n <div>\n <o3r-rule-key-value-pres\n [key]=\"runtimeOutput | o3rFallbackTo: 'Missing \\'fact\\''\"\n [value]=\"temporaryFacts[runtimeOutput] | o3rFallbackTo\"\n [type]=\"'assignment'\"></o3r-rule-key-value-pres>\n </div>\n </li>\n</ul>\n", styles: ["o3r-rule-actions-pres .ruleset-panel-title,o3r-rule-actions-pres .ruleset-panel-category-title{display:flex;justify-content:space-between;align-items:center}o3r-rule-actions-pres .ruleset-panel-title{font-size:1rem;padding:.5rem 0 .1rem}o3r-rule-actions-pres .ruleset-expansion-action,o3r-rule-actions-pres .icon-caret-down,o3r-rule-actions-pres .icon-caret-up{cursor:pointer}o3r-rule-actions-pres .ruleset-panel-subtitle{font-size:.75rem}o3r-rule-actions-pres .ruleset-panel-title-aside{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;min-width:fit-content}o3r-rule-actions-pres .ruleset-panel-category-title{font-size:.95rem;background:#eee;padding:.5rem;margin-bottom:.5rem;margin-top:1rem}o3r-rule-actions-pres .rule-description .ruleset-panel-category-title{font-size:.893rem;cursor:default}o3r-rule-actions-pres .rule-description .ruleset-panel-title{font-size:.94rem}o3r-rule-actions-pres .rule-description .ruleset-panel-category-body{padding-bottom:.5rem;padding-left:1.5rem}o3r-rule-actions-pres .rule-description .ruleset-panel-category-body:empty{margin:0;padding:0 0 0 1.5rem}\n"] }]
28
- }], propDecorators: { actions: [{
29
- type: Input
30
- }], temporaryFacts: [{
31
- type: Input
32
- }], runtimeOutputs: [{
33
- type: Input
34
- }] } });
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS1hY3Rpb25zLXByZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcnVsZXMtZW5naW5lL3J1bGUtYWN0aW9ucy9ydWxlLWFjdGlvbnMtcHJlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9ydWxlcy1lbmdpbmUvcnVsZS1hY3Rpb25zL3J1bGUtYWN0aW9ucy1wcmVzLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxFQUNMLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFhdkIsTUFBTSxPQUFPLHdCQUF3QjtJQVByQztRQVFFOztXQUVHO1FBRUksWUFBTyxHQUFlLEVBQUUsQ0FBQztRQUVoQzs7O1dBR0c7UUFFSSxtQkFBYyxHQUEwQixFQUFFLENBQUM7UUFFbEQ7O1dBRUc7UUFFSSxtQkFBYyxHQUFhLEVBQUUsQ0FBQztLQUN0QztrSUFuQlksd0JBQXdCO3NIQUF4Qix3QkFBd0IsaUtDbEJyQywwNUZBd0VBOzs0RkR0RGEsd0JBQXdCO2tCQVBwQyxTQUFTOytCQUNFLHVCQUF1QixtQkFHaEIsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSTs4QkFPOUIsT0FBTztzQkFEYixLQUFLO2dCQVFDLGNBQWM7c0JBRHBCLEtBQUs7Z0JBT0MsY0FBYztzQkFEcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7XG4gIEFsbEJsb2NrLFxuICBGYWN0cyxcbn0gZnJvbSAnLi4vLi4vLi4vZW5naW5lJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbzNyLXJ1bGUtYWN0aW9ucy1wcmVzJyxcbiAgc3R5bGVVcmxzOiBbJy4vcnVsZS1hY3Rpb25zLXByZXMuc3R5bGUuc2NzcyddLFxuICB0ZW1wbGF0ZVVybDogJy4vcnVsZS1hY3Rpb25zLXByZXMudGVtcGxhdGUuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIFJ1bGVBY3Rpb25zUHJlc0NvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBMaXN0IG9mIGFsbCB0aGUgb3V0cHV0IGFjdGlvbnMgb2YgYSBydWxlcyBvciBydWxlc2V0IGV4ZWN1dGlvblxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGFjdGlvbnM6IEFsbEJsb2NrW10gPSBbXTtcblxuICAvKipcbiAgICogVGhlIGxpc3Qgb2YgdGVtcG9yYXJ5IGZhY3RzIHVzZWQgYW5kL29yIG1vZGlmaWVkIHdpdGhpbiB0aGUgcnVsZSBvciB0aGUgcnVsZXNldC5cbiAgICogVGhleSBhcmUgc2NvcGVkIHRvIHRoZSBydWxlc2V0IGFuZCB0aGVpciB2YWx1ZSBpcyB0aGUgb25lIGFmdGVyIHRoZSBydWxlIG9yIHJ1bGVzZXQgZXhlY3V0aW9uLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHRlbXBvcmFyeUZhY3RzOiBSZWNvcmQ8c3RyaW5nLCBGYWN0cz4gPSB7fTtcblxuICAvKipcbiAgICogTGlzdCBvZiB0ZW1wb3JhcnkgZmFjdHMgdGhhdCB3aWxsIGJlIG1vZGlmaWVkIGJ5IHRoZSBydWxlc2V0IG9yIHRoZSBydWxlLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHJ1bnRpbWVPdXRwdXRzOiBzdHJpbmdbXSA9IFtdO1xufVxuIiwiPGRpdiBjbGFzcz1cInJ1bGVzZXQtcGFuZWwtY2F0ZWdvcnktdGl0bGVcIj5PdXRwdXQgQWN0aW9uczwvZGl2PlxuPGRpdiAqbmdJZj1cImFjdGlvbnMubGVuZ3RoID09PSAwICYmIHJ1bnRpbWVPdXRwdXRzLmxlbmd0aCA9PT0gMFwiIGNsYXNzPVwicnVsZXNldC1wYW5lbC1jYXRlZ29yeS1ib2R5IGVtcHR5XCI+XG4gIE5vIGFjdGlvblxuPC9kaXY+XG48dWwgY2xhc3M9XCJydWxlc2V0LXBhbmVsLWNhdGVnb3J5LWJvZHlcIj5cbiAgPGxpICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgYWN0aW9uc1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY3Rpb24uYWN0aW9uVHlwZVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiYWN0aW9uLmFjdGlvblR5cGVcIj5cbiAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ1NFVF9GQUNUJ1wiPlxuICAgICAgICAgIDxkaXY+U2V0IEZhY3Q8L2Rpdj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPG8zci1ydWxlLWtleS12YWx1ZS1wcmVzXG4gICAgICAgICAgICAgIFtrZXldPVwiYWN0aW9uLmZhY3QgfCBvM3JGYWxsYmFja1RvOiAnTWlzc2luZyBcXCdmYWN0XFwnJ1wiXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJhY3Rpb24udmFsdWUgfCBvM3JGYWxsYmFja1RvXCJcbiAgICAgICAgICAgICAgW3R5cGVdPVwiJ2Fzc2lnbm1lbnQnXCI+PC9vM3ItcnVsZS1rZXktdmFsdWUtcHJlcz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidVUERBVEVfQ09ORklHJ1wiPlxuICAgICAgICAgIDxkaXY+VXBkYXRlIENvbmZpZyB7e2FjdGlvbi5jb21wb25lbnR9fSB7e2FjdGlvbi5saWJyYXJ5fX08L2Rpdj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPG8zci1ydWxlLWtleS12YWx1ZS1wcmVzXG4gICAgICAgICAgICAgIFtrZXldPVwiYWN0aW9uLnByb3BlcnR5IHwgbzNyRmFsbGJhY2tUbzogJ01pc3NpbmcgXFwncHJvcGVydHlcXCcnXCJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cImFjdGlvbi52YWx1ZSB8IG8zckZhbGxiYWNrVG9cIlxuICAgICAgICAgICAgICBbdHlwZV09XCInYXNzaWdubWVudCdcIj48L28zci1ydWxlLWtleS12YWx1ZS1wcmVzPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ1VQREFURV9BU1NFVCdcIj5cbiAgICAgICAgICA8ZGl2PlVwZGF0ZSBBc3NldDo8L2Rpdj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPG8zci1ydWxlLWtleS12YWx1ZS1wcmVzXG4gICAgICAgICAgICAgIFtvbGRWYWx1ZV09XCJhY3Rpb24uYXNzZXQgfCBvM3JGYWxsYmFja1RvOiAnTWlzc2luZyBcXCdhc3NldFxcJydcIlxuICAgICAgICAgICAgICBbdmFsdWVdPVwiYWN0aW9uLnZhbHVlIHwgbzNyRmFsbGJhY2tUb1wiXG4gICAgICAgICAgICAgIFt0eXBlXT1cIidzdGF0ZSdcIj48L28zci1ydWxlLWtleS12YWx1ZS1wcmVzPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ1VQREFURV9MT0NBTElTQVRJT04nXCI+XG4gICAgICAgICAgPGRpdj5VcGRhdGUgbG9jYWxpemF0aW9uOjwvZGl2PlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8bzNyLXJ1bGUta2V5LXZhbHVlLXByZXNcbiAgICAgICAgICAgICAgW29sZFZhbHVlXT1cImFjdGlvbi5rZXkgfCBvM3JGYWxsYmFja1RvOiAnTWlzc2luZyBcXCdrZXlcXCcnXCJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cImFjdGlvbi52YWx1ZSB8IG8zckZhbGxiYWNrVG9cIlxuICAgICAgICAgICAgICBbdHlwZV09XCInc3RhdGUnXCI+PC9vM3ItcnVsZS1rZXktdmFsdWUtcHJlcz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ1VQREFURV9QTEFDRUhPTERFUidcIlxuICAgICAgICAgIFtjbGFzcy5lcnJvcl09XCIhYWN0aW9uLnBsYWNlaG9sZGVySWRcIj5cbiAgICAgICAgICA8ZGl2PlVwZGF0ZSBwbGFjZWhvbGRlciBpbiB7e2FjdGlvbi5jb21wb25lbnR9fSB7e2FjdGlvbi5saWJyYXJ5fX08L2Rpdj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPG8zci1ydWxlLWtleS12YWx1ZS1wcmVzXG4gICAgICAgICAgICAgIFtvbGRWYWx1ZV09XCJhY3Rpb24ucGxhY2Vob2xkZXJJZCB8IG8zckZhbGxiYWNrVG86ICdNaXNzaW5nIFxcJ3BsYWNlaG9sZGVySWRcXCcnXCJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cImFjdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICAgIFt0eXBlXT1cIidzdGF0ZSdcIj48L28zci1ydWxlLWtleS12YWx1ZS1wcmVzPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdTd2l0Y2hEZWZhdWx0IGNsYXNzPVwiZXJyb3JcIj5cbiAgICAgICAgICA8ZGl2PlVucmVjb2duaXplZCBhY3Rpb248L2Rpdj5cbiAgICAgICAgICA8ZGl2Pnt7YWN0aW9uIHwganNvbn19PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbGk+XG4gIDxsaSAqbmdGb3I9XCJsZXQgcnVudGltZU91dHB1dCBvZiBydW50aW1lT3V0cHV0c1wiPlxuICAgIDxkaXY+U2V0IHRlbXBvcmFyeSBmYWN0PC9kaXY+XG4gICAgPGRpdj5cbiAgICAgIDxvM3ItcnVsZS1rZXktdmFsdWUtcHJlc1xuICAgICAgICBba2V5XT1cInJ1bnRpbWVPdXRwdXQgfCBvM3JGYWxsYmFja1RvOiAnTWlzc2luZyBcXCdmYWN0XFwnJ1wiXG4gICAgICAgIFt2YWx1ZV09XCJ0ZW1wb3JhcnlGYWN0c1tydW50aW1lT3V0cHV0XSB8IG8zckZhbGxiYWNrVG9cIlxuICAgICAgICBbdHlwZV09XCInYXNzaWdubWVudCdcIj48L28zci1ydWxlLWtleS12YWx1ZS1wcmVzPlxuICAgIDwvZGl2PlxuICA8L2xpPlxuPC91bD5cbiJdfQ==
@@ -1,36 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation, } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/common";
4
- export class RuleConditionPresComponent {
5
- constructor() {
6
- /**
7
- * Left hand operator as it will be displayed in the template.
8
- * In the case of a fact with a json path, will resolve the whole fact path, else will only display the value
9
- */
10
- this.lhs = 'undefined';
11
- }
12
- /**
13
- * Rule condition that will be flattened by the component setter
14
- */
15
- set condition(condition) {
16
- this._condition = condition;
17
- this.lhs = condition?.lhs ? this.getOperandName(condition.lhs) : 'undefined';
18
- this.rhs = condition?.rhs ? this.getOperandName(condition.rhs) : undefined;
19
- }
20
- get condition() {
21
- return this._condition;
22
- }
23
- getOperandName(operand) {
24
- const value = `${operand.value ?? 'MISSING_VALUE'}`;
25
- return operand.path ? operand.path.replace(/^\$/, value) : value;
26
- }
27
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RuleConditionPresComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
28
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: RuleConditionPresComponent, selector: "o3r-rule-condition-pres", inputs: { condition: "condition" }, ngImport: i0, template: "<ng-container *ngIf=\"!condition; else displayConditions\">\n <span class=\"input-value\">true</span>\n</ng-container>\n<ng-template #displayConditions>\n <ng-container *ngIf=\"!$any(condition).all && !$any(condition).any && !$any(condition).not\">\n <span class=\"input-key\">{{ lhs }}</span> {{ $any(condition).operator }} <span class=\"input-value\" *ngIf=\"rhs !== undefined\">{{ rhs }}</span>\n </ng-container>\n <ng-container *ngIf=\"$any(condition).all || $any(condition).any || $any(condition).not\">\n <span *ngIf=\"$any(condition).all\">ALL</span>\n <span *ngIf=\"$any(condition).any\">ANY</span>\n <span *ngIf=\"$any(condition).not\">NOT</span>\n <span>(\n <ng-container *ngFor=\"let cond of $any(condition).all || $any(condition).any || [$any(condition).not]; let last = last;\">\n <o3r-rule-condition-pres [condition]=\"cond\"></o3r-rule-condition-pres>\n <span *ngIf=\"!last\">, </span>\n </ng-container>\n )</span>\n </ng-container>\n</ng-template>\n", styles: ["o3r-rule-condition-pres{word-break:break-word}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: RuleConditionPresComponent, selector: "o3r-rule-condition-pres", inputs: ["condition"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
29
- }
30
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RuleConditionPresComponent, decorators: [{
31
- type: Component,
32
- args: [{ selector: 'o3r-rule-condition-pres', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<ng-container *ngIf=\"!condition; else displayConditions\">\n <span class=\"input-value\">true</span>\n</ng-container>\n<ng-template #displayConditions>\n <ng-container *ngIf=\"!$any(condition).all && !$any(condition).any && !$any(condition).not\">\n <span class=\"input-key\">{{ lhs }}</span> {{ $any(condition).operator }} <span class=\"input-value\" *ngIf=\"rhs !== undefined\">{{ rhs }}</span>\n </ng-container>\n <ng-container *ngIf=\"$any(condition).all || $any(condition).any || $any(condition).not\">\n <span *ngIf=\"$any(condition).all\">ALL</span>\n <span *ngIf=\"$any(condition).any\">ANY</span>\n <span *ngIf=\"$any(condition).not\">NOT</span>\n <span>(\n <ng-container *ngFor=\"let cond of $any(condition).all || $any(condition).any || [$any(condition).not]; let last = last;\">\n <o3r-rule-condition-pres [condition]=\"cond\"></o3r-rule-condition-pres>\n <span *ngIf=\"!last\">, </span>\n </ng-container>\n )</span>\n </ng-container>\n</ng-template>\n", styles: ["o3r-rule-condition-pres{word-break:break-word}\n"] }]
33
- }], propDecorators: { condition: [{
34
- type: Input
35
- }] } });
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS1jb25kaXRpb24tcHJlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9ydWxlcy1lbmdpbmUvcnVsZS1jb25kaXRpb24vcnVsZS1jb25kaXRpb24tcHJlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9ydWxlcy1lbmdpbmUvcnVsZS1jb25kaXRpb24vcnVsZS1jb25kaXRpb24tcHJlcy50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssRUFDTCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7OztBQWdCdkIsTUFBTSxPQUFPLDBCQUEwQjtJQVB2QztRQVVFOzs7V0FHRztRQUNJLFFBQUcsR0FBRyxXQUFXLENBQUM7S0EwQjFCO0lBbEJDOztPQUVHO0lBQ0gsSUFDVyxTQUFTLENBQUMsU0FBd0M7UUFDM0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7UUFDNUIsSUFBSSxDQUFDLEdBQUcsR0FBSSxTQUE4QyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBRSxTQUE4QyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUM7UUFDekosSUFBSSxDQUFDLEdBQUcsR0FBSSxTQUE2QixFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBRSxTQUE2QixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDdkgsQ0FBQztJQUVELElBQVcsU0FBUztRQUNsQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVPLGNBQWMsQ0FBQyxPQUF1QjtRQUM1QyxNQUFNLEtBQUssR0FBRyxHQUFHLE9BQU8sQ0FBQyxLQUFLLElBQUksZUFBZSxFQUFFLENBQUM7UUFDcEQsT0FBUSxPQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUUsT0FBdUIsQ0FBQyxJQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3RHLENBQUM7a0lBaENVLDBCQUEwQjtzSEFBMUIsMEJBQTBCLG1HQ3JCdkMsNCtCQW1CQSwyVURFYSwwQkFBMEI7OzRGQUExQiwwQkFBMEI7a0JBUHRDLFNBQVM7K0JBQ0UseUJBQXlCLG1CQUdsQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJOzhCQXFCMUIsU0FBUztzQkFEbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7XG4gIEJpbmFyeU9wZXJhdGlvbixcbiAgR2VuZXJpY09wZXJhbmQsXG4gIE9wZXJhbmRGYWN0LFxuICBUb3BMZXZlbENvbmRpdGlvbixcbiAgVW5hcnlPcGVyYXRpb24sXG59IGZyb20gJy4uLy4uLy4uL2VuZ2luZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28zci1ydWxlLWNvbmRpdGlvbi1wcmVzJyxcbiAgc3R5bGVVcmxzOiBbJy4vcnVsZS1jb25kaXRpb24tcHJlcy5zdHlsZS5zY3NzJ10sXG4gIHRlbXBsYXRlVXJsOiAnLi9ydWxlLWNvbmRpdGlvbi1wcmVzLnRlbXBsYXRlLmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBSdWxlQ29uZGl0aW9uUHJlc0NvbXBvbmVudCB7XG4gIHByaXZhdGUgX2NvbmRpdGlvbj86IFRvcExldmVsQ29uZGl0aW9uO1xuXG4gIC8qKlxuICAgKiBMZWZ0IGhhbmQgb3BlcmF0b3IgYXMgaXQgd2lsbCBiZSBkaXNwbGF5ZWQgaW4gdGhlIHRlbXBsYXRlLlxuICAgKiBJbiB0aGUgY2FzZSBvZiBhIGZhY3Qgd2l0aCBhIGpzb24gcGF0aCwgd2lsbCByZXNvbHZlIHRoZSB3aG9sZSBmYWN0IHBhdGgsIGVsc2Ugd2lsbCBvbmx5IGRpc3BsYXkgdGhlIHZhbHVlXG4gICAqL1xuICBwdWJsaWMgbGhzID0gJ3VuZGVmaW5lZCc7XG5cbiAgLyoqXG4gICAqIFJpZ2h0IGhhbmQgb3BlcmF0b3IgYXMgaXQgd2lsbCBiZSBkaXNwbGF5ZWQgaW4gdGhlIHRlbXBsYXRlLlxuICAgKiBJbiB0aGUgY2FzZSBvZiBhIGZhY3Qgd2l0aCBhIGpzb24gcGF0aCwgd2lsbCByZXNvbHZlIHRoZSB3aG9sZSBmYWN0IHBhdGgsIGVsc2Ugd2lsbCBvbmx5IGRpc3BsYXkgdGhlIHZhbHVlXG4gICAqL1xuICBwdWJsaWMgcmhzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFJ1bGUgY29uZGl0aW9uIHRoYXQgd2lsbCBiZSBmbGF0dGVuZWQgYnkgdGhlIGNvbXBvbmVudCBzZXR0ZXJcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgY29uZGl0aW9uKGNvbmRpdGlvbjogVG9wTGV2ZWxDb25kaXRpb24gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9jb25kaXRpb24gPSBjb25kaXRpb247XG4gICAgdGhpcy5saHMgPSAoY29uZGl0aW9uIGFzIFVuYXJ5T3BlcmF0aW9uIHwgQmluYXJ5T3BlcmF0aW9uKT8ubGhzID8gdGhpcy5nZXRPcGVyYW5kTmFtZSgoY29uZGl0aW9uIGFzIFVuYXJ5T3BlcmF0aW9uIHwgQmluYXJ5T3BlcmF0aW9uKS5saHMpIDogJ3VuZGVmaW5lZCc7XG4gICAgdGhpcy5yaHMgPSAoY29uZGl0aW9uIGFzIEJpbmFyeU9wZXJhdGlvbik/LnJocyA/IHRoaXMuZ2V0T3BlcmFuZE5hbWUoKGNvbmRpdGlvbiBhcyBCaW5hcnlPcGVyYXRpb24pLnJocykgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNvbmRpdGlvbigpOiBUb3BMZXZlbENvbmRpdGlvbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbmRpdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0T3BlcmFuZE5hbWUob3BlcmFuZDogR2VuZXJpY09wZXJhbmQpOiBzdHJpbmcge1xuICAgIGNvbnN0IHZhbHVlID0gYCR7b3BlcmFuZC52YWx1ZSA/PyAnTUlTU0lOR19WQUxVRSd9YDtcbiAgICByZXR1cm4gKG9wZXJhbmQgYXMgT3BlcmFuZEZhY3QpLnBhdGggPyAob3BlcmFuZCBhcyBPcGVyYW5kRmFjdCkucGF0aCEucmVwbGFjZSgvXlxcJC8sIHZhbHVlKSA6IHZhbHVlO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiIWNvbmRpdGlvbjsgZWxzZSBkaXNwbGF5Q29uZGl0aW9uc1wiPlxuICA8c3BhbiBjbGFzcz1cImlucHV0LXZhbHVlXCI+dHJ1ZTwvc3Bhbj5cbjwvbmctY29udGFpbmVyPlxuPG5nLXRlbXBsYXRlICNkaXNwbGF5Q29uZGl0aW9ucz5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiEkYW55KGNvbmRpdGlvbikuYWxsICYmICEkYW55KGNvbmRpdGlvbikuYW55ICYmICEkYW55KGNvbmRpdGlvbikubm90XCI+XG4gICAgPHNwYW4gY2xhc3M9XCJpbnB1dC1rZXlcIj57eyBsaHMgfX08L3NwYW4+IHt7ICRhbnkoY29uZGl0aW9uKS5vcGVyYXRvciB9fSA8c3BhbiBjbGFzcz1cImlucHV0LXZhbHVlXCIgKm5nSWY9XCJyaHMgIT09IHVuZGVmaW5lZFwiPnt7IHJocyB9fTwvc3Bhbj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIkYW55KGNvbmRpdGlvbikuYWxsIHx8ICRhbnkoY29uZGl0aW9uKS5hbnkgfHwgJGFueShjb25kaXRpb24pLm5vdFwiPlxuICAgIDxzcGFuICpuZ0lmPVwiJGFueShjb25kaXRpb24pLmFsbFwiPkFMTDwvc3Bhbj5cbiAgICA8c3BhbiAqbmdJZj1cIiRhbnkoY29uZGl0aW9uKS5hbnlcIj5BTlk8L3NwYW4+XG4gICAgPHNwYW4gKm5nSWY9XCIkYW55KGNvbmRpdGlvbikubm90XCI+Tk9UPC9zcGFuPlxuICAgIDxzcGFuPihcbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb25kIG9mICRhbnkoY29uZGl0aW9uKS5hbGwgfHwgJGFueShjb25kaXRpb24pLmFueSB8fCBbJGFueShjb25kaXRpb24pLm5vdF07IGxldCBsYXN0ID0gbGFzdDtcIj5cbiAgICAgIDxvM3ItcnVsZS1jb25kaXRpb24tcHJlcyBbY29uZGl0aW9uXT1cImNvbmRcIj48L28zci1ydWxlLWNvbmRpdGlvbi1wcmVzPlxuICAgICAgPHNwYW4gKm5nSWY9XCIhbGFzdFwiPiwgPC9zcGFuPlxuICAgIDwvbmctY29udGFpbmVyPlxuICApPC9zcGFuPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -1,63 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation, } from '@angular/core';
2
- import { of, Subject, } from 'rxjs';
3
- import { delay, startWith, switchMap, } from 'rxjs/operators';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/common";
6
- /**
7
- * Duration of the notification for clipboard feature (in milliseconds)
8
- */
9
- const NOTIFICATION_DURATION = 1750;
10
- /**
11
- * Minimal length required to enable clipboard feature
12
- */
13
- const CLIPBOARD_FEATURE_LENGTH_THRESHOLD = 80;
14
- export class RuleKeyValuePresComponent {
15
- constructor() {
16
- /**
17
- * Type of display:
18
- * - 'state': `key: value`, `key: oldValue -> value` or `oldValue -> value`
19
- * - 'assignment': `key = value`
20
- */
21
- this.type = 'state';
22
- this.shouldLimitCharactersForValue = true;
23
- this.isClipBoardFeatureAvailableForValue = false;
24
- this.isValuePrimitiveType = false;
25
- this.shouldLimitCharactersForOldValue = true;
26
- this.isClipBoardFeatureAvailableForOldValue = false;
27
- this.isOldValuePrimitiveType = false;
28
- this.triggerNotification = new Subject();
29
- this.showNotification$ = this.triggerNotification.asObservable().pipe(switchMap(() => of(false).pipe(delay(NOTIFICATION_DURATION), startWith(true))));
30
- }
31
- isClipBoardFeatureAvailable(value) {
32
- return !!(navigator.clipboard && value && value.length > CLIPBOARD_FEATURE_LENGTH_THRESHOLD);
33
- }
34
- ngOnChanges({ value, oldValue }) {
35
- if (value) {
36
- this.isValuePrimitiveType = value.currentValue === null || typeof value.currentValue !== 'object';
37
- this.isClipBoardFeatureAvailableForValue = this.isClipBoardFeatureAvailable(this.isValuePrimitiveType ? String(value.currentValue) : JSON.stringify(value.currentValue));
38
- }
39
- if (oldValue) {
40
- this.isOldValuePrimitiveType = oldValue.currentValue === null || typeof oldValue.currentValue !== 'object';
41
- this.isClipBoardFeatureAvailableForOldValue = this.isClipBoardFeatureAvailable(this.isOldValuePrimitiveType ? String(oldValue.currentValue) : JSON.stringify(oldValue.currentValue));
42
- }
43
- }
44
- async copyToClipBoard(content) {
45
- await navigator.clipboard.writeText(content);
46
- this.triggerNotification.next();
47
- }
48
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RuleKeyValuePresComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
49
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: RuleKeyValuePresComponent, selector: "o3r-rule-key-value-pres", inputs: { key: "key", value: "value", oldValue: "oldValue", type: "type" }, usesOnChanges: true, ngImport: i0, template: "<span *ngIf=\"key\" class=\"input-key\">{{key}}<ng-container *ngIf=\"type === 'state'\">: </ng-container></span>\n<ng-container *ngIf=\"type === 'assignment'\"> = </ng-container>\n<ng-container *ngIf=\"oldValue\">\n <pre class=\"input-value\"\n [class.limit-characters]=\"shouldLimitCharactersForOldValue\"\n (click)=\"shouldLimitCharactersForOldValue = !shouldLimitCharactersForOldValue\"\n (keyup.enter)=\"shouldLimitCharactersForOldValue = !shouldLimitCharactersForOldValue\"\n tabindex=\"0\"\n >\n {{isOldValuePrimitiveType ? oldValue : (oldValue | json)}}\n </pre>\n <button (click)=\"copyToClipBoard(oldValue)\" *ngIf=\"isClipBoardFeatureAvailableForOldValue\" title=\"Copy to clipboard\">\uD83D\uDCCB</button>\n \u2192\n</ng-container>\n<pre class=\"input-value\"\n [class.limit-characters]=\"shouldLimitCharactersForValue\"\n (click)=\"shouldLimitCharactersForValue = !shouldLimitCharactersForValue\"\n (keyup.enter)=\"shouldLimitCharactersForValue = !shouldLimitCharactersForValue\"\n tabindex=\"0\"\n>\n {{isValuePrimitiveType ? value : (value | json)}}\n</pre>\n<button (click)=\"copyToClipBoard(value)\" *ngIf=\"isClipBoardFeatureAvailableForValue\" title=\"Copy to clipboard\">\uD83D\uDCCB</button>\n<div role=\"alert\" class=\"notification\" *ngIf=\"showNotification$ | async\">Copied to clipboard</div>\n", styles: ["o3r-rule-key-value-pres{position:relative}o3r-rule-key-value-pres .ruleset-panel-title,o3r-rule-key-value-pres .ruleset-panel-category-title{display:flex;justify-content:space-between;align-items:center}o3r-rule-key-value-pres .ruleset-panel-title{font-size:1rem;padding:.5rem 0 .1rem}o3r-rule-key-value-pres .ruleset-expansion-action,o3r-rule-key-value-pres .icon-caret-down,o3r-rule-key-value-pres .icon-caret-up{cursor:pointer}o3r-rule-key-value-pres .ruleset-panel-subtitle{font-size:.75rem}o3r-rule-key-value-pres .ruleset-panel-title-aside{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;min-width:fit-content}o3r-rule-key-value-pres .ruleset-panel-category-title{font-size:.95rem;background:#eee;padding:.5rem;margin-bottom:.5rem;margin-top:1rem}o3r-rule-key-value-pres .rule-description .ruleset-panel-category-title{font-size:.893rem;cursor:default}o3r-rule-key-value-pres .rule-description .ruleset-panel-title{font-size:.94rem}o3r-rule-key-value-pres .rule-description .ruleset-panel-category-body{padding-bottom:.5rem;padding-left:1.5rem}o3r-rule-key-value-pres .rule-description .ruleset-panel-category-body:empty{margin:0;padding:0 0 0 1.5rem}o3r-rule-key-value-pres .limit-characters{display:inline-block;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-width:38rem;vertical-align:bottom}o3r-rule-key-value-pres .input-value{margin-top:0;margin-bottom:0}o3r-rule-key-value-pres button{background:none;border:0;appearance:none}o3r-rule-key-value-pres .notification{position:absolute;padding:1rem 1.5rem;border-radius:5px;background:#444;color:#eee;right:0;z-index:1}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.JsonPipe, name: "json" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
50
- }
51
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RuleKeyValuePresComponent, decorators: [{
52
- type: Component,
53
- args: [{ selector: 'o3r-rule-key-value-pres', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<span *ngIf=\"key\" class=\"input-key\">{{key}}<ng-container *ngIf=\"type === 'state'\">: </ng-container></span>\n<ng-container *ngIf=\"type === 'assignment'\"> = </ng-container>\n<ng-container *ngIf=\"oldValue\">\n <pre class=\"input-value\"\n [class.limit-characters]=\"shouldLimitCharactersForOldValue\"\n (click)=\"shouldLimitCharactersForOldValue = !shouldLimitCharactersForOldValue\"\n (keyup.enter)=\"shouldLimitCharactersForOldValue = !shouldLimitCharactersForOldValue\"\n tabindex=\"0\"\n >\n {{isOldValuePrimitiveType ? oldValue : (oldValue | json)}}\n </pre>\n <button (click)=\"copyToClipBoard(oldValue)\" *ngIf=\"isClipBoardFeatureAvailableForOldValue\" title=\"Copy to clipboard\">\uD83D\uDCCB</button>\n \u2192\n</ng-container>\n<pre class=\"input-value\"\n [class.limit-characters]=\"shouldLimitCharactersForValue\"\n (click)=\"shouldLimitCharactersForValue = !shouldLimitCharactersForValue\"\n (keyup.enter)=\"shouldLimitCharactersForValue = !shouldLimitCharactersForValue\"\n tabindex=\"0\"\n>\n {{isValuePrimitiveType ? value : (value | json)}}\n</pre>\n<button (click)=\"copyToClipBoard(value)\" *ngIf=\"isClipBoardFeatureAvailableForValue\" title=\"Copy to clipboard\">\uD83D\uDCCB</button>\n<div role=\"alert\" class=\"notification\" *ngIf=\"showNotification$ | async\">Copied to clipboard</div>\n", styles: ["o3r-rule-key-value-pres{position:relative}o3r-rule-key-value-pres .ruleset-panel-title,o3r-rule-key-value-pres .ruleset-panel-category-title{display:flex;justify-content:space-between;align-items:center}o3r-rule-key-value-pres .ruleset-panel-title{font-size:1rem;padding:.5rem 0 .1rem}o3r-rule-key-value-pres .ruleset-expansion-action,o3r-rule-key-value-pres .icon-caret-down,o3r-rule-key-value-pres .icon-caret-up{cursor:pointer}o3r-rule-key-value-pres .ruleset-panel-subtitle{font-size:.75rem}o3r-rule-key-value-pres .ruleset-panel-title-aside{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;min-width:fit-content}o3r-rule-key-value-pres .ruleset-panel-category-title{font-size:.95rem;background:#eee;padding:.5rem;margin-bottom:.5rem;margin-top:1rem}o3r-rule-key-value-pres .rule-description .ruleset-panel-category-title{font-size:.893rem;cursor:default}o3r-rule-key-value-pres .rule-description .ruleset-panel-title{font-size:.94rem}o3r-rule-key-value-pres .rule-description .ruleset-panel-category-body{padding-bottom:.5rem;padding-left:1.5rem}o3r-rule-key-value-pres .rule-description .ruleset-panel-category-body:empty{margin:0;padding:0 0 0 1.5rem}o3r-rule-key-value-pres .limit-characters{display:inline-block;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-width:38rem;vertical-align:bottom}o3r-rule-key-value-pres .input-value{margin-top:0;margin-bottom:0}o3r-rule-key-value-pres button{background:none;border:0;appearance:none}o3r-rule-key-value-pres .notification{position:absolute;padding:1rem 1.5rem;border-radius:5px;background:#444;color:#eee;right:0;z-index:1}\n"] }]
54
- }], propDecorators: { key: [{
55
- type: Input
56
- }], value: [{
57
- type: Input
58
- }], oldValue: [{
59
- type: Input
60
- }], type: [{
61
- type: Input
62
- }] } });
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS1rZXktdmFsdWUtcHJlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9ydWxlcy1lbmdpbmUvcnVsZS1rZXktdmFsdWUvcnVsZS1rZXktdmFsdWUtcHJlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9ydWxlcy1lbmdpbmUvcnVsZS1rZXktdmFsdWUvcnVsZS1rZXktdmFsdWUtcHJlcy50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssRUFHTCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLEVBQUUsRUFDRixPQUFPLEdBQ1IsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQ0wsS0FBSyxFQUNMLFNBQVMsRUFDVCxTQUFTLEdBQ1YsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBRXhCOztHQUVHO0FBQ0gsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLENBQUM7QUFFbkM7O0dBRUc7QUFDSCxNQUFNLGtDQUFrQyxHQUFHLEVBQUUsQ0FBQztBQVM5QyxNQUFNLE9BQU8seUJBQXlCO0lBUHRDO1FBMEJFOzs7O1dBSUc7UUFFSSxTQUFJLEdBQTJCLE9BQU8sQ0FBQztRQUV2QyxrQ0FBNkIsR0FBRyxJQUFJLENBQUM7UUFDckMsd0NBQW1DLEdBQUcsS0FBSyxDQUFDO1FBQzVDLHlCQUFvQixHQUFHLEtBQUssQ0FBQztRQUU3QixxQ0FBZ0MsR0FBRyxJQUFJLENBQUM7UUFDeEMsMkNBQXNDLEdBQUcsS0FBSyxDQUFDO1FBQy9DLDRCQUF1QixHQUFHLEtBQUssQ0FBQztRQUV0Qix3QkFBbUIsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ3BELHNCQUFpQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQ3JFLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQy9FLENBQUM7S0FxQkg7SUFuQlMsMkJBQTJCLENBQUMsS0FBeUI7UUFDM0QsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLGtDQUFrQyxDQUFDLENBQUM7SUFDL0YsQ0FBQztJQUVNLFdBQVcsQ0FBQyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQWlCO1FBQ25ELElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDLFlBQVksS0FBSyxJQUFJLElBQUksT0FBTyxLQUFLLENBQUMsWUFBWSxLQUFLLFFBQVEsQ0FBQztZQUNsRyxJQUFJLENBQUMsbUNBQW1DLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztRQUMzSyxDQUFDO1FBQ0QsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxRQUFRLENBQUMsWUFBWSxLQUFLLElBQUksSUFBSSxPQUFPLFFBQVEsQ0FBQyxZQUFZLEtBQUssUUFBUSxDQUFDO1lBQzNHLElBQUksQ0FBQyxzQ0FBc0MsR0FBRyxJQUFJLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQ3ZMLENBQUM7SUFDSCxDQUFDO0lBRU0sS0FBSyxDQUFDLGVBQWUsQ0FBQyxPQUFlO1FBQzFDLE1BQU0sU0FBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2xDLENBQUM7a0lBMURVLHlCQUF5QjtzSEFBekIseUJBQXlCLGdLQ25DdEMsazBDQXdCQTs7NEZEV2EseUJBQXlCO2tCQVByQyxTQUFTOytCQUNFLHlCQUF5QixtQkFHbEIsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSTs4QkFPOUIsR0FBRztzQkFEVCxLQUFLO2dCQU9DLEtBQUs7c0JBRFgsS0FBSztnQkFPQyxRQUFRO3NCQURkLEtBQUs7Z0JBU0MsSUFBSTtzQkFEVixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgb2YsXG4gIFN1YmplY3QsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgZGVsYXksXG4gIHN0YXJ0V2l0aCxcbiAgc3dpdGNoTWFwLFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbi8qKlxuICogRHVyYXRpb24gb2YgdGhlIG5vdGlmaWNhdGlvbiBmb3IgY2xpcGJvYXJkIGZlYXR1cmUgKGluIG1pbGxpc2Vjb25kcylcbiAqL1xuY29uc3QgTk9USUZJQ0FUSU9OX0RVUkFUSU9OID0gMTc1MDtcblxuLyoqXG4gKiBNaW5pbWFsIGxlbmd0aCByZXF1aXJlZCB0byBlbmFibGUgY2xpcGJvYXJkIGZlYXR1cmVcbiAqL1xuY29uc3QgQ0xJUEJPQVJEX0ZFQVRVUkVfTEVOR1RIX1RIUkVTSE9MRCA9IDgwO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvM3ItcnVsZS1rZXktdmFsdWUtcHJlcycsXG4gIHN0eWxlVXJsczogWycuL3J1bGUta2V5LXZhbHVlLXByZXMuc3R5bGUuc2NzcyddLFxuICB0ZW1wbGF0ZVVybDogJy4vcnVsZS1rZXktdmFsdWUtcHJlcy50ZW1wbGF0ZS5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgUnVsZUtleVZhbHVlUHJlc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIC8qKlxuICAgKiBLZXkgb2YgdGhlIG9iamVjdCAobmFtZSBvZiB0aGUgZmFjdCBmb3IgZXhhbXBsZSlcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBrZXk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEN1cnJlbnQgdmFsdWUgb2YgdGhlIG9iamVjdFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHZhbHVlITogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQcmV2aW91cyB2YWx1ZSBvZiB0aGUgb2JqZWN0XG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgb2xkVmFsdWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFR5cGUgb2YgZGlzcGxheTpcbiAgICogLSAnc3RhdGUnOiAgICAgIGBrZXk6IHZhbHVlYCwgYGtleTogb2xkVmFsdWUgLT4gdmFsdWVgIG9yIGBvbGRWYWx1ZSAtPiB2YWx1ZWBcbiAgICogLSAnYXNzaWdubWVudCc6IGBrZXkgPSB2YWx1ZWBcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0eXBlOiAnc3RhdGUnIHwgJ2Fzc2lnbm1lbnQnID0gJ3N0YXRlJztcblxuICBwdWJsaWMgc2hvdWxkTGltaXRDaGFyYWN0ZXJzRm9yVmFsdWUgPSB0cnVlO1xuICBwdWJsaWMgaXNDbGlwQm9hcmRGZWF0dXJlQXZhaWxhYmxlRm9yVmFsdWUgPSBmYWxzZTtcbiAgcHVibGljIGlzVmFsdWVQcmltaXRpdmVUeXBlID0gZmFsc2U7XG5cbiAgcHVibGljIHNob3VsZExpbWl0Q2hhcmFjdGVyc0Zvck9sZFZhbHVlID0gdHJ1ZTtcbiAgcHVibGljIGlzQ2xpcEJvYXJkRmVhdHVyZUF2YWlsYWJsZUZvck9sZFZhbHVlID0gZmFsc2U7XG4gIHB1YmxpYyBpc09sZFZhbHVlUHJpbWl0aXZlVHlwZSA9IGZhbHNlO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgdHJpZ2dlck5vdGlmaWNhdGlvbiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHB1YmxpYyBzaG93Tm90aWZpY2F0aW9uJCA9IHRoaXMudHJpZ2dlck5vdGlmaWNhdGlvbi5hc09ic2VydmFibGUoKS5waXBlKFxuICAgIHN3aXRjaE1hcCgoKSA9PiBvZihmYWxzZSkucGlwZShkZWxheShOT1RJRklDQVRJT05fRFVSQVRJT04pLCBzdGFydFdpdGgodHJ1ZSkpKVxuICApO1xuXG4gIHByaXZhdGUgaXNDbGlwQm9hcmRGZWF0dXJlQXZhaWxhYmxlKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gISEobmF2aWdhdG9yLmNsaXBib2FyZCAmJiB2YWx1ZSAmJiB2YWx1ZS5sZW5ndGggPiBDTElQQk9BUkRfRkVBVFVSRV9MRU5HVEhfVEhSRVNIT0xEKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyh7IHZhbHVlLCBvbGRWYWx1ZSB9OiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLmlzVmFsdWVQcmltaXRpdmVUeXBlID0gdmFsdWUuY3VycmVudFZhbHVlID09PSBudWxsIHx8IHR5cGVvZiB2YWx1ZS5jdXJyZW50VmFsdWUgIT09ICdvYmplY3QnO1xuICAgICAgdGhpcy5pc0NsaXBCb2FyZEZlYXR1cmVBdmFpbGFibGVGb3JWYWx1ZSA9IHRoaXMuaXNDbGlwQm9hcmRGZWF0dXJlQXZhaWxhYmxlKHRoaXMuaXNWYWx1ZVByaW1pdGl2ZVR5cGUgPyBTdHJpbmcodmFsdWUuY3VycmVudFZhbHVlKSA6IEpTT04uc3RyaW5naWZ5KHZhbHVlLmN1cnJlbnRWYWx1ZSkpO1xuICAgIH1cbiAgICBpZiAob2xkVmFsdWUpIHtcbiAgICAgIHRoaXMuaXNPbGRWYWx1ZVByaW1pdGl2ZVR5cGUgPSBvbGRWYWx1ZS5jdXJyZW50VmFsdWUgPT09IG51bGwgfHwgdHlwZW9mIG9sZFZhbHVlLmN1cnJlbnRWYWx1ZSAhPT0gJ29iamVjdCc7XG4gICAgICB0aGlzLmlzQ2xpcEJvYXJkRmVhdHVyZUF2YWlsYWJsZUZvck9sZFZhbHVlID0gdGhpcy5pc0NsaXBCb2FyZEZlYXR1cmVBdmFpbGFibGUodGhpcy5pc09sZFZhbHVlUHJpbWl0aXZlVHlwZSA/IFN0cmluZyhvbGRWYWx1ZS5jdXJyZW50VmFsdWUpIDogSlNPTi5zdHJpbmdpZnkob2xkVmFsdWUuY3VycmVudFZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGNvcHlUb0NsaXBCb2FyZChjb250ZW50OiBzdHJpbmcpIHtcbiAgICBhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChjb250ZW50KTtcbiAgICB0aGlzLnRyaWdnZXJOb3RpZmljYXRpb24ubmV4dCgpO1xuICB9XG59XG4iLCI8c3BhbiAqbmdJZj1cImtleVwiIGNsYXNzPVwiaW5wdXQta2V5XCI+e3trZXl9fTxuZy1jb250YWluZXIgKm5nSWY9XCJ0eXBlID09PSAnc3RhdGUnXCI+OiA8L25nLWNvbnRhaW5lcj48L3NwYW4+XG48bmctY29udGFpbmVyICpuZ0lmPVwidHlwZSA9PT0gJ2Fzc2lnbm1lbnQnXCI+ID0gPC9uZy1jb250YWluZXI+XG48bmctY29udGFpbmVyICpuZ0lmPVwib2xkVmFsdWVcIj5cbiAgPHByZSBjbGFzcz1cImlucHV0LXZhbHVlXCJcbiAgICBbY2xhc3MubGltaXQtY2hhcmFjdGVyc109XCJzaG91bGRMaW1pdENoYXJhY3RlcnNGb3JPbGRWYWx1ZVwiXG4gICAgKGNsaWNrKT1cInNob3VsZExpbWl0Q2hhcmFjdGVyc0Zvck9sZFZhbHVlID0gIXNob3VsZExpbWl0Q2hhcmFjdGVyc0Zvck9sZFZhbHVlXCJcbiAgICAoa2V5dXAuZW50ZXIpPVwic2hvdWxkTGltaXRDaGFyYWN0ZXJzRm9yT2xkVmFsdWUgPSAhc2hvdWxkTGltaXRDaGFyYWN0ZXJzRm9yT2xkVmFsdWVcIlxuICAgIHRhYmluZGV4PVwiMFwiXG4gID5cbiAgICB7e2lzT2xkVmFsdWVQcmltaXRpdmVUeXBlID8gb2xkVmFsdWUgOiAob2xkVmFsdWUgfCBqc29uKX19XG4gIDwvcHJlPlxuICA8YnV0dG9uIChjbGljayk9XCJjb3B5VG9DbGlwQm9hcmQob2xkVmFsdWUpXCIgKm5nSWY9XCJpc0NsaXBCb2FyZEZlYXR1cmVBdmFpbGFibGVGb3JPbGRWYWx1ZVwiIHRpdGxlPVwiQ29weSB0byBjbGlwYm9hcmRcIj7wn5OLPC9idXR0b24+XG4gIOKGklxuPC9uZy1jb250YWluZXI+XG48cHJlIGNsYXNzPVwiaW5wdXQtdmFsdWVcIlxuICBbY2xhc3MubGltaXQtY2hhcmFjdGVyc109XCJzaG91bGRMaW1pdENoYXJhY3RlcnNGb3JWYWx1ZVwiXG4gIChjbGljayk9XCJzaG91bGRMaW1pdENoYXJhY3RlcnNGb3JWYWx1ZSA9ICFzaG91bGRMaW1pdENoYXJhY3RlcnNGb3JWYWx1ZVwiXG4gIChrZXl1cC5lbnRlcik9XCJzaG91bGRMaW1pdENoYXJhY3RlcnNGb3JWYWx1ZSA9ICFzaG91bGRMaW1pdENoYXJhY3RlcnNGb3JWYWx1ZVwiXG4gIHRhYmluZGV4PVwiMFwiXG4+XG4gIHt7aXNWYWx1ZVByaW1pdGl2ZVR5cGUgPyB2YWx1ZSA6ICh2YWx1ZSB8IGpzb24pfX1cbjwvcHJlPlxuPGJ1dHRvbiAoY2xpY2spPVwiY29weVRvQ2xpcEJvYXJkKHZhbHVlKVwiICpuZ0lmPVwiaXNDbGlwQm9hcmRGZWF0dXJlQXZhaWxhYmxlRm9yVmFsdWVcIiB0aXRsZT1cIkNvcHkgdG8gY2xpcGJvYXJkXCI+8J+TizwvYnV0dG9uPlxuPGRpdiByb2xlPVwiYWxlcnRcIiBjbGFzcz1cIm5vdGlmaWNhdGlvblwiICpuZ0lmPVwic2hvd05vdGlmaWNhdGlvbiQgfCBhc3luY1wiPkNvcGllZCB0byBjbGlwYm9hcmQ8L2Rpdj5cbiJdfQ==
@@ -1,48 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation, } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/common";
4
- import * as i2 from "../rule-condition/rule-condition-pres.component";
5
- import * as i3 from "../rule-actions/rule-actions-pres.component";
6
- export class RuleTreePresComponent {
7
- constructor() {
8
- /**
9
- * Type of the block being resolved.
10
- * A type "IF_ELSE" will display two branches and the success and failure outputs associated
11
- * Else, only the successElements will be shown
12
- */
13
- this.blockType = '';
14
- /**
15
- * If case output
16
- */
17
- this.successElements = [];
18
- /**
19
- * Else case output
20
- */
21
- this.failureElements = [];
22
- /**
23
- * Should the "Else case scenario" actions be displayed
24
- */
25
- this.failureActionsExpanded = false;
26
- /**
27
- * Should the "If case scenario" actions be displayed
28
- */
29
- this.successActionsExpanded = false;
30
- }
31
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RuleTreePresComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
32
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: RuleTreePresComponent, selector: "o3r-rule-tree-pres", inputs: { name: "name", blockType: "blockType", condition: "condition", successElements: "successElements", failureElements: "failureElements" }, ngImport: i0, template: "<span *ngIf=\"name\">{{name | titlecase}}:</span>\n<div class=\"rule-wrapper tree\">\n <ng-container *ngIf=\"blockType === 'IF_ELSE'; else noCondition\">\n <div class=\"tree-root\" *ngIf=\"!name\" [attr.aria-hidden]=\"true\">\n <div></div>\n <div></div>\n </div>\n <div class=\"rule-conditions\">\n <div class=\"rule-conditions-title\">If\n <o3r-rule-condition-pres [condition]=\"condition\"></o3r-rule-condition-pres>\n </div>\n <div class=\"tree-root\" [attr.aria-hidden]=\"true\">\n <div></div>\n <div></div>\n </div>\n </div>\n <div class=\"rule-actions-wrapper tree-node\">\n <div class=\"rule-actions tree-branch\">\n <div class=\"tree-leaf\" [attr.aria-hidden]=\"true\">\n <div></div>\n <div></div>\n </div>\n <div class=\"rule-action-title success-actions\"\n tabindex=\"0\"\n (click)=\"successActionsExpanded = !successActionsExpanded\"\n (keyup.enter)=\"successActionsExpanded = !successActionsExpanded\">\n <i class=\"icon refx-icon-validate\"></i>\n <span>Then</span>\n <i class=\"icon\"\n [class.icon-caret-down]=\"!successActionsExpanded\"\n [class.icon-caret-up]=\"successActionsExpanded\">\n </i>\n </div>\n <o3r-rule-actions-pres class=\"rule-tree-actions\" *ngIf=\"successActionsExpanded\"\n [actions]=\"successElements\">\n </o3r-rule-actions-pres>\n <ng-container [ngTemplateOutlet]=\"subTree\" [ngTemplateOutletContext]=\"{blocks: successElements}\"></ng-container>\n </div>\n <div class=\"rule-actions tree-branch\">\n <div class=\"tree-leaf\" [attr.aria-hidden]=\"true\">\n <div></div>\n <div></div>\n </div>\n <div class=\"rule-action-title error-actions\"\n tabindex=\"0\"\n (click)=\"failureActionsExpanded = !failureActionsExpanded\"\n (keyup.enter)=\"failureActionsExpanded = !failureActionsExpanded\">\n <i class=\"icon refx-icon-cross\"></i>\n <span>Else</span>\n <i class=\"icon\"\n [class.icon-caret-down]=\"!failureActionsExpanded\"\n [class.icon-caret-up]=\"failureActionsExpanded\">\n </i>\n </div>\n <o3r-rule-actions-pres class=\"rule-tree-actions\"\n *ngIf=\"failureActionsExpanded\"\n [actions]=\"failureElements\">\n </o3r-rule-actions-pres>\n <ng-container [ngTemplateOutlet]=\"subTree\" [ngTemplateOutletContext]=\"{blocks: failureElements}\"></ng-container>\n </div>\n </div>\n </ng-container>\n</div>\n<ng-template #noCondition>\n <div class=\"rule-conditions\">\n <div class=\"rule-conditions-title\">If <span class=\"input-value\">true</span></div>\n <div class=\"tree-root\" [attr.aria-hidden]=\"true\">\n <div></div>\n <div></div>\n </div>\n </div>\n <div class=\"rule-actions-wrapper\">\n <div class=\"rule-actions\">\n <div class=\"rule-action-title success-actions\" tabindex=\"0\"\n (keyup.enter)=\"successActionsExpanded = !successActionsExpanded\"\n (click)=\"successActionsExpanded = !successActionsExpanded\">\n <i class=\"icon refx-icon-validate\">\n </i>\n <span>Then</span>\n <i class=\"icon\"\n [class.icon-caret-down]=\"!successActionsExpanded\"\n [class.icon-caret-up]=\"successActionsExpanded\">\n </i>\n </div>\n <o3r-rule-actions-pres class=\"rule-tree-actions\"\n *ngIf=\"successActionsExpanded\"\n [actions]=\"successElements\">\n </o3r-rule-actions-pres>\n <ng-container [ngTemplateOutlet]=\"subTree\" [ngTemplateOutletContext]=\"{blocks: successElements}\"></ng-container>\n </div>\n </div>\n</ng-template>\n\n<ng-template #subTree let-blocks=\"blocks\">\n <div class=\"rule-sub-trees\">\n <ng-container *ngFor=\"let block of blocks\">\n <div *ngIf=\"block.blockType === 'IF_ELSE'\" class=\"tree-branch\">\n <o3r-rule-tree-pres\n [blockType]=\"'IF_ELSE'\"\n [condition]=\"block.condition\"\n [failureElements]=\"block.failureElements\"\n [successElements]=\"block.successElements\"></o3r-rule-tree-pres>\n </div>\n </ng-container>\n </div>\n</ng-template>\n", styles: ["o3r-rule-tree-pres{display:block;padding-bottom:1rem}o3r-rule-tree-pres .rule-sub-trees{display:flex}o3r-rule-tree-pres .rule-conditions-title,o3r-rule-tree-pres .rule-action-title{text-align:center}o3r-rule-tree-pres .rule-conditions-title{border:1px solid #999999;background:#fff;color:#000;padding:.2rem}o3r-rule-tree-pres .rule-action-title{background:#fff;border-radius:0;border:1px solid #999999;cursor:pointer;display:flex;justify-content:center;align-items:center;gap:.5rem}o3r-rule-tree-pres .rule-tree-actions{display:block;padding:.5rem}o3r-rule-tree-pres .rule-actions:first-child>.rule-action-title{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}o3r-rule-tree-pres .rule-actions:last-child>.rule-action-title{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}o3r-rule-tree-pres .rule-actions-wrapper{display:flex}o3r-rule-tree-pres .rule-actions-wrapper .rule-actions{flex:1 1 100%}o3r-rule-tree-pres .success-actions{border-color:#16aa32}o3r-rule-tree-pres .success-actions.rule-action-title{background:#16aa32;color:#fff}o3r-rule-tree-pres .error-actions{border-color:#c02020}o3r-rule-tree-pres .error-actions.rule-action-title{background:#c02020;color:#fff}o3r-rule-tree-pres .tree .tree-leaf,o3r-rule-tree-pres .tree .tree-root{display:flex;width:100%}o3r-rule-tree-pres .tree .tree-leaf>div,o3r-rule-tree-pres .tree .tree-root>div{height:1rem;width:50%}o3r-rule-tree-pres .tree .tree-root div:first-child{border-right:1px dashed}o3r-rule-tree-pres .tree .tree-root{margin-top:.2rem}o3r-rule-tree-pres .tree .tree-node>.tree-branch:last-child>.tree-leaf>div:first-child{border-right:1px dashed;border-top:1px dashed;border-top-right-radius:.2rem}o3r-rule-tree-pres .tree .tree-node>.tree-branch:first-child>.tree-leaf>div:last-child{border-left:1px dashed;border-top:1px dashed;border-top-left-radius:.2rem}o3r-rule-tree-pres .icon{cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.RuleConditionPresComponent, selector: "o3r-rule-condition-pres", inputs: ["condition"] }, { kind: "component", type: RuleTreePresComponent, selector: "o3r-rule-tree-pres", inputs: ["name", "blockType", "condition", "successElements", "failureElements"] }, { kind: "component", type: i3.RuleActionsPresComponent, selector: "o3r-rule-actions-pres", inputs: ["actions", "temporaryFacts", "runtimeOutputs"] }, { kind: "pipe", type: i1.TitleCasePipe, name: "titlecase" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
33
- }
34
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RuleTreePresComponent, decorators: [{
35
- type: Component,
36
- args: [{ selector: 'o3r-rule-tree-pres', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<span *ngIf=\"name\">{{name | titlecase}}:</span>\n<div class=\"rule-wrapper tree\">\n <ng-container *ngIf=\"blockType === 'IF_ELSE'; else noCondition\">\n <div class=\"tree-root\" *ngIf=\"!name\" [attr.aria-hidden]=\"true\">\n <div></div>\n <div></div>\n </div>\n <div class=\"rule-conditions\">\n <div class=\"rule-conditions-title\">If\n <o3r-rule-condition-pres [condition]=\"condition\"></o3r-rule-condition-pres>\n </div>\n <div class=\"tree-root\" [attr.aria-hidden]=\"true\">\n <div></div>\n <div></div>\n </div>\n </div>\n <div class=\"rule-actions-wrapper tree-node\">\n <div class=\"rule-actions tree-branch\">\n <div class=\"tree-leaf\" [attr.aria-hidden]=\"true\">\n <div></div>\n <div></div>\n </div>\n <div class=\"rule-action-title success-actions\"\n tabindex=\"0\"\n (click)=\"successActionsExpanded = !successActionsExpanded\"\n (keyup.enter)=\"successActionsExpanded = !successActionsExpanded\">\n <i class=\"icon refx-icon-validate\"></i>\n <span>Then</span>\n <i class=\"icon\"\n [class.icon-caret-down]=\"!successActionsExpanded\"\n [class.icon-caret-up]=\"successActionsExpanded\">\n </i>\n </div>\n <o3r-rule-actions-pres class=\"rule-tree-actions\" *ngIf=\"successActionsExpanded\"\n [actions]=\"successElements\">\n </o3r-rule-actions-pres>\n <ng-container [ngTemplateOutlet]=\"subTree\" [ngTemplateOutletContext]=\"{blocks: successElements}\"></ng-container>\n </div>\n <div class=\"rule-actions tree-branch\">\n <div class=\"tree-leaf\" [attr.aria-hidden]=\"true\">\n <div></div>\n <div></div>\n </div>\n <div class=\"rule-action-title error-actions\"\n tabindex=\"0\"\n (click)=\"failureActionsExpanded = !failureActionsExpanded\"\n (keyup.enter)=\"failureActionsExpanded = !failureActionsExpanded\">\n <i class=\"icon refx-icon-cross\"></i>\n <span>Else</span>\n <i class=\"icon\"\n [class.icon-caret-down]=\"!failureActionsExpanded\"\n [class.icon-caret-up]=\"failureActionsExpanded\">\n </i>\n </div>\n <o3r-rule-actions-pres class=\"rule-tree-actions\"\n *ngIf=\"failureActionsExpanded\"\n [actions]=\"failureElements\">\n </o3r-rule-actions-pres>\n <ng-container [ngTemplateOutlet]=\"subTree\" [ngTemplateOutletContext]=\"{blocks: failureElements}\"></ng-container>\n </div>\n </div>\n </ng-container>\n</div>\n<ng-template #noCondition>\n <div class=\"rule-conditions\">\n <div class=\"rule-conditions-title\">If <span class=\"input-value\">true</span></div>\n <div class=\"tree-root\" [attr.aria-hidden]=\"true\">\n <div></div>\n <div></div>\n </div>\n </div>\n <div class=\"rule-actions-wrapper\">\n <div class=\"rule-actions\">\n <div class=\"rule-action-title success-actions\" tabindex=\"0\"\n (keyup.enter)=\"successActionsExpanded = !successActionsExpanded\"\n (click)=\"successActionsExpanded = !successActionsExpanded\">\n <i class=\"icon refx-icon-validate\">\n </i>\n <span>Then</span>\n <i class=\"icon\"\n [class.icon-caret-down]=\"!successActionsExpanded\"\n [class.icon-caret-up]=\"successActionsExpanded\">\n </i>\n </div>\n <o3r-rule-actions-pres class=\"rule-tree-actions\"\n *ngIf=\"successActionsExpanded\"\n [actions]=\"successElements\">\n </o3r-rule-actions-pres>\n <ng-container [ngTemplateOutlet]=\"subTree\" [ngTemplateOutletContext]=\"{blocks: successElements}\"></ng-container>\n </div>\n </div>\n</ng-template>\n\n<ng-template #subTree let-blocks=\"blocks\">\n <div class=\"rule-sub-trees\">\n <ng-container *ngFor=\"let block of blocks\">\n <div *ngIf=\"block.blockType === 'IF_ELSE'\" class=\"tree-branch\">\n <o3r-rule-tree-pres\n [blockType]=\"'IF_ELSE'\"\n [condition]=\"block.condition\"\n [failureElements]=\"block.failureElements\"\n [successElements]=\"block.successElements\"></o3r-rule-tree-pres>\n </div>\n </ng-container>\n </div>\n</ng-template>\n", styles: ["o3r-rule-tree-pres{display:block;padding-bottom:1rem}o3r-rule-tree-pres .rule-sub-trees{display:flex}o3r-rule-tree-pres .rule-conditions-title,o3r-rule-tree-pres .rule-action-title{text-align:center}o3r-rule-tree-pres .rule-conditions-title{border:1px solid #999999;background:#fff;color:#000;padding:.2rem}o3r-rule-tree-pres .rule-action-title{background:#fff;border-radius:0;border:1px solid #999999;cursor:pointer;display:flex;justify-content:center;align-items:center;gap:.5rem}o3r-rule-tree-pres .rule-tree-actions{display:block;padding:.5rem}o3r-rule-tree-pres .rule-actions:first-child>.rule-action-title{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}o3r-rule-tree-pres .rule-actions:last-child>.rule-action-title{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}o3r-rule-tree-pres .rule-actions-wrapper{display:flex}o3r-rule-tree-pres .rule-actions-wrapper .rule-actions{flex:1 1 100%}o3r-rule-tree-pres .success-actions{border-color:#16aa32}o3r-rule-tree-pres .success-actions.rule-action-title{background:#16aa32;color:#fff}o3r-rule-tree-pres .error-actions{border-color:#c02020}o3r-rule-tree-pres .error-actions.rule-action-title{background:#c02020;color:#fff}o3r-rule-tree-pres .tree .tree-leaf,o3r-rule-tree-pres .tree .tree-root{display:flex;width:100%}o3r-rule-tree-pres .tree .tree-leaf>div,o3r-rule-tree-pres .tree .tree-root>div{height:1rem;width:50%}o3r-rule-tree-pres .tree .tree-root div:first-child{border-right:1px dashed}o3r-rule-tree-pres .tree .tree-root{margin-top:.2rem}o3r-rule-tree-pres .tree .tree-node>.tree-branch:last-child>.tree-leaf>div:first-child{border-right:1px dashed;border-top:1px dashed;border-top-right-radius:.2rem}o3r-rule-tree-pres .tree .tree-node>.tree-branch:first-child>.tree-leaf>div:last-child{border-left:1px dashed;border-top:1px dashed;border-top-left-radius:.2rem}o3r-rule-tree-pres .icon{cursor:pointer}\n"] }]
37
- }], propDecorators: { name: [{
38
- type: Input
39
- }], blockType: [{
40
- type: Input
41
- }], condition: [{
42
- type: Input
43
- }], successElements: [{
44
- type: Input
45
- }], failureElements: [{
46
- type: Input
47
- }] } });
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS10cmVlLXByZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcnVsZXMtZW5naW5lL3J1bGUtdHJlZS9ydWxlLXRyZWUtcHJlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9ydWxlcy1lbmdpbmUvcnVsZS10cmVlL3J1bGUtdHJlZS1wcmVzLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxFQUNMLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFhdkIsTUFBTSxPQUFPLHFCQUFxQjtJQVBsQztRQWNFOzs7O1dBSUc7UUFFSSxjQUFTLEdBQUcsRUFBRSxDQUFDO1FBUXRCOztXQUVHO1FBRUksb0JBQWUsR0FBZSxFQUFFLENBQUM7UUFFeEM7O1dBRUc7UUFFSSxvQkFBZSxHQUFlLEVBQUUsQ0FBQztRQUV4Qzs7V0FFRztRQUNJLDJCQUFzQixHQUFHLEtBQUssQ0FBQztRQUV0Qzs7V0FFRztRQUNJLDJCQUFzQixHQUFHLEtBQUssQ0FBQztLQUN2QztrSUExQ1kscUJBQXFCO3NIQUFyQixxQkFBcUIsNE1DbEJsQyw4MklBMEdBLCs1RUR4RmEscUJBQXFCOzs0RkFBckIscUJBQXFCO2tCQVBqQyxTQUFTOytCQUNFLG9CQUFvQixtQkFHYix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJOzhCQU85QixJQUFJO3NCQURWLEtBQUs7Z0JBU0MsU0FBUztzQkFEZixLQUFLO2dCQU9DLFNBQVM7c0JBRGYsS0FBSztnQkFPQyxlQUFlO3NCQURyQixLQUFLO2dCQU9DLGVBQWU7c0JBRHJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUge1xuICBBbGxCbG9jayxcbiAgVG9wTGV2ZWxDb25kaXRpb24sXG59IGZyb20gJy4uLy4uLy4uL2VuZ2luZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28zci1ydWxlLXRyZWUtcHJlcycsXG4gIHN0eWxlVXJsczogWycuL3J1bGUtdHJlZS1wcmVzLnN0eWxlLnNjc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3J1bGUtdHJlZS1wcmVzLnRlbXBsYXRlLmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBSdWxlVHJlZVByZXNDb21wb25lbnQge1xuICAvKipcbiAgICogUnVsZSBuYW1lLiBXaWxsIG9ubHkgYmUgZGVmaW5lZCBhdCB0aGUgcm9vdCBvZiB0aGUgcnVsZSB0cmVlLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIG5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFR5cGUgb2YgdGhlIGJsb2NrIGJlaW5nIHJlc29sdmVkLlxuICAgKiBBIHR5cGUgXCJJRl9FTFNFXCIgd2lsbCBkaXNwbGF5IHR3byBicmFuY2hlcyBhbmQgdGhlIHN1Y2Nlc3MgYW5kIGZhaWx1cmUgb3V0cHV0cyBhc3NvY2lhdGVkXG4gICAqIEVsc2UsIG9ubHkgdGhlIHN1Y2Nlc3NFbGVtZW50cyB3aWxsIGJlIHNob3duXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYmxvY2tUeXBlID0gJyc7XG5cbiAgLyoqXG4gICAqIFRoZSBjb25kaXRpb24gdW5kZXIgd2hpY2ggdGhlIHN1Y2Nlc3MgZWxlbWVudHMgd2lsbCBiZSBkaXNwbGF5ZWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgY29uZGl0aW9uPzogVG9wTGV2ZWxDb25kaXRpb247XG5cbiAgLyoqXG4gICAqIElmIGNhc2Ugb3V0cHV0XG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc3VjY2Vzc0VsZW1lbnRzOiBBbGxCbG9ja1tdID0gW107XG5cbiAgLyoqXG4gICAqIEVsc2UgY2FzZSBvdXRwdXRcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBmYWlsdXJlRWxlbWVudHM6IEFsbEJsb2NrW10gPSBbXTtcblxuICAvKipcbiAgICogU2hvdWxkIHRoZSBcIkVsc2UgY2FzZSBzY2VuYXJpb1wiIGFjdGlvbnMgYmUgZGlzcGxheWVkXG4gICAqL1xuICBwdWJsaWMgZmFpbHVyZUFjdGlvbnNFeHBhbmRlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBTaG91bGQgdGhlIFwiSWYgY2FzZSBzY2VuYXJpb1wiIGFjdGlvbnMgYmUgZGlzcGxheWVkXG4gICAqL1xuICBwdWJsaWMgc3VjY2Vzc0FjdGlvbnNFeHBhbmRlZCA9IGZhbHNlO1xufVxuIiwiPHNwYW4gKm5nSWY9XCJuYW1lXCI+e3tuYW1lIHwgdGl0bGVjYXNlfX06PC9zcGFuPlxuPGRpdiBjbGFzcz1cInJ1bGUtd3JhcHBlciB0cmVlXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJibG9ja1R5cGUgPT09ICdJRl9FTFNFJzsgZWxzZSBub0NvbmRpdGlvblwiPlxuICAgIDxkaXYgY2xhc3M9XCJ0cmVlLXJvb3RcIiAqbmdJZj1cIiFuYW1lXCIgW2F0dHIuYXJpYS1oaWRkZW5dPVwidHJ1ZVwiPlxuICAgICAgPGRpdj48L2Rpdj5cbiAgICAgIDxkaXY+PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJ1bGUtY29uZGl0aW9uc1wiPlxuICAgICAgPGRpdiBjbGFzcz1cInJ1bGUtY29uZGl0aW9ucy10aXRsZVwiPklmXG4gICAgICAgIDxvM3ItcnVsZS1jb25kaXRpb24tcHJlcyBbY29uZGl0aW9uXT1cImNvbmRpdGlvblwiPjwvbzNyLXJ1bGUtY29uZGl0aW9uLXByZXM+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0cmVlLXJvb3RcIiBbYXR0ci5hcmlhLWhpZGRlbl09XCJ0cnVlXCI+XG4gICAgICAgIDxkaXY+PC9kaXY+XG4gICAgICAgIDxkaXY+PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicnVsZS1hY3Rpb25zLXdyYXBwZXIgdHJlZS1ub2RlXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicnVsZS1hY3Rpb25zIHRyZWUtYnJhbmNoXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0cmVlLWxlYWZcIiBbYXR0ci5hcmlhLWhpZGRlbl09XCJ0cnVlXCI+XG4gICAgICAgICAgPGRpdj48L2Rpdj5cbiAgICAgICAgICA8ZGl2PjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJ1bGUtYWN0aW9uLXRpdGxlIHN1Y2Nlc3MtYWN0aW9uc1wiXG4gICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInN1Y2Nlc3NBY3Rpb25zRXhwYW5kZWQgPSAhc3VjY2Vzc0FjdGlvbnNFeHBhbmRlZFwiXG4gICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwic3VjY2Vzc0FjdGlvbnNFeHBhbmRlZCA9ICFzdWNjZXNzQWN0aW9uc0V4cGFuZGVkXCI+XG4gICAgICAgICAgPGkgY2xhc3M9XCJpY29uIHJlZngtaWNvbi12YWxpZGF0ZVwiPjwvaT5cbiAgICAgICAgICA8c3Bhbj5UaGVuPC9zcGFuPlxuICAgICAgICAgIDxpIGNsYXNzPVwiaWNvblwiXG4gICAgICAgICAgICBbY2xhc3MuaWNvbi1jYXJldC1kb3duXT1cIiFzdWNjZXNzQWN0aW9uc0V4cGFuZGVkXCJcbiAgICAgICAgICAgIFtjbGFzcy5pY29uLWNhcmV0LXVwXT1cInN1Y2Nlc3NBY3Rpb25zRXhwYW5kZWRcIj5cbiAgICAgICAgICA8L2k+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bzNyLXJ1bGUtYWN0aW9ucy1wcmVzIGNsYXNzPVwicnVsZS10cmVlLWFjdGlvbnNcIiAqbmdJZj1cInN1Y2Nlc3NBY3Rpb25zRXhwYW5kZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGlvbnNdPVwic3VjY2Vzc0VsZW1lbnRzXCI+XG4gICAgICAgIDwvbzNyLXJ1bGUtYWN0aW9ucy1wcmVzPlxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInN1YlRyZWVcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2Jsb2Nrczogc3VjY2Vzc0VsZW1lbnRzfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicnVsZS1hY3Rpb25zIHRyZWUtYnJhbmNoXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0cmVlLWxlYWZcIiBbYXR0ci5hcmlhLWhpZGRlbl09XCJ0cnVlXCI+XG4gICAgICAgICAgPGRpdj48L2Rpdj5cbiAgICAgICAgICA8ZGl2PjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJ1bGUtYWN0aW9uLXRpdGxlIGVycm9yLWFjdGlvbnNcIlxuICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgIChjbGljayk9XCJmYWlsdXJlQWN0aW9uc0V4cGFuZGVkID0gIWZhaWx1cmVBY3Rpb25zRXhwYW5kZWRcIlxuICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cImZhaWx1cmVBY3Rpb25zRXhwYW5kZWQgPSAhZmFpbHVyZUFjdGlvbnNFeHBhbmRlZFwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbiByZWZ4LWljb24tY3Jvc3NcIj48L2k+XG4gICAgICAgICAgPHNwYW4+RWxzZTwvc3Bhbj5cbiAgICAgICAgICA8aSBjbGFzcz1cImljb25cIlxuICAgICAgICAgICAgW2NsYXNzLmljb24tY2FyZXQtZG93bl09XCIhZmFpbHVyZUFjdGlvbnNFeHBhbmRlZFwiXG4gICAgICAgICAgICBbY2xhc3MuaWNvbi1jYXJldC11cF09XCJmYWlsdXJlQWN0aW9uc0V4cGFuZGVkXCI+XG4gICAgICAgICAgPC9pPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG8zci1ydWxlLWFjdGlvbnMtcHJlcyBjbGFzcz1cInJ1bGUtdHJlZS1hY3Rpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZmFpbHVyZUFjdGlvbnNFeHBhbmRlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWN0aW9uc109XCJmYWlsdXJlRWxlbWVudHNcIj5cbiAgICAgICAgPC9vM3ItcnVsZS1hY3Rpb25zLXByZXM+XG4gICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic3ViVHJlZVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7YmxvY2tzOiBmYWlsdXJlRWxlbWVudHN9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjbm9Db25kaXRpb24+XG4gIDxkaXYgY2xhc3M9XCJydWxlLWNvbmRpdGlvbnNcIj5cbiAgICA8ZGl2IGNsYXNzPVwicnVsZS1jb25kaXRpb25zLXRpdGxlXCI+SWYgPHNwYW4gY2xhc3M9XCJpbnB1dC12YWx1ZVwiPnRydWU8L3NwYW4+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInRyZWUtcm9vdFwiIFthdHRyLmFyaWEtaGlkZGVuXT1cInRydWVcIj5cbiAgICAgIDxkaXY+PC9kaXY+XG4gICAgICA8ZGl2PjwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInJ1bGUtYWN0aW9ucy13cmFwcGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cInJ1bGUtYWN0aW9uc1wiPlxuICAgICAgPGRpdiBjbGFzcz1cInJ1bGUtYWN0aW9uLXRpdGxlIHN1Y2Nlc3MtYWN0aW9uc1wiIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgKGtleXVwLmVudGVyKT1cInN1Y2Nlc3NBY3Rpb25zRXhwYW5kZWQgPSAhc3VjY2Vzc0FjdGlvbnNFeHBhbmRlZFwiXG4gICAgICAgICAgKGNsaWNrKT1cInN1Y2Nlc3NBY3Rpb25zRXhwYW5kZWQgPSAhc3VjY2Vzc0FjdGlvbnNFeHBhbmRlZFwiPlxuICAgICAgICA8aSBjbGFzcz1cImljb24gcmVmeC1pY29uLXZhbGlkYXRlXCI+XG4gICAgICAgIDwvaT5cbiAgICAgICAgPHNwYW4+VGhlbjwvc3Bhbj5cbiAgICAgICAgPGkgY2xhc3M9XCJpY29uXCJcbiAgICAgICAgICBbY2xhc3MuaWNvbi1jYXJldC1kb3duXT1cIiFzdWNjZXNzQWN0aW9uc0V4cGFuZGVkXCJcbiAgICAgICAgICBbY2xhc3MuaWNvbi1jYXJldC11cF09XCJzdWNjZXNzQWN0aW9uc0V4cGFuZGVkXCI+XG4gICAgICAgIDwvaT5cbiAgICAgIDwvZGl2PlxuICAgICAgPG8zci1ydWxlLWFjdGlvbnMtcHJlcyBjbGFzcz1cInJ1bGUtdHJlZS1hY3Rpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInN1Y2Nlc3NBY3Rpb25zRXhwYW5kZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthY3Rpb25zXT1cInN1Y2Nlc3NFbGVtZW50c1wiPlxuICAgICAgPC9vM3ItcnVsZS1hY3Rpb25zLXByZXM+XG4gICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInN1YlRyZWVcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2Jsb2Nrczogc3VjY2Vzc0VsZW1lbnRzfVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc3ViVHJlZSBsZXQtYmxvY2tzPVwiYmxvY2tzXCI+XG4gIDxkaXYgY2xhc3M9XCJydWxlLXN1Yi10cmVlc1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGJsb2NrIG9mIGJsb2Nrc1wiPlxuICAgICAgPGRpdiAqbmdJZj1cImJsb2NrLmJsb2NrVHlwZSA9PT0gJ0lGX0VMU0UnXCIgY2xhc3M9XCJ0cmVlLWJyYW5jaFwiPlxuICAgICAgICA8bzNyLXJ1bGUtdHJlZS1wcmVzXG4gICAgICAgICAgW2Jsb2NrVHlwZV09XCInSUZfRUxTRSdcIlxuICAgICAgICAgIFtjb25kaXRpb25dPVwiYmxvY2suY29uZGl0aW9uXCJcbiAgICAgICAgICBbZmFpbHVyZUVsZW1lbnRzXT1cImJsb2NrLmZhaWx1cmVFbGVtZW50c1wiXG4gICAgICAgICAgW3N1Y2Nlc3NFbGVtZW50c109XCJibG9jay5zdWNjZXNzRWxlbWVudHNcIj48L28zci1ydWxlLXRyZWUtcHJlcz5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -1,50 +0,0 @@
1
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, ViewEncapsulation, } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/common";
4
- import * as i2 from "../rule-tree/rule-tree-pres.component";
5
- import * as i3 from "../rule-actions/rule-actions-pres.component";
6
- import * as i4 from "../rule-key-value/rule-key-value-pres.component";
7
- import * as i5 from "../shared/fallback-to.pipe";
8
- import * as i6 from "../shared/json-or-string.pipe";
9
- export class RulesetHistoryPresComponent {
10
- constructor(cd) {
11
- this.cd = cd;
12
- /**
13
- * Reflects the state of each ruleset expanded elements.
14
- * Each ruleset entry contains a list of subpanel that can be collapsed or expanded.
15
- * Ruleset whole panel status is store the 'ruleset' entry.
16
- * @example
17
- * Expanded ruleset with rule overview collapsed:
18
- * {'rulesetId': {'ruleset' : true, 'ruleOverview': false}}
19
- * @note Collapsing a ruleset will not reset the subpanel expansion status
20
- */
21
- this.expansionStatus = {};
22
- this.rulesetExecutions = [];
23
- this.executionDurationFormat = '1.3-3';
24
- }
25
- /**
26
- * Toggle a ruleset subpanel
27
- * @param ruleId
28
- * @param subpanel element to collapse. 'ruleset' will toggle the whole panel but won't reset the subpanels states.
29
- */
30
- toggleExpansion(ruleId, subpanel) {
31
- if (this.expansionStatus[ruleId]) {
32
- this.expansionStatus[ruleId][subpanel] = !this.expansionStatus[ruleId][subpanel];
33
- }
34
- else {
35
- this.expansionStatus[ruleId] = { [subpanel]: true };
36
- }
37
- this.cd.detectChanges();
38
- }
39
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RulesetHistoryPresComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
40
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: RulesetHistoryPresComponent, selector: "o3r-ruleset-history-pres", inputs: { rulesetExecutions: "rulesetExecutions", executionDurationFormat: "executionDurationFormat" }, ngImport: i0, template: "<section>\n <h4 class=\"mb-4\">Ruleset Execution History</h4>\n <ng-template #noRulesEngine>\n <div class=\"alert alert-danger m-2\" role=\"alert\">\n The Rules Engine is not configured on this page.\n </div>\n </ng-template>\n <ul *ngIf=\"rulesetExecutions; else noRulesEngine\" class=\"rulesets\">\n <li *ngFor=\"let execution of rulesetExecutions\" class=\"ruleset\">\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -- need to refactor the div to accordion from DF #1518 -->\n <div class=\"ruleset-panel-title ruleset-expansion-action\"\n [class.error]=\"execution.type === 'RulesetExecutionError'\"\n (click)=\"toggleExpansion(execution.executionId, 'ruleset')\">\n <div><span [title]=\"'This ruleset has been evaluated ' + execution.executionCounter + ' time(s)'\">{{execution.executionCounter}}</span> - {{execution.rulesetName | titlecase }}\n <div class=\"ruleset-panel-subtitle\" *ngIf=\"execution.rulesetInformation?.linkedComponents?.or\">\n <ng-container *ngFor=\"let lc of execution.rulesetInformation?.linkedComponents?.or; last as isLast\">\n <div>{{lc.name}} {{lc.library}} <span *ngIf=\"!isLast\"> OR </span></div>\n </ng-container>\n </div>\n <div class=\"ruleset-panel-subtitle\" *ngIf=\"execution.rulesetInformation?.validityRange as validityRange\">\n Date range: {{validityRange.from}} - {{validityRange.to}}\n </div>\n </div>\n <div class=\"ruleset-panel-title-aside\">\n <span class=\"error capsule\" *ngIf=\"execution.status === 'Error'\">Error</span>\n <span class=\"success capsule\" *ngIf=\"execution.status === 'Active'\">Applied</span>\n <span class=\"inactive capsule\" *ngIf=\"execution.status === 'Deactivated'\">Deactivated</span>\n <span class=\"warn capsule\" *ngIf=\"execution.status === 'NoEffect'\">No effect</span>\n <span class=\"time capsule\">\n <span>{{execution.timestamp | date: 'HH:mm:ss SSS'}}</span>\n <span>({{execution.duration | number: executionDurationFormat}}ms)</span>\n </span>\n <button\n class=\"icon\"\n [class.icon-caret-down]=\"!expansionStatus[execution.executionId]?.ruleset\"\n [class.icon-caret-up]=\"expansionStatus[execution.executionId]?.ruleset\">\n </button>\n </div>\n </div>\n <div class=\"ruleset-panel-description\" *ngIf=\"expansionStatus[execution.executionId]?.ruleset\">\n <ng-container [ngTemplateOutlet]=\"rules\"\n [ngTemplateOutletContext]=\"{\n rules: execution.rulesetInformation.rules,\n expansionID: execution.executionId\n }\"></ng-container>\n <ng-container [ngTemplateOutlet]=\"inputs\"\n [ngTemplateOutletContext]=\"{\n inputs: execution.inputFacts\n }\"></ng-container>\n <ng-container *ngIf=\"execution.type === 'RulesetExecutionError'; else success\">\n <div class=\"ruleset-panel-category-title\">Rules:</div>\n <ul class=\"ruleset-panel-category-body rule-description\">\n <li *ngFor=\"let ruleEvaluation of execution.rulesEvaluations; let index=index;\">\n <ng-container>\n <div class=\"ruleset-panel-title\" [class.error]=\"ruleEvaluation.error\">\n <span>{{ruleEvaluation.rule.name | titlecase}} </span>\n <span class=\"capsule error\" *ngIf=\"ruleEvaluation.error\">Error</span>\n </div>\n <div>\n <ng-container *ngIf=\"ruleEvaluation.error\">\n <span class=\"ruleset-panel-category-title\">Error:</span>\n <pre class=\"ruleset-panel-category-body error\">{{ruleEvaluation.error | o3rJsonOrString}}</pre>\n </ng-container>\n <ng-container [ngTemplateOutlet]=\"inputs\"\n [ngTemplateOutletContext]=\"{\n inputs: execution.inputFacts,\n runtimeInputs: execution.rulesetInformation?.rules[index]?.inputRuntimeFacts\n }\"></ng-container>\n <o3r-rule-actions-pres *ngIf=\"!ruleEvaluation.error\"\n [temporaryFacts]=\"ruleEvaluation.temporaryFacts\"\n [runtimeOutputs]=\"execution.rulesetInformation?.rules[index]?.outputRuntimeFacts\"\n ></o3r-rule-actions-pres>\n </div>\n </ng-container>\n </li>\n </ul>\n </ng-container>\n <ng-template #success>\n <o3r-rule-actions-pres [actions]=\"execution.outputActions\"></o3r-rule-actions-pres>\n <div class=\"ruleset-panel-category-title\">Executed Rules</div>\n <ul class=\"rule-description ruleset-panel-category-body\">\n <li *ngFor=\"let ruleEvaluation of execution.rulesEvaluations; let index=index;\">\n <div class=\"ruleset-panel-title\">\n <span>{{ruleEvaluation.rule.name | titlecase}}</span>\n <span class=\"capsule inactive\" *ngIf=\"ruleEvaluation.cached\">Cached</span>\n <span class=\"capsule\">({{ruleEvaluation.duration | number: executionDurationFormat}}ms)</span>\n </div>\n <div>\n <ng-container [ngTemplateOutlet]=\"triggers\"\n [ngTemplateOutletContext]=\"{triggers: (ruleEvaluation.triggers[ruleEvaluation.rule.id])}\"></ng-container>\n <o3r-rule-actions-pres\n [actions]=\"ruleEvaluation.outputActions\"\n [temporaryFacts]=\"ruleEvaluation.temporaryFacts\"\n [runtimeOutputs]=\"execution.rulesetInformation?.rules[index]?.outputRuntimeFacts\">\n </o3r-rule-actions-pres>\n </div>\n </li>\n </ul>\n </ng-template>\n </div>\n </li>\n </ul>\n</section>\n\n<ng-template let-triggers=\"triggers\" #triggers>\n <div class=\"ruleset-panel-category-title\">Basefacts Triggers</div>\n <ul class=\"ruleset-panel-category-body triggers\">\n <ng-container *ngFor=\"let trigger of (triggers | keyvalue)\">\n <li *ngIf=\"trigger.value?.factName\">\n <o3r-rule-key-value-pres\n [key]=\"trigger.value.factName\"\n [oldValue]=\"trigger.value.oldValue | o3rFallbackTo\"\n [value]=\"trigger.value.newValue | o3rFallbackTo\"\n [type]=\"'state'\"></o3r-rule-key-value-pres>\n </li>\n </ng-container>\n </ul>\n</ng-template>\n\n<ng-template let-rules=\"rules\" let-expansionID=\"expansionID\" #rules>\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -- need to refactor the div to accordion from DF #1518 -->\n <div class=\"ruleset-panel-category-title ruleset-expansion-action\"\n (click)=\"toggleExpansion(expansionID, 'rulesOverview')\">\n <span>Rules Overview</span>\n <button class=\"icon\"\n [class.icon-caret-down]=\"!expansionStatus[expansionID]?.rulesOverview\"\n [class.icon-caret-up]=\"expansionStatus[expansionID]?.rulesOverview\">\n </button>\n </div>\n <ng-container *ngIf=\"expansionStatus[expansionID]?.rulesOverview\">\n <div *ngIf=\"rules?.length === 0\" class=\"ruleset-panel-category-body empty\">No rule</div>\n <ul class=\"ruleset-panel-category-body\" *ngIf=\"rules?.length > 0\">\n <li *ngFor=\"let rule of rules\">\n <o3r-rule-tree-pres [name]=\"rule.name\"\n [condition]=\"rule?.rootElement?.condition\"\n [blockType]=\"rule?.rootElement?.blockType\"\n [successElements]=\"rule?.rootElement?.successElements\"\n [failureElements]=\"rule?.rootElement?.failureElements\">\n </o3r-rule-tree-pres>\n </li>\n </ul>\n </ng-container>\n</ng-template>\n\n<ng-template let-inputs=\"inputs\" let-runtimeInputs=\"runtimeInputs\" #inputs>\n <div class=\"ruleset-panel-category-title\">Inputs snapshot</div>\n <div *ngIf=\"inputs?.length === 0\" class=\"ruleset-panel-category-body empty\">No inputs</div>\n <ul class=\"ruleset-panel-category-body\" *ngIf=\"inputs?.length > 0\">\n <li *ngFor=\"let input of inputs\">\n <o3r-rule-key-value-pres\n [key]=\"input.factName\"\n [value]=\"input.value | o3rFallbackTo\"\n [type]=\"'state'\"></o3r-rule-key-value-pres>\n </li>\n <li *ngFor=\"let input of runtimeInputs\">{{input}} (scope limited to ruleset)</li>\n </ul>\n</ng-template>\n", styles: ["o3r-ruleset-history-pres .ruleset-panel-title,o3r-ruleset-history-pres .ruleset-panel-category-title{display:flex;justify-content:space-between;align-items:center}o3r-ruleset-history-pres .ruleset-panel-title{font-size:1rem;padding:.5rem 0 .1rem}o3r-ruleset-history-pres .ruleset-expansion-action,o3r-ruleset-history-pres .icon-caret-down,o3r-ruleset-history-pres .icon-caret-up{cursor:pointer}o3r-ruleset-history-pres .ruleset-panel-subtitle{font-size:.75rem}o3r-ruleset-history-pres .ruleset-panel-title-aside{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;min-width:fit-content}o3r-ruleset-history-pres .ruleset-panel-category-title{font-size:.95rem;background:#eee;padding:.5rem;margin-bottom:.5rem;margin-top:1rem}o3r-ruleset-history-pres .rule-description .ruleset-panel-category-title{font-size:.893rem;cursor:default}o3r-ruleset-history-pres .rule-description .ruleset-panel-title{font-size:.94rem}o3r-ruleset-history-pres .rule-description .ruleset-panel-category-body{padding-bottom:.5rem;padding-left:1.5rem}o3r-ruleset-history-pres .rule-description .ruleset-panel-category-body:empty{margin:0;padding:0 0 0 1.5rem}o3r-ruleset-history-pres .rulesets{margin:0;padding:0;list-style:none}o3r-ruleset-history-pres .rulesets ul{margin:0;padding-left:2rem}o3r-ruleset-history-pres .rulesets li.ruleset:nth-child(odd){background:#fbfbfb}o3r-ruleset-history-pres .ruleset-panel-category-body li{list-style:disc}o3r-ruleset-history-pres li:empty{display:none}o3r-ruleset-history-pres .ruleset{border-bottom:1px solid #dddddd}o3r-ruleset-history-pres .ruleset .ruleset-panel-description{padding:0 1rem 0 2rem;margin-bottom:2em}o3r-ruleset-history-pres .ruleset:first-child{border-top:1px solid #dddddd}o3r-ruleset-history-pres .ruleset-panel-title.ruleset-expansion-action{padding:.5rem 1rem}o3r-ruleset-history-pres .empty{font-style:italic;padding-left:1.5rem}o3r-ruleset-history-pres .ruleset-panel-category-body:empty.triggers:after{content:\"No trigger for this rule\";display:block;font-style:italic;padding-bottom:.5rem}o3r-ruleset-history-pres .ruleset-panel-title-aside{padding-left:1rem}o3r-ruleset-history-pres .rule-description .capsule{font-size:.8em;padding:.1rem .5rem;margin:0 .5rem}o3r-ruleset-history-pres .icon{background:none;border:none;font-size:1em}o3r-ruleset-history-pres .capsule{padding:.3rem;margin:.5rem;font-size:.875em;min-width:6rem;text-align:center}o3r-ruleset-history-pres .capsule.time{display:flex;flex-direction:column}o3r-ruleset-history-pres .success{background-color:#16aa32;color:#fff}o3r-ruleset-history-pres .inactive{background-color:#aaa;color:#fff}o3r-ruleset-history-pres .error{color:#c02020}o3r-ruleset-history-pres .error .capsule.error{background-color:#c02020;color:#fff}o3r-ruleset-history-pres .warn{background-color:#b92;color:#fff}o3r-ruleset-history-pres .input-key{color:#26c}o3r-ruleset-history-pres .input-value{color:#c29}o3r-ruleset-history-pres .input-key,o3r-ruleset-history-pres .input-value{font-family:monospace}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.RuleTreePresComponent, selector: "o3r-rule-tree-pres", inputs: ["name", "blockType", "condition", "successElements", "failureElements"] }, { kind: "component", type: i3.RuleActionsPresComponent, selector: "o3r-rule-actions-pres", inputs: ["actions", "temporaryFacts", "runtimeOutputs"] }, { kind: "component", type: i4.RuleKeyValuePresComponent, selector: "o3r-rule-key-value-pres", inputs: ["key", "value", "oldValue", "type"] }, { kind: "pipe", type: i5.O3rFallbackToPipe, name: "o3rFallbackTo" }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }, { kind: "pipe", type: i1.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "pipe", type: i1.KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: i6.O3rJsonOrStringPipe, name: "o3rJsonOrString" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
41
- }
42
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RulesetHistoryPresComponent, decorators: [{
43
- type: Component,
44
- args: [{ selector: 'o3r-ruleset-history-pres', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<section>\n <h4 class=\"mb-4\">Ruleset Execution History</h4>\n <ng-template #noRulesEngine>\n <div class=\"alert alert-danger m-2\" role=\"alert\">\n The Rules Engine is not configured on this page.\n </div>\n </ng-template>\n <ul *ngIf=\"rulesetExecutions; else noRulesEngine\" class=\"rulesets\">\n <li *ngFor=\"let execution of rulesetExecutions\" class=\"ruleset\">\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -- need to refactor the div to accordion from DF #1518 -->\n <div class=\"ruleset-panel-title ruleset-expansion-action\"\n [class.error]=\"execution.type === 'RulesetExecutionError'\"\n (click)=\"toggleExpansion(execution.executionId, 'ruleset')\">\n <div><span [title]=\"'This ruleset has been evaluated ' + execution.executionCounter + ' time(s)'\">{{execution.executionCounter}}</span> - {{execution.rulesetName | titlecase }}\n <div class=\"ruleset-panel-subtitle\" *ngIf=\"execution.rulesetInformation?.linkedComponents?.or\">\n <ng-container *ngFor=\"let lc of execution.rulesetInformation?.linkedComponents?.or; last as isLast\">\n <div>{{lc.name}} {{lc.library}} <span *ngIf=\"!isLast\"> OR </span></div>\n </ng-container>\n </div>\n <div class=\"ruleset-panel-subtitle\" *ngIf=\"execution.rulesetInformation?.validityRange as validityRange\">\n Date range: {{validityRange.from}} - {{validityRange.to}}\n </div>\n </div>\n <div class=\"ruleset-panel-title-aside\">\n <span class=\"error capsule\" *ngIf=\"execution.status === 'Error'\">Error</span>\n <span class=\"success capsule\" *ngIf=\"execution.status === 'Active'\">Applied</span>\n <span class=\"inactive capsule\" *ngIf=\"execution.status === 'Deactivated'\">Deactivated</span>\n <span class=\"warn capsule\" *ngIf=\"execution.status === 'NoEffect'\">No effect</span>\n <span class=\"time capsule\">\n <span>{{execution.timestamp | date: 'HH:mm:ss SSS'}}</span>\n <span>({{execution.duration | number: executionDurationFormat}}ms)</span>\n </span>\n <button\n class=\"icon\"\n [class.icon-caret-down]=\"!expansionStatus[execution.executionId]?.ruleset\"\n [class.icon-caret-up]=\"expansionStatus[execution.executionId]?.ruleset\">\n </button>\n </div>\n </div>\n <div class=\"ruleset-panel-description\" *ngIf=\"expansionStatus[execution.executionId]?.ruleset\">\n <ng-container [ngTemplateOutlet]=\"rules\"\n [ngTemplateOutletContext]=\"{\n rules: execution.rulesetInformation.rules,\n expansionID: execution.executionId\n }\"></ng-container>\n <ng-container [ngTemplateOutlet]=\"inputs\"\n [ngTemplateOutletContext]=\"{\n inputs: execution.inputFacts\n }\"></ng-container>\n <ng-container *ngIf=\"execution.type === 'RulesetExecutionError'; else success\">\n <div class=\"ruleset-panel-category-title\">Rules:</div>\n <ul class=\"ruleset-panel-category-body rule-description\">\n <li *ngFor=\"let ruleEvaluation of execution.rulesEvaluations; let index=index;\">\n <ng-container>\n <div class=\"ruleset-panel-title\" [class.error]=\"ruleEvaluation.error\">\n <span>{{ruleEvaluation.rule.name | titlecase}} </span>\n <span class=\"capsule error\" *ngIf=\"ruleEvaluation.error\">Error</span>\n </div>\n <div>\n <ng-container *ngIf=\"ruleEvaluation.error\">\n <span class=\"ruleset-panel-category-title\">Error:</span>\n <pre class=\"ruleset-panel-category-body error\">{{ruleEvaluation.error | o3rJsonOrString}}</pre>\n </ng-container>\n <ng-container [ngTemplateOutlet]=\"inputs\"\n [ngTemplateOutletContext]=\"{\n inputs: execution.inputFacts,\n runtimeInputs: execution.rulesetInformation?.rules[index]?.inputRuntimeFacts\n }\"></ng-container>\n <o3r-rule-actions-pres *ngIf=\"!ruleEvaluation.error\"\n [temporaryFacts]=\"ruleEvaluation.temporaryFacts\"\n [runtimeOutputs]=\"execution.rulesetInformation?.rules[index]?.outputRuntimeFacts\"\n ></o3r-rule-actions-pres>\n </div>\n </ng-container>\n </li>\n </ul>\n </ng-container>\n <ng-template #success>\n <o3r-rule-actions-pres [actions]=\"execution.outputActions\"></o3r-rule-actions-pres>\n <div class=\"ruleset-panel-category-title\">Executed Rules</div>\n <ul class=\"rule-description ruleset-panel-category-body\">\n <li *ngFor=\"let ruleEvaluation of execution.rulesEvaluations; let index=index;\">\n <div class=\"ruleset-panel-title\">\n <span>{{ruleEvaluation.rule.name | titlecase}}</span>\n <span class=\"capsule inactive\" *ngIf=\"ruleEvaluation.cached\">Cached</span>\n <span class=\"capsule\">({{ruleEvaluation.duration | number: executionDurationFormat}}ms)</span>\n </div>\n <div>\n <ng-container [ngTemplateOutlet]=\"triggers\"\n [ngTemplateOutletContext]=\"{triggers: (ruleEvaluation.triggers[ruleEvaluation.rule.id])}\"></ng-container>\n <o3r-rule-actions-pres\n [actions]=\"ruleEvaluation.outputActions\"\n [temporaryFacts]=\"ruleEvaluation.temporaryFacts\"\n [runtimeOutputs]=\"execution.rulesetInformation?.rules[index]?.outputRuntimeFacts\">\n </o3r-rule-actions-pres>\n </div>\n </li>\n </ul>\n </ng-template>\n </div>\n </li>\n </ul>\n</section>\n\n<ng-template let-triggers=\"triggers\" #triggers>\n <div class=\"ruleset-panel-category-title\">Basefacts Triggers</div>\n <ul class=\"ruleset-panel-category-body triggers\">\n <ng-container *ngFor=\"let trigger of (triggers | keyvalue)\">\n <li *ngIf=\"trigger.value?.factName\">\n <o3r-rule-key-value-pres\n [key]=\"trigger.value.factName\"\n [oldValue]=\"trigger.value.oldValue | o3rFallbackTo\"\n [value]=\"trigger.value.newValue | o3rFallbackTo\"\n [type]=\"'state'\"></o3r-rule-key-value-pres>\n </li>\n </ng-container>\n </ul>\n</ng-template>\n\n<ng-template let-rules=\"rules\" let-expansionID=\"expansionID\" #rules>\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -- need to refactor the div to accordion from DF #1518 -->\n <div class=\"ruleset-panel-category-title ruleset-expansion-action\"\n (click)=\"toggleExpansion(expansionID, 'rulesOverview')\">\n <span>Rules Overview</span>\n <button class=\"icon\"\n [class.icon-caret-down]=\"!expansionStatus[expansionID]?.rulesOverview\"\n [class.icon-caret-up]=\"expansionStatus[expansionID]?.rulesOverview\">\n </button>\n </div>\n <ng-container *ngIf=\"expansionStatus[expansionID]?.rulesOverview\">\n <div *ngIf=\"rules?.length === 0\" class=\"ruleset-panel-category-body empty\">No rule</div>\n <ul class=\"ruleset-panel-category-body\" *ngIf=\"rules?.length > 0\">\n <li *ngFor=\"let rule of rules\">\n <o3r-rule-tree-pres [name]=\"rule.name\"\n [condition]=\"rule?.rootElement?.condition\"\n [blockType]=\"rule?.rootElement?.blockType\"\n [successElements]=\"rule?.rootElement?.successElements\"\n [failureElements]=\"rule?.rootElement?.failureElements\">\n </o3r-rule-tree-pres>\n </li>\n </ul>\n </ng-container>\n</ng-template>\n\n<ng-template let-inputs=\"inputs\" let-runtimeInputs=\"runtimeInputs\" #inputs>\n <div class=\"ruleset-panel-category-title\">Inputs snapshot</div>\n <div *ngIf=\"inputs?.length === 0\" class=\"ruleset-panel-category-body empty\">No inputs</div>\n <ul class=\"ruleset-panel-category-body\" *ngIf=\"inputs?.length > 0\">\n <li *ngFor=\"let input of inputs\">\n <o3r-rule-key-value-pres\n [key]=\"input.factName\"\n [value]=\"input.value | o3rFallbackTo\"\n [type]=\"'state'\"></o3r-rule-key-value-pres>\n </li>\n <li *ngFor=\"let input of runtimeInputs\">{{input}} (scope limited to ruleset)</li>\n </ul>\n</ng-template>\n", styles: ["o3r-ruleset-history-pres .ruleset-panel-title,o3r-ruleset-history-pres .ruleset-panel-category-title{display:flex;justify-content:space-between;align-items:center}o3r-ruleset-history-pres .ruleset-panel-title{font-size:1rem;padding:.5rem 0 .1rem}o3r-ruleset-history-pres .ruleset-expansion-action,o3r-ruleset-history-pres .icon-caret-down,o3r-ruleset-history-pres .icon-caret-up{cursor:pointer}o3r-ruleset-history-pres .ruleset-panel-subtitle{font-size:.75rem}o3r-ruleset-history-pres .ruleset-panel-title-aside{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;min-width:fit-content}o3r-ruleset-history-pres .ruleset-panel-category-title{font-size:.95rem;background:#eee;padding:.5rem;margin-bottom:.5rem;margin-top:1rem}o3r-ruleset-history-pres .rule-description .ruleset-panel-category-title{font-size:.893rem;cursor:default}o3r-ruleset-history-pres .rule-description .ruleset-panel-title{font-size:.94rem}o3r-ruleset-history-pres .rule-description .ruleset-panel-category-body{padding-bottom:.5rem;padding-left:1.5rem}o3r-ruleset-history-pres .rule-description .ruleset-panel-category-body:empty{margin:0;padding:0 0 0 1.5rem}o3r-ruleset-history-pres .rulesets{margin:0;padding:0;list-style:none}o3r-ruleset-history-pres .rulesets ul{margin:0;padding-left:2rem}o3r-ruleset-history-pres .rulesets li.ruleset:nth-child(odd){background:#fbfbfb}o3r-ruleset-history-pres .ruleset-panel-category-body li{list-style:disc}o3r-ruleset-history-pres li:empty{display:none}o3r-ruleset-history-pres .ruleset{border-bottom:1px solid #dddddd}o3r-ruleset-history-pres .ruleset .ruleset-panel-description{padding:0 1rem 0 2rem;margin-bottom:2em}o3r-ruleset-history-pres .ruleset:first-child{border-top:1px solid #dddddd}o3r-ruleset-history-pres .ruleset-panel-title.ruleset-expansion-action{padding:.5rem 1rem}o3r-ruleset-history-pres .empty{font-style:italic;padding-left:1.5rem}o3r-ruleset-history-pres .ruleset-panel-category-body:empty.triggers:after{content:\"No trigger for this rule\";display:block;font-style:italic;padding-bottom:.5rem}o3r-ruleset-history-pres .ruleset-panel-title-aside{padding-left:1rem}o3r-ruleset-history-pres .rule-description .capsule{font-size:.8em;padding:.1rem .5rem;margin:0 .5rem}o3r-ruleset-history-pres .icon{background:none;border:none;font-size:1em}o3r-ruleset-history-pres .capsule{padding:.3rem;margin:.5rem;font-size:.875em;min-width:6rem;text-align:center}o3r-ruleset-history-pres .capsule.time{display:flex;flex-direction:column}o3r-ruleset-history-pres .success{background-color:#16aa32;color:#fff}o3r-ruleset-history-pres .inactive{background-color:#aaa;color:#fff}o3r-ruleset-history-pres .error{color:#c02020}o3r-ruleset-history-pres .error .capsule.error{background-color:#c02020;color:#fff}o3r-ruleset-history-pres .warn{background-color:#b92;color:#fff}o3r-ruleset-history-pres .input-key{color:#26c}o3r-ruleset-history-pres .input-value{color:#c29}o3r-ruleset-history-pres .input-key,o3r-ruleset-history-pres .input-value{font-family:monospace}\n"] }]
45
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { rulesetExecutions: [{
46
- type: Input
47
- }], executionDurationFormat: [{
48
- type: Input
49
- }] } });
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZXNldC1oaXN0b3J5LXByZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcnVsZXMtZW5naW5lL3J1bGVzZXQtaGlzdG9yeS9ydWxlc2V0LWhpc3RvcnktcHJlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9ydWxlcy1lbmdpbmUvcnVsZXNldC1oaXN0b3J5L3J1bGVzZXQtaGlzdG9yeS1wcmVzLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULEtBQUssRUFDTCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7O0FBd0J2QixNQUFNLE9BQU8sMkJBQTJCO0lBa0J0QyxZQUE2QixFQUFxQjtRQUFyQixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQWpCbEQ7Ozs7Ozs7O1dBUUc7UUFDSSxvQkFBZSxHQUF1RCxFQUFFLENBQUM7UUFHekUsc0JBQWlCLEdBQTRCLEVBQUUsQ0FBQztRQUdoRCw0QkFBdUIsR0FBRyxPQUFPLENBQUM7SUFFWSxDQUFDO0lBRXREOzs7O09BSUc7SUFDSSxlQUFlLENBQUMsTUFBYyxFQUFFLFFBQWdCO1FBQ3JELElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25GLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDdEQsQ0FBQztRQUNELElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDMUIsQ0FBQztrSUFoQ1UsMkJBQTJCO3NIQUEzQiwyQkFBMkIsd0tDOUJ4QyxndVJBNkpBOzs0RkQvSGEsMkJBQTJCO2tCQVB2QyxTQUFTOytCQUNFLDBCQUEwQixtQkFHbkIsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSTtzRkFlOUIsaUJBQWlCO3NCQUR2QixLQUFLO2dCQUlDLHVCQUF1QjtzQkFEN0IsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUge1xuICBSdWxlc2V0LFxuICBSdWxlc2V0RXhlY3V0aW9uRXJyb3JFdmVudCxcbiAgUnVsZXNldEV4ZWN1dGlvbkV2ZW50LFxufSBmcm9tICcuLi8uLi8uLi9lbmdpbmUnO1xuXG5leHBvcnQgdHlwZSBSdWxlc2V0RXhlY3V0aW9uU3RhdHVzID0gJ0Vycm9yJyB8ICdBY3RpdmUnIHwgJ0RlYWN0aXZhdGVkJyB8ICdOb0VmZmVjdCc7XG4vKipcbiAqIE1vZGVsIG9mIGEgUnVsZXNldEV4ZWN1dGlvbiB3aXRoIG1vcmUgaW5mb3JtYXRpb24gZm9yIGRlYnVnIHB1cnBvc2VcbiAqL1xuZXhwb3J0IHR5cGUgUnVsZXNldEV4ZWN1dGlvbkRlYnVnID0gKFJ1bGVzZXRFeGVjdXRpb25FdmVudCB8IFJ1bGVzZXRFeGVjdXRpb25FcnJvckV2ZW50KSAmIHtcbiAgaXNBY3RpdmU6IGJvb2xlYW47XG4gIHN0YXR1czogUnVsZXNldEV4ZWN1dGlvblN0YXR1cztcbiAgcnVsZXNldEluZm9ybWF0aW9uOiBSdWxlc2V0IHwgdW5kZWZpbmVkO1xufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbzNyLXJ1bGVzZXQtaGlzdG9yeS1wcmVzJyxcbiAgc3R5bGVVcmxzOiBbJy4vcnVsZXNldC1oaXN0b3J5LXByZXMuc3R5bGUuc2NzcyddLFxuICB0ZW1wbGF0ZVVybDogJy4vcnVsZXNldC1oaXN0b3J5LXByZXMudGVtcGxhdGUuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIFJ1bGVzZXRIaXN0b3J5UHJlc0NvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBSZWZsZWN0cyB0aGUgc3RhdGUgb2YgZWFjaCBydWxlc2V0IGV4cGFuZGVkIGVsZW1lbnRzLlxuICAgKiBFYWNoIHJ1bGVzZXQgZW50cnkgY29udGFpbnMgYSBsaXN0IG9mIHN1YnBhbmVsIHRoYXQgY2FuIGJlIGNvbGxhcHNlZCBvciBleHBhbmRlZC5cbiAgICogUnVsZXNldCB3aG9sZSBwYW5lbCBzdGF0dXMgaXMgc3RvcmUgdGhlICdydWxlc2V0JyBlbnRyeS5cbiAgICogQGV4YW1wbGVcbiAgICogRXhwYW5kZWQgcnVsZXNldCB3aXRoIHJ1bGUgb3ZlcnZpZXcgY29sbGFwc2VkOlxuICAgKiB7J3J1bGVzZXRJZCc6IHsncnVsZXNldCcgOiB0cnVlLCAncnVsZU92ZXJ2aWV3JzogZmFsc2V9fVxuICAgKiBAbm90ZSBDb2xsYXBzaW5nIGEgcnVsZXNldCB3aWxsIG5vdCByZXNldCB0aGUgc3VicGFuZWwgZXhwYW5zaW9uIHN0YXR1c1xuICAgKi9cbiAgcHVibGljIGV4cGFuc2lvblN0YXR1czogeyBba2V5OiBzdHJpbmddOiB7IFtzdWJwYW5lbDogc3RyaW5nXTogYm9vbGVhbiB9IH0gPSB7fTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcnVsZXNldEV4ZWN1dGlvbnM6IFJ1bGVzZXRFeGVjdXRpb25EZWJ1Z1tdID0gW107XG5cbiAgQElucHV0KClcbiAgcHVibGljIGV4ZWN1dGlvbkR1cmF0aW9uRm9ybWF0ID0gJzEuMy0zJztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGNkOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICAvKipcbiAgICogVG9nZ2xlIGEgcnVsZXNldCBzdWJwYW5lbFxuICAgKiBAcGFyYW0gcnVsZUlkXG4gICAqIEBwYXJhbSBzdWJwYW5lbCBlbGVtZW50IHRvIGNvbGxhcHNlLiAncnVsZXNldCcgd2lsbCB0b2dnbGUgdGhlIHdob2xlIHBhbmVsIGJ1dCB3b24ndCByZXNldCB0aGUgc3VicGFuZWxzIHN0YXRlcy5cbiAgICovXG4gIHB1YmxpYyB0b2dnbGVFeHBhbnNpb24ocnVsZUlkOiBzdHJpbmcsIHN1YnBhbmVsOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5leHBhbnNpb25TdGF0dXNbcnVsZUlkXSkge1xuICAgICAgdGhpcy5leHBhbnNpb25TdGF0dXNbcnVsZUlkXVtzdWJwYW5lbF0gPSAhdGhpcy5leHBhbnNpb25TdGF0dXNbcnVsZUlkXVtzdWJwYW5lbF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZXhwYW5zaW9uU3RhdHVzW3J1bGVJZF0gPSB7IFtzdWJwYW5lbF06IHRydWUgfTtcbiAgICB9XG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cbn1cbiIsIjxzZWN0aW9uPlxuICA8aDQgY2xhc3M9XCJtYi00XCI+UnVsZXNldCBFeGVjdXRpb24gSGlzdG9yeTwvaDQ+XG4gIDxuZy10ZW1wbGF0ZSAjbm9SdWxlc0VuZ2luZT5cbiAgICA8ZGl2IGNsYXNzPVwiYWxlcnQgYWxlcnQtZGFuZ2VyIG0tMlwiIHJvbGU9XCJhbGVydFwiPlxuICAgICAgVGhlIFJ1bGVzIEVuZ2luZSBpcyBub3QgY29uZmlndXJlZCBvbiB0aGlzIHBhZ2UuXG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDx1bCAqbmdJZj1cInJ1bGVzZXRFeGVjdXRpb25zOyBlbHNlIG5vUnVsZXNFbmdpbmVcIiBjbGFzcz1cInJ1bGVzZXRzXCI+XG4gICAgPGxpICpuZ0Zvcj1cImxldCBleGVjdXRpb24gb2YgcnVsZXNldEV4ZWN1dGlvbnNcIiBjbGFzcz1cInJ1bGVzZXRcIj5cbiAgICAgIDwhLS0gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC90ZW1wbGF0ZS9jbGljay1ldmVudHMtaGF2ZS1rZXktZXZlbnRzLCBAYW5ndWxhci1lc2xpbnQvdGVtcGxhdGUvaW50ZXJhY3RpdmUtc3VwcG9ydHMtZm9jdXMgLS0gbmVlZCB0byByZWZhY3RvciB0aGUgZGl2IHRvIGFjY29yZGlvbiBmcm9tIERGICMxNTE4IC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInJ1bGVzZXQtcGFuZWwtdGl0bGUgcnVsZXNldC1leHBhbnNpb24tYWN0aW9uXCJcbiAgICAgICAgW2NsYXNzLmVycm9yXT1cImV4ZWN1dGlvbi50eXBlID09PSAnUnVsZXNldEV4ZWN1dGlvbkVycm9yJ1wiXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVFeHBhbnNpb24oZXhlY3V0aW9uLmV4ZWN1dGlvbklkLCAncnVsZXNldCcpXCI+XG4gICAgICAgIDxkaXY+PHNwYW4gW3RpdGxlXT1cIidUaGlzIHJ1bGVzZXQgaGFzIGJlZW4gZXZhbHVhdGVkICcgKyBleGVjdXRpb24uZXhlY3V0aW9uQ291bnRlciArICcgdGltZShzKSdcIj57e2V4ZWN1dGlvbi5leGVjdXRpb25Db3VudGVyfX08L3NwYW4+IC0ge3tleGVjdXRpb24ucnVsZXNldE5hbWUgfCB0aXRsZWNhc2UgfX1cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicnVsZXNldC1wYW5lbC1zdWJ0aXRsZVwiICpuZ0lmPVwiZXhlY3V0aW9uLnJ1bGVzZXRJbmZvcm1hdGlvbj8ubGlua2VkQ29tcG9uZW50cz8ub3JcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGxjIG9mIGV4ZWN1dGlvbi5ydWxlc2V0SW5mb3JtYXRpb24/LmxpbmtlZENvbXBvbmVudHM/Lm9yOyBsYXN0IGFzIGlzTGFzdFwiPlxuICAgICAgICAgICAgICA8ZGl2Pnt7bGMubmFtZX19IHt7bGMubGlicmFyeX19IDxzcGFuICpuZ0lmPVwiIWlzTGFzdFwiPiBPUiA8L3NwYW4+PC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicnVsZXNldC1wYW5lbC1zdWJ0aXRsZVwiICpuZ0lmPVwiZXhlY3V0aW9uLnJ1bGVzZXRJbmZvcm1hdGlvbj8udmFsaWRpdHlSYW5nZSBhcyB2YWxpZGl0eVJhbmdlXCI+XG4gICAgICAgICAgICBEYXRlIHJhbmdlOiB7e3ZhbGlkaXR5UmFuZ2UuZnJvbX19IC0ge3t2YWxpZGl0eVJhbmdlLnRvfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJydWxlc2V0LXBhbmVsLXRpdGxlLWFzaWRlXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJlcnJvciBjYXBzdWxlXCIgKm5nSWY9XCJleGVjdXRpb24uc3RhdHVzID09PSAnRXJyb3InXCI+RXJyb3I8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdWNjZXNzIGNhcHN1bGVcIiAqbmdJZj1cImV4ZWN1dGlvbi5zdGF0dXMgPT09ICdBY3RpdmUnXCI+QXBwbGllZDwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImluYWN0aXZlIGNhcHN1bGVcIiAqbmdJZj1cImV4ZWN1dGlvbi5zdGF0dXMgPT09ICdEZWFjdGl2YXRlZCdcIj5EZWFjdGl2YXRlZDwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIndhcm4gY2Fwc3VsZVwiICpuZ0lmPVwiZXhlY3V0aW9uLnN0YXR1cyA9PT0gJ05vRWZmZWN0J1wiPk5vIGVmZmVjdDwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpbWUgY2Fwc3VsZVwiPlxuICAgICAgICAgICAgPHNwYW4+e3tleGVjdXRpb24udGltZXN0YW1wIHwgZGF0ZTogJ0hIOm1tOnNzIFNTUyd9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuPih7e2V4ZWN1dGlvbi5kdXJhdGlvbiB8IG51bWJlcjogZXhlY3V0aW9uRHVyYXRpb25Gb3JtYXR9fW1zKTwvc3Bhbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJpY29uXCJcbiAgICAgICAgICAgIFtjbGFzcy5pY29uLWNhcmV0LWRvd25dPVwiIWV4cGFuc2lvblN0YXR1c1tleGVjdXRpb24uZXhlY3V0aW9uSWRdPy5ydWxlc2V0XCJcbiAgICAgICAgICAgIFtjbGFzcy5pY29uLWNhcmV0LXVwXT1cImV4cGFuc2lvblN0YXR1c1tleGVjdXRpb24uZXhlY3V0aW9uSWRdPy5ydWxlc2V0XCI+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicnVsZXNldC1wYW5lbC1kZXNjcmlwdGlvblwiICpuZ0lmPVwiZXhwYW5zaW9uU3RhdHVzW2V4ZWN1dGlvbi5leGVjdXRpb25JZF0/LnJ1bGVzZXRcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJydWxlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGVzOiBleGVjdXRpb24ucnVsZXNldEluZm9ybWF0aW9uLnJ1bGVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5zaW9uSUQ6IGV4ZWN1dGlvbi5leGVjdXRpb25JZFxuICAgICAgICAgICAgICAgICAgICAgIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJpbnB1dHNcIlxuICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbnB1dHM6IGV4ZWN1dGlvbi5pbnB1dEZhY3RzXG4gICAgICAgICAgICAgICAgICAgICAgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZXhlY3V0aW9uLnR5cGUgPT09ICdSdWxlc2V0RXhlY3V0aW9uRXJyb3InOyBlbHNlIHN1Y2Nlc3NcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicnVsZXNldC1wYW5lbC1jYXRlZ29yeS10aXRsZVwiPlJ1bGVzOjwvZGl2PlxuICAgICAgICAgIDx1bCBjbGFzcz1cInJ1bGVzZXQtcGFuZWwtY2F0ZWdvcnktYm9keSBydWxlLWRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IHJ1bGVFdmFsdWF0aW9uIG9mIGV4ZWN1dGlvbi5ydWxlc0V2YWx1YXRpb25zOyBsZXQgaW5kZXg9aW5kZXg7XCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJ1bGVzZXQtcGFuZWwtdGl0bGVcIiBbY2xhc3MuZXJyb3JdPVwicnVsZUV2YWx1YXRpb24uZXJyb3JcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPnt7cnVsZUV2YWx1YXRpb24ucnVsZS5uYW1lIHwgdGl0bGVjYXNlfX0gPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXBzdWxlIGVycm9yXCIgKm5nSWY9XCJydWxlRXZhbHVhdGlvbi5lcnJvclwiPkVycm9yPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicnVsZUV2YWx1YXRpb24uZXJyb3JcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJydWxlc2V0LXBhbmVsLWNhdGVnb3J5LXRpdGxlXCI+RXJyb3I6PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPVwicnVsZXNldC1wYW5lbC1jYXRlZ29yeS1ib2R5IGVycm9yXCI+e3tydWxlRXZhbHVhdGlvbi5lcnJvciB8IG8zckpzb25PclN0cmluZ319PC9wcmU+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiaW5wdXRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dHM6IGV4ZWN1dGlvbi5pbnB1dEZhY3RzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bnRpbWVJbnB1dHM6IGV4ZWN1dGlvbi5ydWxlc2V0SW5mb3JtYXRpb24/LnJ1bGVzW2luZGV4XT8uaW5wdXRSdW50aW1lRmFjdHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPG8zci1ydWxlLWFjdGlvbnMtcHJlcyAqbmdJZj1cIiFydWxlRXZhbHVhdGlvbi5lcnJvclwiXG4gICAgICAgICAgICAgICAgICAgIFt0ZW1wb3JhcnlGYWN0c109XCJydWxlRXZhbHVhdGlvbi50ZW1wb3JhcnlGYWN0c1wiXG4gICAgICAgICAgICAgICAgICAgIFtydW50aW1lT3V0cHV0c109XCJleGVjdXRpb24ucnVsZXNldEluZm9ybWF0aW9uPy5ydWxlc1tpbmRleF0/Lm91dHB1dFJ1bnRpbWVGYWN0c1wiXG4gICAgICAgICAgICAgICAgICA+PC9vM3ItcnVsZS1hY3Rpb25zLXByZXM+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNzdWNjZXNzPlxuICAgICAgICAgIDxvM3ItcnVsZS1hY3Rpb25zLXByZXMgW2FjdGlvbnNdPVwiZXhlY3V0aW9uLm91dHB1dEFjdGlvbnNcIj48L28zci1ydWxlLWFjdGlvbnMtcHJlcz5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicnVsZXNldC1wYW5lbC1jYXRlZ29yeS10aXRsZVwiPkV4ZWN1dGVkIFJ1bGVzPC9kaXY+XG4gICAgICAgICAgPHVsIGNsYXNzPVwicnVsZS1kZXNjcmlwdGlvbiBydWxlc2V0LXBhbmVsLWNhdGVnb3J5LWJvZHlcIj5cbiAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgcnVsZUV2YWx1YXRpb24gb2YgZXhlY3V0aW9uLnJ1bGVzRXZhbHVhdGlvbnM7IGxldCBpbmRleD1pbmRleDtcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJ1bGVzZXQtcGFuZWwtdGl0bGVcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57e3J1bGVFdmFsdWF0aW9uLnJ1bGUubmFtZSB8IHRpdGxlY2FzZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2Fwc3VsZSBpbmFjdGl2ZVwiICpuZ0lmPVwicnVsZUV2YWx1YXRpb24uY2FjaGVkXCI+Q2FjaGVkPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2Fwc3VsZVwiPih7e3J1bGVFdmFsdWF0aW9uLmR1cmF0aW9uIHwgbnVtYmVyOiBleGVjdXRpb25EdXJhdGlvbkZvcm1hdH19bXMpPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRyaWdnZXJzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7dHJpZ2dlcnM6IChydWxlRXZhbHVhdGlvbi50cmlnZ2Vyc1tydWxlRXZhbHVhdGlvbi5ydWxlLmlkXSl9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG8zci1ydWxlLWFjdGlvbnMtcHJlc1xuICAgICAgICAgICAgICAgICAgW2FjdGlvbnNdPVwicnVsZUV2YWx1YXRpb24ub3V0cHV0QWN0aW9uc1wiXG4gICAgICAgICAgICAgICAgICBbdGVtcG9yYXJ5RmFjdHNdPVwicnVsZUV2YWx1YXRpb24udGVtcG9yYXJ5RmFjdHNcIlxuICAgICAgICAgICAgICAgICAgW3J1bnRpbWVPdXRwdXRzXT1cImV4ZWN1dGlvbi5ydWxlc2V0SW5mb3JtYXRpb24/LnJ1bGVzW2luZGV4XT8ub3V0cHV0UnVudGltZUZhY3RzXCI+XG4gICAgICAgICAgICAgICAgPC9vM3ItcnVsZS1hY3Rpb25zLXByZXM+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9kaXY+XG4gICAgPC9saT5cbiAgPC91bD5cbjwvc2VjdGlvbj5cblxuPG5nLXRlbXBsYXRlIGxldC10cmlnZ2Vycz1cInRyaWdnZXJzXCIgI3RyaWdnZXJzPlxuICA8ZGl2IGNsYXNzPVwicnVsZXNldC1wYW5lbC1jYXRlZ29yeS10aXRsZVwiPkJhc2VmYWN0cyBUcmlnZ2VyczwvZGl2PlxuICA8dWwgY2xhc3M9XCJydWxlc2V0LXBhbmVsLWNhdGVnb3J5LWJvZHkgdHJpZ2dlcnNcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0cmlnZ2VyIG9mICh0cmlnZ2VycyB8IGtleXZhbHVlKVwiPlxuICAgICAgPGxpICpuZ0lmPVwidHJpZ2dlci52YWx1ZT8uZmFjdE5hbWVcIj5cbiAgICAgICAgPG8zci1ydWxlLWtleS12YWx1ZS1wcmVzXG4gICAgICAgICAgW2tleV09XCJ0cmlnZ2VyLnZhbHVlLmZhY3ROYW1lXCJcbiAgICAgICAgICBbb2xkVmFsdWVdPVwidHJpZ2dlci52YWx1ZS5vbGRWYWx1ZSB8IG8zckZhbGxiYWNrVG9cIlxuICAgICAgICAgIFt2YWx1ZV09XCJ0cmlnZ2VyLnZhbHVlLm5ld1ZhbHVlIHwgbzNyRmFsbGJhY2tUb1wiXG4gICAgICAgICAgW3R5cGVdPVwiJ3N0YXRlJ1wiPjwvbzNyLXJ1bGUta2V5LXZhbHVlLXByZXM+XG4gICAgICA8L2xpPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L3VsPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlIGxldC1ydWxlcz1cInJ1bGVzXCIgbGV0LWV4cGFuc2lvbklEPVwiZXhwYW5zaW9uSURcIiAjcnVsZXM+XG4gIDwhLS0gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC90ZW1wbGF0ZS9jbGljay1ldmVudHMtaGF2ZS1rZXktZXZlbnRzLCBAYW5ndWxhci1lc2xpbnQvdGVtcGxhdGUvaW50ZXJhY3RpdmUtc3VwcG9ydHMtZm9jdXMgLS0gbmVlZCB0byByZWZhY3RvciB0aGUgZGl2IHRvIGFjY29yZGlvbiBmcm9tIERGICMxNTE4IC0tPlxuICA8ZGl2IGNsYXNzPVwicnVsZXNldC1wYW5lbC1jYXRlZ29yeS10aXRsZSBydWxlc2V0LWV4cGFuc2lvbi1hY3Rpb25cIlxuICAgIChjbGljayk9XCJ0b2dnbGVFeHBhbnNpb24oZXhwYW5zaW9uSUQsICdydWxlc092ZXJ2aWV3JylcIj5cbiAgICA8c3Bhbj5SdWxlcyBPdmVydmlldzwvc3Bhbj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiaWNvblwiXG4gICAgICAgICAgICBbY2xhc3MuaWNvbi1jYXJldC1kb3duXT1cIiFleHBhbnNpb25TdGF0dXNbZXhwYW5zaW9uSURdPy5ydWxlc092ZXJ2aWV3XCJcbiAgICAgICAgICAgIFtjbGFzcy5pY29uLWNhcmV0LXVwXT1cImV4cGFuc2lvblN0YXR1c1tleHBhbnNpb25JRF0/LnJ1bGVzT3ZlcnZpZXdcIj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJleHBhbnNpb25TdGF0dXNbZXhwYW5zaW9uSURdPy5ydWxlc092ZXJ2aWV3XCI+XG4gICAgPGRpdiAqbmdJZj1cInJ1bGVzPy5sZW5ndGggPT09IDBcIiBjbGFzcz1cInJ1bGVzZXQtcGFuZWwtY2F0ZWdvcnktYm9keSBlbXB0eVwiPk5vIHJ1bGU8L2Rpdj5cbiAgICA8dWwgY2xhc3M9XCJydWxlc2V0LXBhbmVsLWNhdGVnb3J5LWJvZHlcIiAqbmdJZj1cInJ1bGVzPy5sZW5ndGggPiAwXCI+XG4gICAgICA8bGkgKm5nRm9yPVwibGV0IHJ1bGUgb2YgcnVsZXNcIj5cbiAgICAgICAgPG8zci1ydWxlLXRyZWUtcHJlcyBbbmFtZV09XCJydWxlLm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb25kaXRpb25dPVwicnVsZT8ucm9vdEVsZW1lbnQ/LmNvbmRpdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Jsb2NrVHlwZV09XCJydWxlPy5yb290RWxlbWVudD8uYmxvY2tUeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3VjY2Vzc0VsZW1lbnRzXT1cInJ1bGU/LnJvb3RFbGVtZW50Py5zdWNjZXNzRWxlbWVudHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmYWlsdXJlRWxlbWVudHNdPVwicnVsZT8ucm9vdEVsZW1lbnQ/LmZhaWx1cmVFbGVtZW50c1wiPlxuICAgICAgICA8L28zci1ydWxlLXRyZWUtcHJlcz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgbGV0LWlucHV0cz1cImlucHV0c1wiIGxldC1ydW50aW1lSW5wdXRzPVwicnVudGltZUlucHV0c1wiICNpbnB1dHM+XG4gIDxkaXYgY2xhc3M9XCJydWxlc2V0LXBhbmVsLWNhdGVnb3J5LXRpdGxlXCI+SW5wdXRzIHNuYXBzaG90PC9kaXY+XG4gIDxkaXYgKm5nSWY9XCJpbnB1dHM/Lmxlbmd0aCA9PT0gMFwiIGNsYXNzPVwicnVsZXNldC1wYW5lbC1jYXRlZ29yeS1ib2R5IGVtcHR5XCI+Tm8gaW5wdXRzPC9kaXY+XG4gIDx1bCBjbGFzcz1cInJ1bGVzZXQtcGFuZWwtY2F0ZWdvcnktYm9keVwiICpuZ0lmPVwiaW5wdXRzPy5sZW5ndGggPiAwXCI+XG4gICAgPGxpICpuZ0Zvcj1cImxldCBpbnB1dCBvZiBpbnB1dHNcIj5cbiAgICAgIDxvM3ItcnVsZS1rZXktdmFsdWUtcHJlc1xuICAgICAgICBba2V5XT1cImlucHV0LmZhY3ROYW1lXCJcbiAgICAgICAgW3ZhbHVlXT1cImlucHV0LnZhbHVlIHwgbzNyRmFsbGJhY2tUb1wiXG4gICAgICAgIFt0eXBlXT1cIidzdGF0ZSdcIj48L28zci1ydWxlLWtleS12YWx1ZS1wcmVzPlxuICAgIDwvbGk+XG4gICAgPGxpICpuZ0Zvcj1cImxldCBpbnB1dCBvZiBydW50aW1lSW5wdXRzXCI+e3tpbnB1dH19IChzY29wZSBsaW1pdGVkIHRvIHJ1bGVzZXQpPC9saT5cbiAgPC91bD5cbjwvbmctdGVtcGxhdGU+XG4iXX0=