@o3r/rules-engine 12.1.0-prerelease.10 → 12.1.0-prerelease.12
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.
- package/README.md +21 -47
- package/builders/rules-engine-extractor/helpers/index.js.map +1 -0
- package/builders/rules-engine-extractor/helpers/rules-engine.extractor.interfaces.js.map +1 -0
- package/builders/rules-engine-extractor/helpers/rules-engine.extractor.js.map +1 -0
- package/builders/rules-engine-extractor/index.js.map +1 -0
- package/builders/rules-engine-extractor/schema.js.map +1 -0
- package/esm2022/components/index.mjs +2 -0
- package/esm2022/components/rules-engine/facts-snapshot/facts-snapshot.component.mjs +45 -0
- package/esm2022/components/rules-engine/index.mjs +5 -0
- package/esm2022/components/rules-engine/rule-actions/rule-actions-pres.component.mjs +42 -0
- package/esm2022/components/rules-engine/rule-condition/rule-condition-pres.component.mjs +36 -0
- package/esm2022/components/rules-engine/rule-key-value/rule-key-value-pres.component.mjs +63 -0
- package/esm2022/components/rules-engine/rule-tree/rule-tree-pres.component.mjs +48 -0
- package/esm2022/components/rules-engine/ruleset-history/ruleset-history-pres.component.mjs +50 -0
- package/esm2022/components/rules-engine/ruleset-history/ruleset-history-pres.module.mjs +23 -0
- package/esm2022/components/rules-engine/shared/fallback-to.pipe.mjs +25 -0
- package/esm2022/components/rules-engine/shared/index.mjs +4 -0
- package/esm2022/components/rules-engine/shared/json-or-string.pipe.mjs +23 -0
- package/esm2022/components/rules-engine/shared/ruleset-history.helper.mjs +51 -0
- package/esm2022/devkit/index.mjs +7 -0
- package/esm2022/devkit/rules-engine-devkit.interface.mjs +6 -0
- package/esm2022/devkit/rules-engine-devtools.console.service.mjs +111 -0
- package/esm2022/devkit/rules-engine-devtools.message.service.mjs +115 -0
- package/esm2022/devkit/rules-engine-devtools.module.mjs +47 -0
- package/esm2022/devkit/rules-engine-devtools.service.mjs +130 -0
- package/esm2022/devkit/rules-engine-devtools.token.mjs +6 -0
- package/esm2022/engine/debug/engine.debug.mjs +211 -0
- package/esm2022/engine/debug/helpers.mjs +91 -0
- package/esm2022/engine/engine.interface.mjs +2 -0
- package/esm2022/engine/engine.mjs +137 -0
- package/esm2022/engine/fact/fact.interfaces.mjs +2 -0
- package/esm2022/engine/fact/index.mjs +2 -0
- package/esm2022/engine/helpers/filter-ruleset-event.operator.mjs +21 -0
- package/esm2022/engine/index.mjs +8 -0
- package/esm2022/engine/operator/index.mjs +4 -0
- package/esm2022/engine/operator/operator.helpers.mjs +107 -0
- package/esm2022/engine/operator/operator.interface.mjs +2 -0
- package/esm2022/engine/operator/operators/array-based.operators.mjs +266 -0
- package/esm2022/engine/operator/operators/basic.operators.mjs +93 -0
- package/esm2022/engine/operator/operators/date-based.operators.mjs +119 -0
- package/esm2022/engine/operator/operators/index.mjs +10 -0
- package/esm2022/engine/operator/operators/number-based.operators.mjs +44 -0
- package/esm2022/engine/rule/index.mjs +2 -0
- package/esm2022/engine/rule/rule.helpers.mjs +50 -0
- package/esm2022/engine/ruleset-executor.mjs +256 -0
- package/esm2022/engine/structure.mjs +2 -0
- package/esm2022/fact/fact.abstract-service.mjs +12 -0
- package/esm2022/fact/index.mjs +3 -0
- package/esm2022/fact/reserved.facts.mjs +2 -0
- package/esm2022/fixtures/jasmine/index.mjs +2 -0
- package/esm2022/fixtures/jasmine/o3r-rules-engine-fixtures-jasmine.mjs +5 -0
- package/esm2022/fixtures/jasmine/rules-engine.runner.service.fixture.jasmine.mjs +14 -0
- package/esm2022/fixtures/jest/index.mjs +2 -0
- package/esm2022/fixtures/jest/o3r-rules-engine-fixtures-jest.mjs +5 -0
- package/esm2022/fixtures/jest/rules-engine.runner.service.fixture.jest.mjs +14 -0
- package/esm2022/inner-facts/current-time/current-time-fact.service.mjs +29 -0
- package/esm2022/inner-facts/current-time/current-time.facts.mjs +2 -0
- package/esm2022/inner-facts/current-time/index.mjs +3 -0
- package/esm2022/inner-facts/index.mjs +2 -0
- package/esm2022/interfaces/action.interfaces.mjs +2 -0
- package/esm2022/interfaces/index.mjs +3 -0
- package/esm2022/interfaces/linkable-to-ruleset.interfaces.mjs +2 -0
- package/esm2022/o3r-rules-engine.mjs +5 -0
- package/esm2022/public_api.mjs +9 -0
- package/esm2022/services/index.mjs +3 -0
- package/esm2022/services/rules-engine.token.mjs +9 -0
- package/esm2022/services/runner/index.mjs +3 -0
- package/esm2022/services/runner/rules-engine.runner.module.mjs +37 -0
- package/esm2022/services/runner/rules-engine.runner.service.mjs +132 -0
- package/esm2022/stores/index.mjs +2 -0
- package/esm2022/stores/rulesets/index.mjs +8 -0
- package/esm2022/stores/rulesets/rulesets.actions.mjs +42 -0
- package/esm2022/stores/rulesets/rulesets.effect.mjs +30 -0
- package/esm2022/stores/rulesets/rulesets.module.mjs +42 -0
- package/esm2022/stores/rulesets/rulesets.reducer.mjs +35 -0
- package/esm2022/stores/rulesets/rulesets.selectors.mjs +115 -0
- package/esm2022/stores/rulesets/rulesets.state.mjs +5 -0
- package/esm2022/stores/rulesets/rulesets.sync.mjs +20 -0
- package/facts/current-time/current-time.facts.d.ts +11 -0
- package/facts/current-time/current-time.facts.d.ts.map +1 -0
- package/facts/current-time/index.d.ts +2 -0
- package/facts/current-time/index.d.ts.map +1 -0
- package/facts/index.d.ts +2 -0
- package/facts/index.d.ts.map +1 -0
- package/fesm2022/o3r-rules-engine.mjs +1 -1
- package/fesm2022/o3r-rules-engine.mjs.map +1 -1
- package/package.json +5 -5
- package/schematics/cms-adapter/index.js.map +1 -0
- package/schematics/facts-service/index.js.map +1 -0
- package/schematics/facts-service/schema.js.map +1 -0
- package/schematics/ng-add/helpers/devtools-registration.js.map +1 -0
- package/schematics/ng-add/index.js.map +1 -0
- package/schematics/ng-add/schema.js.map +1 -0
- package/schematics/ng-update/index.js.map +1 -0
- package/schematics/ng-update/v10.0/action-module-split.js.map +1 -0
- package/schematics/ng-update/v11.6/use-register-action-handlers.js.map +1 -0
- package/schematics/operator/index.js.map +1 -0
- package/schematics/operator/schema.js.map +1 -0
- package/schematics/rules-engine-to-component/index.js.map +1 -0
- package/schematics/rules-engine-to-component/schema.js.map +1 -0
- package/stores/rulesets/rulesets.effect.d.ts +1 -1
package/README.md
CHANGED
|
@@ -9,28 +9,8 @@ This package is an [Otter Framework Module](https://github.com/AmadeusITGroup/ot
|
|
|
9
9
|
|
|
10
10
|
## Description
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
This module provides a rules engine that can run on your user's browser to customize the ([translations](https://www.npmjs.com/package/@o3r/localization),
|
|
16
|
-
[//]: # (Should we target placeholder or the component npmjs, and we add a section on the placeholder there?)
|
|
17
|
-
[placeholders](https://github.com/AmadeusITGroup/otter/blob/main/docs/components/PLACEHOLDERS.md) and [configurations](https://www.npmjs.com/package/@o3r/configuration)) of your application at runtime.
|
|
18
|
-
|
|
19
|
-
The rules engine interprets a list of [actions](https://github.com/AmadeusITGroup/otter/tree/main/docs/rules-engine/README.md#action) to execute based on the evaluation of [Rulesets](https://github.com/AmadeusITGroup/otter/tree/main/docs/rules-engine/README.md#ruleset)
|
|
20
|
-
and their conditions. Conditions are logical expressions relying on [operators](https://github.com/AmadeusITGroup/otter/tree/main/docs/rules-engine/README.md#operator) and variables we call
|
|
21
|
-
[facts](https://github.com/AmadeusITGroup/otter/tree/main/docs/rules-engine/README.md#fact).
|
|
22
|
-
|
|
23
|
-
You can store your list of Rulesets on a static JSON file.
|
|
24
|
-
|
|
25
|
-
This mechanism allows you to bring UI personalization based on runtime events without the need of a backend service.
|
|
26
|
-
This can be useful if you want to drive dynamic behavior.
|
|
27
|
-
|
|
28
|
-
For example, you could consider leveraging this feature to display assets based on the current season or for some special events, or to drive
|
|
29
|
-
A/B testing on your components.
|
|
30
|
-
|
|
31
|
-
You will find more information on the concepts behind the rules engine in its [dedicated documentation](https://github.com/AmadeusITGroup/otter/tree/main/docs/rules-engine/README.md).
|
|
32
|
-
For a demonstration of the rules engine capabilities, you can refer to the [live example](https://amadeusitgroup.github.io/otter/#/rules-engine)
|
|
33
|
-
in the Otter showcase.
|
|
12
|
+
This module provides a rule engine that can be executed on your Otter application to customize your application (translations,
|
|
13
|
+
placeholders and configs) based on a json file generated by your CMS.
|
|
34
14
|
|
|
35
15
|
## How to install
|
|
36
16
|
|
|
@@ -38,33 +18,35 @@ in the Otter showcase.
|
|
|
38
18
|
ng add @o3r/rules-engine
|
|
39
19
|
```
|
|
40
20
|
|
|
41
|
-
> [
|
|
42
|
-
> This module requires [@o3r/core](https://www.npmjs.com/package/@o3r/core) to be installed.
|
|
21
|
+
> **Warning**: this module requires [@o3r/core](https://www.npmjs.com/package/@o3r/core) to be installed.
|
|
43
22
|
|
|
44
23
|
## How to use
|
|
45
24
|
|
|
46
|
-
|
|
47
|
-
in order to personalize the user experience.
|
|
48
|
-
On its own, the service will do nothing and will need __action handlers__ to register with the list of supported actions
|
|
49
|
-
and their implementation.
|
|
50
|
-
|
|
51
|
-
Not only this allows for a better extensibility of the service, but it also keeps the number of imported module to the
|
|
52
|
-
bare minimum for a lighter application.
|
|
25
|
+
To facilitate the understanding of the usage of the rule engines, the documentation has been split in several sessions:
|
|
53
26
|
|
|
54
|
-
|
|
27
|
+
- [integration](https://github.com/AmadeusITGroup/otter/tree/main/docs/rules-engine/how-to-use/integration.md)
|
|
28
|
+
- [cms-json-imports](https://github.com/AmadeusITGroup/otter/tree/main/docs/rules-engine/how-to-use/cms-json-imports.md)
|
|
29
|
+
- [create-custom-fact](https://github.com/AmadeusITGroup/otter/tree/main/docs/rules-engine/how-to-use/create-custom-fact.md)
|
|
30
|
+
- [debug-panel](https://github.com/AmadeusITGroup/otter/tree/main/docs/rules-engine/how-to-use/debug-panel.md)
|
|
31
|
+
- [debug](https://github.com/AmadeusITGroup/otter/tree/main/docs/rules-engine/how-to-use/debug.md)
|
|
32
|
+
- [dedicated-component-ruleset](https://github.com/AmadeusITGroup/otter/tree/main/docs/rules-engine/how-to-use/dedicated-component-ruleset.md)
|
|
33
|
+
- [performance-metrics](https://github.com/AmadeusITGroup/otter/tree/main/docs/rules-engine/how-to-use/performance-metrics.md)
|
|
34
|
+
- [placeholders](https://github.com/AmadeusITGroup/otter/tree/main/docs/rules-engine/how-to-use/placeholders.md)
|
|
55
35
|
|
|
56
36
|
## Examples
|
|
57
37
|
|
|
58
38
|
Several examples of the rules engine usage are available on the following links:
|
|
59
39
|
|
|
60
|
-
- [
|
|
61
|
-
- [
|
|
62
|
-
- [
|
|
63
|
-
- [
|
|
40
|
+
- [basic-rule](https://github.com/AmadeusITGroup/otter/tree/main/docs/rules-engine/examples/basic-rule.md)
|
|
41
|
+
- [complex-fact](https://github.com/AmadeusITGroup/otter/tree/main/docs/rules-engine/examples/complex-fact.md)
|
|
42
|
+
- [custom-operator](https://github.com/AmadeusITGroup/otter/tree/main/docs/rules-engine/examples/custom-operator.md)
|
|
43
|
+
- [nested-conditions](https://github.com/AmadeusITGroup/otter/tree/main/docs/rules-engine/examples/nested-conditions.md)
|
|
44
|
+
- [readme](https://github.com/AmadeusITGroup/otter/tree/main/docs/rules-engine/examples/readme.md)
|
|
45
|
+
- [runtime-facts](https://github.com/AmadeusITGroup/otter/tree/main/docs/rules-engine/examples/runtime-facts.md)
|
|
64
46
|
|
|
65
47
|
## Generators
|
|
66
48
|
|
|
67
|
-
Otter framework provides a set of code generators based on [
|
|
49
|
+
Otter framework provides a set of code generators based on [angular schematics](https://angular.io/guide/schematics).
|
|
68
50
|
|
|
69
51
|
| Schematics | Description | How to use |
|
|
70
52
|
|---------------------------|---------------------------------------------------------------|----------------------------------|
|
|
@@ -73,14 +55,6 @@ Otter framework provides a set of code generators based on [Angular schematics](
|
|
|
73
55
|
| facts-service | Generate a facts service | `ng g facts-service` |
|
|
74
56
|
| operators | Generate an operator | `ng g operator` |
|
|
75
57
|
|
|
76
|
-
##
|
|
77
|
-
A whole section of the [Otter Chrome Devtool extension](https://chromewebstore.google.com/detail/otter-devtools/aejabgendbpckkdnjaphhlifbhepmbne) is dedicated to the debug of the rules engine with
|
|
78
|
-
a visual representation of your Rulesets and a history of the run, conditions met and actions applied.
|
|
79
|
-
|
|
80
|
-
Find more information on the tool in the [Otter Chrome Devtool extension documentation](https://github.com/AmadeusITGroup/otter/blob/main/docs/dev-tools/chrome-devtools.md)
|
|
81
|
-
and its [dedicated section in the rules engine documentation](https://github.com/AmadeusITGroup/otter/blob/main/docs/rules-engine/how-to-use/chrome-extension.md).
|
|
82
|
-
|
|
83
|
-
## External links
|
|
58
|
+
## Details
|
|
84
59
|
|
|
85
|
-
More details regarding the way the rules engine is working can be found in the [documentation](https://github.com/AmadeusITGroup/otter/tree/main/docs/rules-engine/)
|
|
86
|
-
A live example is available in the [Otter Showcase Application](https://amadeusitgroup.github.io/otter/#/rules-engine) with reference to its code source.
|
|
60
|
+
More details regarding the way the rules engine is working can be found in the [documentation](https://github.com/AmadeusITGroup/otter/tree/main/docs/rules-engine/).
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../builders/rules-engine-extractor/helpers/index.ts"],"names":[],"mappings":";;;AAAA,mEAAyC;AACzC,8EAAoD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rules-engine.extractor.interfaces.js","sourceRoot":"","sources":["../../../../builders/rules-engine-extractor/helpers/rules-engine.extractor.interfaces.ts"],"names":[],"mappings":";;;AAgDA,4GAA4G;AAC/F,QAAA,wBAAwB,GAAqC,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AAElH,0CAA0C;AAC7B,QAAA,iBAAiB,GAAqC,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rules-engine.extractor.js","sourceRoot":"","sources":["../../../../builders/rules-engine-extractor/helpers/rules-engine.extractor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../builders/rules-engine-extractor/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../builders/rules-engine-extractor/schema.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './rules-engine/index';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9ydWxlcy1lbmdpbmUvaW5kZXgnO1xuIl19
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, computed, input, signal, ViewEncapsulation, } from '@angular/core';
|
|
2
|
+
import { FormsModule, ReactiveFormsModule, } from '@angular/forms';
|
|
3
|
+
import { O3rJsonOrStringPipe, } from '../shared/index';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/forms";
|
|
6
|
+
export class FactsSnapshotComponent {
|
|
7
|
+
constructor() {
|
|
8
|
+
/**
|
|
9
|
+
* Full list of available facts with their current value
|
|
10
|
+
*/
|
|
11
|
+
this.facts = input.required();
|
|
12
|
+
/**
|
|
13
|
+
* Search terms
|
|
14
|
+
*/
|
|
15
|
+
this.search = signal('');
|
|
16
|
+
/**
|
|
17
|
+
* Filtered list of facts using search terms
|
|
18
|
+
*/
|
|
19
|
+
this.filteredFacts = computed(() => {
|
|
20
|
+
const search = this.search();
|
|
21
|
+
const facts = this.facts();
|
|
22
|
+
if (search) {
|
|
23
|
+
const matchString = new RegExp(search.replace(/[\s#$()*+,.?[\\\]^{|}-]/g, '\\$&'), 'i');
|
|
24
|
+
return facts.filter(({ factName, value }) => matchString.test(factName)
|
|
25
|
+
|| (typeof value === 'object'
|
|
26
|
+
? matchString.test(JSON.stringify(value))
|
|
27
|
+
: matchString.test(String(value))));
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
return facts;
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FactsSnapshotComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
35
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FactsSnapshotComponent, isStandalone: true, selector: "o3r-facts-snapshot", inputs: { facts: { classPropertyName: "facts", publicName: "facts", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<section>\n @if (facts().length < 1) {\n <div class=\"m-2\">\n No facts are registered.\n </div>\n } @else {\n <div class=\"input-group\">\n <label class=\"input-group-text\" for=\"search-fact\">\n <span class=\"mx-1 fa-search\" aria-label=\"Search\"></span>\n </label>\n <input class=\"form-control\" [(ngModel)]=\"search\" type=\"text\" id=\"search-fact\" placeholder=\"Search for fact name or value\" />\n </div>\n <div class=\"mt-3\">\n List of <b>{{facts().length}}</b> registered facts\n @if (facts().length > filteredFacts().length) { (<b>{{filteredFacts().length}}</b> matching the search) }\n </div>\n <ul>\n @for (fact of filteredFacts(); track fact.factName) {\n <li>\n <span class=\"fact-name\">{{fact.factName}}: </span>\n <span class=\"fact-value\">{{fact.value | o3rJsonOrString}}</span>\n </li>\n }\n </ul>\n }\n</section>\n", styles: ["o3r-facts-snapshot .fact-name{color:#26c}o3r-facts-snapshot .fact-value{color:#c29}o3r-facts-snapshot .fact-name,o3r-facts-snapshot .fact-value{font-family:monospace}\n"], dependencies: [{ kind: "pipe", type: O3rJsonOrStringPipe, name: "o3rJsonOrString" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
36
|
+
}
|
|
37
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FactsSnapshotComponent, decorators: [{
|
|
38
|
+
type: Component,
|
|
39
|
+
args: [{ selector: 'o3r-facts-snapshot', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
40
|
+
O3rJsonOrStringPipe,
|
|
41
|
+
FormsModule,
|
|
42
|
+
ReactiveFormsModule
|
|
43
|
+
], encapsulation: ViewEncapsulation.None, template: "<section>\n @if (facts().length < 1) {\n <div class=\"m-2\">\n No facts are registered.\n </div>\n } @else {\n <div class=\"input-group\">\n <label class=\"input-group-text\" for=\"search-fact\">\n <span class=\"mx-1 fa-search\" aria-label=\"Search\"></span>\n </label>\n <input class=\"form-control\" [(ngModel)]=\"search\" type=\"text\" id=\"search-fact\" placeholder=\"Search for fact name or value\" />\n </div>\n <div class=\"mt-3\">\n List of <b>{{facts().length}}</b> registered facts\n @if (facts().length > filteredFacts().length) { (<b>{{filteredFacts().length}}</b> matching the search) }\n </div>\n <ul>\n @for (fact of filteredFacts(); track fact.factName) {\n <li>\n <span class=\"fact-name\">{{fact.factName}}: </span>\n <span class=\"fact-value\">{{fact.value | o3rJsonOrString}}</span>\n </li>\n }\n </ul>\n }\n</section>\n", styles: ["o3r-facts-snapshot .fact-name{color:#26c}o3r-facts-snapshot .fact-value{color:#c29}o3r-facts-snapshot .fact-name,o3r-facts-snapshot .fact-value{font-family:monospace}\n"] }]
|
|
44
|
+
}] });
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdHMtc25hcHNob3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcnVsZXMtZW5naW5lL2ZhY3RzLXNuYXBzaG90L2ZhY3RzLXNuYXBzaG90LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3J1bGVzLWVuZ2luZS9mYWN0cy1zbmFwc2hvdC9mYWN0cy1zbmFwc2hvdC50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixLQUFLLEVBQ0wsTUFBTSxFQUNOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsV0FBVyxFQUNYLG1CQUFtQixHQUNwQixNQUFNLGdCQUFnQixDQUFDO0FBSXhCLE9BQU8sRUFDTCxtQkFBbUIsR0FDcEIsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBZXpCLE1BQU0sT0FBTyxzQkFBc0I7SUFibkM7UUFjRTs7V0FFRztRQUNhLFVBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxFQUF3QyxDQUFDO1FBRS9FOztXQUVHO1FBQ2EsV0FBTSxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVwQzs7V0FFRztRQUNhLGtCQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUM1QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDN0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzNCLElBQUksTUFBTSxFQUFFLENBQUM7Z0JBQ1gsTUFBTSxXQUFXLEdBQUcsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQywwQkFBMEIsRUFBRSxNQUFNLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDeEYsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUMxQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQzt1QkFDdkIsQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRO3dCQUMzQixDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUN6QyxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUNyQyxDQUFDO1lBQ0osQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0tBQ0o7a0lBN0JZLHNCQUFzQjtzSEFBdEIsc0JBQXNCLGlOQ2hDbkMsdzZCQTBCQSw2TkRBSSxtQkFBbUIsdURBQ25CLFdBQVcsOG1CQUNYLG1CQUFtQjs7NEZBSVYsc0JBQXNCO2tCQWJsQyxTQUFTOytCQUNFLG9CQUFvQixtQkFHYix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUDt3QkFDUCxtQkFBbUI7d0JBQ25CLFdBQVc7d0JBQ1gsbUJBQW1CO3FCQUNwQixpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIGlucHV0LFxuICBzaWduYWwsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEZvcm1zTW9kdWxlLFxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgdHlwZSB7XG4gIEZhY3RzLFxufSBmcm9tICcuLi8uLi8uLi9lbmdpbmUnO1xuaW1wb3J0IHtcbiAgTzNySnNvbk9yU3RyaW5nUGlwZSxcbn0gZnJvbSAnLi4vc2hhcmVkL2luZGV4JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbzNyLWZhY3RzLXNuYXBzaG90JyxcbiAgc3R5bGVVcmxzOiBbJy4vZmFjdHMtc25hcHNob3Quc3R5bGUuc2NzcyddLFxuICB0ZW1wbGF0ZVVybDogJy4vZmFjdHMtc25hcHNob3QudGVtcGxhdGUuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTzNySnNvbk9yU3RyaW5nUGlwZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlXG4gIF0sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgRmFjdHNTbmFwc2hvdENvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBGdWxsIGxpc3Qgb2YgYXZhaWxhYmxlIGZhY3RzIHdpdGggdGhlaXIgY3VycmVudCB2YWx1ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGZhY3RzID0gaW5wdXQucmVxdWlyZWQ8eyBmYWN0TmFtZTogc3RyaW5nOyB2YWx1ZTogRmFjdHMgfVtdPigpO1xuXG4gIC8qKlxuICAgKiBTZWFyY2ggdGVybXNcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzZWFyY2ggPSBzaWduYWwoJycpO1xuXG4gIC8qKlxuICAgKiBGaWx0ZXJlZCBsaXN0IG9mIGZhY3RzIHVzaW5nIHNlYXJjaCB0ZXJtc1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGZpbHRlcmVkRmFjdHMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgc2VhcmNoID0gdGhpcy5zZWFyY2goKTtcbiAgICBjb25zdCBmYWN0cyA9IHRoaXMuZmFjdHMoKTtcbiAgICBpZiAoc2VhcmNoKSB7XG4gICAgICBjb25zdCBtYXRjaFN0cmluZyA9IG5ldyBSZWdFeHAoc2VhcmNoLnJlcGxhY2UoL1tcXHMjJCgpKissLj9bXFxcXFxcXV57fH0tXS9nLCAnXFxcXCQmJyksICdpJyk7XG4gICAgICByZXR1cm4gZmFjdHMuZmlsdGVyKCh7IGZhY3ROYW1lLCB2YWx1ZSB9KSA9PlxuICAgICAgICBtYXRjaFN0cmluZy50ZXN0KGZhY3ROYW1lKVxuICAgICAgICB8fCAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0J1xuICAgICAgICAgID8gbWF0Y2hTdHJpbmcudGVzdChKU09OLnN0cmluZ2lmeSh2YWx1ZSkpXG4gICAgICAgICAgOiBtYXRjaFN0cmluZy50ZXN0KFN0cmluZyh2YWx1ZSkpKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhY3RzO1xuICAgIH1cbiAgfSk7XG59XG4iLCI8c2VjdGlvbj5cbiAgQGlmIChmYWN0cygpLmxlbmd0aCA8IDEpIHtcbiAgICA8ZGl2IGNsYXNzPVwibS0yXCI+XG4gICAgICBObyBmYWN0cyBhcmUgcmVnaXN0ZXJlZC5cbiAgICA8L2Rpdj5cbiAgfSBAZWxzZSB7XG4gICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJpbnB1dC1ncm91cC10ZXh0XCIgZm9yPVwic2VhcmNoLWZhY3RcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJteC0xIGZhLXNlYXJjaFwiIGFyaWEtbGFiZWw9XCJTZWFyY2hcIj48L3NwYW4+XG4gICAgICA8L2xhYmVsPlxuICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hcIiB0eXBlPVwidGV4dFwiIGlkPVwic2VhcmNoLWZhY3RcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaCBmb3IgZmFjdCBuYW1lIG9yIHZhbHVlXCIgLz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibXQtM1wiPlxuICAgICAgTGlzdCBvZiA8Yj57e2ZhY3RzKCkubGVuZ3RofX08L2I+IHJlZ2lzdGVyZWQgZmFjdHNcbiAgICAgIEBpZiAoZmFjdHMoKS5sZW5ndGggPiBmaWx0ZXJlZEZhY3RzKCkubGVuZ3RoKSB7ICg8Yj57e2ZpbHRlcmVkRmFjdHMoKS5sZW5ndGh9fTwvYj4gbWF0Y2hpbmcgdGhlIHNlYXJjaCkgfVxuICAgIDwvZGl2PlxuICAgIDx1bD5cbiAgICBAZm9yIChmYWN0IG9mIGZpbHRlcmVkRmFjdHMoKTsgdHJhY2sgZmFjdC5mYWN0TmFtZSkge1xuICAgICAgPGxpPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImZhY3QtbmFtZVwiPnt7ZmFjdC5mYWN0TmFtZX19OiA8L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZmFjdC12YWx1ZVwiPnt7ZmFjdC52YWx1ZSB8IG8zckpzb25PclN0cmluZ319PC9zcGFuPlxuICAgICAgPC9saT5cbiAgICB9XG4gICAgPC91bD5cbiAgfVxuPC9zZWN0aW9uPlxuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export * from './facts-snapshot/facts-snapshot.component';
|
|
2
|
+
export * from './ruleset-history/ruleset-history-pres.component';
|
|
3
|
+
export * from './ruleset-history/ruleset-history-pres.module';
|
|
4
|
+
export * from './shared/index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9ydWxlcy1lbmdpbmUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLGtEQUFrRCxDQUFDO0FBQ2pFLGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZmFjdHMtc25hcHNob3QvZmFjdHMtc25hcHNob3QuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vcnVsZXNldC1oaXN0b3J5L3J1bGVzZXQtaGlzdG9yeS1wcmVzLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3J1bGVzZXQtaGlzdG9yeS9ydWxlc2V0LWhpc3RvcnktcHJlcy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zaGFyZWQvaW5kZXgnO1xuIl19
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation, } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "../rule-key-value/rule-key-value-pres.component";
|
|
4
|
+
import * as i2 from "../shared/fallback-to.pipe";
|
|
5
|
+
import * as i3 from "@angular/common";
|
|
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
|
+
/**
|
|
23
|
+
* Check if a given block is of type ActionBlock
|
|
24
|
+
* @param block
|
|
25
|
+
*/
|
|
26
|
+
isActionBlock(block) {
|
|
27
|
+
return !!block.actionType;
|
|
28
|
+
}
|
|
29
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RuleActionsPresComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.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@if (actions?.length === 0 && runtimeOutputs.length === 0) {\n <div class=\"ruleset-panel-category-body empty\">\n No action\n </div>\n} @else {\n <ul class=\"ruleset-panel-category-body\">\n @for (action of actions; track $index) {\n <li>\n @if (isActionBlock(action)) {\n @switch (action.actionType) {\n @case ('SET_FACT') {\n <div>\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 }\n @case ('UPDATE_CONFIG') {\n <div>\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 }\n @case ('UPDATE_ASSET') {\n <div>\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 }\n @case ('UPDATE_LOCALISATION') {\n <div>\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 }\n @case ('UPDATE_PLACEHOLDER') {\n <div [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 }\n @default {\n <div class=\"error\">\n <div>Unrecognized action</div>\n <div>{{action | json}}</div>\n </div>\n }\n }\n }\n </li>\n }\n @for (runtimeOutput of runtimeOutputs; track $index) {\n <li>\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 }\n </ul>\n}\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: "component", type: i1.RuleKeyValuePresComponent, selector: "o3r-rule-key-value-pres", inputs: ["key", "value", "oldValue", "type"] }, { kind: "pipe", type: i2.O3rFallbackToPipe, name: "o3rFallbackTo" }, { kind: "pipe", type: i3.JsonPipe, name: "json" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
31
|
+
}
|
|
32
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RuleActionsPresComponent, decorators: [{
|
|
33
|
+
type: Component,
|
|
34
|
+
args: [{ selector: 'o3r-rule-actions-pres', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"ruleset-panel-category-title\">Output Actions</div>\n@if (actions?.length === 0 && runtimeOutputs.length === 0) {\n <div class=\"ruleset-panel-category-body empty\">\n No action\n </div>\n} @else {\n <ul class=\"ruleset-panel-category-body\">\n @for (action of actions; track $index) {\n <li>\n @if (isActionBlock(action)) {\n @switch (action.actionType) {\n @case ('SET_FACT') {\n <div>\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 }\n @case ('UPDATE_CONFIG') {\n <div>\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 }\n @case ('UPDATE_ASSET') {\n <div>\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 }\n @case ('UPDATE_LOCALISATION') {\n <div>\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 }\n @case ('UPDATE_PLACEHOLDER') {\n <div [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 }\n @default {\n <div class=\"error\">\n <div>Unrecognized action</div>\n <div>{{action | json}}</div>\n </div>\n }\n }\n }\n </li>\n }\n @for (runtimeOutput of runtimeOutputs; track $index) {\n <li>\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 }\n </ul>\n}\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"] }]
|
|
35
|
+
}], propDecorators: { actions: [{
|
|
36
|
+
type: Input
|
|
37
|
+
}], temporaryFacts: [{
|
|
38
|
+
type: Input
|
|
39
|
+
}], runtimeOutputs: [{
|
|
40
|
+
type: Input
|
|
41
|
+
}] } });
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS1hY3Rpb25zLXByZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcnVsZXMtZW5naW5lL3J1bGUtYWN0aW9ucy9ydWxlLWFjdGlvbnMtcHJlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9ydWxlcy1lbmdpbmUvcnVsZS1hY3Rpb25zL3J1bGUtYWN0aW9ucy1wcmVzLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxFQUNMLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFjdkIsTUFBTSxPQUFPLHdCQUF3QjtJQVByQztRQVFFOztXQUVHO1FBRUksWUFBTyxHQUFlLEVBQUUsQ0FBQztRQUVoQzs7O1dBR0c7UUFFSSxtQkFBYyxHQUEwQixFQUFFLENBQUM7UUFFbEQ7O1dBRUc7UUFFSSxtQkFBYyxHQUFhLEVBQUUsQ0FBQztLQVN0QztJQVBDOzs7T0FHRztJQUNJLGFBQWEsQ0FBQyxLQUFlO1FBQ2xDLE9BQU8sQ0FBQyxDQUFFLEtBQXFCLENBQUMsVUFBVSxDQUFDO0lBQzdDLENBQUM7a0lBMUJVLHdCQUF3QjtzSEFBeEIsd0JBQXdCLGlLQ25CckMscTJHQXlGQTs7NEZEdEVhLHdCQUF3QjtrQkFQcEMsU0FBUzsrQkFDRSx1QkFBdUIsbUJBR2hCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUk7OEJBTzlCLE9BQU87c0JBRGIsS0FBSztnQkFRQyxjQUFjO3NCQURwQixLQUFLO2dCQU9DLGNBQWM7c0JBRHBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUge1xuICBBY3Rpb25CbG9jayxcbiAgQWxsQmxvY2ssXG4gIEZhY3RzLFxufSBmcm9tICcuLi8uLi8uLi9lbmdpbmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvM3ItcnVsZS1hY3Rpb25zLXByZXMnLFxuICBzdHlsZVVybHM6IFsnLi9ydWxlLWFjdGlvbnMtcHJlcy5zdHlsZS5zY3NzJ10sXG4gIHRlbXBsYXRlVXJsOiAnLi9ydWxlLWFjdGlvbnMtcHJlcy50ZW1wbGF0ZS5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgUnVsZUFjdGlvbnNQcmVzQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIExpc3Qgb2YgYWxsIHRoZSBvdXRwdXQgYWN0aW9ucyBvZiBhIHJ1bGVzIG9yIHJ1bGVzZXQgZXhlY3V0aW9uXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYWN0aW9uczogQWxsQmxvY2tbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBUaGUgbGlzdCBvZiB0ZW1wb3JhcnkgZmFjdHMgdXNlZCBhbmQvb3IgbW9kaWZpZWQgd2l0aGluIHRoZSBydWxlIG9yIHRoZSBydWxlc2V0LlxuICAgKiBUaGV5IGFyZSBzY29wZWQgdG8gdGhlIHJ1bGVzZXQgYW5kIHRoZWlyIHZhbHVlIGlzIHRoZSBvbmUgYWZ0ZXIgdGhlIHJ1bGUgb3IgcnVsZXNldCBleGVjdXRpb24uXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgdGVtcG9yYXJ5RmFjdHM6IFJlY29yZDxzdHJpbmcsIEZhY3RzPiA9IHt9O1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIHRlbXBvcmFyeSBmYWN0cyB0aGF0IHdpbGwgYmUgbW9kaWZpZWQgYnkgdGhlIHJ1bGVzZXQgb3IgdGhlIHJ1bGUuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgcnVudGltZU91dHB1dHM6IHN0cmluZ1tdID0gW107XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGEgZ2l2ZW4gYmxvY2sgaXMgb2YgdHlwZSBBY3Rpb25CbG9ja1xuICAgKiBAcGFyYW0gYmxvY2tcbiAgICovXG4gIHB1YmxpYyBpc0FjdGlvbkJsb2NrKGJsb2NrOiBBbGxCbG9jayk6IGJsb2NrIGlzIEFjdGlvbkJsb2NrIHtcbiAgICByZXR1cm4gISEoYmxvY2sgYXMgQWN0aW9uQmxvY2spLmFjdGlvblR5cGU7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJydWxlc2V0LXBhbmVsLWNhdGVnb3J5LXRpdGxlXCI+T3V0cHV0IEFjdGlvbnM8L2Rpdj5cbkBpZiAoYWN0aW9ucz8ubGVuZ3RoID09PSAwICYmIHJ1bnRpbWVPdXRwdXRzLmxlbmd0aCA9PT0gMCkge1xuICA8ZGl2IGNsYXNzPVwicnVsZXNldC1wYW5lbC1jYXRlZ29yeS1ib2R5IGVtcHR5XCI+XG4gICAgTm8gYWN0aW9uXG4gIDwvZGl2PlxufSBAZWxzZSB7XG4gIDx1bCBjbGFzcz1cInJ1bGVzZXQtcGFuZWwtY2F0ZWdvcnktYm9keVwiPlxuICAgIEBmb3IgKGFjdGlvbiBvZiBhY3Rpb25zOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgIDxsaT5cbiAgICAgICAgQGlmIChpc0FjdGlvbkJsb2NrKGFjdGlvbikpIHtcbiAgICAgICAgICBAc3dpdGNoIChhY3Rpb24uYWN0aW9uVHlwZSkge1xuICAgICAgICAgICAgQGNhc2UgKCdTRVRfRkFDVCcpIHtcbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8ZGl2PlNldCBGYWN0PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgIDxvM3ItcnVsZS1rZXktdmFsdWUtcHJlc1xuICAgICAgICAgICAgICAgICAgICBba2V5XT1cImFjdGlvbi5mYWN0IHwgbzNyRmFsbGJhY2tUbzogJ01pc3NpbmcgXFwnZmFjdFxcJydcIlxuICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiYWN0aW9uLnZhbHVlIHwgbzNyRmFsbGJhY2tUb1wiXG4gICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cIidhc3NpZ25tZW50J1wiPjwvbzNyLXJ1bGUta2V5LXZhbHVlLXByZXM+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGNhc2UgKCdVUERBVEVfQ09ORklHJykge1xuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxkaXY+VXBkYXRlIENvbmZpZyB7e2FjdGlvbi5jb21wb25lbnR9fSB7e2FjdGlvbi5saWJyYXJ5fX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPG8zci1ydWxlLWtleS12YWx1ZS1wcmVzXG4gICAgICAgICAgICAgICAgICAgIFtrZXldPVwiYWN0aW9uLnByb3BlcnR5IHwgbzNyRmFsbGJhY2tUbzogJ01pc3NpbmcgXFwncHJvcGVydHlcXCcnXCJcbiAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImFjdGlvbi52YWx1ZSB8IG8zckZhbGxiYWNrVG9cIlxuICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCInYXNzaWdubWVudCdcIj48L28zci1ydWxlLWtleS12YWx1ZS1wcmVzPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBjYXNlICgnVVBEQVRFX0FTU0VUJykge1xuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxkaXY+VXBkYXRlIEFzc2V0OjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8bzNyLXJ1bGUta2V5LXZhbHVlLXByZXNcbiAgICAgICAgICAgICAgICAgICAgW29sZFZhbHVlXT1cImFjdGlvbi5hc3NldCB8IG8zckZhbGxiYWNrVG86ICdNaXNzaW5nIFxcJ2Fzc2V0XFwnJ1wiXG4gICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJhY3Rpb24udmFsdWUgfCBvM3JGYWxsYmFja1RvXCJcbiAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwiJ3N0YXRlJ1wiPjwvbzNyLXJ1bGUta2V5LXZhbHVlLXByZXM+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGNhc2UgKCdVUERBVEVfTE9DQUxJU0FUSU9OJykge1xuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxkaXY+VXBkYXRlIGxvY2FsaXphdGlvbjo8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPG8zci1ydWxlLWtleS12YWx1ZS1wcmVzXG4gICAgICAgICAgICAgICAgICAgIFtvbGRWYWx1ZV09XCJhY3Rpb24ua2V5IHwgbzNyRmFsbGJhY2tUbzogJ01pc3NpbmcgXFwna2V5XFwnJ1wiXG4gICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJhY3Rpb24udmFsdWUgfCBvM3JGYWxsYmFja1RvXCJcbiAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwiJ3N0YXRlJ1wiPjwvbzNyLXJ1bGUta2V5LXZhbHVlLXByZXM+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGNhc2UgKCdVUERBVEVfUExBQ0VIT0xERVInKSB7XG4gICAgICAgICAgICAgIDxkaXYgW2NsYXNzLmVycm9yXT1cIiFhY3Rpb24ucGxhY2Vob2xkZXJJZFwiPlxuICAgICAgICAgICAgICAgIDxkaXY+VXBkYXRlIHBsYWNlaG9sZGVyIGluIHt7YWN0aW9uLmNvbXBvbmVudH19IHt7YWN0aW9uLmxpYnJhcnl9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8bzNyLXJ1bGUta2V5LXZhbHVlLXByZXNcbiAgICAgICAgICAgICAgICAgICAgW29sZFZhbHVlXT1cImFjdGlvbi5wbGFjZWhvbGRlcklkIHwgbzNyRmFsbGJhY2tUbzogJ01pc3NpbmcgXFwncGxhY2Vob2xkZXJJZFxcJydcIlxuICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiYWN0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwiJ3N0YXRlJ1wiPjwvbzNyLXJ1bGUta2V5LXZhbHVlLXByZXM+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGRlZmF1bHQge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXJyb3JcIj5cbiAgICAgICAgICAgICAgICA8ZGl2PlVucmVjb2duaXplZCBhY3Rpb248L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2Pnt7YWN0aW9uIHwganNvbn19PC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgPC9saT5cbiAgICB9XG4gICAgQGZvciAocnVudGltZU91dHB1dCBvZiBydW50aW1lT3V0cHV0czsgdHJhY2sgJGluZGV4KSB7XG4gICAgICA8bGk+XG4gICAgICAgIDxkaXY+U2V0IHRlbXBvcmFyeSBmYWN0PC9kaXY+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPG8zci1ydWxlLWtleS12YWx1ZS1wcmVzXG4gICAgICAgICAgICBba2V5XT1cInJ1bnRpbWVPdXRwdXQgfCBvM3JGYWxsYmFja1RvOiAnTWlzc2luZyBcXCdmYWN0XFwnJ1wiXG4gICAgICAgICAgICBbdmFsdWVdPVwidGVtcG9yYXJ5RmFjdHNbcnVudGltZU91dHB1dF0gfCBvM3JGYWxsYmFja1RvXCJcbiAgICAgICAgICAgIFt0eXBlXT1cIidhc3NpZ25tZW50J1wiPjwvbzNyLXJ1bGUta2V5LXZhbHVlLXByZXM+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9saT5cbiAgICB9XG4gIDwvdWw+XG59XG4iXX0=
|
|
@@ -0,0 +1,36 @@
|
|
|
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=
|
|
@@ -0,0 +1,63 @@
|
|
|
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==
|
|
@@ -0,0 +1,48 @@
|
|
|
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=
|