@o3r/rules-engine 10.3.0-prerelease.9 → 10.4.0-prerelease.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/devkit/rules-engine-devtools.console.service.d.ts +1 -1
  2. package/devkit/rules-engine-devtools.service.d.ts +1 -1
  3. package/engine/engine.interface.d.ts +15 -1
  4. package/engine/engine.interface.d.ts.map +1 -1
  5. package/engine/ruleset-executor.d.ts.map +1 -1
  6. package/engine/structure.d.ts +15 -1
  7. package/engine/structure.d.ts.map +1 -1
  8. package/esm2022/components/rules-engine/rule-actions/rule-actions-pres.component.mjs +3 -3
  9. package/esm2022/components/rules-engine/rule-condition/rule-condition-pres.component.mjs +3 -3
  10. package/esm2022/components/rules-engine/rule-key-value/rule-key-value-pres.component.mjs +3 -3
  11. package/esm2022/components/rules-engine/rule-tree/rule-tree-pres.component.mjs +3 -3
  12. package/esm2022/components/rules-engine/ruleset-history/ruleset-history-pres.component.mjs +5 -5
  13. package/esm2022/components/rules-engine/ruleset-history/ruleset-history-pres.module.mjs +4 -4
  14. package/esm2022/components/rules-engine/shared/fallback-to.pipe.mjs +6 -6
  15. package/esm2022/devkit/rules-engine-devtools.console.service.mjs +5 -5
  16. package/esm2022/devkit/rules-engine-devtools.message.service.mjs +3 -3
  17. package/esm2022/devkit/rules-engine-devtools.module.mjs +4 -4
  18. package/esm2022/devkit/rules-engine-devtools.service.mjs +5 -5
  19. package/esm2022/engine/engine.interface.mjs +1 -1
  20. package/esm2022/engine/ruleset-executor.mjs +2 -1
  21. package/esm2022/engine/structure.mjs +1 -1
  22. package/esm2022/services/runner/rules-engine.runner.module.mjs +4 -4
  23. package/esm2022/services/runner/rules-engine.runner.service.mjs +6 -11
  24. package/esm2022/stores/rulesets/rulesets.effect.mjs +3 -3
  25. package/esm2022/stores/rulesets/rulesets.module.mjs +4 -4
  26. package/esm2022/stores/rulesets/rulesets.selectors.mjs +47 -6
  27. package/fesm2022/o3r-rules-engine.mjs +104 -67
  28. package/fesm2022/o3r-rules-engine.mjs.map +1 -1
  29. package/package.json +8 -8
  30. package/schemas/rulesets.schema.json +32 -13
  31. package/services/runner/rules-engine.runner.service.d.ts.map +1 -1
  32. package/stores/rulesets/rulesets.selectors.d.ts +13 -0
  33. package/stores/rulesets/rulesets.selectors.d.ts.map +1 -1
@@ -52,7 +52,7 @@ export declare class RulesEngineDevtoolsConsoleService implements DevtoolsServic
52
52
  /** Get the list of fact names and corresponding values */
53
53
  getAllFactsSnapshot(): Promise<void>;
54
54
  /**
55
- * Retrieve the ruleset information (rules, linkedComponent, validity range etc.) for a ruleset id
55
+ * Retrieve the ruleset information (rules, linkedComponents, validity range etc.) for a ruleset id
56
56
  * @param rulesetId
57
57
  */
58
58
  getRulesetInformation(rulesetId: string): Promise<void>;
@@ -68,7 +68,7 @@ export declare class OtterRulesEngineDevtools {
68
68
  value: any;
69
69
  }[]> | undefined;
70
70
  /**
71
- * Retrieve the ruleset information (rules, linkedComponent, validity range etc.) for a ruleset id
71
+ * Retrieve the ruleset information (rules, linkedComponents, validity range etc.) for a ruleset id
72
72
  * @param rulesetId
73
73
  */
74
74
  getRulesetInformation(rulesetId: string): Promise<Ruleset | undefined>;
@@ -64,7 +64,21 @@ export interface EngineRuleset {
64
64
  from?: string | number;
65
65
  to?: string | number;
66
66
  };
67
- /** Component linked to the ruleset, if set it will disable the ruleset execution per default, waiting to a subscription */
67
+ /**
68
+ * Components linked to the ruleset. If present the ruleset will not be active by default.
69
+ * 'or' condition: If at least one component has subscribed, the ruleset will become active.
70
+ * If present, the {@link linkedComponent} property will not be taken into consideration
71
+ */
72
+ linkedComponents?: {
73
+ or: {
74
+ library: string;
75
+ name: string;
76
+ }[];
77
+ };
78
+ /**
79
+ * Component linked to the ruleset, if set it will disable the ruleset execution per default, waiting to a subscription
80
+ * @deprecated It will be removed in v12, use {@link linkedComponents} instead
81
+ */
68
82
  linkedComponent?: {
69
83
  library: string;
70
84
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"engine.interface.d.ts","sourceRoot":"","sources":["../../src/engine/engine.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEzD,sFAAsF;AACtF,MAAM,MAAM,wBAAwB,GAAG;IACrC,4BAA4B;IAC5B,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,KAAK,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC;IACxF,+BAA+B;IAC/B,OAAO,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,qBAAqB,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC;CAC/H,CAAC;AAEF,yDAAyD;AACzD,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,6BAA6B;IAC7B,OAAO,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IACpD,+BAA+B;IAC/B,MAAM,EAAE,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;CACnC;AAED,sCAAsC;AACtC,MAAM,WAAW,kBAAkB;IACjC,oBAAoB;IACpB,KAAK,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;IAEtB,oBAAoB;IACpB,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;IAElB,+BAA+B;IAC/B,SAAS,CAAC,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;IAEjC,gDAAgD;IAChD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;OAGG;IACH,4BAA4B,CAAC,EAAE,OAAO,CAAC;IAEvC;;OAEG;IACH,QAAQ,CAAC,EAAE,cAAc,CAAC;IAE1B;;;OAGG;IACH,WAAW,CAAC,EAAE,wBAAwB,CAAC;IAEvC;;;OAGG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,yCAAyC;AACzC,MAAM,WAAW,UAAW,SAAQ,IAAI;IACtC,2CAA2C;IAC3C,OAAO,EAAE,eAAe,CAAC,WAAW,EAAE,CAAC,CAAC;CACzC;AAED,yCAAyC;AACzC,MAAM,WAAW,aAAa;IAC5B,8JAA8J;IAC9J,aAAa,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IACjE,2HAA2H;IAC3H,eAAe,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACpD,8BAA8B;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,uDAAuD;IACvD,oBAAoB,EAAE,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;CACjD;AACD,+CAA+C;AAC/C,MAAM,WAAW,UAAU;IACzB,4CAA4C;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,gCAAgC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,6EAA6E;AAC7E,MAAM,WAAW,gBAAgB;IAC/B,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,KAAK,CAAC;CAClB;AAED,6DAA6D;AAC7D,MAAM,WAAW,cAAe,SAAQ,UAAU;IAChD,8DAA8D;IAC9D,EAAE,EAAE,MAAM,CAAC;IACX,gCAAgC;IAChC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC;IAChC,8CAA8C;IAC9C,aAAa,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;IACzC,sEAAsE;IACtE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAC3D,sDAAsD;IACtD,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,+DAA+D;IAC/D,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACvC,iFAAiF;IACjF,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,qCAAqC;AACrC,MAAM,WAAW,oBAAoB;IACnC,oDAAoD;IACpD,OAAO,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;IACnC,oCAAoC;IACpC,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,iEAAiE;IACjE,KAAK,CAAC,EAAE,GAAG,CAAC;CACb;AAED,8DAA8D;AAC9D,MAAM,WAAW,oBAAoB;IACnC,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,gBAAgB,EAAE,MAAM,CAAC;IACzB,4CAA4C;IAC5C,UAAU,EAAE;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAC,EAAE,CAAC;IAC/C,4CAA4C;IAC5C,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACvC,gEAAgE;IAChE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAC3D,uDAAuD;IACvD,gBAAgB,EAAE,cAAc,EAAE,CAAC;CACpC;AAED,kEAAkE;AAClE,MAAM,WAAW,qBAAsB,SAAQ,oBAAoB,EAAE,UAAU;IAC7E,iBAAiB;IACjB,IAAI,EAAE,kBAAkB,CAAC;IACzB,kEAAkE;IAClE,aAAa,EAAE,WAAW,EAAE,CAAC;CAC9B;AAED,+DAA+D;AAC/D,MAAM,WAAW,0BAA2B,SAAQ,oBAAoB,EAAE,UAAU;IAClF,iBAAiB;IACjB,IAAI,EAAE,uBAAuB,CAAC;IAC9B,+CAA+C;IAC/C,oBAAoB,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;IAClD,+BAA+B;IAC/B,MAAM,EAAE,GAAG,EAAE,CAAC;CACf;AAED,4DAA4D;AAC5D,MAAM,WAAW,mBAAoB,SAAQ,UAAU;IACrD,iBAAiB;IACjB,IAAI,EAAE,gBAAgB,CAAC;IACvB,8BAA8B;IAC9B,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;CAC1C;AAED,+EAA+E;AAC/E,MAAM,WAAW,eAAgB,SAAQ,UAAU;IACjD,iBAAiB;IACjB,IAAI,EAAE,YAAY,CAAC;IACnB,8BAA8B;IAC9B,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB;AAED,4EAA4E;AAC5E,MAAM,WAAW,iBAAkB,SAAQ,UAAU;IACnD,iBAAiB;IACjB,IAAI,EAAE,mBAAmB,CAAC;IAC1B,+BAA+B;IAC/B,iBAAiB,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;CACnD;AAED,2DAA2D;AAC3D,MAAM,MAAM,UAAU,GAAG,qBAAqB,GAAG,0BAA0B,GAAG,mBAAmB,GAAG,eAAe,GAAG,iBAAiB,CAAC"}
1
+ {"version":3,"file":"engine.interface.d.ts","sourceRoot":"","sources":["../../src/engine/engine.interface.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ruleset-executor.d.ts","sourceRoot":"","sources":["../../src/engine/ruleset-executor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiB,UAAU,EAAM,MAAM,MAAM,CAAC;AAGrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,aAAa,EAA0D,MAAM,oBAAoB,CAAC;AAE3G,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AASzD,OAAO,EACL,WAAW,EACX,2BAA2B,EAC3B,QAAQ,EACR,cAAc,EACd,WAAW,EACX,eAAe,EACf,IAAI,EACJ,OAAO,EACR,MAAM,aAAa,CAAC;AAErB,yCAAyC;AACzC,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,GAAG,OAAO,EAAG,EAAE,EAAE,MAAM,KAAK,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;AAE3F,qBAAa,eAAe;IAE1B,uBAAuB;IACvB,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAE5C,iCAAiC;IACjC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAEzE,gDAAgD;IAChD,SAAgB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1C,gDAAgD;IAChD,SAAgB,OAAO,EAAE,OAAO,CAAC;IAEjC,8EAA8E;IAC9E,SAAgB,aAAa,EAAE,aAAa,CAAC;IAE7C,OAAO,CAAC,gBAAgB,CAAK;IAE7B;;;;OAIG;gBACS,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW;IAOtD;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;IAmB7B;;;;OAIG;IACH,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAG,KAAK;IAU7D;;;;;OAKG;IACH,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,cAAc,GAAG,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,SAAS,CAAC,EAAE,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,OAAO;IAehK;;;;;;;;OAQG;IACH,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,SAAS,CAAC,EAAE,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;IAI1H;;;;;;;;OAQG;IACH,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,SAAS,CAAC,EAAE,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAE,WAAW,EAAO;IAc/J;;;;OAIG;IACH,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,IAAI,WAAW;IAIlE;;;;OAIG;IACH,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,IAAI,WAAW;IAIlE;;;;OAIG;IACH,SAAS,CAAC,6BAA6B,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,IAAI,2BAA2B;IAIrG;;;;;;OAMG;IACH,SAAS,CAAC,iBAAiB,CAAC,eAAe,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,SAAS,CAAC,EAAE,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,OAAO;IAoB/J;;OAEG;IACH,SAAS,CAAC,WAAW;CAyGtB"}
1
+ {"version":3,"file":"ruleset-executor.d.ts","sourceRoot":"","sources":["../../src/engine/ruleset-executor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiB,UAAU,EAAM,MAAM,MAAM,CAAC;AAGrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,aAAa,EAA0D,MAAM,oBAAoB,CAAC;AAE3G,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AASzD,OAAO,EACL,WAAW,EACX,2BAA2B,EAC3B,QAAQ,EACR,cAAc,EACd,WAAW,EACX,eAAe,EACf,IAAI,EACJ,OAAO,EACR,MAAM,aAAa,CAAC;AAErB,yCAAyC;AACzC,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,GAAG,OAAO,EAAG,EAAE,EAAE,MAAM,KAAK,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;AAE3F,qBAAa,eAAe;IAE1B,uBAAuB;IACvB,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAE5C,iCAAiC;IACjC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAEzE,gDAAgD;IAChD,SAAgB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1C,gDAAgD;IAChD,SAAgB,OAAO,EAAE,OAAO,CAAC;IAEjC,8EAA8E;IAC9E,SAAgB,aAAa,EAAE,aAAa,CAAC;IAE7C,OAAO,CAAC,gBAAgB,CAAK;IAE7B;;;;OAIG;gBACS,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW;IAOtD;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;IAmB7B;;;;OAIG;IACH,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAG,KAAK;IAU7D;;;;;OAKG;IACH,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,cAAc,GAAG,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,SAAS,CAAC,EAAE,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,OAAO;IAehK;;;;;;;;OAQG;IACH,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,SAAS,CAAC,EAAE,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;IAI1H;;;;;;;;OAQG;IACH,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,SAAS,CAAC,EAAE,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAE,WAAW,EAAO;IAc/J;;;;OAIG;IACH,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,IAAI,WAAW;IAIlE;;;;OAIG;IACH,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,IAAI,WAAW;IAIlE;;;;OAIG;IACH,SAAS,CAAC,6BAA6B,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,IAAI,2BAA2B;IAIrG;;;;;;OAMG;IACH,SAAS,CAAC,iBAAiB,CAAC,eAAe,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,SAAS,CAAC,EAAE,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,OAAO;IAoB/J;;OAEG;IACH,SAAS,CAAC,WAAW;CA0GtB"}
@@ -126,7 +126,21 @@ export interface Ruleset {
126
126
  from?: string;
127
127
  to?: string;
128
128
  };
129
- /** Component linked to the ruleset, if set it will disable the ruleset execution per default, waiting to a subscription */
129
+ /**
130
+ * Components linked to the ruleset. If present the ruleset will not be active by default.
131
+ * 'or' condition: If at least one component has subscribed, the ruleset will become active.
132
+ * If provided, the {@link linkedComponent} property will not be taken into consideration
133
+ */
134
+ linkedComponents?: {
135
+ or: {
136
+ library: string;
137
+ name: string;
138
+ }[];
139
+ };
140
+ /**
141
+ * Component linked to the ruleset, if set it will disable the ruleset execution per default, waiting to a subscription
142
+ * @deprecated It will be removed in v12, use {@link linkedComponents} instead
143
+ */
130
144
  linkedComponent?: {
131
145
  library: string;
132
146
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"structure.d.ts","sourceRoot":"","sources":["../../src/engine/structure.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"structure.d.ts","sourceRoot":"","sources":["../../src/engine/structure.ts"],"names":[],"mappings":"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"}
@@ -19,10 +19,10 @@ export class RuleActionsPresComponent {
19
19
  */
20
20
  this.runtimeOutputs = [];
21
21
  }
22
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RuleActionsPresComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
23
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: RuleActionsPresComponent, selector: "o3r-rule-actions-pres", inputs: { actions: "actions", temporaryFacts: "temporaryFacts", runtimeOutputs: "runtimeOutputs" }, ngImport: i0, template: "<div class=\"ruleset-panel-category-title\">Output Actions</div>\n<div *ngIf=\"actions.length === 0 && runtimeOutputs.length === 0\" class=\"ruleset-panel-category-body empty\">\n No action\n</div>\n<ul class=\"ruleset-panel-category-body\">\n <li *ngFor=\"let action of actions\">\n <ng-container *ngIf=\"action.actionType\">\n <ng-container [ngSwitch]=\"action.actionType\">\n <div *ngSwitchCase=\"'SET_FACT'\">\n <div>Set Fact</div>\n <div>\n <o3r-rule-key-value-pres\n [key]=\"action.fact | o3rFallbackTo: 'Missing \\'fact\\''\"\n [value]=\"action.value | o3rFallbackTo\"\n [type]=\"'assignment'\"></o3r-rule-key-value-pres>\n </div>\n </div>\n <div *ngSwitchCase=\"'UPDATE_CONFIG'\">\n <div>Update Config {{action.component}} {{action.library}}</div>\n <div>\n <o3r-rule-key-value-pres\n [key]=\"action.property | o3rFallbackTo: 'Missing \\'property\\''\"\n [value]=\"action.value | o3rFallbackTo\"\n [type]=\"'assignment'\"></o3r-rule-key-value-pres>\n </div>\n </div>\n <div *ngSwitchCase=\"'UPDATE_ASSET'\">\n <div>Update Asset:</div>\n <div>\n <o3r-rule-key-value-pres\n [oldValue]=\"action.asset | o3rFallbackTo: 'Missing \\'asset\\''\"\n [value]=\"action.value | o3rFallbackTo\"\n [type]=\"'state'\"></o3r-rule-key-value-pres>\n </div>\n </div>\n <div *ngSwitchCase=\"'UPDATE_LOCALISATION'\">\n <div>Update localization:</div>\n <div>\n <o3r-rule-key-value-pres\n [oldValue]=\"action.key | o3rFallbackTo: 'Missing \\'key\\''\"\n [value]=\"action.value | o3rFallbackTo\"\n [type]=\"'state'\"></o3r-rule-key-value-pres>\n </div>\n </div>\n <div\n *ngSwitchCase=\"'UPDATE_PLACEHOLDER'\"\n [class.error]=\"!action.placeholderId\">\n <div>Update placeholder in {{action.component}} {{action.library}}</div>\n <div>\n <o3r-rule-key-value-pres\n [oldValue]=\"action.placeholderId | o3rFallbackTo: 'Missing \\'placeholderId\\''\"\n [value]=\"action.value\"\n [type]=\"'state'\"></o3r-rule-key-value-pres>\n </div>\n </div>\n <div *ngSwitchDefault class=\"error\">\n <div>Unrecognized action</div>\n <div>{{action | json}}</div>\n </div>\n </ng-container>\n </ng-container>\n </li>\n <li *ngFor=\"let runtimeOutput of runtimeOutputs\">\n <div>Set temporary fact</div>\n <div>\n <o3r-rule-key-value-pres\n [key]=\"runtimeOutput | o3rFallbackTo: 'Missing \\'fact\\''\"\n [value]=\"temporaryFacts[runtimeOutput] | o3rFallbackTo\"\n [type]=\"'assignment'\"></o3r-rule-key-value-pres>\n </div>\n </li>\n</ul>\n", styles: ["o3r-rule-actions-pres .ruleset-panel-title,o3r-rule-actions-pres .ruleset-panel-category-title{display:flex;justify-content:space-between;align-items:center}o3r-rule-actions-pres .ruleset-panel-title{font-size:1rem;padding:.5rem 0 .1rem}o3r-rule-actions-pres .ruleset-expansion-action,o3r-rule-actions-pres .icon-caret-down,o3r-rule-actions-pres .icon-caret-up{cursor:pointer}o3r-rule-actions-pres .ruleset-panel-subtitle{font-size:.75rem}o3r-rule-actions-pres .ruleset-panel-title-aside{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;min-width:fit-content}o3r-rule-actions-pres .ruleset-panel-category-title{font-size:.95rem;background:#eee;padding:.5rem;margin-bottom:.5rem;margin-top:1rem}o3r-rule-actions-pres .rule-description .ruleset-panel-category-title{font-size:.893rem;cursor:default}o3r-rule-actions-pres .rule-description .ruleset-panel-title{font-size:.94rem}o3r-rule-actions-pres .rule-description .ruleset-panel-category-body{padding-bottom:.5rem;padding-left:1.5rem}o3r-rule-actions-pres .rule-description .ruleset-panel-category-body:empty{margin:0;padding:0 0 0 1.5rem}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i2.RuleKeyValuePresComponent, selector: "o3r-rule-key-value-pres", inputs: ["key", "value", "oldValue", "type"] }, { kind: "pipe", type: i3.O3rFallbackToPipe, name: "o3rFallbackTo" }, { kind: "pipe", type: i1.JsonPipe, name: "json" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
22
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: RuleActionsPresComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
23
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.6", type: RuleActionsPresComponent, selector: "o3r-rule-actions-pres", inputs: { actions: "actions", temporaryFacts: "temporaryFacts", runtimeOutputs: "runtimeOutputs" }, ngImport: i0, template: "<div class=\"ruleset-panel-category-title\">Output Actions</div>\n<div *ngIf=\"actions.length === 0 && runtimeOutputs.length === 0\" class=\"ruleset-panel-category-body empty\">\n No action\n</div>\n<ul class=\"ruleset-panel-category-body\">\n <li *ngFor=\"let action of actions\">\n <ng-container *ngIf=\"action.actionType\">\n <ng-container [ngSwitch]=\"action.actionType\">\n <div *ngSwitchCase=\"'SET_FACT'\">\n <div>Set Fact</div>\n <div>\n <o3r-rule-key-value-pres\n [key]=\"action.fact | o3rFallbackTo: 'Missing \\'fact\\''\"\n [value]=\"action.value | o3rFallbackTo\"\n [type]=\"'assignment'\"></o3r-rule-key-value-pres>\n </div>\n </div>\n <div *ngSwitchCase=\"'UPDATE_CONFIG'\">\n <div>Update Config {{action.component}} {{action.library}}</div>\n <div>\n <o3r-rule-key-value-pres\n [key]=\"action.property | o3rFallbackTo: 'Missing \\'property\\''\"\n [value]=\"action.value | o3rFallbackTo\"\n [type]=\"'assignment'\"></o3r-rule-key-value-pres>\n </div>\n </div>\n <div *ngSwitchCase=\"'UPDATE_ASSET'\">\n <div>Update Asset:</div>\n <div>\n <o3r-rule-key-value-pres\n [oldValue]=\"action.asset | o3rFallbackTo: 'Missing \\'asset\\''\"\n [value]=\"action.value | o3rFallbackTo\"\n [type]=\"'state'\"></o3r-rule-key-value-pres>\n </div>\n </div>\n <div *ngSwitchCase=\"'UPDATE_LOCALISATION'\">\n <div>Update localization:</div>\n <div>\n <o3r-rule-key-value-pres\n [oldValue]=\"action.key | o3rFallbackTo: 'Missing \\'key\\''\"\n [value]=\"action.value | o3rFallbackTo\"\n [type]=\"'state'\"></o3r-rule-key-value-pres>\n </div>\n </div>\n <div\n *ngSwitchCase=\"'UPDATE_PLACEHOLDER'\"\n [class.error]=\"!action.placeholderId\">\n <div>Update placeholder in {{action.component}} {{action.library}}</div>\n <div>\n <o3r-rule-key-value-pres\n [oldValue]=\"action.placeholderId | o3rFallbackTo: 'Missing \\'placeholderId\\''\"\n [value]=\"action.value\"\n [type]=\"'state'\"></o3r-rule-key-value-pres>\n </div>\n </div>\n <div *ngSwitchDefault class=\"error\">\n <div>Unrecognized action</div>\n <div>{{action | json}}</div>\n </div>\n </ng-container>\n </ng-container>\n </li>\n <li *ngFor=\"let runtimeOutput of runtimeOutputs\">\n <div>Set temporary fact</div>\n <div>\n <o3r-rule-key-value-pres\n [key]=\"runtimeOutput | o3rFallbackTo: 'Missing \\'fact\\''\"\n [value]=\"temporaryFacts[runtimeOutput] | o3rFallbackTo\"\n [type]=\"'assignment'\"></o3r-rule-key-value-pres>\n </div>\n </li>\n</ul>\n", styles: ["o3r-rule-actions-pres .ruleset-panel-title,o3r-rule-actions-pres .ruleset-panel-category-title{display:flex;justify-content:space-between;align-items:center}o3r-rule-actions-pres .ruleset-panel-title{font-size:1rem;padding:.5rem 0 .1rem}o3r-rule-actions-pres .ruleset-expansion-action,o3r-rule-actions-pres .icon-caret-down,o3r-rule-actions-pres .icon-caret-up{cursor:pointer}o3r-rule-actions-pres .ruleset-panel-subtitle{font-size:.75rem}o3r-rule-actions-pres .ruleset-panel-title-aside{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;min-width:fit-content}o3r-rule-actions-pres .ruleset-panel-category-title{font-size:.95rem;background:#eee;padding:.5rem;margin-bottom:.5rem;margin-top:1rem}o3r-rule-actions-pres .rule-description .ruleset-panel-category-title{font-size:.893rem;cursor:default}o3r-rule-actions-pres .rule-description .ruleset-panel-title{font-size:.94rem}o3r-rule-actions-pres .rule-description .ruleset-panel-category-body{padding-bottom:.5rem;padding-left:1.5rem}o3r-rule-actions-pres .rule-description .ruleset-panel-category-body:empty{margin:0;padding:0 0 0 1.5rem}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i2.RuleKeyValuePresComponent, selector: "o3r-rule-key-value-pres", inputs: ["key", "value", "oldValue", "type"] }, { kind: "pipe", type: i3.O3rFallbackToPipe, name: "o3rFallbackTo" }, { kind: "pipe", type: i1.JsonPipe, name: "json" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
24
24
  }
25
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RuleActionsPresComponent, decorators: [{
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: RuleActionsPresComponent, decorators: [{
26
26
  type: Component,
27
27
  args: [{ selector: 'o3r-rule-actions-pres', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"ruleset-panel-category-title\">Output Actions</div>\n<div *ngIf=\"actions.length === 0 && runtimeOutputs.length === 0\" class=\"ruleset-panel-category-body empty\">\n No action\n</div>\n<ul class=\"ruleset-panel-category-body\">\n <li *ngFor=\"let action of actions\">\n <ng-container *ngIf=\"action.actionType\">\n <ng-container [ngSwitch]=\"action.actionType\">\n <div *ngSwitchCase=\"'SET_FACT'\">\n <div>Set Fact</div>\n <div>\n <o3r-rule-key-value-pres\n [key]=\"action.fact | o3rFallbackTo: 'Missing \\'fact\\''\"\n [value]=\"action.value | o3rFallbackTo\"\n [type]=\"'assignment'\"></o3r-rule-key-value-pres>\n </div>\n </div>\n <div *ngSwitchCase=\"'UPDATE_CONFIG'\">\n <div>Update Config {{action.component}} {{action.library}}</div>\n <div>\n <o3r-rule-key-value-pres\n [key]=\"action.property | o3rFallbackTo: 'Missing \\'property\\''\"\n [value]=\"action.value | o3rFallbackTo\"\n [type]=\"'assignment'\"></o3r-rule-key-value-pres>\n </div>\n </div>\n <div *ngSwitchCase=\"'UPDATE_ASSET'\">\n <div>Update Asset:</div>\n <div>\n <o3r-rule-key-value-pres\n [oldValue]=\"action.asset | o3rFallbackTo: 'Missing \\'asset\\''\"\n [value]=\"action.value | o3rFallbackTo\"\n [type]=\"'state'\"></o3r-rule-key-value-pres>\n </div>\n </div>\n <div *ngSwitchCase=\"'UPDATE_LOCALISATION'\">\n <div>Update localization:</div>\n <div>\n <o3r-rule-key-value-pres\n [oldValue]=\"action.key | o3rFallbackTo: 'Missing \\'key\\''\"\n [value]=\"action.value | o3rFallbackTo\"\n [type]=\"'state'\"></o3r-rule-key-value-pres>\n </div>\n </div>\n <div\n *ngSwitchCase=\"'UPDATE_PLACEHOLDER'\"\n [class.error]=\"!action.placeholderId\">\n <div>Update placeholder in {{action.component}} {{action.library}}</div>\n <div>\n <o3r-rule-key-value-pres\n [oldValue]=\"action.placeholderId | o3rFallbackTo: 'Missing \\'placeholderId\\''\"\n [value]=\"action.value\"\n [type]=\"'state'\"></o3r-rule-key-value-pres>\n </div>\n </div>\n <div *ngSwitchDefault class=\"error\">\n <div>Unrecognized action</div>\n <div>{{action | json}}</div>\n </div>\n </ng-container>\n </ng-container>\n </li>\n <li *ngFor=\"let runtimeOutput of runtimeOutputs\">\n <div>Set temporary fact</div>\n <div>\n <o3r-rule-key-value-pres\n [key]=\"runtimeOutput | o3rFallbackTo: 'Missing \\'fact\\''\"\n [value]=\"temporaryFacts[runtimeOutput] | o3rFallbackTo\"\n [type]=\"'assignment'\"></o3r-rule-key-value-pres>\n </div>\n </li>\n</ul>\n", styles: ["o3r-rule-actions-pres .ruleset-panel-title,o3r-rule-actions-pres .ruleset-panel-category-title{display:flex;justify-content:space-between;align-items:center}o3r-rule-actions-pres .ruleset-panel-title{font-size:1rem;padding:.5rem 0 .1rem}o3r-rule-actions-pres .ruleset-expansion-action,o3r-rule-actions-pres .icon-caret-down,o3r-rule-actions-pres .icon-caret-up{cursor:pointer}o3r-rule-actions-pres .ruleset-panel-subtitle{font-size:.75rem}o3r-rule-actions-pres .ruleset-panel-title-aside{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;min-width:fit-content}o3r-rule-actions-pres .ruleset-panel-category-title{font-size:.95rem;background:#eee;padding:.5rem;margin-bottom:.5rem;margin-top:1rem}o3r-rule-actions-pres .rule-description .ruleset-panel-category-title{font-size:.893rem;cursor:default}o3r-rule-actions-pres .rule-description .ruleset-panel-title{font-size:.94rem}o3r-rule-actions-pres .rule-description .ruleset-panel-category-body{padding-bottom:.5rem;padding-left:1.5rem}o3r-rule-actions-pres .rule-description .ruleset-panel-category-body:empty{margin:0;padding:0 0 0 1.5rem}\n"] }]
28
28
  }], propDecorators: { actions: [{
@@ -25,10 +25,10 @@ export class RuleConditionPresComponent {
25
25
  const value = `${operand.value ?? 'MISSING_VALUE'}`;
26
26
  return operand.path ? operand.path.replace(/^[$]/, value) : value;
27
27
  }
28
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RuleConditionPresComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
29
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", 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 }); }
28
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: RuleConditionPresComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
29
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.6", 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 }); }
30
30
  }
31
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RuleConditionPresComponent, decorators: [{
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: RuleConditionPresComponent, decorators: [{
32
32
  type: Component,
33
33
  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"] }]
34
34
  }], propDecorators: { condition: [{
@@ -45,10 +45,10 @@ export class RuleKeyValuePresComponent {
45
45
  await navigator.clipboard.writeText(content);
46
46
  this.triggerNotification.next();
47
47
  }
48
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RuleKeyValuePresComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
49
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", 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\">{{isOldValuePrimitiveType ? oldValue : (oldValue | json)}}</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\">{{isValuePrimitiveType ? value : (value | json)}}</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 }); }
48
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: RuleKeyValuePresComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
49
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.6", 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\">{{isOldValuePrimitiveType ? oldValue : (oldValue | json)}}</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\">{{isValuePrimitiveType ? value : (value | json)}}</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
50
  }
51
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RuleKeyValuePresComponent, decorators: [{
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: RuleKeyValuePresComponent, decorators: [{
52
52
  type: Component,
53
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\">{{isOldValuePrimitiveType ? oldValue : (oldValue | json)}}</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\">{{isValuePrimitiveType ? value : (value | json)}}</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
54
  }], propDecorators: { key: [{
@@ -28,10 +28,10 @@ export class RuleTreePresComponent {
28
28
  */
29
29
  this.successActionsExpanded = false;
30
30
  }
31
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RuleTreePresComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
32
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", 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 }); }
31
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: RuleTreePresComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
32
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.6", 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
33
  }
34
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RuleTreePresComponent, decorators: [{
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: RuleTreePresComponent, decorators: [{
35
35
  type: Component,
36
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
37
  }], propDecorators: { name: [{
@@ -35,15 +35,15 @@ export class RulesetHistoryPresComponent {
35
35
  }
36
36
  this.cd.detectChanges();
37
37
  }
38
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RulesetHistoryPresComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
39
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: RulesetHistoryPresComponent, selector: "o3r-ruleset-history-pres", inputs: { rulesetExecutions: "rulesetExecutions", executionDurationFormat: "executionDurationFormat" }, ngImport: i0, template: "<section>\n <h4 class=\"mb-4\">Ruleset Execution History</h4>\n <ng-template #noRulesEngine>\n <div class=\"alert alert-danger m-2\" role=\"alert\">\n The Rules Engine is not configured on this page.\n </div>\n </ng-template>\n <ul *ngIf=\"rulesetExecutions; else noRulesEngine\" class=\"rulesets\">\n <li *ngFor=\"let execution of rulesetExecutions\" class=\"ruleset\">\n <div class=\"ruleset-panel-title ruleset-expansion-action\"\n [class.error]=\"execution.type === 'RulesetExecutionError'\"\n (click)=\"toggleExpansion(execution.executionId, 'ruleset')\">\n <div><span [title]=\"'This ruleset has been evaluated ' + execution.executionCounter + ' time(s)'\">{{execution.executionCounter}}</span> - {{execution.rulesetName | titlecase }}\n <div class=\"ruleset-panel-subtitle\" *ngIf=\"execution.rulesetInformation?.linkedComponent as linkedComponent\">\n {{linkedComponent.name}} {{linkedComponent.library}}\n </div>\n <div class=\"ruleset-panel-subtitle\" *ngIf=\"execution.rulesetInformation?.validityRange as validityRange\">\n Date range: {{validityRange.from}} - {{validityRange.to}}\n </div>\n </div>\n <div class=\"ruleset-panel-title-aside\">\n <span class=\"error capsule\" *ngIf=\"execution.status === 'Error'\">Error</span>\n <span class=\"success capsule\" *ngIf=\"execution.status === 'Active'\">Applied</span>\n <span class=\"inactive capsule\" *ngIf=\"execution.status === 'Deactivated'\">Deactivated</span>\n <span class=\"warn capsule\" *ngIf=\"execution.status === 'NoEffect'\">No effect</span>\n <span class=\"time capsule\">\n <span>{{execution.timestamp | date: 'HH:mm:ss SSS'}}</span>\n <span>({{execution.duration | number: executionDurationFormat}}ms)</span>\n </span>\n <button\n class=\"icon\"\n [class.icon-caret-down]=\"!expansionStatus[execution.executionId]?.ruleset\"\n [class.icon-caret-up]=\"expansionStatus[execution.executionId]?.ruleset\">\n </button>\n </div>\n </div>\n <div class=\"ruleset-panel-description\" *ngIf=\"expansionStatus[execution.executionId]?.ruleset\">\n <ng-container [ngTemplateOutlet]=\"rules\"\n [ngTemplateOutletContext]=\"{\n rules: execution.rulesetInformation.rules,\n expansionID: execution.executionId\n }\"></ng-container>\n <ng-container [ngTemplateOutlet]=\"inputs\"\n [ngTemplateOutletContext]=\"{\n inputs: execution.inputFacts\n }\"></ng-container>\n <ng-container *ngIf=\"execution.type === 'RulesetExecutionError'; else success\">\n <div class=\"ruleset-panel-category-title\">Rules:</div>\n <ul class=\"ruleset-panel-category-body rule-description\">\n <li *ngFor=\"let ruleEvaluation of execution.rulesEvaluations; let index=index;\">\n <ng-container>\n <div class=\"ruleset-panel-title\" [class.error]=\"ruleEvaluation.error\">\n <span>{{ruleEvaluation.rule.name | titlecase}} </span>\n <span class=\"capsule error\" *ngIf=\"ruleEvaluation.error\">Error</span>\n </div>\n <div>\n <ng-container *ngIf=\"ruleEvaluation.error\">\n <span class=\"ruleset-panel-category-title\">Error:</span>\n <pre class=\"ruleset-panel-category-body error\">{{ruleEvaluation.error | json}}</pre>\n </ng-container>\n <ng-container [ngTemplateOutlet]=\"inputs\"\n [ngTemplateOutletContext]=\"{\n inputs: execution.inputFacts,\n runtimeInputs: execution.rulesetInformation?.rules[index]?.inputRuntimeFacts\n }\"></ng-container>\n <o3r-rule-actions-pres *ngIf=\"!ruleEvaluation.error\"\n [temporaryFacts]=\"ruleEvaluation.temporaryFacts\"\n [runtimeOutputs]=\"execution.rulesetInformation?.rules[index]?.outputRuntimeFacts\"\n ></o3r-rule-actions-pres>\n </div>\n </ng-container>\n </li>\n </ul>\n </ng-container>\n <ng-template #success>\n <o3r-rule-actions-pres [actions]=\"execution.outputActions\"></o3r-rule-actions-pres>\n <div class=\"ruleset-panel-category-title\">Executed Rules</div>\n <ul class=\"rule-description ruleset-panel-category-body\">\n <li *ngFor=\"let ruleEvaluation of execution.rulesEvaluations; let index=index;\">\n <div class=\"ruleset-panel-title\">\n <span>{{ruleEvaluation.rule.name | titlecase}}</span>\n <span class=\"capsule inactive\" *ngIf=\"ruleEvaluation.cached\">Cached</span>\n <span class=\"capsule\">({{ruleEvaluation.duration | number: executionDurationFormat}}ms)</span>\n </div>\n <div>\n <ng-container [ngTemplateOutlet]=\"triggers\"\n [ngTemplateOutletContext]=\"{triggers: (ruleEvaluation.triggers[ruleEvaluation.rule.id])}\"></ng-container>\n <o3r-rule-actions-pres\n [actions]=\"ruleEvaluation.outputActions\"\n [temporaryFacts]=\"ruleEvaluation.temporaryFacts\"\n [runtimeOutputs]=\"execution.rulesetInformation?.rules[index]?.outputRuntimeFacts\">\n </o3r-rule-actions-pres>\n </div>\n </li>\n </ul>\n </ng-template>\n </div>\n </li>\n </ul>\n</section>\n\n<ng-template let-triggers=\"triggers\" #triggers>\n <div class=\"ruleset-panel-category-title\">Basefacts Triggers</div>\n <ul class=\"ruleset-panel-category-body triggers\">\n <ng-container *ngFor=\"let trigger of (triggers | keyvalue)\">\n <li *ngIf=\"trigger.value?.factName\">\n <o3r-rule-key-value-pres\n [key]=\"trigger.value.factName\"\n [oldValue]=\"trigger.value.oldValue | o3rFallbackTo\"\n [value]=\"trigger.value.newValue | o3rFallbackTo\"\n [type]=\"'state'\"></o3r-rule-key-value-pres>\n </li>\n </ng-container>\n </ul>\n</ng-template>\n\n<ng-template let-rules=\"rules\" let-expansionID=\"expansionID\" #rules>\n <div class=\"ruleset-panel-category-title ruleset-expansion-action\"\n (click)=\"toggleExpansion(expansionID, 'rulesOverview')\">\n <span>Rules Overview</span>\n <button class=\"icon\"\n [class.icon-caret-down]=\"!expansionStatus[expansionID]?.rulesOverview\"\n [class.icon-caret-up]=\"expansionStatus[expansionID]?.rulesOverview\">\n </button>\n </div>\n <ng-container *ngIf=\"expansionStatus[expansionID]?.rulesOverview\">\n <div *ngIf=\"rules?.length === 0\" class=\"ruleset-panel-category-body empty\">No rule</div>\n <ul class=\"ruleset-panel-category-body\" *ngIf=\"rules?.length > 0\">\n <li *ngFor=\"let rule of rules\">\n <o3r-rule-tree-pres [name]=\"rule.name\"\n [condition]=\"rule?.rootElement?.condition\"\n [blockType]=\"rule?.rootElement?.blockType\"\n [successElements]=\"rule?.rootElement?.successElements\"\n [failureElements]=\"rule?.rootElement?.failureElements\">\n </o3r-rule-tree-pres>\n </li>\n </ul>\n </ng-container>\n</ng-template>\n\n<ng-template let-inputs=\"inputs\" let-runtimeInputs=\"runtimeInputs\" #inputs>\n <div class=\"ruleset-panel-category-title\">Inputs snapshot</div>\n <div *ngIf=\"inputs?.length === 0\" class=\"ruleset-panel-category-body empty\">No inputs</div>\n <ul class=\"ruleset-panel-category-body\" *ngIf=\"inputs?.length > 0\">\n <li *ngFor=\"let input of inputs\">\n <o3r-rule-key-value-pres\n [key]=\"input.factName\"\n [value]=\"input.value | o3rFallbackTo\"\n [type]=\"'state'\"></o3r-rule-key-value-pres>\n </li>\n <li *ngFor=\"let input of runtimeInputs\">{{input}} (scope limited to ruleset)</li>\n </ul>\n</ng-template>\n", styles: ["o3r-ruleset-history-pres .ruleset-panel-title,o3r-ruleset-history-pres .ruleset-panel-category-title{display:flex;justify-content:space-between;align-items:center}o3r-ruleset-history-pres .ruleset-panel-title{font-size:1rem;padding:.5rem 0 .1rem}o3r-ruleset-history-pres .ruleset-expansion-action,o3r-ruleset-history-pres .icon-caret-down,o3r-ruleset-history-pres .icon-caret-up{cursor:pointer}o3r-ruleset-history-pres .ruleset-panel-subtitle{font-size:.75rem}o3r-ruleset-history-pres .ruleset-panel-title-aside{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;min-width:fit-content}o3r-ruleset-history-pres .ruleset-panel-category-title{font-size:.95rem;background:#eee;padding:.5rem;margin-bottom:.5rem;margin-top:1rem}o3r-ruleset-history-pres .rule-description .ruleset-panel-category-title{font-size:.893rem;cursor:default}o3r-ruleset-history-pres .rule-description .ruleset-panel-title{font-size:.94rem}o3r-ruleset-history-pres .rule-description .ruleset-panel-category-body{padding-bottom:.5rem;padding-left:1.5rem}o3r-ruleset-history-pres .rule-description .ruleset-panel-category-body:empty{margin:0;padding:0 0 0 1.5rem}o3r-ruleset-history-pres .rulesets{margin:0;padding:0;list-style:none}o3r-ruleset-history-pres .rulesets ul{margin:0;padding-left:2rem}o3r-ruleset-history-pres .rulesets li.ruleset:nth-child(odd){background:#fbfbfb}o3r-ruleset-history-pres .ruleset-panel-category-body li{list-style:disc}o3r-ruleset-history-pres li:empty{display:none}o3r-ruleset-history-pres .ruleset{border-bottom:1px solid #dddddd}o3r-ruleset-history-pres .ruleset .ruleset-panel-description{padding:0 1rem 0 2rem;margin-bottom:2em}o3r-ruleset-history-pres .ruleset:first-child{border-top:1px solid #dddddd}o3r-ruleset-history-pres .ruleset-panel-title.ruleset-expansion-action{padding:.5rem 1rem}o3r-ruleset-history-pres .empty{font-style:italic;padding-left:1.5rem}o3r-ruleset-history-pres .ruleset-panel-category-body:empty.triggers:after{content:\"No trigger for this rule\";display:block;font-style:italic;padding-bottom:.5rem}o3r-ruleset-history-pres .ruleset-panel-title-aside{padding-left:1rem}o3r-ruleset-history-pres .rule-description .capsule{font-size:.8em;padding:.1rem .5rem;margin:0 .5rem}o3r-ruleset-history-pres .icon{background:none;border:none;font-size:1em}o3r-ruleset-history-pres .capsule{padding:.3rem;margin:.5rem;font-size:.875em;min-width:6rem;text-align:center}o3r-ruleset-history-pres .capsule.time{display:flex;flex-direction:column}o3r-ruleset-history-pres .success{background-color:#16aa32;color:#fff}o3r-ruleset-history-pres .inactive{background-color:#aaa;color:#fff}o3r-ruleset-history-pres .error{color:#c02020}o3r-ruleset-history-pres .error .capsule.error{background-color:#c02020;color:#fff}o3r-ruleset-history-pres .warn{background-color:#b92;color:#fff}o3r-ruleset-history-pres .input-key{color:#26c}o3r-ruleset-history-pres .input-value{color:#c29}o3r-ruleset-history-pres .input-key,o3r-ruleset-history-pres .input-value{font-family:monospace}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.RuleTreePresComponent, selector: "o3r-rule-tree-pres", inputs: ["name", "blockType", "condition", "successElements", "failureElements"] }, { kind: "component", type: i3.RuleActionsPresComponent, selector: "o3r-rule-actions-pres", inputs: ["actions", "temporaryFacts", "runtimeOutputs"] }, { kind: "component", type: i4.RuleKeyValuePresComponent, selector: "o3r-rule-key-value-pres", inputs: ["key", "value", "oldValue", "type"] }, { kind: "pipe", type: i5.O3rFallbackToPipe, name: "o3rFallbackTo" }, { kind: "pipe", type: i1.JsonPipe, name: "json" }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }, { kind: "pipe", type: i1.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "pipe", type: i1.KeyValuePipe, name: "keyvalue" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
38
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: RulesetHistoryPresComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
39
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.6", type: RulesetHistoryPresComponent, selector: "o3r-ruleset-history-pres", inputs: { rulesetExecutions: "rulesetExecutions", executionDurationFormat: "executionDurationFormat" }, ngImport: i0, template: "<section>\n <h4 class=\"mb-4\">Ruleset Execution History</h4>\n <ng-template #noRulesEngine>\n <div class=\"alert alert-danger m-2\" role=\"alert\">\n The Rules Engine is not configured on this page.\n </div>\n </ng-template>\n <ul *ngIf=\"rulesetExecutions; else noRulesEngine\" class=\"rulesets\">\n <li *ngFor=\"let execution of rulesetExecutions\" class=\"ruleset\">\n <div class=\"ruleset-panel-title ruleset-expansion-action\"\n [class.error]=\"execution.type === 'RulesetExecutionError'\"\n (click)=\"toggleExpansion(execution.executionId, 'ruleset')\">\n <div><span [title]=\"'This ruleset has been evaluated ' + execution.executionCounter + ' time(s)'\">{{execution.executionCounter}}</span> - {{execution.rulesetName | titlecase }}\n <div class=\"ruleset-panel-subtitle\" *ngIf=\"execution.rulesetInformation?.linkedComponents?.or || execution.rulesetInformation?.linkedComponent\">\n <ng-container *ngFor=\"let lc of (execution.rulesetInformation?.linkedComponents?.or || [execution.rulesetInformation.linkedComponent]); last as isLast\">\n <div>{{lc.name}} {{lc.library}} <span *ngIf=\"!isLast\"> OR </span></div>\n </ng-container>\n </div>\n <div class=\"ruleset-panel-subtitle\" *ngIf=\"execution.rulesetInformation?.validityRange as validityRange\">\n Date range: {{validityRange.from}} - {{validityRange.to}}\n </div>\n </div>\n <div class=\"ruleset-panel-title-aside\">\n <span class=\"error capsule\" *ngIf=\"execution.status === 'Error'\">Error</span>\n <span class=\"success capsule\" *ngIf=\"execution.status === 'Active'\">Applied</span>\n <span class=\"inactive capsule\" *ngIf=\"execution.status === 'Deactivated'\">Deactivated</span>\n <span class=\"warn capsule\" *ngIf=\"execution.status === 'NoEffect'\">No effect</span>\n <span class=\"time capsule\">\n <span>{{execution.timestamp | date: 'HH:mm:ss SSS'}}</span>\n <span>({{execution.duration | number: executionDurationFormat}}ms)</span>\n </span>\n <button\n class=\"icon\"\n [class.icon-caret-down]=\"!expansionStatus[execution.executionId]?.ruleset\"\n [class.icon-caret-up]=\"expansionStatus[execution.executionId]?.ruleset\">\n </button>\n </div>\n </div>\n <div class=\"ruleset-panel-description\" *ngIf=\"expansionStatus[execution.executionId]?.ruleset\">\n <ng-container [ngTemplateOutlet]=\"rules\"\n [ngTemplateOutletContext]=\"{\n rules: execution.rulesetInformation.rules,\n expansionID: execution.executionId\n }\"></ng-container>\n <ng-container [ngTemplateOutlet]=\"inputs\"\n [ngTemplateOutletContext]=\"{\n inputs: execution.inputFacts\n }\"></ng-container>\n <ng-container *ngIf=\"execution.type === 'RulesetExecutionError'; else success\">\n <div class=\"ruleset-panel-category-title\">Rules:</div>\n <ul class=\"ruleset-panel-category-body rule-description\">\n <li *ngFor=\"let ruleEvaluation of execution.rulesEvaluations; let index=index;\">\n <ng-container>\n <div class=\"ruleset-panel-title\" [class.error]=\"ruleEvaluation.error\">\n <span>{{ruleEvaluation.rule.name | titlecase}} </span>\n <span class=\"capsule error\" *ngIf=\"ruleEvaluation.error\">Error</span>\n </div>\n <div>\n <ng-container *ngIf=\"ruleEvaluation.error\">\n <span class=\"ruleset-panel-category-title\">Error:</span>\n <pre class=\"ruleset-panel-category-body error\">{{ruleEvaluation.error | json}}</pre>\n </ng-container>\n <ng-container [ngTemplateOutlet]=\"inputs\"\n [ngTemplateOutletContext]=\"{\n inputs: execution.inputFacts,\n runtimeInputs: execution.rulesetInformation?.rules[index]?.inputRuntimeFacts\n }\"></ng-container>\n <o3r-rule-actions-pres *ngIf=\"!ruleEvaluation.error\"\n [temporaryFacts]=\"ruleEvaluation.temporaryFacts\"\n [runtimeOutputs]=\"execution.rulesetInformation?.rules[index]?.outputRuntimeFacts\"\n ></o3r-rule-actions-pres>\n </div>\n </ng-container>\n </li>\n </ul>\n </ng-container>\n <ng-template #success>\n <o3r-rule-actions-pres [actions]=\"execution.outputActions\"></o3r-rule-actions-pres>\n <div class=\"ruleset-panel-category-title\">Executed Rules</div>\n <ul class=\"rule-description ruleset-panel-category-body\">\n <li *ngFor=\"let ruleEvaluation of execution.rulesEvaluations; let index=index;\">\n <div class=\"ruleset-panel-title\">\n <span>{{ruleEvaluation.rule.name | titlecase}}</span>\n <span class=\"capsule inactive\" *ngIf=\"ruleEvaluation.cached\">Cached</span>\n <span class=\"capsule\">({{ruleEvaluation.duration | number: executionDurationFormat}}ms)</span>\n </div>\n <div>\n <ng-container [ngTemplateOutlet]=\"triggers\"\n [ngTemplateOutletContext]=\"{triggers: (ruleEvaluation.triggers[ruleEvaluation.rule.id])}\"></ng-container>\n <o3r-rule-actions-pres\n [actions]=\"ruleEvaluation.outputActions\"\n [temporaryFacts]=\"ruleEvaluation.temporaryFacts\"\n [runtimeOutputs]=\"execution.rulesetInformation?.rules[index]?.outputRuntimeFacts\">\n </o3r-rule-actions-pres>\n </div>\n </li>\n </ul>\n </ng-template>\n </div>\n </li>\n </ul>\n</section>\n\n<ng-template let-triggers=\"triggers\" #triggers>\n <div class=\"ruleset-panel-category-title\">Basefacts Triggers</div>\n <ul class=\"ruleset-panel-category-body triggers\">\n <ng-container *ngFor=\"let trigger of (triggers | keyvalue)\">\n <li *ngIf=\"trigger.value?.factName\">\n <o3r-rule-key-value-pres\n [key]=\"trigger.value.factName\"\n [oldValue]=\"trigger.value.oldValue | o3rFallbackTo\"\n [value]=\"trigger.value.newValue | o3rFallbackTo\"\n [type]=\"'state'\"></o3r-rule-key-value-pres>\n </li>\n </ng-container>\n </ul>\n</ng-template>\n\n<ng-template let-rules=\"rules\" let-expansionID=\"expansionID\" #rules>\n <div class=\"ruleset-panel-category-title ruleset-expansion-action\"\n (click)=\"toggleExpansion(expansionID, 'rulesOverview')\">\n <span>Rules Overview</span>\n <button class=\"icon\"\n [class.icon-caret-down]=\"!expansionStatus[expansionID]?.rulesOverview\"\n [class.icon-caret-up]=\"expansionStatus[expansionID]?.rulesOverview\">\n </button>\n </div>\n <ng-container *ngIf=\"expansionStatus[expansionID]?.rulesOverview\">\n <div *ngIf=\"rules?.length === 0\" class=\"ruleset-panel-category-body empty\">No rule</div>\n <ul class=\"ruleset-panel-category-body\" *ngIf=\"rules?.length > 0\">\n <li *ngFor=\"let rule of rules\">\n <o3r-rule-tree-pres [name]=\"rule.name\"\n [condition]=\"rule?.rootElement?.condition\"\n [blockType]=\"rule?.rootElement?.blockType\"\n [successElements]=\"rule?.rootElement?.successElements\"\n [failureElements]=\"rule?.rootElement?.failureElements\">\n </o3r-rule-tree-pres>\n </li>\n </ul>\n </ng-container>\n</ng-template>\n\n<ng-template let-inputs=\"inputs\" let-runtimeInputs=\"runtimeInputs\" #inputs>\n <div class=\"ruleset-panel-category-title\">Inputs snapshot</div>\n <div *ngIf=\"inputs?.length === 0\" class=\"ruleset-panel-category-body empty\">No inputs</div>\n <ul class=\"ruleset-panel-category-body\" *ngIf=\"inputs?.length > 0\">\n <li *ngFor=\"let input of inputs\">\n <o3r-rule-key-value-pres\n [key]=\"input.factName\"\n [value]=\"input.value | o3rFallbackTo\"\n [type]=\"'state'\"></o3r-rule-key-value-pres>\n </li>\n <li *ngFor=\"let input of runtimeInputs\">{{input}} (scope limited to ruleset)</li>\n </ul>\n</ng-template>\n", styles: ["o3r-ruleset-history-pres .ruleset-panel-title,o3r-ruleset-history-pres .ruleset-panel-category-title{display:flex;justify-content:space-between;align-items:center}o3r-ruleset-history-pres .ruleset-panel-title{font-size:1rem;padding:.5rem 0 .1rem}o3r-ruleset-history-pres .ruleset-expansion-action,o3r-ruleset-history-pres .icon-caret-down,o3r-ruleset-history-pres .icon-caret-up{cursor:pointer}o3r-ruleset-history-pres .ruleset-panel-subtitle{font-size:.75rem}o3r-ruleset-history-pres .ruleset-panel-title-aside{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;min-width:fit-content}o3r-ruleset-history-pres .ruleset-panel-category-title{font-size:.95rem;background:#eee;padding:.5rem;margin-bottom:.5rem;margin-top:1rem}o3r-ruleset-history-pres .rule-description .ruleset-panel-category-title{font-size:.893rem;cursor:default}o3r-ruleset-history-pres .rule-description .ruleset-panel-title{font-size:.94rem}o3r-ruleset-history-pres .rule-description .ruleset-panel-category-body{padding-bottom:.5rem;padding-left:1.5rem}o3r-ruleset-history-pres .rule-description .ruleset-panel-category-body:empty{margin:0;padding:0 0 0 1.5rem}o3r-ruleset-history-pres .rulesets{margin:0;padding:0;list-style:none}o3r-ruleset-history-pres .rulesets ul{margin:0;padding-left:2rem}o3r-ruleset-history-pres .rulesets li.ruleset:nth-child(odd){background:#fbfbfb}o3r-ruleset-history-pres .ruleset-panel-category-body li{list-style:disc}o3r-ruleset-history-pres li:empty{display:none}o3r-ruleset-history-pres .ruleset{border-bottom:1px solid #dddddd}o3r-ruleset-history-pres .ruleset .ruleset-panel-description{padding:0 1rem 0 2rem;margin-bottom:2em}o3r-ruleset-history-pres .ruleset:first-child{border-top:1px solid #dddddd}o3r-ruleset-history-pres .ruleset-panel-title.ruleset-expansion-action{padding:.5rem 1rem}o3r-ruleset-history-pres .empty{font-style:italic;padding-left:1.5rem}o3r-ruleset-history-pres .ruleset-panel-category-body:empty.triggers:after{content:\"No trigger for this rule\";display:block;font-style:italic;padding-bottom:.5rem}o3r-ruleset-history-pres .ruleset-panel-title-aside{padding-left:1rem}o3r-ruleset-history-pres .rule-description .capsule{font-size:.8em;padding:.1rem .5rem;margin:0 .5rem}o3r-ruleset-history-pres .icon{background:none;border:none;font-size:1em}o3r-ruleset-history-pres .capsule{padding:.3rem;margin:.5rem;font-size:.875em;min-width:6rem;text-align:center}o3r-ruleset-history-pres .capsule.time{display:flex;flex-direction:column}o3r-ruleset-history-pres .success{background-color:#16aa32;color:#fff}o3r-ruleset-history-pres .inactive{background-color:#aaa;color:#fff}o3r-ruleset-history-pres .error{color:#c02020}o3r-ruleset-history-pres .error .capsule.error{background-color:#c02020;color:#fff}o3r-ruleset-history-pres .warn{background-color:#b92;color:#fff}o3r-ruleset-history-pres .input-key{color:#26c}o3r-ruleset-history-pres .input-value{color:#c29}o3r-ruleset-history-pres .input-key,o3r-ruleset-history-pres .input-value{font-family:monospace}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.RuleTreePresComponent, selector: "o3r-rule-tree-pres", inputs: ["name", "blockType", "condition", "successElements", "failureElements"] }, { kind: "component", type: i3.RuleActionsPresComponent, selector: "o3r-rule-actions-pres", inputs: ["actions", "temporaryFacts", "runtimeOutputs"] }, { kind: "component", type: i4.RuleKeyValuePresComponent, selector: "o3r-rule-key-value-pres", inputs: ["key", "value", "oldValue", "type"] }, { kind: "pipe", type: i5.O3rFallbackToPipe, name: "o3rFallbackTo" }, { kind: "pipe", type: i1.JsonPipe, name: "json" }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }, { kind: "pipe", type: i1.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "pipe", type: i1.KeyValuePipe, name: "keyvalue" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
40
40
  }
41
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RulesetHistoryPresComponent, decorators: [{
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: RulesetHistoryPresComponent, decorators: [{
42
42
  type: Component,
43
- args: [{ selector: 'o3r-ruleset-history-pres', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<section>\n <h4 class=\"mb-4\">Ruleset Execution History</h4>\n <ng-template #noRulesEngine>\n <div class=\"alert alert-danger m-2\" role=\"alert\">\n The Rules Engine is not configured on this page.\n </div>\n </ng-template>\n <ul *ngIf=\"rulesetExecutions; else noRulesEngine\" class=\"rulesets\">\n <li *ngFor=\"let execution of rulesetExecutions\" class=\"ruleset\">\n <div class=\"ruleset-panel-title ruleset-expansion-action\"\n [class.error]=\"execution.type === 'RulesetExecutionError'\"\n (click)=\"toggleExpansion(execution.executionId, 'ruleset')\">\n <div><span [title]=\"'This ruleset has been evaluated ' + execution.executionCounter + ' time(s)'\">{{execution.executionCounter}}</span> - {{execution.rulesetName | titlecase }}\n <div class=\"ruleset-panel-subtitle\" *ngIf=\"execution.rulesetInformation?.linkedComponent as linkedComponent\">\n {{linkedComponent.name}} {{linkedComponent.library}}\n </div>\n <div class=\"ruleset-panel-subtitle\" *ngIf=\"execution.rulesetInformation?.validityRange as validityRange\">\n Date range: {{validityRange.from}} - {{validityRange.to}}\n </div>\n </div>\n <div class=\"ruleset-panel-title-aside\">\n <span class=\"error capsule\" *ngIf=\"execution.status === 'Error'\">Error</span>\n <span class=\"success capsule\" *ngIf=\"execution.status === 'Active'\">Applied</span>\n <span class=\"inactive capsule\" *ngIf=\"execution.status === 'Deactivated'\">Deactivated</span>\n <span class=\"warn capsule\" *ngIf=\"execution.status === 'NoEffect'\">No effect</span>\n <span class=\"time capsule\">\n <span>{{execution.timestamp | date: 'HH:mm:ss SSS'}}</span>\n <span>({{execution.duration | number: executionDurationFormat}}ms)</span>\n </span>\n <button\n class=\"icon\"\n [class.icon-caret-down]=\"!expansionStatus[execution.executionId]?.ruleset\"\n [class.icon-caret-up]=\"expansionStatus[execution.executionId]?.ruleset\">\n </button>\n </div>\n </div>\n <div class=\"ruleset-panel-description\" *ngIf=\"expansionStatus[execution.executionId]?.ruleset\">\n <ng-container [ngTemplateOutlet]=\"rules\"\n [ngTemplateOutletContext]=\"{\n rules: execution.rulesetInformation.rules,\n expansionID: execution.executionId\n }\"></ng-container>\n <ng-container [ngTemplateOutlet]=\"inputs\"\n [ngTemplateOutletContext]=\"{\n inputs: execution.inputFacts\n }\"></ng-container>\n <ng-container *ngIf=\"execution.type === 'RulesetExecutionError'; else success\">\n <div class=\"ruleset-panel-category-title\">Rules:</div>\n <ul class=\"ruleset-panel-category-body rule-description\">\n <li *ngFor=\"let ruleEvaluation of execution.rulesEvaluations; let index=index;\">\n <ng-container>\n <div class=\"ruleset-panel-title\" [class.error]=\"ruleEvaluation.error\">\n <span>{{ruleEvaluation.rule.name | titlecase}} </span>\n <span class=\"capsule error\" *ngIf=\"ruleEvaluation.error\">Error</span>\n </div>\n <div>\n <ng-container *ngIf=\"ruleEvaluation.error\">\n <span class=\"ruleset-panel-category-title\">Error:</span>\n <pre class=\"ruleset-panel-category-body error\">{{ruleEvaluation.error | json}}</pre>\n </ng-container>\n <ng-container [ngTemplateOutlet]=\"inputs\"\n [ngTemplateOutletContext]=\"{\n inputs: execution.inputFacts,\n runtimeInputs: execution.rulesetInformation?.rules[index]?.inputRuntimeFacts\n }\"></ng-container>\n <o3r-rule-actions-pres *ngIf=\"!ruleEvaluation.error\"\n [temporaryFacts]=\"ruleEvaluation.temporaryFacts\"\n [runtimeOutputs]=\"execution.rulesetInformation?.rules[index]?.outputRuntimeFacts\"\n ></o3r-rule-actions-pres>\n </div>\n </ng-container>\n </li>\n </ul>\n </ng-container>\n <ng-template #success>\n <o3r-rule-actions-pres [actions]=\"execution.outputActions\"></o3r-rule-actions-pres>\n <div class=\"ruleset-panel-category-title\">Executed Rules</div>\n <ul class=\"rule-description ruleset-panel-category-body\">\n <li *ngFor=\"let ruleEvaluation of execution.rulesEvaluations; let index=index;\">\n <div class=\"ruleset-panel-title\">\n <span>{{ruleEvaluation.rule.name | titlecase}}</span>\n <span class=\"capsule inactive\" *ngIf=\"ruleEvaluation.cached\">Cached</span>\n <span class=\"capsule\">({{ruleEvaluation.duration | number: executionDurationFormat}}ms)</span>\n </div>\n <div>\n <ng-container [ngTemplateOutlet]=\"triggers\"\n [ngTemplateOutletContext]=\"{triggers: (ruleEvaluation.triggers[ruleEvaluation.rule.id])}\"></ng-container>\n <o3r-rule-actions-pres\n [actions]=\"ruleEvaluation.outputActions\"\n [temporaryFacts]=\"ruleEvaluation.temporaryFacts\"\n [runtimeOutputs]=\"execution.rulesetInformation?.rules[index]?.outputRuntimeFacts\">\n </o3r-rule-actions-pres>\n </div>\n </li>\n </ul>\n </ng-template>\n </div>\n </li>\n </ul>\n</section>\n\n<ng-template let-triggers=\"triggers\" #triggers>\n <div class=\"ruleset-panel-category-title\">Basefacts Triggers</div>\n <ul class=\"ruleset-panel-category-body triggers\">\n <ng-container *ngFor=\"let trigger of (triggers | keyvalue)\">\n <li *ngIf=\"trigger.value?.factName\">\n <o3r-rule-key-value-pres\n [key]=\"trigger.value.factName\"\n [oldValue]=\"trigger.value.oldValue | o3rFallbackTo\"\n [value]=\"trigger.value.newValue | o3rFallbackTo\"\n [type]=\"'state'\"></o3r-rule-key-value-pres>\n </li>\n </ng-container>\n </ul>\n</ng-template>\n\n<ng-template let-rules=\"rules\" let-expansionID=\"expansionID\" #rules>\n <div class=\"ruleset-panel-category-title ruleset-expansion-action\"\n (click)=\"toggleExpansion(expansionID, 'rulesOverview')\">\n <span>Rules Overview</span>\n <button class=\"icon\"\n [class.icon-caret-down]=\"!expansionStatus[expansionID]?.rulesOverview\"\n [class.icon-caret-up]=\"expansionStatus[expansionID]?.rulesOverview\">\n </button>\n </div>\n <ng-container *ngIf=\"expansionStatus[expansionID]?.rulesOverview\">\n <div *ngIf=\"rules?.length === 0\" class=\"ruleset-panel-category-body empty\">No rule</div>\n <ul class=\"ruleset-panel-category-body\" *ngIf=\"rules?.length > 0\">\n <li *ngFor=\"let rule of rules\">\n <o3r-rule-tree-pres [name]=\"rule.name\"\n [condition]=\"rule?.rootElement?.condition\"\n [blockType]=\"rule?.rootElement?.blockType\"\n [successElements]=\"rule?.rootElement?.successElements\"\n [failureElements]=\"rule?.rootElement?.failureElements\">\n </o3r-rule-tree-pres>\n </li>\n </ul>\n </ng-container>\n</ng-template>\n\n<ng-template let-inputs=\"inputs\" let-runtimeInputs=\"runtimeInputs\" #inputs>\n <div class=\"ruleset-panel-category-title\">Inputs snapshot</div>\n <div *ngIf=\"inputs?.length === 0\" class=\"ruleset-panel-category-body empty\">No inputs</div>\n <ul class=\"ruleset-panel-category-body\" *ngIf=\"inputs?.length > 0\">\n <li *ngFor=\"let input of inputs\">\n <o3r-rule-key-value-pres\n [key]=\"input.factName\"\n [value]=\"input.value | o3rFallbackTo\"\n [type]=\"'state'\"></o3r-rule-key-value-pres>\n </li>\n <li *ngFor=\"let input of runtimeInputs\">{{input}} (scope limited to ruleset)</li>\n </ul>\n</ng-template>\n", styles: ["o3r-ruleset-history-pres .ruleset-panel-title,o3r-ruleset-history-pres .ruleset-panel-category-title{display:flex;justify-content:space-between;align-items:center}o3r-ruleset-history-pres .ruleset-panel-title{font-size:1rem;padding:.5rem 0 .1rem}o3r-ruleset-history-pres .ruleset-expansion-action,o3r-ruleset-history-pres .icon-caret-down,o3r-ruleset-history-pres .icon-caret-up{cursor:pointer}o3r-ruleset-history-pres .ruleset-panel-subtitle{font-size:.75rem}o3r-ruleset-history-pres .ruleset-panel-title-aside{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;min-width:fit-content}o3r-ruleset-history-pres .ruleset-panel-category-title{font-size:.95rem;background:#eee;padding:.5rem;margin-bottom:.5rem;margin-top:1rem}o3r-ruleset-history-pres .rule-description .ruleset-panel-category-title{font-size:.893rem;cursor:default}o3r-ruleset-history-pres .rule-description .ruleset-panel-title{font-size:.94rem}o3r-ruleset-history-pres .rule-description .ruleset-panel-category-body{padding-bottom:.5rem;padding-left:1.5rem}o3r-ruleset-history-pres .rule-description .ruleset-panel-category-body:empty{margin:0;padding:0 0 0 1.5rem}o3r-ruleset-history-pres .rulesets{margin:0;padding:0;list-style:none}o3r-ruleset-history-pres .rulesets ul{margin:0;padding-left:2rem}o3r-ruleset-history-pres .rulesets li.ruleset:nth-child(odd){background:#fbfbfb}o3r-ruleset-history-pres .ruleset-panel-category-body li{list-style:disc}o3r-ruleset-history-pres li:empty{display:none}o3r-ruleset-history-pres .ruleset{border-bottom:1px solid #dddddd}o3r-ruleset-history-pres .ruleset .ruleset-panel-description{padding:0 1rem 0 2rem;margin-bottom:2em}o3r-ruleset-history-pres .ruleset:first-child{border-top:1px solid #dddddd}o3r-ruleset-history-pres .ruleset-panel-title.ruleset-expansion-action{padding:.5rem 1rem}o3r-ruleset-history-pres .empty{font-style:italic;padding-left:1.5rem}o3r-ruleset-history-pres .ruleset-panel-category-body:empty.triggers:after{content:\"No trigger for this rule\";display:block;font-style:italic;padding-bottom:.5rem}o3r-ruleset-history-pres .ruleset-panel-title-aside{padding-left:1rem}o3r-ruleset-history-pres .rule-description .capsule{font-size:.8em;padding:.1rem .5rem;margin:0 .5rem}o3r-ruleset-history-pres .icon{background:none;border:none;font-size:1em}o3r-ruleset-history-pres .capsule{padding:.3rem;margin:.5rem;font-size:.875em;min-width:6rem;text-align:center}o3r-ruleset-history-pres .capsule.time{display:flex;flex-direction:column}o3r-ruleset-history-pres .success{background-color:#16aa32;color:#fff}o3r-ruleset-history-pres .inactive{background-color:#aaa;color:#fff}o3r-ruleset-history-pres .error{color:#c02020}o3r-ruleset-history-pres .error .capsule.error{background-color:#c02020;color:#fff}o3r-ruleset-history-pres .warn{background-color:#b92;color:#fff}o3r-ruleset-history-pres .input-key{color:#26c}o3r-ruleset-history-pres .input-value{color:#c29}o3r-ruleset-history-pres .input-key,o3r-ruleset-history-pres .input-value{font-family:monospace}\n"] }]
43
+ args: [{ selector: 'o3r-ruleset-history-pres', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<section>\n <h4 class=\"mb-4\">Ruleset Execution History</h4>\n <ng-template #noRulesEngine>\n <div class=\"alert alert-danger m-2\" role=\"alert\">\n The Rules Engine is not configured on this page.\n </div>\n </ng-template>\n <ul *ngIf=\"rulesetExecutions; else noRulesEngine\" class=\"rulesets\">\n <li *ngFor=\"let execution of rulesetExecutions\" class=\"ruleset\">\n <div class=\"ruleset-panel-title ruleset-expansion-action\"\n [class.error]=\"execution.type === 'RulesetExecutionError'\"\n (click)=\"toggleExpansion(execution.executionId, 'ruleset')\">\n <div><span [title]=\"'This ruleset has been evaluated ' + execution.executionCounter + ' time(s)'\">{{execution.executionCounter}}</span> - {{execution.rulesetName | titlecase }}\n <div class=\"ruleset-panel-subtitle\" *ngIf=\"execution.rulesetInformation?.linkedComponents?.or || execution.rulesetInformation?.linkedComponent\">\n <ng-container *ngFor=\"let lc of (execution.rulesetInformation?.linkedComponents?.or || [execution.rulesetInformation.linkedComponent]); last as isLast\">\n <div>{{lc.name}} {{lc.library}} <span *ngIf=\"!isLast\"> OR </span></div>\n </ng-container>\n </div>\n <div class=\"ruleset-panel-subtitle\" *ngIf=\"execution.rulesetInformation?.validityRange as validityRange\">\n Date range: {{validityRange.from}} - {{validityRange.to}}\n </div>\n </div>\n <div class=\"ruleset-panel-title-aside\">\n <span class=\"error capsule\" *ngIf=\"execution.status === 'Error'\">Error</span>\n <span class=\"success capsule\" *ngIf=\"execution.status === 'Active'\">Applied</span>\n <span class=\"inactive capsule\" *ngIf=\"execution.status === 'Deactivated'\">Deactivated</span>\n <span class=\"warn capsule\" *ngIf=\"execution.status === 'NoEffect'\">No effect</span>\n <span class=\"time capsule\">\n <span>{{execution.timestamp | date: 'HH:mm:ss SSS'}}</span>\n <span>({{execution.duration | number: executionDurationFormat}}ms)</span>\n </span>\n <button\n class=\"icon\"\n [class.icon-caret-down]=\"!expansionStatus[execution.executionId]?.ruleset\"\n [class.icon-caret-up]=\"expansionStatus[execution.executionId]?.ruleset\">\n </button>\n </div>\n </div>\n <div class=\"ruleset-panel-description\" *ngIf=\"expansionStatus[execution.executionId]?.ruleset\">\n <ng-container [ngTemplateOutlet]=\"rules\"\n [ngTemplateOutletContext]=\"{\n rules: execution.rulesetInformation.rules,\n expansionID: execution.executionId\n }\"></ng-container>\n <ng-container [ngTemplateOutlet]=\"inputs\"\n [ngTemplateOutletContext]=\"{\n inputs: execution.inputFacts\n }\"></ng-container>\n <ng-container *ngIf=\"execution.type === 'RulesetExecutionError'; else success\">\n <div class=\"ruleset-panel-category-title\">Rules:</div>\n <ul class=\"ruleset-panel-category-body rule-description\">\n <li *ngFor=\"let ruleEvaluation of execution.rulesEvaluations; let index=index;\">\n <ng-container>\n <div class=\"ruleset-panel-title\" [class.error]=\"ruleEvaluation.error\">\n <span>{{ruleEvaluation.rule.name | titlecase}} </span>\n <span class=\"capsule error\" *ngIf=\"ruleEvaluation.error\">Error</span>\n </div>\n <div>\n <ng-container *ngIf=\"ruleEvaluation.error\">\n <span class=\"ruleset-panel-category-title\">Error:</span>\n <pre class=\"ruleset-panel-category-body error\">{{ruleEvaluation.error | json}}</pre>\n </ng-container>\n <ng-container [ngTemplateOutlet]=\"inputs\"\n [ngTemplateOutletContext]=\"{\n inputs: execution.inputFacts,\n runtimeInputs: execution.rulesetInformation?.rules[index]?.inputRuntimeFacts\n }\"></ng-container>\n <o3r-rule-actions-pres *ngIf=\"!ruleEvaluation.error\"\n [temporaryFacts]=\"ruleEvaluation.temporaryFacts\"\n [runtimeOutputs]=\"execution.rulesetInformation?.rules[index]?.outputRuntimeFacts\"\n ></o3r-rule-actions-pres>\n </div>\n </ng-container>\n </li>\n </ul>\n </ng-container>\n <ng-template #success>\n <o3r-rule-actions-pres [actions]=\"execution.outputActions\"></o3r-rule-actions-pres>\n <div class=\"ruleset-panel-category-title\">Executed Rules</div>\n <ul class=\"rule-description ruleset-panel-category-body\">\n <li *ngFor=\"let ruleEvaluation of execution.rulesEvaluations; let index=index;\">\n <div class=\"ruleset-panel-title\">\n <span>{{ruleEvaluation.rule.name | titlecase}}</span>\n <span class=\"capsule inactive\" *ngIf=\"ruleEvaluation.cached\">Cached</span>\n <span class=\"capsule\">({{ruleEvaluation.duration | number: executionDurationFormat}}ms)</span>\n </div>\n <div>\n <ng-container [ngTemplateOutlet]=\"triggers\"\n [ngTemplateOutletContext]=\"{triggers: (ruleEvaluation.triggers[ruleEvaluation.rule.id])}\"></ng-container>\n <o3r-rule-actions-pres\n [actions]=\"ruleEvaluation.outputActions\"\n [temporaryFacts]=\"ruleEvaluation.temporaryFacts\"\n [runtimeOutputs]=\"execution.rulesetInformation?.rules[index]?.outputRuntimeFacts\">\n </o3r-rule-actions-pres>\n </div>\n </li>\n </ul>\n </ng-template>\n </div>\n </li>\n </ul>\n</section>\n\n<ng-template let-triggers=\"triggers\" #triggers>\n <div class=\"ruleset-panel-category-title\">Basefacts Triggers</div>\n <ul class=\"ruleset-panel-category-body triggers\">\n <ng-container *ngFor=\"let trigger of (triggers | keyvalue)\">\n <li *ngIf=\"trigger.value?.factName\">\n <o3r-rule-key-value-pres\n [key]=\"trigger.value.factName\"\n [oldValue]=\"trigger.value.oldValue | o3rFallbackTo\"\n [value]=\"trigger.value.newValue | o3rFallbackTo\"\n [type]=\"'state'\"></o3r-rule-key-value-pres>\n </li>\n </ng-container>\n </ul>\n</ng-template>\n\n<ng-template let-rules=\"rules\" let-expansionID=\"expansionID\" #rules>\n <div class=\"ruleset-panel-category-title ruleset-expansion-action\"\n (click)=\"toggleExpansion(expansionID, 'rulesOverview')\">\n <span>Rules Overview</span>\n <button class=\"icon\"\n [class.icon-caret-down]=\"!expansionStatus[expansionID]?.rulesOverview\"\n [class.icon-caret-up]=\"expansionStatus[expansionID]?.rulesOverview\">\n </button>\n </div>\n <ng-container *ngIf=\"expansionStatus[expansionID]?.rulesOverview\">\n <div *ngIf=\"rules?.length === 0\" class=\"ruleset-panel-category-body empty\">No rule</div>\n <ul class=\"ruleset-panel-category-body\" *ngIf=\"rules?.length > 0\">\n <li *ngFor=\"let rule of rules\">\n <o3r-rule-tree-pres [name]=\"rule.name\"\n [condition]=\"rule?.rootElement?.condition\"\n [blockType]=\"rule?.rootElement?.blockType\"\n [successElements]=\"rule?.rootElement?.successElements\"\n [failureElements]=\"rule?.rootElement?.failureElements\">\n </o3r-rule-tree-pres>\n </li>\n </ul>\n </ng-container>\n</ng-template>\n\n<ng-template let-inputs=\"inputs\" let-runtimeInputs=\"runtimeInputs\" #inputs>\n <div class=\"ruleset-panel-category-title\">Inputs snapshot</div>\n <div *ngIf=\"inputs?.length === 0\" class=\"ruleset-panel-category-body empty\">No inputs</div>\n <ul class=\"ruleset-panel-category-body\" *ngIf=\"inputs?.length > 0\">\n <li *ngFor=\"let input of inputs\">\n <o3r-rule-key-value-pres\n [key]=\"input.factName\"\n [value]=\"input.value | o3rFallbackTo\"\n [type]=\"'state'\"></o3r-rule-key-value-pres>\n </li>\n <li *ngFor=\"let input of runtimeInputs\">{{input}} (scope limited to ruleset)</li>\n </ul>\n</ng-template>\n", styles: ["o3r-ruleset-history-pres .ruleset-panel-title,o3r-ruleset-history-pres .ruleset-panel-category-title{display:flex;justify-content:space-between;align-items:center}o3r-ruleset-history-pres .ruleset-panel-title{font-size:1rem;padding:.5rem 0 .1rem}o3r-ruleset-history-pres .ruleset-expansion-action,o3r-ruleset-history-pres .icon-caret-down,o3r-ruleset-history-pres .icon-caret-up{cursor:pointer}o3r-ruleset-history-pres .ruleset-panel-subtitle{font-size:.75rem}o3r-ruleset-history-pres .ruleset-panel-title-aside{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;min-width:fit-content}o3r-ruleset-history-pres .ruleset-panel-category-title{font-size:.95rem;background:#eee;padding:.5rem;margin-bottom:.5rem;margin-top:1rem}o3r-ruleset-history-pres .rule-description .ruleset-panel-category-title{font-size:.893rem;cursor:default}o3r-ruleset-history-pres .rule-description .ruleset-panel-title{font-size:.94rem}o3r-ruleset-history-pres .rule-description .ruleset-panel-category-body{padding-bottom:.5rem;padding-left:1.5rem}o3r-ruleset-history-pres .rule-description .ruleset-panel-category-body:empty{margin:0;padding:0 0 0 1.5rem}o3r-ruleset-history-pres .rulesets{margin:0;padding:0;list-style:none}o3r-ruleset-history-pres .rulesets ul{margin:0;padding-left:2rem}o3r-ruleset-history-pres .rulesets li.ruleset:nth-child(odd){background:#fbfbfb}o3r-ruleset-history-pres .ruleset-panel-category-body li{list-style:disc}o3r-ruleset-history-pres li:empty{display:none}o3r-ruleset-history-pres .ruleset{border-bottom:1px solid #dddddd}o3r-ruleset-history-pres .ruleset .ruleset-panel-description{padding:0 1rem 0 2rem;margin-bottom:2em}o3r-ruleset-history-pres .ruleset:first-child{border-top:1px solid #dddddd}o3r-ruleset-history-pres .ruleset-panel-title.ruleset-expansion-action{padding:.5rem 1rem}o3r-ruleset-history-pres .empty{font-style:italic;padding-left:1.5rem}o3r-ruleset-history-pres .ruleset-panel-category-body:empty.triggers:after{content:\"No trigger for this rule\";display:block;font-style:italic;padding-bottom:.5rem}o3r-ruleset-history-pres .ruleset-panel-title-aside{padding-left:1rem}o3r-ruleset-history-pres .rule-description .capsule{font-size:.8em;padding:.1rem .5rem;margin:0 .5rem}o3r-ruleset-history-pres .icon{background:none;border:none;font-size:1em}o3r-ruleset-history-pres .capsule{padding:.3rem;margin:.5rem;font-size:.875em;min-width:6rem;text-align:center}o3r-ruleset-history-pres .capsule.time{display:flex;flex-direction:column}o3r-ruleset-history-pres .success{background-color:#16aa32;color:#fff}o3r-ruleset-history-pres .inactive{background-color:#aaa;color:#fff}o3r-ruleset-history-pres .error{color:#c02020}o3r-ruleset-history-pres .error .capsule.error{background-color:#c02020;color:#fff}o3r-ruleset-history-pres .warn{background-color:#b92;color:#fff}o3r-ruleset-history-pres .input-key{color:#26c}o3r-ruleset-history-pres .input-value{color:#c29}o3r-ruleset-history-pres .input-key,o3r-ruleset-history-pres .input-value{font-family:monospace}\n"] }]
44
44
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { rulesetExecutions: [{
45
45
  type: Input
46
46
  }], executionDurationFormat: [{
47
47
  type: Input
48
48
  }] } });
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZXNldC1oaXN0b3J5LXByZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcnVsZXMtZW5naW5lL3J1bGVzZXQtaGlzdG9yeS9ydWxlc2V0LWhpc3RvcnktcHJlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9ydWxlcy1lbmdpbmUvcnVsZXNldC1oaXN0b3J5L3J1bGVzZXQtaGlzdG9yeS1wcmVzLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7QUFxQmhILE1BQU0sT0FBTywyQkFBMkI7SUFtQnRDLFlBQTZCLEVBQXFCO1FBQXJCLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBbEJsRDs7Ozs7Ozs7V0FRRztRQUNJLG9CQUFlLEdBQW9ELEVBQUUsQ0FBQztRQUl0RSxzQkFBaUIsR0FBNEIsRUFBRSxDQUFDO1FBR2hELDRCQUF1QixHQUFHLE9BQU8sQ0FBQztJQUVZLENBQUM7SUFFdEQ7Ozs7T0FJRztJQUNJLGVBQWUsQ0FBQyxNQUFjLEVBQUUsUUFBZ0I7UUFDckQsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUMsQ0FBQztRQUNwRCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25GLENBQUM7UUFDRCxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzFCLENBQUM7aUlBakNVLDJCQUEyQjtxSEFBM0IsMkJBQTJCLHdLQ3JCeEMseXFRQXlKQTs7MkZEcElhLDJCQUEyQjtrQkFQdkMsU0FBUzsrQkFDRSwwQkFBMEIsbUJBR25CLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUk7c0ZBZ0I5QixpQkFBaUI7c0JBRHZCLEtBQUs7Z0JBSUMsdUJBQXVCO3NCQUQ3QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBSdWxlc2V0LCBSdWxlc2V0RXhlY3V0aW9uRXJyb3JFdmVudCwgUnVsZXNldEV4ZWN1dGlvbkV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vZW5naW5lJztcblxuZXhwb3J0IHR5cGUgUnVsZXNldEV4ZWN1dGlvblN0YXR1cyA9ICdFcnJvcicgfCAnQWN0aXZlJyB8ICdEZWFjdGl2YXRlZCcgfCAnTm9FZmZlY3QnO1xuLyoqXG4gKiBNb2RlbCBvZiBhIFJ1bGVzZXRFeGVjdXRpb24gd2l0aCBtb3JlIGluZm9ybWF0aW9uIGZvciBkZWJ1ZyBwdXJwb3NlXG4gKi9cbmV4cG9ydCB0eXBlIFJ1bGVzZXRFeGVjdXRpb25EZWJ1ZyA9IChSdWxlc2V0RXhlY3V0aW9uRXZlbnQgfCBSdWxlc2V0RXhlY3V0aW9uRXJyb3JFdmVudCkgJiB7XG4gIGlzQWN0aXZlOiBib29sZWFuO1xuICBzdGF0dXM6IFJ1bGVzZXRFeGVjdXRpb25TdGF0dXM7XG4gIHJ1bGVzZXRJbmZvcm1hdGlvbjogUnVsZXNldCB8IHVuZGVmaW5lZDtcbn07XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbzNyLXJ1bGVzZXQtaGlzdG9yeS1wcmVzJyxcbiAgc3R5bGVVcmxzOiBbJy4vcnVsZXNldC1oaXN0b3J5LXByZXMuc3R5bGUuc2NzcyddLFxuICB0ZW1wbGF0ZVVybDogJy4vcnVsZXNldC1oaXN0b3J5LXByZXMudGVtcGxhdGUuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIFJ1bGVzZXRIaXN0b3J5UHJlc0NvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBSZWZsZWN0cyB0aGUgc3RhdGUgb2YgZWFjaCBydWxlc2V0IGV4cGFuZGVkIGVsZW1lbnRzLlxuICAgKiBFYWNoIHJ1bGVzZXQgZW50cnkgY29udGFpbnMgYSBsaXN0IG9mIHN1YnBhbmVsIHRoYXQgY2FuIGJlIGNvbGxhcHNlZCBvciBleHBhbmRlZC5cbiAgICogUnVsZXNldCB3aG9sZSBwYW5lbCBzdGF0dXMgaXMgc3RvcmUgdGhlICdydWxlc2V0JyBlbnRyeS5cbiAgICogQGV4YW1wbGVcbiAgICogRXhwYW5kZWQgcnVsZXNldCB3aXRoIHJ1bGUgb3ZlcnZpZXcgY29sbGFwc2VkOlxuICAgKiB7J3J1bGVzZXRJZCc6IHsncnVsZXNldCcgOiB0cnVlLCAncnVsZU92ZXJ2aWV3JzogZmFsc2V9fVxuICAgKiBAbm90ZSBDb2xsYXBzaW5nIGEgcnVsZXNldCB3aWxsIG5vdCByZXNldCB0aGUgc3VicGFuZWwgZXhwYW5zaW9uIHN0YXR1c1xuICAgKi9cbiAgcHVibGljIGV4cGFuc2lvblN0YXR1czoge1trZXk6IHN0cmluZ106IHtbc3VicGFuZWw6IHN0cmluZ106IGJvb2xlYW59IH0gPSB7fTtcblxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBydWxlc2V0RXhlY3V0aW9uczogUnVsZXNldEV4ZWN1dGlvbkRlYnVnW10gPSBbXTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZXhlY3V0aW9uRHVyYXRpb25Gb3JtYXQgPSAnMS4zLTMnO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIC8qKlxuICAgKiBUb2dnbGUgYSBydWxlc2V0IHN1YnBhbmVsXG4gICAqIEBwYXJhbSBydWxlSWRcbiAgICogQHBhcmFtIHN1YnBhbmVsIGVsZW1lbnQgdG8gY29sbGFwc2UuICdydWxlc2V0JyB3aWxsIHRvZ2dsZSB0aGUgd2hvbGUgcGFuZWwgYnV0IHdvbid0IHJlc2V0IHRoZSBzdWJwYW5lbHMgc3RhdGVzLlxuICAgKi9cbiAgcHVibGljIHRvZ2dsZUV4cGFuc2lvbihydWxlSWQ6IHN0cmluZywgc3VicGFuZWw6IHN0cmluZykge1xuICAgIGlmICghdGhpcy5leHBhbnNpb25TdGF0dXNbcnVsZUlkXSkge1xuICAgICAgdGhpcy5leHBhbnNpb25TdGF0dXNbcnVsZUlkXSA9IHtbc3VicGFuZWxdOiB0cnVlfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5leHBhbnNpb25TdGF0dXNbcnVsZUlkXVtzdWJwYW5lbF0gPSAhdGhpcy5leHBhbnNpb25TdGF0dXNbcnVsZUlkXVtzdWJwYW5lbF07XG4gICAgfVxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG59XG4iLCI8c2VjdGlvbj5cbiAgPGg0IGNsYXNzPVwibWItNFwiPlJ1bGVzZXQgRXhlY3V0aW9uIEhpc3Rvcnk8L2g0PlxuICA8bmctdGVtcGxhdGUgI25vUnVsZXNFbmdpbmU+XG4gICAgPGRpdiBjbGFzcz1cImFsZXJ0IGFsZXJ0LWRhbmdlciBtLTJcIiByb2xlPVwiYWxlcnRcIj5cbiAgICAgIFRoZSBSdWxlcyBFbmdpbmUgaXMgbm90IGNvbmZpZ3VyZWQgb24gdGhpcyBwYWdlLlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuICA8dWwgKm5nSWY9XCJydWxlc2V0RXhlY3V0aW9uczsgZWxzZSBub1J1bGVzRW5naW5lXCIgY2xhc3M9XCJydWxlc2V0c1wiPlxuICAgIDxsaSAqbmdGb3I9XCJsZXQgZXhlY3V0aW9uIG9mIHJ1bGVzZXRFeGVjdXRpb25zXCIgY2xhc3M9XCJydWxlc2V0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicnVsZXNldC1wYW5lbC10aXRsZSBydWxlc2V0LWV4cGFuc2lvbi1hY3Rpb25cIlxuICAgICAgICBbY2xhc3MuZXJyb3JdPVwiZXhlY3V0aW9uLnR5cGUgPT09ICdSdWxlc2V0RXhlY3V0aW9uRXJyb3InXCJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUV4cGFuc2lvbihleGVjdXRpb24uZXhlY3V0aW9uSWQsICdydWxlc2V0JylcIj5cbiAgICAgICAgPGRpdj48c3BhbiBbdGl0bGVdPVwiJ1RoaXMgcnVsZXNldCBoYXMgYmVlbiBldmFsdWF0ZWQgJyArIGV4ZWN1dGlvbi5leGVjdXRpb25Db3VudGVyICsgJyB0aW1lKHMpJ1wiPnt7ZXhlY3V0aW9uLmV4ZWN1dGlvbkNvdW50ZXJ9fTwvc3Bhbj4gLSB7e2V4ZWN1dGlvbi5ydWxlc2V0TmFtZSB8IHRpdGxlY2FzZSB9fVxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJydWxlc2V0LXBhbmVsLXN1YnRpdGxlXCIgKm5nSWY9XCJleGVjdXRpb24ucnVsZXNldEluZm9ybWF0aW9uPy5saW5rZWRDb21wb25lbnQgYXMgbGlua2VkQ29tcG9uZW50XCI+XG4gICAgICAgICAgICB7e2xpbmtlZENvbXBvbmVudC5uYW1lfX0ge3tsaW5rZWRDb21wb25lbnQubGlicmFyeX19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJ1bGVzZXQtcGFuZWwtc3VidGl0bGVcIiAqbmdJZj1cImV4ZWN1dGlvbi5ydWxlc2V0SW5mb3JtYXRpb24/LnZhbGlkaXR5UmFuZ2UgYXMgdmFsaWRpdHlSYW5nZVwiPlxuICAgICAgICAgICAgRGF0ZSByYW5nZToge3t2YWxpZGl0eVJhbmdlLmZyb219fSAtIHt7dmFsaWRpdHlSYW5nZS50b319XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicnVsZXNldC1wYW5lbC10aXRsZS1hc2lkZVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZXJyb3IgY2Fwc3VsZVwiICpuZ0lmPVwiZXhlY3V0aW9uLnN0YXR1cyA9PT0gJ0Vycm9yJ1wiPkVycm9yPC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3VjY2VzcyBjYXBzdWxlXCIgKm5nSWY9XCJleGVjdXRpb24uc3RhdHVzID09PSAnQWN0aXZlJ1wiPkFwcGxpZWQ8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbmFjdGl2ZSBjYXBzdWxlXCIgKm5nSWY9XCJleGVjdXRpb24uc3RhdHVzID09PSAnRGVhY3RpdmF0ZWQnXCI+RGVhY3RpdmF0ZWQ8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ3YXJuIGNhcHN1bGVcIiAqbmdJZj1cImV4ZWN1dGlvbi5zdGF0dXMgPT09ICdOb0VmZmVjdCdcIj5ObyBlZmZlY3Q8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aW1lIGNhcHN1bGVcIj5cbiAgICAgICAgICAgIDxzcGFuPnt7ZXhlY3V0aW9uLnRpbWVzdGFtcCB8IGRhdGU6ICdISDptbTpzcyBTU1MnfX08L3NwYW4+XG4gICAgICAgICAgICA8c3Bhbj4oe3tleGVjdXRpb24uZHVyYXRpb24gfCBudW1iZXI6IGV4ZWN1dGlvbkR1cmF0aW9uRm9ybWF0fX1tcyk8L3NwYW4+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwiaWNvblwiXG4gICAgICAgICAgICBbY2xhc3MuaWNvbi1jYXJldC1kb3duXT1cIiFleHBhbnNpb25TdGF0dXNbZXhlY3V0aW9uLmV4ZWN1dGlvbklkXT8ucnVsZXNldFwiXG4gICAgICAgICAgICBbY2xhc3MuaWNvbi1jYXJldC11cF09XCJleHBhbnNpb25TdGF0dXNbZXhlY3V0aW9uLmV4ZWN1dGlvbklkXT8ucnVsZXNldFwiPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInJ1bGVzZXQtcGFuZWwtZGVzY3JpcHRpb25cIiAqbmdJZj1cImV4cGFuc2lvblN0YXR1c1tleGVjdXRpb24uZXhlY3V0aW9uSWRdPy5ydWxlc2V0XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwicnVsZXNcIlxuICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICBydWxlczogZXhlY3V0aW9uLnJ1bGVzZXRJbmZvcm1hdGlvbi5ydWxlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cGFuc2lvbklEOiBleGVjdXRpb24uZXhlY3V0aW9uSWRcbiAgICAgICAgICAgICAgICAgICAgICB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiaW5wdXRzXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRzOiBleGVjdXRpb24uaW5wdXRGYWN0c1xuICAgICAgICAgICAgICAgICAgICAgIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImV4ZWN1dGlvbi50eXBlID09PSAnUnVsZXNldEV4ZWN1dGlvbkVycm9yJzsgZWxzZSBzdWNjZXNzXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJ1bGVzZXQtcGFuZWwtY2F0ZWdvcnktdGl0bGVcIj5SdWxlczo8L2Rpdj5cbiAgICAgICAgICA8dWwgY2xhc3M9XCJydWxlc2V0LXBhbmVsLWNhdGVnb3J5LWJvZHkgcnVsZS1kZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBydWxlRXZhbHVhdGlvbiBvZiBleGVjdXRpb24ucnVsZXNFdmFsdWF0aW9uczsgbGV0IGluZGV4PWluZGV4O1wiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJydWxlc2V0LXBhbmVsLXRpdGxlXCIgW2NsYXNzLmVycm9yXT1cInJ1bGVFdmFsdWF0aW9uLmVycm9yXCI+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj57e3J1bGVFdmFsdWF0aW9uLnJ1bGUubmFtZSB8IHRpdGxlY2FzZX19IDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2Fwc3VsZSBlcnJvclwiICpuZ0lmPVwicnVsZUV2YWx1YXRpb24uZXJyb3JcIj5FcnJvcjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJ1bGVFdmFsdWF0aW9uLmVycm9yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicnVsZXNldC1wYW5lbC1jYXRlZ29yeS10aXRsZVwiPkVycm9yOjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHByZSBjbGFzcz1cInJ1bGVzZXQtcGFuZWwtY2F0ZWdvcnktYm9keSBlcnJvclwiPnt7cnVsZUV2YWx1YXRpb24uZXJyb3IgfCBqc29ufX08L3ByZT5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJpbnB1dHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0czogZXhlY3V0aW9uLmlucHV0RmFjdHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVudGltZUlucHV0czogZXhlY3V0aW9uLnJ1bGVzZXRJbmZvcm1hdGlvbj8ucnVsZXNbaW5kZXhdPy5pbnB1dFJ1bnRpbWVGYWN0c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8bzNyLXJ1bGUtYWN0aW9ucy1wcmVzICpuZ0lmPVwiIXJ1bGVFdmFsdWF0aW9uLmVycm9yXCJcbiAgICAgICAgICAgICAgICAgICAgW3RlbXBvcmFyeUZhY3RzXT1cInJ1bGVFdmFsdWF0aW9uLnRlbXBvcmFyeUZhY3RzXCJcbiAgICAgICAgICAgICAgICAgICAgW3J1bnRpbWVPdXRwdXRzXT1cImV4ZWN1dGlvbi5ydWxlc2V0SW5mb3JtYXRpb24/LnJ1bGVzW2luZGV4XT8ub3V0cHV0UnVudGltZUZhY3RzXCJcbiAgICAgICAgICAgICAgICAgID48L28zci1ydWxlLWFjdGlvbnMtcHJlcz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI3N1Y2Nlc3M+XG4gICAgICAgICAgPG8zci1ydWxlLWFjdGlvbnMtcHJlcyBbYWN0aW9uc109XCJleGVjdXRpb24ub3V0cHV0QWN0aW9uc1wiPjwvbzNyLXJ1bGUtYWN0aW9ucy1wcmVzPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJydWxlc2V0LXBhbmVsLWNhdGVnb3J5LXRpdGxlXCI+RXhlY3V0ZWQgUnVsZXM8L2Rpdj5cbiAgICAgICAgICA8dWwgY2xhc3M9XCJydWxlLWRlc2NyaXB0aW9uIHJ1bGVzZXQtcGFuZWwtY2F0ZWdvcnktYm9keVwiPlxuICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBydWxlRXZhbHVhdGlvbiBvZiBleGVjdXRpb24ucnVsZXNFdmFsdWF0aW9uczsgbGV0IGluZGV4PWluZGV4O1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicnVsZXNldC1wYW5lbC10aXRsZVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7cnVsZUV2YWx1YXRpb24ucnVsZS5uYW1lIHwgdGl0bGVjYXNlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXBzdWxlIGluYWN0aXZlXCIgKm5nSWY9XCJydWxlRXZhbHVhdGlvbi5jYWNoZWRcIj5DYWNoZWQ8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXBzdWxlXCI+KHt7cnVsZUV2YWx1YXRpb24uZHVyYXRpb24gfCBudW1iZXI6IGV4ZWN1dGlvbkR1cmF0aW9uRm9ybWF0fX1tcyk8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwidHJpZ2dlcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInt0cmlnZ2VyczogKHJ1bGVFdmFsdWF0aW9uLnRyaWdnZXJzW3J1bGVFdmFsdWF0aW9uLnJ1bGUuaWRdKX1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bzNyLXJ1bGUtYWN0aW9ucy1wcmVzXG4gICAgICAgICAgICAgICAgICBbYWN0aW9uc109XCJydWxlRXZhbHVhdGlvbi5vdXRwdXRBY3Rpb25zXCJcbiAgICAgICAgICAgICAgICAgIFt0ZW1wb3JhcnlGYWN0c109XCJydWxlRXZhbHVhdGlvbi50ZW1wb3JhcnlGYWN0c1wiXG4gICAgICAgICAgICAgICAgICBbcnVudGltZU91dHB1dHNdPVwiZXhlY3V0aW9uLnJ1bGVzZXRJbmZvcm1hdGlvbj8ucnVsZXNbaW5kZXhdPy5vdXRwdXRSdW50aW1lRmFjdHNcIj5cbiAgICAgICAgICAgICAgICA8L28zci1ydWxlLWFjdGlvbnMtcHJlcz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2xpPlxuICA8L3VsPlxuPC9zZWN0aW9uPlxuXG48bmctdGVtcGxhdGUgbGV0LXRyaWdnZXJzPVwidHJpZ2dlcnNcIiAjdHJpZ2dlcnM+XG4gIDxkaXYgY2xhc3M9XCJydWxlc2V0LXBhbmVsLWNhdGVnb3J5LXRpdGxlXCI+QmFzZWZhY3RzIFRyaWdnZXJzPC9kaXY+XG4gIDx1bCBjbGFzcz1cInJ1bGVzZXQtcGFuZWwtY2F0ZWdvcnktYm9keSB0cmlnZ2Vyc1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHRyaWdnZXIgb2YgKHRyaWdnZXJzIHwga2V5dmFsdWUpXCI+XG4gICAgICA8bGkgKm5nSWY9XCJ0cmlnZ2VyLnZhbHVlPy5mYWN0TmFtZVwiPlxuICAgICAgICA8bzNyLXJ1bGUta2V5LXZhbHVlLXByZXNcbiAgICAgICAgICBba2V5XT1cInRyaWdnZXIudmFsdWUuZmFjdE5hbWVcIlxuICAgICAgICAgIFtvbGRWYWx1ZV09XCJ0cmlnZ2VyLnZhbHVlLm9sZFZhbHVlIHwgbzNyRmFsbGJhY2tUb1wiXG4gICAgICAgICAgW3ZhbHVlXT1cInRyaWdnZXIudmFsdWUubmV3VmFsdWUgfCBvM3JGYWxsYmFja1RvXCJcbiAgICAgICAgICBbdHlwZV09XCInc3RhdGUnXCI+PC9vM3ItcnVsZS1rZXktdmFsdWUtcHJlcz5cbiAgICAgIDwvbGk+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvdWw+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgbGV0LXJ1bGVzPVwicnVsZXNcIiBsZXQtZXhwYW5zaW9uSUQ9XCJleHBhbnNpb25JRFwiICNydWxlcz5cbiAgPGRpdiBjbGFzcz1cInJ1bGVzZXQtcGFuZWwtY2F0ZWdvcnktdGl0bGUgcnVsZXNldC1leHBhbnNpb24tYWN0aW9uXCJcbiAgICAoY2xpY2spPVwidG9nZ2xlRXhwYW5zaW9uKGV4cGFuc2lvbklELCAncnVsZXNPdmVydmlldycpXCI+XG4gICAgPHNwYW4+UnVsZXMgT3ZlcnZpZXc8L3NwYW4+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImljb25cIlxuICAgICAgICAgICAgW2NsYXNzLmljb24tY2FyZXQtZG93bl09XCIhZXhwYW5zaW9uU3RhdHVzW2V4cGFuc2lvbklEXT8ucnVsZXNPdmVydmlld1wiXG4gICAgICAgICAgICBbY2xhc3MuaWNvbi1jYXJldC11cF09XCJleHBhbnNpb25TdGF0dXNbZXhwYW5zaW9uSURdPy5ydWxlc092ZXJ2aWV3XCI+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZXhwYW5zaW9uU3RhdHVzW2V4cGFuc2lvbklEXT8ucnVsZXNPdmVydmlld1wiPlxuICAgIDxkaXYgKm5nSWY9XCJydWxlcz8ubGVuZ3RoID09PSAwXCIgY2xhc3M9XCJydWxlc2V0LXBhbmVsLWNhdGVnb3J5LWJvZHkgZW1wdHlcIj5ObyBydWxlPC9kaXY+XG4gICAgPHVsIGNsYXNzPVwicnVsZXNldC1wYW5lbC1jYXRlZ29yeS1ib2R5XCIgKm5nSWY9XCJydWxlcz8ubGVuZ3RoID4gMFwiPlxuICAgICAgPGxpICpuZ0Zvcj1cImxldCBydWxlIG9mIHJ1bGVzXCI+XG4gICAgICAgIDxvM3ItcnVsZS10cmVlLXByZXMgW25hbWVdPVwicnVsZS5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29uZGl0aW9uXT1cInJ1bGU/LnJvb3RFbGVtZW50Py5jb25kaXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtibG9ja1R5cGVdPVwicnVsZT8ucm9vdEVsZW1lbnQ/LmJsb2NrVHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N1Y2Nlc3NFbGVtZW50c109XCJydWxlPy5yb290RWxlbWVudD8uc3VjY2Vzc0VsZW1lbnRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmFpbHVyZUVsZW1lbnRzXT1cInJ1bGU/LnJvb3RFbGVtZW50Py5mYWlsdXJlRWxlbWVudHNcIj5cbiAgICAgICAgPC9vM3ItcnVsZS10cmVlLXByZXM+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlIGxldC1pbnB1dHM9XCJpbnB1dHNcIiBsZXQtcnVudGltZUlucHV0cz1cInJ1bnRpbWVJbnB1dHNcIiAjaW5wdXRzPlxuICA8ZGl2IGNsYXNzPVwicnVsZXNldC1wYW5lbC1jYXRlZ29yeS10aXRsZVwiPklucHV0cyBzbmFwc2hvdDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiaW5wdXRzPy5sZW5ndGggPT09IDBcIiBjbGFzcz1cInJ1bGVzZXQtcGFuZWwtY2F0ZWdvcnktYm9keSBlbXB0eVwiPk5vIGlucHV0czwvZGl2PlxuICA8dWwgY2xhc3M9XCJydWxlc2V0LXBhbmVsLWNhdGVnb3J5LWJvZHlcIiAqbmdJZj1cImlucHV0cz8ubGVuZ3RoID4gMFwiPlxuICAgIDxsaSAqbmdGb3I9XCJsZXQgaW5wdXQgb2YgaW5wdXRzXCI+XG4gICAgICA8bzNyLXJ1bGUta2V5LXZhbHVlLXByZXNcbiAgICAgICAgW2tleV09XCJpbnB1dC5mYWN0TmFtZVwiXG4gICAgICAgIFt2YWx1ZV09XCJpbnB1dC52YWx1ZSB8IG8zckZhbGxiYWNrVG9cIlxuICAgICAgICBbdHlwZV09XCInc3RhdGUnXCI+PC9vM3ItcnVsZS1rZXktdmFsdWUtcHJlcz5cbiAgICA8L2xpPlxuICAgIDxsaSAqbmdGb3I9XCJsZXQgaW5wdXQgb2YgcnVudGltZUlucHV0c1wiPnt7aW5wdXR9fSAoc2NvcGUgbGltaXRlZCB0byBydWxlc2V0KTwvbGk+XG4gIDwvdWw+XG48L25nLXRlbXBsYXRlPlxuIl19
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZXNldC1oaXN0b3J5LXByZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcnVsZXMtZW5naW5lL3J1bGVzZXQtaGlzdG9yeS9ydWxlc2V0LWhpc3RvcnktcHJlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9ydWxlcy1lbmdpbmUvcnVsZXNldC1oaXN0b3J5L3J1bGVzZXQtaGlzdG9yeS1wcmVzLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7QUFxQmhILE1BQU0sT0FBTywyQkFBMkI7SUFtQnRDLFlBQTZCLEVBQXFCO1FBQXJCLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBbEJsRDs7Ozs7Ozs7V0FRRztRQUNJLG9CQUFlLEdBQW9ELEVBQUUsQ0FBQztRQUl0RSxzQkFBaUIsR0FBNEIsRUFBRSxDQUFDO1FBR2hELDRCQUF1QixHQUFHLE9BQU8sQ0FBQztJQUVZLENBQUM7SUFFdEQ7Ozs7T0FJRztJQUNJLGVBQWUsQ0FBQyxNQUFjLEVBQUUsUUFBZ0I7UUFDckQsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUMsQ0FBQztRQUNwRCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25GLENBQUM7UUFDRCxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzFCLENBQUM7aUlBakNVLDJCQUEyQjtxSEFBM0IsMkJBQTJCLHdLQ3JCeEMsdzZRQTJKQTs7MkZEdElhLDJCQUEyQjtrQkFQdkMsU0FBUzsrQkFDRSwwQkFBMEIsbUJBR25CLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUk7c0ZBZ0I5QixpQkFBaUI7c0JBRHZCLEtBQUs7Z0JBSUMsdUJBQXVCO3NCQUQ3QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBSdWxlc2V0LCBSdWxlc2V0RXhlY3V0aW9uRXJyb3JFdmVudCwgUnVsZXNldEV4ZWN1dGlvbkV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vZW5naW5lJztcblxuZXhwb3J0IHR5cGUgUnVsZXNldEV4ZWN1dGlvblN0YXR1cyA9ICdFcnJvcicgfCAnQWN0aXZlJyB8ICdEZWFjdGl2YXRlZCcgfCAnTm9FZmZlY3QnO1xuLyoqXG4gKiBNb2RlbCBvZiBhIFJ1bGVzZXRFeGVjdXRpb24gd2l0aCBtb3JlIGluZm9ybWF0aW9uIGZvciBkZWJ1ZyBwdXJwb3NlXG4gKi9cbmV4cG9ydCB0eXBlIFJ1bGVzZXRFeGVjdXRpb25EZWJ1ZyA9IChSdWxlc2V0RXhlY3V0aW9uRXZlbnQgfCBSdWxlc2V0RXhlY3V0aW9uRXJyb3JFdmVudCkgJiB7XG4gIGlzQWN0aXZlOiBib29sZWFuO1xuICBzdGF0dXM6IFJ1bGVzZXRFeGVjdXRpb25TdGF0dXM7XG4gIHJ1bGVzZXRJbmZvcm1hdGlvbjogUnVsZXNldCB8IHVuZGVmaW5lZDtcbn07XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbzNyLXJ1bGVzZXQtaGlzdG9yeS1wcmVzJyxcbiAgc3R5bGVVcmxzOiBbJy4vcnVsZXNldC1oaXN0b3J5LXByZXMuc3R5bGUuc2NzcyddLFxuICB0ZW1wbGF0ZVVybDogJy4vcnVsZXNldC1oaXN0b3J5LXByZXMudGVtcGxhdGUuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIFJ1bGVzZXRIaXN0b3J5UHJlc0NvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBSZWZsZWN0cyB0aGUgc3RhdGUgb2YgZWFjaCBydWxlc2V0IGV4cGFuZGVkIGVsZW1lbnRzLlxuICAgKiBFYWNoIHJ1bGVzZXQgZW50cnkgY29udGFpbnMgYSBsaXN0IG9mIHN1YnBhbmVsIHRoYXQgY2FuIGJlIGNvbGxhcHNlZCBvciBleHBhbmRlZC5cbiAgICogUnVsZXNldCB3aG9sZSBwYW5lbCBzdGF0dXMgaXMgc3RvcmUgdGhlICdydWxlc2V0JyBlbnRyeS5cbiAgICogQGV4YW1wbGVcbiAgICogRXhwYW5kZWQgcnVsZXNldCB3aXRoIHJ1bGUgb3ZlcnZpZXcgY29sbGFwc2VkOlxuICAgKiB7J3J1bGVzZXRJZCc6IHsncnVsZXNldCcgOiB0cnVlLCAncnVsZU92ZXJ2aWV3JzogZmFsc2V9fVxuICAgKiBAbm90ZSBDb2xsYXBzaW5nIGEgcnVsZXNldCB3aWxsIG5vdCByZXNldCB0aGUgc3VicGFuZWwgZXhwYW5zaW9uIHN0YXR1c1xuICAgKi9cbiAgcHVibGljIGV4cGFuc2lvblN0YXR1czoge1trZXk6IHN0cmluZ106IHtbc3VicGFuZWw6IHN0cmluZ106IGJvb2xlYW59IH0gPSB7fTtcblxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBydWxlc2V0RXhlY3V0aW9uczogUnVsZXNldEV4ZWN1dGlvbkRlYnVnW10gPSBbXTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZXhlY3V0aW9uRHVyYXRpb25Gb3JtYXQgPSAnMS4zLTMnO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIC8qKlxuICAgKiBUb2dnbGUgYSBydWxlc2V0IHN1YnBhbmVsXG4gICAqIEBwYXJhbSBydWxlSWRcbiAgICogQHBhcmFtIHN1YnBhbmVsIGVsZW1lbnQgdG8gY29sbGFwc2UuICdydWxlc2V0JyB3aWxsIHRvZ2dsZSB0aGUgd2hvbGUgcGFuZWwgYnV0IHdvbid0IHJlc2V0IHRoZSBzdWJwYW5lbHMgc3RhdGVzLlxuICAgKi9cbiAgcHVibGljIHRvZ2dsZUV4cGFuc2lvbihydWxlSWQ6IHN0cmluZywgc3VicGFuZWw6IHN0cmluZykge1xuICAgIGlmICghdGhpcy5leHBhbnNpb25TdGF0dXNbcnVsZUlkXSkge1xuICAgICAgdGhpcy5leHBhbnNpb25TdGF0dXNbcnVsZUlkXSA9IHtbc3VicGFuZWxdOiB0cnVlfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5leHBhbnNpb25TdGF0dXNbcnVsZUlkXVtzdWJwYW5lbF0gPSAhdGhpcy5leHBhbnNpb25TdGF0dXNbcnVsZUlkXVtzdWJwYW5lbF07XG4gICAgfVxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG59XG4iLCI8c2VjdGlvbj5cbiAgPGg0IGNsYXNzPVwibWItNFwiPlJ1bGVzZXQgRXhlY3V0aW9uIEhpc3Rvcnk8L2g0PlxuICA8bmctdGVtcGxhdGUgI25vUnVsZXNFbmdpbmU+XG4gICAgPGRpdiBjbGFzcz1cImFsZXJ0IGFsZXJ0LWRhbmdlciBtLTJcIiByb2xlPVwiYWxlcnRcIj5cbiAgICAgIFRoZSBSdWxlcyBFbmdpbmUgaXMgbm90IGNvbmZpZ3VyZWQgb24gdGhpcyBwYWdlLlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuICA8dWwgKm5nSWY9XCJydWxlc2V0RXhlY3V0aW9uczsgZWxzZSBub1J1bGVzRW5naW5lXCIgY2xhc3M9XCJydWxlc2V0c1wiPlxuICAgIDxsaSAqbmdGb3I9XCJsZXQgZXhlY3V0aW9uIG9mIHJ1bGVzZXRFeGVjdXRpb25zXCIgY2xhc3M9XCJydWxlc2V0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicnVsZXNldC1wYW5lbC10aXRsZSBydWxlc2V0LWV4cGFuc2lvbi1hY3Rpb25cIlxuICAgICAgICBbY2xhc3MuZXJyb3JdPVwiZXhlY3V0aW9uLnR5cGUgPT09ICdSdWxlc2V0RXhlY3V0aW9uRXJyb3InXCJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUV4cGFuc2lvbihleGVjdXRpb24uZXhlY3V0aW9uSWQsICdydWxlc2V0JylcIj5cbiAgICAgICAgPGRpdj48c3BhbiBbdGl0bGVdPVwiJ1RoaXMgcnVsZXNldCBoYXMgYmVlbiBldmFsdWF0ZWQgJyArIGV4ZWN1dGlvbi5leGVjdXRpb25Db3VudGVyICsgJyB0aW1lKHMpJ1wiPnt7ZXhlY3V0aW9uLmV4ZWN1dGlvbkNvdW50ZXJ9fTwvc3Bhbj4gLSB7e2V4ZWN1dGlvbi5ydWxlc2V0TmFtZSB8IHRpdGxlY2FzZSB9fVxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJydWxlc2V0LXBhbmVsLXN1YnRpdGxlXCIgKm5nSWY9XCJleGVjdXRpb24ucnVsZXNldEluZm9ybWF0aW9uPy5saW5rZWRDb21wb25lbnRzPy5vciB8fCBleGVjdXRpb24ucnVsZXNldEluZm9ybWF0aW9uPy5saW5rZWRDb21wb25lbnRcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGxjIG9mIChleGVjdXRpb24ucnVsZXNldEluZm9ybWF0aW9uPy5saW5rZWRDb21wb25lbnRzPy5vciB8fCBbZXhlY3V0aW9uLnJ1bGVzZXRJbmZvcm1hdGlvbi5saW5rZWRDb21wb25lbnRdKTsgbGFzdCBhcyBpc0xhc3RcIj5cbiAgICAgICAgICAgICAgPGRpdj57e2xjLm5hbWV9fSB7e2xjLmxpYnJhcnl9fSA8c3BhbiAqbmdJZj1cIiFpc0xhc3RcIj4gT1IgPC9zcGFuPjwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJ1bGVzZXQtcGFuZWwtc3VidGl0bGVcIiAqbmdJZj1cImV4ZWN1dGlvbi5ydWxlc2V0SW5mb3JtYXRpb24/LnZhbGlkaXR5UmFuZ2UgYXMgdmFsaWRpdHlSYW5nZVwiPlxuICAgICAgICAgICAgRGF0ZSByYW5nZToge3t2YWxpZGl0eVJhbmdlLmZyb219fSAtIHt7dmFsaWRpdHlSYW5nZS50b319XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicnVsZXNldC1wYW5lbC10aXRsZS1hc2lkZVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZXJyb3IgY2Fwc3VsZVwiICpuZ0lmPVwiZXhlY3V0aW9uLnN0YXR1cyA9PT0gJ0Vycm9yJ1wiPkVycm9yPC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3VjY2VzcyBjYXBzdWxlXCIgKm5nSWY9XCJleGVjdXRpb24uc3RhdHVzID09PSAnQWN0aXZlJ1wiPkFwcGxpZWQ8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbmFjdGl2ZSBjYXBzdWxlXCIgKm5nSWY9XCJleGVjdXRpb24uc3RhdHVzID09PSAnRGVhY3RpdmF0ZWQnXCI+RGVhY3RpdmF0ZWQ8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ3YXJuIGNhcHN1bGVcIiAqbmdJZj1cImV4ZWN1dGlvbi5zdGF0dXMgPT09ICdOb0VmZmVjdCdcIj5ObyBlZmZlY3Q8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aW1lIGNhcHN1bGVcIj5cbiAgICAgICAgICAgIDxzcGFuPnt7ZXhlY3V0aW9uLnRpbWVzdGFtcCB8IGRhdGU6ICdISDptbTpzcyBTU1MnfX08L3NwYW4+XG4gICAgICAgICAgICA8c3Bhbj4oe3tleGVjdXRpb24uZHVyYXRpb24gfCBudW1iZXI6IGV4ZWN1dGlvbkR1cmF0aW9uRm9ybWF0fX1tcyk8L3NwYW4+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwiaWNvblwiXG4gICAgICAgICAgICBbY2xhc3MuaWNvbi1jYXJldC1kb3duXT1cIiFleHBhbnNpb25TdGF0dXNbZXhlY3V0aW9uLmV4ZWN1dGlvbklkXT8ucnVsZXNldFwiXG4gICAgICAgICAgICBbY2xhc3MuaWNvbi1jYXJldC11cF09XCJleHBhbnNpb25TdGF0dXNbZXhlY3V0aW9uLmV4ZWN1dGlvbklkXT8ucnVsZXNldFwiPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInJ1bGVzZXQtcGFuZWwtZGVzY3JpcHRpb25cIiAqbmdJZj1cImV4cGFuc2lvblN0YXR1c1tleGVjdXRpb24uZXhlY3V0aW9uSWRdPy5ydWxlc2V0XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwicnVsZXNcIlxuICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICBydWxlczogZXhlY3V0aW9uLnJ1bGVzZXRJbmZvcm1hdGlvbi5ydWxlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cGFuc2lvbklEOiBleGVjdXRpb24uZXhlY3V0aW9uSWRcbiAgICAgICAgICAgICAgICAgICAgICB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiaW5wdXRzXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRzOiBleGVjdXRpb24uaW5wdXRGYWN0c1xuICAgICAgICAgICAgICAgICAgICAgIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImV4ZWN1dGlvbi50eXBlID09PSAnUnVsZXNldEV4ZWN1dGlvbkVycm9yJzsgZWxzZSBzdWNjZXNzXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJ1bGVzZXQtcGFuZWwtY2F0ZWdvcnktdGl0bGVcIj5SdWxlczo8L2Rpdj5cbiAgICAgICAgICA8dWwgY2xhc3M9XCJydWxlc2V0LXBhbmVsLWNhdGVnb3J5LWJvZHkgcnVsZS1kZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBydWxlRXZhbHVhdGlvbiBvZiBleGVjdXRpb24ucnVsZXNFdmFsdWF0aW9uczsgbGV0IGluZGV4PWluZGV4O1wiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJydWxlc2V0LXBhbmVsLXRpdGxlXCIgW2NsYXNzLmVycm9yXT1cInJ1bGVFdmFsdWF0aW9uLmVycm9yXCI+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj57e3J1bGVFdmFsdWF0aW9uLnJ1bGUubmFtZSB8IHRpdGxlY2FzZX19IDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2Fwc3VsZSBlcnJvclwiICpuZ0lmPVwicnVsZUV2YWx1YXRpb24uZXJyb3JcIj5FcnJvcjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJ1bGVFdmFsdWF0aW9uLmVycm9yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicnVsZXNldC1wYW5lbC1jYXRlZ29yeS10aXRsZVwiPkVycm9yOjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHByZSBjbGFzcz1cInJ1bGVzZXQtcGFuZWwtY2F0ZWdvcnktYm9keSBlcnJvclwiPnt7cnVsZUV2YWx1YXRpb24uZXJyb3IgfCBqc29ufX08L3ByZT5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJpbnB1dHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0czogZXhlY3V0aW9uLmlucHV0RmFjdHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVudGltZUlucHV0czogZXhlY3V0aW9uLnJ1bGVzZXRJbmZvcm1hdGlvbj8ucnVsZXNbaW5kZXhdPy5pbnB1dFJ1bnRpbWVGYWN0c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8bzNyLXJ1bGUtYWN0aW9ucy1wcmVzICpuZ0lmPVwiIXJ1bGVFdmFsdWF0aW9uLmVycm9yXCJcbiAgICAgICAgICAgICAgICAgICAgW3RlbXBvcmFyeUZhY3RzXT1cInJ1bGVFdmFsdWF0aW9uLnRlbXBvcmFyeUZhY3RzXCJcbiAgICAgICAgICAgICAgICAgICAgW3J1bnRpbWVPdXRwdXRzXT1cImV4ZWN1dGlvbi5ydWxlc2V0SW5mb3JtYXRpb24/LnJ1bGVzW2luZGV4XT8ub3V0cHV0UnVudGltZUZhY3RzXCJcbiAgICAgICAgICAgICAgICAgID48L28zci1ydWxlLWFjdGlvbnMtcHJlcz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI3N1Y2Nlc3M+XG4gICAgICAgICAgPG8zci1ydWxlLWFjdGlvbnMtcHJlcyBbYWN0aW9uc109XCJleGVjdXRpb24ub3V0cHV0QWN0aW9uc1wiPjwvbzNyLXJ1bGUtYWN0aW9ucy1wcmVzPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJydWxlc2V0LXBhbmVsLWNhdGVnb3J5LXRpdGxlXCI+RXhlY3V0ZWQgUnVsZXM8L2Rpdj5cbiAgICAgICAgICA8dWwgY2xhc3M9XCJydWxlLWRlc2NyaXB0aW9uIHJ1bGVzZXQtcGFuZWwtY2F0ZWdvcnktYm9keVwiPlxuICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBydWxlRXZhbHVhdGlvbiBvZiBleGVjdXRpb24ucnVsZXNFdmFsdWF0aW9uczsgbGV0IGluZGV4PWluZGV4O1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicnVsZXNldC1wYW5lbC10aXRsZVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7cnVsZUV2YWx1YXRpb24ucnVsZS5uYW1lIHwgdGl0bGVjYXNlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXBzdWxlIGluYWN0aXZlXCIgKm5nSWY9XCJydWxlRXZhbHVhdGlvbi5jYWNoZWRcIj5DYWNoZWQ8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXBzdWxlXCI+KHt7cnVsZUV2YWx1YXRpb24uZHVyYXRpb24gfCBudW1iZXI6IGV4ZWN1dGlvbkR1cmF0aW9uRm9ybWF0fX1tcyk8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwidHJpZ2dlcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInt0cmlnZ2VyczogKHJ1bGVFdmFsdWF0aW9uLnRyaWdnZXJzW3J1bGVFdmFsdWF0aW9uLnJ1bGUuaWRdKX1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bzNyLXJ1bGUtYWN0aW9ucy1wcmVzXG4gICAgICAgICAgICAgICAgICBbYWN0aW9uc109XCJydWxlRXZhbHVhdGlvbi5vdXRwdXRBY3Rpb25zXCJcbiAgICAgICAgICAgICAgICAgIFt0ZW1wb3JhcnlGYWN0c109XCJydWxlRXZhbHVhdGlvbi50ZW1wb3JhcnlGYWN0c1wiXG4gICAgICAgICAgICAgICAgICBbcnVudGltZU91dHB1dHNdPVwiZXhlY3V0aW9uLnJ1bGVzZXRJbmZvcm1hdGlvbj8ucnVsZXNbaW5kZXhdPy5vdXRwdXRSdW50aW1lRmFjdHNcIj5cbiAgICAgICAgICAgICAgICA8L28zci1ydWxlLWFjdGlvbnMtcHJlcz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2xpPlxuICA8L3VsPlxuPC9zZWN0aW9uPlxuXG48bmctdGVtcGxhdGUgbGV0LXRyaWdnZXJzPVwidHJpZ2dlcnNcIiAjdHJpZ2dlcnM+XG4gIDxkaXYgY2xhc3M9XCJydWxlc2V0LXBhbmVsLWNhdGVnb3J5LXRpdGxlXCI+QmFzZWZhY3RzIFRyaWdnZXJzPC9kaXY+XG4gIDx1bCBjbGFzcz1cInJ1bGVzZXQtcGFuZWwtY2F0ZWdvcnktYm9keSB0cmlnZ2Vyc1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHRyaWdnZXIgb2YgKHRyaWdnZXJzIHwga2V5dmFsdWUpXCI+XG4gICAgICA8bGkgKm5nSWY9XCJ0cmlnZ2VyLnZhbHVlPy5mYWN0TmFtZVwiPlxuICAgICAgICA8bzNyLXJ1bGUta2V5LXZhbHVlLXByZXNcbiAgICAgICAgICBba2V5XT1cInRyaWdnZXIudmFsdWUuZmFjdE5hbWVcIlxuICAgICAgICAgIFtvbGRWYWx1ZV09XCJ0cmlnZ2VyLnZhbHVlLm9sZFZhbHVlIHwgbzNyRmFsbGJhY2tUb1wiXG4gICAgICAgICAgW3ZhbHVlXT1cInRyaWdnZXIudmFsdWUubmV3VmFsdWUgfCBvM3JGYWxsYmFja1RvXCJcbiAgICAgICAgICBbdHlwZV09XCInc3RhdGUnXCI+PC9vM3ItcnVsZS1rZXktdmFsdWUtcHJlcz5cbiAgICAgIDwvbGk+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvdWw+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgbGV0LXJ1bGVzPVwicnVsZXNcIiBsZXQtZXhwYW5zaW9uSUQ9XCJleHBhbnNpb25JRFwiICNydWxlcz5cbiAgPGRpdiBjbGFzcz1cInJ1bGVzZXQtcGFuZWwtY2F0ZWdvcnktdGl0bGUgcnVsZXNldC1leHBhbnNpb24tYWN0aW9uXCJcbiAgICAoY2xpY2spPVwidG9nZ2xlRXhwYW5zaW9uKGV4cGFuc2lvbklELCAncnVsZXNPdmVydmlldycpXCI+XG4gICAgPHNwYW4+UnVsZXMgT3ZlcnZpZXc8L3NwYW4+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImljb25cIlxuICAgICAgICAgICAgW2NsYXNzLmljb24tY2FyZXQtZG93bl09XCIhZXhwYW5zaW9uU3RhdHVzW2V4cGFuc2lvbklEXT8ucnVsZXNPdmVydmlld1wiXG4gICAgICAgICAgICBbY2xhc3MuaWNvbi1jYXJldC11cF09XCJleHBhbnNpb25TdGF0dXNbZXhwYW5zaW9uSURdPy5ydWxlc092ZXJ2aWV3XCI+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZXhwYW5zaW9uU3RhdHVzW2V4cGFuc2lvbklEXT8ucnVsZXNPdmVydmlld1wiPlxuICAgIDxkaXYgKm5nSWY9XCJydWxlcz8ubGVuZ3RoID09PSAwXCIgY2xhc3M9XCJydWxlc2V0LXBhbmVsLWNhdGVnb3J5LWJvZHkgZW1wdHlcIj5ObyBydWxlPC9kaXY+XG4gICAgPHVsIGNsYXNzPVwicnVsZXNldC1wYW5lbC1jYXRlZ29yeS1ib2R5XCIgKm5nSWY9XCJydWxlcz8ubGVuZ3RoID4gMFwiPlxuICAgICAgPGxpICpuZ0Zvcj1cImxldCBydWxlIG9mIHJ1bGVzXCI+XG4gICAgICAgIDxvM3ItcnVsZS10cmVlLXByZXMgW25hbWVdPVwicnVsZS5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29uZGl0aW9uXT1cInJ1bGU/LnJvb3RFbGVtZW50Py5jb25kaXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtibG9ja1R5cGVdPVwicnVsZT8ucm9vdEVsZW1lbnQ/LmJsb2NrVHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N1Y2Nlc3NFbGVtZW50c109XCJydWxlPy5yb290RWxlbWVudD8uc3VjY2Vzc0VsZW1lbnRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmFpbHVyZUVsZW1lbnRzXT1cInJ1bGU/LnJvb3RFbGVtZW50Py5mYWlsdXJlRWxlbWVudHNcIj5cbiAgICAgICAgPC9vM3ItcnVsZS10cmVlLXByZXM+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlIGxldC1pbnB1dHM9XCJpbnB1dHNcIiBsZXQtcnVudGltZUlucHV0cz1cInJ1bnRpbWVJbnB1dHNcIiAjaW5wdXRzPlxuICA8ZGl2IGNsYXNzPVwicnVsZXNldC1wYW5lbC1jYXRlZ29yeS10aXRsZVwiPklucHV0cyBzbmFwc2hvdDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiaW5wdXRzPy5sZW5ndGggPT09IDBcIiBjbGFzcz1cInJ1bGVzZXQtcGFuZWwtY2F0ZWdvcnktYm9keSBlbXB0eVwiPk5vIGlucHV0czwvZGl2PlxuICA8dWwgY2xhc3M9XCJydWxlc2V0LXBhbmVsLWNhdGVnb3J5LWJvZHlcIiAqbmdJZj1cImlucHV0cz8ubGVuZ3RoID4gMFwiPlxuICAgIDxsaSAqbmdGb3I9XCJsZXQgaW5wdXQgb2YgaW5wdXRzXCI+XG4gICAgICA8bzNyLXJ1bGUta2V5LXZhbHVlLXByZXNcbiAgICAgICAgW2tleV09XCJpbnB1dC5mYWN0TmFtZVwiXG4gICAgICAgIFt2YWx1ZV09XCJpbnB1dC52YWx1ZSB8IG8zckZhbGxiYWNrVG9cIlxuICAgICAgICBbdHlwZV09XCInc3RhdGUnXCI+PC9vM3ItcnVsZS1rZXktdmFsdWUtcHJlcz5cbiAgICA8L2xpPlxuICAgIDxsaSAqbmdGb3I9XCJsZXQgaW5wdXQgb2YgcnVudGltZUlucHV0c1wiPnt7aW5wdXR9fSAoc2NvcGUgbGltaXRlZCB0byBydWxlc2V0KTwvbGk+XG4gIDwvdWw+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -8,11 +8,11 @@ import { O3rFallbackToPipe } from '../shared/index';
8
8
  import { RulesetHistoryPresComponent } from './ruleset-history-pres.component';
9
9
  import * as i0 from "@angular/core";
10
10
  export class RulesetHistoryPresModule {
11
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RulesetHistoryPresModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
12
- /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.3", ngImport: i0, type: RulesetHistoryPresModule, declarations: [RulesetHistoryPresComponent, RuleConditionPresComponent, RuleTreePresComponent, RuleActionsPresComponent, RuleKeyValuePresComponent], imports: [O3rFallbackToPipe, CommonModule, CommonModule, CommonModule, JsonPipe], exports: [RulesetHistoryPresComponent] }); }
13
- /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RulesetHistoryPresModule, imports: [CommonModule, CommonModule, CommonModule] }); }
11
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: RulesetHistoryPresModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
12
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.6", ngImport: i0, type: RulesetHistoryPresModule, declarations: [RulesetHistoryPresComponent, RuleConditionPresComponent, RuleTreePresComponent, RuleActionsPresComponent, RuleKeyValuePresComponent], imports: [O3rFallbackToPipe, CommonModule, CommonModule, CommonModule, JsonPipe], exports: [RulesetHistoryPresComponent] }); }
13
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: RulesetHistoryPresModule, imports: [CommonModule, CommonModule, CommonModule] }); }
14
14
  }
15
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RulesetHistoryPresModule, decorators: [{
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: RulesetHistoryPresModule, decorators: [{
16
16
  type: NgModule,
17
17
  args: [{
18
18
  imports: [O3rFallbackToPipe, CommonModule, CommonModule, CommonModule, JsonPipe],