@o3r/components 10.0.0-next.8 → 11.0.0-next.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.
- package/README.md +1 -1
- package/builders/component-extractor/helpers/component/component-class.extractor.d.ts +2 -0
- package/builders/component-extractor/helpers/component/component-class.extractor.d.ts.map +1 -1
- package/builders/component-extractor/helpers/component/component-class.extractor.js +14 -8
- package/builders/component-extractor/helpers/component/component-class.extractor.js.map +1 -1
- package/builders/component-extractor/helpers/component/component-config.extractor.d.ts.map +1 -1
- package/builders/component-extractor/helpers/component/component-config.extractor.js +6 -2
- package/builders/component-extractor/helpers/component/component-config.extractor.js.map +1 -1
- package/builders/component-extractor/helpers/component/component.extractor.d.ts +5 -5
- package/builders/component-extractor/helpers/component/component.extractor.d.ts.map +1 -1
- package/builders/component-extractor/helpers/component/component.extractor.js +4 -2
- package/builders/component-extractor/helpers/component/component.extractor.js.map +1 -1
- package/builders/component-extractor/helpers/component/component.parser.d.ts +9 -6
- package/builders/component-extractor/helpers/component/component.parser.d.ts.map +1 -1
- package/builders/component-extractor/helpers/component/component.parser.js +36 -10
- package/builders/component-extractor/helpers/component/component.parser.js.map +1 -1
- package/builders/component-extractor/index.d.ts +0 -1
- package/builders/component-extractor/index.d.ts.map +1 -1
- package/builders/component-extractor/index.js +8 -9
- package/builders/component-extractor/index.js.map +1 -1
- package/builders/component-extractor/schema.d.ts +5 -0
- package/builders/component-extractor/schema.d.ts.map +1 -1
- package/builders/component-extractor/schema.json +22 -1
- package/core/component.output.d.ts +8 -11
- package/core/component.output.d.ts.map +1 -1
- package/core/index.d.ts +0 -1
- package/core/index.d.ts.map +1 -1
- package/core/rendering/helpers.d.ts +0 -1
- package/core/rendering/helpers.d.ts.map +1 -1
- package/devkit/components-devkit.interface.d.ts +0 -1
- package/devkit/components-devkit.interface.d.ts.map +1 -1
- package/devkit/components-devtools.message.service.d.ts +4 -6
- package/devkit/components-devtools.message.service.d.ts.map +1 -1
- package/devkit/components-devtools.module.d.ts +0 -1
- package/devkit/components-devtools.module.d.ts.map +1 -1
- package/devkit/inspector/ng/ng.d.ts +0 -3
- package/devkit/inspector/ng/ng.d.ts.map +1 -1
- package/devkit/inspector/otter-inspector.helpers.d.ts +0 -7
- package/devkit/inspector/otter-inspector.helpers.d.ts.map +1 -1
- package/devkit/inspector/otter-inspector.service.d.ts +5 -6
- package/devkit/inspector/otter-inspector.service.d.ts.map +1 -1
- package/esm2022/core/component.output.mjs +1 -1
- package/esm2022/core/index.mjs +1 -2
- package/esm2022/core/rendering/helpers.mjs +1 -2
- package/esm2022/devkit/components-devkit.interface.mjs +1 -2
- package/esm2022/devkit/components-devtools.message.service.mjs +6 -8
- package/esm2022/devkit/components-devtools.module.mjs +5 -6
- package/esm2022/devkit/inspector/ng/ng.mjs +1 -1
- package/esm2022/devkit/inspector/otter-inspector.helpers.mjs +1 -8
- package/esm2022/devkit/inspector/otter-inspector.service.mjs +1 -2
- package/esm2022/public_api.mjs +1 -1
- package/esm2022/rules-engine/o3r-components-rules-engine.mjs +5 -0
- package/esm2022/rules-engine/placeholder.action-handler.mjs +154 -0
- package/esm2022/rules-engine/placeholder.interfaces.mjs +3 -0
- package/esm2022/rules-engine/placeholder.rules-engine.effect.mjs +124 -0
- package/esm2022/rules-engine/placeholder.rules-engine.module.mjs +31 -0
- package/esm2022/rules-engine/public_api.mjs +4 -0
- package/esm2022/stores/placeholder-request/placeholder-request.module.mjs +4 -4
- package/esm2022/stores/placeholder-request/placeholder-request.selectors.mjs +1 -2
- package/esm2022/stores/placeholder-template/placeholder-template.module.mjs +4 -4
- package/esm2022/stores/placeholder-template/placeholder-template.selectors.mjs +24 -10
- package/esm2022/tools/component-replacement/c11n.directive.mjs +17 -23
- package/esm2022/tools/component-replacement/c11n.helpers.mjs +1 -2
- package/esm2022/tools/component-replacement/c11n.mock.module.mjs +10 -10
- package/esm2022/tools/component-replacement/c11n.module.mjs +5 -6
- package/esm2022/tools/component-replacement/c11n.service.mjs +6 -8
- package/esm2022/tools/pipes/capitalize/capitalize.module.mjs +4 -4
- package/esm2022/tools/pipes/capitalize/capitalize.pipe.mjs +3 -3
- package/esm2022/tools/pipes/duration/duration.module.mjs +4 -4
- package/esm2022/tools/pipes/duration/duration.pipe.mjs +4 -5
- package/esm2022/tools/pipes/keep-white-space/keep-white-space.module.mjs +4 -4
- package/esm2022/tools/pipes/keep-white-space/keep-white-space.pipe.mjs +3 -3
- package/esm2022/tools/pipes/replace-with-bold/replace-with-bold.module.mjs +4 -4
- package/esm2022/tools/pipes/replace-with-bold/replace-with-bold.pipe.mjs +3 -3
- package/esm2022/tools/placeholder/placeholder.component.mjs +44 -23
- package/esm2022/tools/placeholder/placeholder.interface.mjs +2 -0
- package/esm2022/tools/placeholder/placeholder.module.mjs +4 -4
- package/fesm2022/o3r-components-rules-engine.mjs +302 -0
- package/fesm2022/o3r-components-rules-engine.mjs.map +1 -0
- package/fesm2022/o3r-components.mjs +150 -141
- package/fesm2022/o3r-components.mjs.map +1 -1
- package/package.json +62 -33
- package/public_api.d.ts +1 -1
- package/public_api.d.ts.map +1 -1
- package/rules-engine/index.d.ts +6 -0
- package/rules-engine/o3r-components-rules-engine.d.ts.map +1 -0
- package/rules-engine/placeholder.action-handler.d.ts +42 -0
- package/rules-engine/placeholder.action-handler.d.ts.map +1 -0
- package/rules-engine/placeholder.interfaces.d.ts +13 -0
- package/rules-engine/placeholder.interfaces.d.ts.map +1 -0
- package/rules-engine/placeholder.rules-engine.effect.d.ts +37 -0
- package/rules-engine/placeholder.rules-engine.effect.d.ts.map +1 -0
- package/rules-engine/placeholder.rules-engine.module.d.ts +9 -0
- package/rules-engine/placeholder.rules-engine.module.d.ts.map +1 -0
- package/rules-engine/public_api.d.ts +4 -0
- package/rules-engine/public_api.d.ts.map +1 -0
- package/schemas/component.metadata.schema.json +8 -1
- package/schemas/placeholder-template.schema.json +1 -1
- package/schemas/rules-engine.placeholder-action.schema.json +26 -0
- package/schematics/cms-adapter/index.d.ts +0 -1
- package/schematics/cms-adapter/index.d.ts.map +1 -1
- package/schematics/cms-adapter/index.js +5 -9
- package/schematics/cms-adapter/index.js.map +1 -1
- package/schematics/ng-add/helpers/devtools-registration.d.ts +10 -0
- package/schematics/ng-add/helpers/devtools-registration.d.ts.map +1 -0
- package/schematics/ng-add/helpers/devtools-registration.js +25 -0
- package/schematics/ng-add/helpers/devtools-registration.js.map +1 -0
- package/schematics/ng-add/index.d.ts +0 -1
- package/schematics/ng-add/index.d.ts.map +1 -1
- package/schematics/ng-add/index.js +7 -5
- package/schematics/ng-add/index.js.map +1 -1
- package/schematics/ng-add/schema.json +1 -1
- package/stores/placeholder-request/placeholder-request.selectors.d.ts +0 -1
- package/stores/placeholder-request/placeholder-request.selectors.d.ts.map +1 -1
- package/stores/placeholder-template/placeholder-template.selectors.d.ts +41 -8
- package/stores/placeholder-template/placeholder-template.selectors.d.ts.map +1 -1
- package/tools/component-replacement/c11n.directive.d.ts +5 -10
- package/tools/component-replacement/c11n.directive.d.ts.map +1 -1
- package/tools/component-replacement/c11n.helpers.d.ts +1 -3
- package/tools/component-replacement/c11n.helpers.d.ts.map +1 -1
- package/tools/component-replacement/c11n.module.d.ts +0 -1
- package/tools/component-replacement/c11n.module.d.ts.map +1 -1
- package/tools/component-replacement/c11n.service.d.ts +2 -5
- package/tools/component-replacement/c11n.service.d.ts.map +1 -1
- package/tools/pipes/duration/duration.pipe.d.ts.map +1 -1
- package/tools/placeholder/placeholder.component.d.ts +7 -5
- package/tools/placeholder/placeholder.component.d.ts.map +1 -1
- package/tools/placeholder/placeholder.interface.d.ts +22 -0
- package/tools/placeholder/placeholder.interface.d.ts.map +1 -0
- package/builders/package.json +0 -3
- package/core/focus.d.ts +0 -17
- package/core/focus.d.ts.map +0 -1
- package/esm2022/core/focus.mjs +0 -2
- package/schematics/package.json +0 -3
|
@@ -2,11 +2,11 @@ import { NgModule } from '@angular/core';
|
|
|
2
2
|
import { DurationPipe } from './duration.pipe';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export class DurationPipeModule {
|
|
5
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
6
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
7
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
5
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: DurationPipeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
6
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.8", ngImport: i0, type: DurationPipeModule, declarations: [DurationPipe], exports: [DurationPipe] }); }
|
|
7
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: DurationPipeModule }); }
|
|
8
8
|
}
|
|
9
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
9
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: DurationPipeModule, decorators: [{
|
|
10
10
|
type: NgModule,
|
|
11
11
|
args: [{
|
|
12
12
|
declarations: [DurationPipe],
|
|
@@ -3,7 +3,6 @@ import { defaultTimeUnits } from './duration.model';
|
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
/**
|
|
5
5
|
* Pad a number with zeroes
|
|
6
|
-
*
|
|
7
6
|
* @param num
|
|
8
7
|
* @param digits
|
|
9
8
|
*/
|
|
@@ -56,11 +55,11 @@ export class DurationPipe {
|
|
|
56
55
|
return result.replace(matchedPatternToReplace, padded);
|
|
57
56
|
}, pattern);
|
|
58
57
|
}
|
|
59
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
60
|
-
/** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
58
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: DurationPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
59
|
+
/** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.8", ngImport: i0, type: DurationPipe, name: "duration" }); }
|
|
61
60
|
}
|
|
62
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
61
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: DurationPipe, decorators: [{
|
|
63
62
|
type: Pipe,
|
|
64
63
|
args: [{ name: 'duration' }]
|
|
65
64
|
}] });
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVyYXRpb24ucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy90b29scy9waXBlcy9kdXJhdGlvbi9kdXJhdGlvbi5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxJQUFJLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBQyxnQkFBZ0IsRUFBVyxNQUFNLGtCQUFrQixDQUFDOztBQUU1RDs7OztHQUlHO0FBQ0gsU0FBUyxNQUFNLENBQUMsR0FBVyxFQUFFLE1BQWM7SUFDekMsSUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLE9BQU8sTUFBTSxDQUFDLE1BQU0sR0FBRyxNQUFNLEVBQUU7UUFDN0IsTUFBTSxHQUFHLEdBQUcsR0FBRyxNQUFNLENBQUM7S0FDdkI7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQ7O0dBRUc7QUFFSCxNQUFNLE9BQU8sWUFBWTtJQUV2Qjs7Ozs7Ozs7Ozs7OztPQWFHO0lBQ0ksU0FBUyxDQUFDLEtBQWMsRUFBRSxPQUFPLEdBQUcsVUFBVSxFQUFFLFlBQXdCLGdCQUFnQjtRQUM3RixNQUFNLEdBQUcsR0FBRyxLQUFLLElBQUksQ0FBQyxDQUFDO1FBQ3ZCLElBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztRQUVyQyxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsTUFBTSxDQUczQixDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRTtZQUNwQixNQUFNLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDcEUsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNuQyxJQUFJLENBQUMsS0FBSyxFQUFFO2dCQUNWLE9BQU8sTUFBTSxDQUFDO2FBQ2Y7WUFDRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUM7Z0JBQ25CLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUNuQixRQUFRLEVBQUUsSUFBSTthQUNmLENBQUMsQ0FBQztRQUNMLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVQLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUN0QyxNQUFNLHVCQUF1QixHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7WUFDaEQsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztZQUM1QixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQy9FLE1BQU0sZUFBZSxHQUFHLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUM7WUFDNUcsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLGFBQWEsRUFBRSxlQUFlLENBQUMsQ0FBQztZQUN0RCxNQUFNLEdBQUcsYUFBYSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1lBQ25ELE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN6RCxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFZCxDQUFDO2lJQTdDVSxZQUFZOytIQUFaLFlBQVk7OzJGQUFaLFlBQVk7a0JBRHhCLElBQUk7bUJBQUMsRUFBQyxJQUFJLEVBQUUsVUFBVSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtQaXBlLCBQaXBlVHJhbnNmb3JtfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7ZGVmYXVsdFRpbWVVbml0cywgVGltZVVuaXR9IGZyb20gJy4vZHVyYXRpb24ubW9kZWwnO1xuXG4vKipcbiAqIFBhZCBhIG51bWJlciB3aXRoIHplcm9lc1xuICogQHBhcmFtIG51bVxuICogQHBhcmFtIGRpZ2l0c1xuICovXG5mdW5jdGlvbiBwYWROdW0obnVtOiBudW1iZXIsIGRpZ2l0czogbnVtYmVyKSB7XG4gIGxldCBzdHJOdW0gPSBTdHJpbmcobnVtKTtcbiAgd2hpbGUgKHN0ck51bS5sZW5ndGggPCBkaWdpdHMpIHtcbiAgICBzdHJOdW0gPSAnMCcgKyBzdHJOdW07XG4gIH1cbiAgcmV0dXJuIHN0ck51bTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIGR1cmF0aW9uIGluIHNlY29uZHMgaW50byB0aGUgSEg6bW0gZm9ybWF0XG4gKi9cbkBQaXBlKHtuYW1lOiAnZHVyYXRpb24nfSlcbmV4cG9ydCBjbGFzcyBEdXJhdGlvblBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICAvKipcbiAgICogQHBhcmFtIHZhbHVlIHRoZSB2YWx1ZSBpbiBzZWNvbmRzXG4gICAqIEBwYXJhbSBwYXR0ZXJuIHRoZSBkZXNpcmVkIG91dHB1dCBmb3JtYXQuXG4gICAqIFRoZSBwYXR0ZXJuIHRha2VzIGludG8gYWNjb3VudCBzdGF0aWMgZm9ybWF0IGNoYXJhY3RlcnMgc3Vycm91bmRlZCBieSBicmFjZXNcbiAgICogICB7ZH0gZm9yIGRheXMsIHtofSBmb3IgaG91cnMsIHttfSBmb3IgbWludXRlcyBhbmQge3N9IGZvciBzZWNvbmRzLlxuICAgKiBJdCBhY2NlcHRzIGEgZG91YmxlIHVuaXQgdGltZSBpbiBjYXNlIGEgcGFkZGluZyBpcyB3YW50ZWQge2RkfSBvdXRwdXRzIDA1IGZvciBpbnN0YW5jZVxuICAgKiBTaG91bGQgcmVzcGVjdCB0aGUgZm9sbG93aW5nIHBhdHRlcm4gYC8oXFx7aCtcXH0pfChcXHttK1xcfSkvYCAoZXg6IGAne2h9aHttfW0nYCBvdXRwdXRzIGAwaDJtYCwgYCd7aH1Ie21tfSdgIGAwSDAyYCBldGMuKVxuICAgKiBAcGFyYW0gdGltZVVuaXRzIHRoZSB1bml0cyB0aW1lIHRvIGJlIHVzZWQgaW4gdGhpcyB0cmFuc2Zvcm1hdGlvbi4gVGhpcyBjYW4gYmUgdXNlZCBmb3IgY3VzdG9tIHVuaXRzIGluIHRoZSBwYXR0ZXJuIGxpa2VcbiAgICogIHtcbiAgICogICAgZm9ybWF0Q2hhcmFjdGVyOiAndycsXG4gICAqICAgIGRpdmlkZXI6IDM2MDAgKiAyNCAqIDdcbiAgICogIH1cbiAgICogVGhlIGFib3ZlIGRlZmluZXMgYSB3ZWVrIGZvciB7d31cbiAgICovXG4gIHB1YmxpYyB0cmFuc2Zvcm0odmFsdWU/OiBudW1iZXIsIHBhdHRlcm4gPSAne2h9OnttbX0nLCB0aW1lVW5pdHM6IFRpbWVVbml0W10gPSBkZWZhdWx0VGltZVVuaXRzKSB7XG4gICAgY29uc3QgdmFsID0gdmFsdWUgfHwgMDtcbiAgICBsZXQgbW9kdWxvID0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI7XG5cbiAgICBjb25zdCBtYXRjaGVzID0gdGltZVVuaXRzLnJlZHVjZTx7XG4gICAgICB0ZXh0TWF0Y2g6IHN0cmluZztcbiAgICAgIHRpbWVVbml0OiBUaW1lVW5pdDtcbiAgICB9W10+KChyZXN1bHQsIHVuaXQpID0+IHtcbiAgICAgIGNvbnN0IHJlZ2V4cCA9IG5ldyBSZWdFeHAoJyh7JyArIHVuaXQuZm9ybWF0Q2hhcmFjdGVyICsgJyt9KScsICdnJyk7XG4gICAgICBjb25zdCBtYXRjaCA9IHJlZ2V4cC5leGVjKHBhdHRlcm4pO1xuICAgICAgaWYgKCFtYXRjaCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdC5jb25jYXQoe1xuICAgICAgICB0ZXh0TWF0Y2g6IG1hdGNoWzBdLFxuICAgICAgICB0aW1lVW5pdDogdW5pdFxuICAgICAgfSk7XG4gICAgfSwgW10pO1xuXG4gICAgcmV0dXJuIG1hdGNoZXMucmVkdWNlKChyZXN1bHQsIG1hdGNoKSA9PiB7XG4gICAgICBjb25zdCBtYXRjaGVkUGF0dGVyblRvUmVwbGFjZSA9IG1hdGNoLnRleHRNYXRjaDtcbiAgICAgIGNvbnN0IHVuaXQgPSBtYXRjaC50aW1lVW5pdDtcbiAgICAgIGNvbnN0IHVuaXRUaW1lVmFsdWUgPSBNYXRoLmZsb29yKHZhbCAlICh1bml0Lm1vZHVsbyB8fCBtb2R1bG8pIC8gdW5pdC5kaXZpZGVyKTtcbiAgICAgIGNvbnN0IHVuaXRNYXRjaExlbmd0aCA9IChtYXRjaGVkUGF0dGVyblRvUmVwbGFjZS5tYXRjaChuZXcgUmVnRXhwKHVuaXQuZm9ybWF0Q2hhcmFjdGVyLCAnZycpKSB8fCBbXSkubGVuZ3RoO1xuICAgICAgY29uc3QgcGFkZGVkID0gcGFkTnVtKHVuaXRUaW1lVmFsdWUsIHVuaXRNYXRjaExlbmd0aCk7XG4gICAgICBtb2R1bG8gPSB1bml0VGltZVZhbHVlID4gMCA/IHVuaXQuZGl2aWRlciA6IG1vZHVsbztcbiAgICAgIHJldHVybiByZXN1bHQucmVwbGFjZShtYXRjaGVkUGF0dGVyblRvUmVwbGFjZSwgcGFkZGVkKTtcbiAgICB9LCBwYXR0ZXJuKTtcblxuICB9XG59XG4iXX0=
|
|
@@ -2,11 +2,11 @@ import { NgModule } from '@angular/core';
|
|
|
2
2
|
import { KeepWhiteSpacePipe } from './keep-white-space.pipe';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export class KeepWhiteSpacePipeModule {
|
|
5
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
6
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
7
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
5
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: KeepWhiteSpacePipeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
6
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.8", ngImport: i0, type: KeepWhiteSpacePipeModule, declarations: [KeepWhiteSpacePipe], exports: [KeepWhiteSpacePipe] }); }
|
|
7
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: KeepWhiteSpacePipeModule }); }
|
|
8
8
|
}
|
|
9
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
9
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: KeepWhiteSpacePipeModule, decorators: [{
|
|
10
10
|
type: NgModule,
|
|
11
11
|
args: [{
|
|
12
12
|
declarations: [KeepWhiteSpacePipe],
|
|
@@ -4,10 +4,10 @@ export class KeepWhiteSpacePipe {
|
|
|
4
4
|
transform(value) {
|
|
5
5
|
return value.replace(/\s/g, ' ');
|
|
6
6
|
}
|
|
7
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
8
|
-
/** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
7
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: KeepWhiteSpacePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
8
|
+
/** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.8", ngImport: i0, type: KeepWhiteSpacePipe, name: "keepWhiteSpace" }); }
|
|
9
9
|
}
|
|
10
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: KeepWhiteSpacePipe, decorators: [{
|
|
11
11
|
type: Pipe,
|
|
12
12
|
args: [{
|
|
13
13
|
name: 'keepWhiteSpace',
|
|
@@ -2,11 +2,11 @@ import { NgModule } from '@angular/core';
|
|
|
2
2
|
import { ReplaceWithBoldPipe } from './replace-with-bold.pipe';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export class ReplaceWithBoldPipeModule {
|
|
5
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
6
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
7
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
5
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ReplaceWithBoldPipeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
6
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.8", ngImport: i0, type: ReplaceWithBoldPipeModule, declarations: [ReplaceWithBoldPipe], exports: [ReplaceWithBoldPipe] }); }
|
|
7
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ReplaceWithBoldPipeModule }); }
|
|
8
8
|
}
|
|
9
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
9
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ReplaceWithBoldPipeModule, decorators: [{
|
|
10
10
|
type: NgModule,
|
|
11
11
|
args: [{
|
|
12
12
|
declarations: [ReplaceWithBoldPipe],
|
|
@@ -13,10 +13,10 @@ export class ReplaceWithBoldPipe {
|
|
|
13
13
|
escapeRegExp(str) {
|
|
14
14
|
return str.replace(/[-[\]/{}()*+?.\\^$|]/g, '\\$&');
|
|
15
15
|
}
|
|
16
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
17
|
-
/** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
16
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ReplaceWithBoldPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
17
|
+
/** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.8", ngImport: i0, type: ReplaceWithBoldPipe, name: "replaceWithBold" }); }
|
|
18
18
|
}
|
|
19
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ReplaceWithBoldPipe, decorators: [{
|
|
20
20
|
type: Pipe,
|
|
21
21
|
args: [{
|
|
22
22
|
name: 'replaceWithBold',
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, ViewEncapsulation } from '@angular/core';
|
|
2
2
|
import { Store } from '@ngrx/store';
|
|
3
|
-
import { ReplaySubject, Subscription } from 'rxjs';
|
|
4
|
-
import { distinctUntilChanged, switchMap } from 'rxjs/operators';
|
|
5
|
-
import {
|
|
3
|
+
import { BehaviorSubject, ReplaySubject, sample, Subject, Subscription } from 'rxjs';
|
|
4
|
+
import { distinctUntilChanged, filter, map, switchMap } from 'rxjs/operators';
|
|
5
|
+
import { selectSortedTemplates } from '../../stores/placeholder-template';
|
|
6
|
+
import { sendOtterMessage } from '@o3r/core';
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
7
8
|
import * as i1 from "@ngrx/store";
|
|
8
9
|
import * as i2 from "@angular/common";
|
|
9
10
|
/**
|
|
10
11
|
* Placeholder component that is bind to the PlaceholderTemplateStore to display a template based on its ID
|
|
11
12
|
* A loading indication can be provided via projection
|
|
12
|
-
*
|
|
13
13
|
* @example
|
|
14
14
|
* <o3r-placeholder id="my-template-id">Is loading ...</o3r-placeholder>
|
|
15
15
|
*/
|
|
@@ -22,37 +22,58 @@ export class PlaceholderComponent {
|
|
|
22
22
|
this.store = store;
|
|
23
23
|
this.cd = cd;
|
|
24
24
|
this.subscription = new Subscription();
|
|
25
|
-
this.id$ = new
|
|
25
|
+
this.id$ = new BehaviorSubject(undefined);
|
|
26
|
+
this.afterViewInit$ = new Subject();
|
|
27
|
+
this.messages$ = new ReplaySubject(1);
|
|
26
28
|
}
|
|
27
29
|
/** @inheritdoc */
|
|
28
30
|
ngOnInit() {
|
|
29
|
-
this.subscription.add(this.id$.pipe(distinctUntilChanged(), switchMap((id) => this.store.select(
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
31
|
+
this.subscription.add(this.id$.pipe(filter((id) => !!id), distinctUntilChanged(), switchMap((id) => this.store.select(selectSortedTemplates(id)).pipe(map((placeholders) => ({
|
|
32
|
+
id,
|
|
33
|
+
orderedTemplates: placeholders?.orderedTemplates,
|
|
34
|
+
isPending: placeholders?.isPending
|
|
35
|
+
})), distinctUntilChanged((previous, current) => previous.id === current.id &&
|
|
36
|
+
previous.isPending === current.isPending &&
|
|
37
|
+
previous.orderedTemplates?.map(placeholder => placeholder.renderedTemplate).join('') ===
|
|
38
|
+
current.orderedTemplates?.map(placeholder => placeholder.renderedTemplate).join(''))))).subscribe(({ id, orderedTemplates, isPending }) => {
|
|
39
|
+
this.isPending = isPending;
|
|
40
|
+
if (!orderedTemplates?.length) {
|
|
41
|
+
this.template = undefined;
|
|
40
42
|
}
|
|
41
43
|
else {
|
|
42
|
-
|
|
43
|
-
this.template =
|
|
44
|
+
// Concatenates the list of templates
|
|
45
|
+
this.template = orderedTemplates.map(placeholder => placeholder.renderedTemplate).join('');
|
|
46
|
+
}
|
|
47
|
+
if (this.isPending === false) {
|
|
48
|
+
this.messages$.next({
|
|
49
|
+
templateIds: !this.isPending ? (orderedTemplates || []).map(placeholder => placeholder.resolvedUrl) : [],
|
|
50
|
+
placeholderId: id
|
|
51
|
+
});
|
|
44
52
|
}
|
|
45
53
|
this.cd.markForCheck();
|
|
46
54
|
}));
|
|
55
|
+
this.messages$.pipe(sample(this.afterViewInit$), distinctUntilChanged((previous, current) => JSON.stringify(current) === JSON.stringify(previous))).subscribe({
|
|
56
|
+
next: (data) => sendOtterMessage('placeholder-loading-status', data, false),
|
|
57
|
+
complete: () => sendOtterMessage('placeholder-loading-status', {
|
|
58
|
+
placeholderId: this.id$.value,
|
|
59
|
+
templateIds: []
|
|
60
|
+
}, false)
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
ngAfterViewChecked() {
|
|
64
|
+
// Make sure the view is rendered before posting the status
|
|
65
|
+
this.afterViewInit$.next();
|
|
47
66
|
}
|
|
48
67
|
/** @inheritdoc */
|
|
49
68
|
ngOnDestroy() {
|
|
69
|
+
this.messages$.complete();
|
|
70
|
+
this.afterViewInit$.complete();
|
|
50
71
|
this.subscription.unsubscribe();
|
|
51
72
|
}
|
|
52
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
53
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
73
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: PlaceholderComponent, deps: [{ token: i1.Store }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
74
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: PlaceholderComponent, selector: "o3r-placeholder", inputs: { id: "id" }, ngImport: i0, template: "<ng-content *ngIf=\"isPending; else displayTemplate\"></ng-content><ng-template #displayTemplate><div [innerHTML]=\"template\"></div></ng-template>", isInline: true, dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
54
75
|
}
|
|
55
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
76
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: PlaceholderComponent, decorators: [{
|
|
56
77
|
type: Component,
|
|
57
78
|
args: [{
|
|
58
79
|
selector: 'o3r-placeholder',
|
|
@@ -61,7 +82,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImpor
|
|
|
61
82
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
62
83
|
encapsulation: ViewEncapsulation.None
|
|
63
84
|
}]
|
|
64
|
-
}], ctorParameters:
|
|
85
|
+
}], ctorParameters: () => [{ type: i1.Store }, { type: i0.ChangeDetectorRef }], propDecorators: { id: [{
|
|
65
86
|
type: Input
|
|
66
87
|
}] } });
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Vob2xkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Rvb2xzL3BsYWNlaG9sZGVyL3BsYWNlaG9sZGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsS0FBSyxFQUdMLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ2xDLE9BQU8sRUFBQyxhQUFhLEVBQUUsWUFBWSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2pELE9BQU8sRUFBQyxvQkFBb0IsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRCxPQUFPLEVBQTJCLGtDQUFrQyxFQUFDLE1BQU0sbUNBQW1DLENBQUM7Ozs7QUFFL0c7Ozs7OztHQU1HO0FBUUgsTUFBTSxPQUFPLG9CQUFvQjtJQVkvQix3QkFBd0I7SUFDeEIsSUFDVyxFQUFFLENBQUMsS0FBYTtRQUN6QixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQsWUFBb0IsS0FBc0MsRUFBVSxFQUFxQjtRQUFyRSxVQUFLLEdBQUwsS0FBSyxDQUFpQztRQUFVLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBaEJqRixpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFbEMsUUFBRyxHQUFHLElBQUksYUFBYSxDQUFTLENBQUMsQ0FBQyxDQUFDO0lBZTNDLENBQUM7SUFFRCxrQkFBa0I7SUFDWCxRQUFRO1FBQ2IsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQ25CLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUNYLG9CQUFvQixFQUFFLEVBQ3RCLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsa0NBQWtDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUM3RSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ3hCLElBQUksU0FBUyxFQUFFO2dCQUNiLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQztnQkFDckMsTUFBTSx3QkFBd0IsR0FBRyxTQUFTLENBQUMsd0JBQXdCLENBQUM7Z0JBQ3BFLElBQUksQ0FBQyx3QkFBd0IsSUFBSSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sRUFBRTtvQkFDakUsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUM7aUJBQzNCO3FCQUFNO29CQUNMLHFDQUFxQztvQkFDckMsSUFBSSxDQUFDLFFBQVEsR0FBRyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7aUJBQ25EO2FBQ0Y7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDO2FBQzNCO1lBQ0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUdELGtCQUFrQjtJQUNYLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNsQyxDQUFDO2lJQWxEVSxvQkFBb0I7cUhBQXBCLG9CQUFvQjs7MkZBQXBCLG9CQUFvQjtrQkFQaEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixRQUFRLEVBQUUsbUVBQW1FO3dCQUMzRSxnRkFBZ0Y7b0JBQ2xGLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtpQkFDdEM7NEhBZVksRUFBRTtzQkFEWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1N0b3JlfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQge1JlcGxheVN1YmplY3QsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2Rpc3RpbmN0VW50aWxDaGFuZ2VkLCBzd2l0Y2hNYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7UGxhY2Vob2xkZXJUZW1wbGF0ZVN0b3JlLCBzZWxlY3RQbGFjZWhvbGRlclJlbmRlcmVkVGVtcGxhdGVzfSBmcm9tICcuLi8uLi9zdG9yZXMvcGxhY2Vob2xkZXItdGVtcGxhdGUnO1xuXG4vKipcbiAqIFBsYWNlaG9sZGVyIGNvbXBvbmVudCB0aGF0IGlzIGJpbmQgdG8gdGhlIFBsYWNlaG9sZGVyVGVtcGxhdGVTdG9yZSB0byBkaXNwbGF5IGEgdGVtcGxhdGUgYmFzZWQgb24gaXRzIElEXG4gKiBBIGxvYWRpbmcgaW5kaWNhdGlvbiBjYW4gYmUgcHJvdmlkZWQgdmlhIHByb2plY3Rpb25cbiAqXG4gKiBAZXhhbXBsZVxuICogIDxvM3ItcGxhY2Vob2xkZXIgaWQ9XCJteS10ZW1wbGF0ZS1pZFwiPklzIGxvYWRpbmcgLi4uPC9vM3ItcGxhY2Vob2xkZXI+XG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28zci1wbGFjZWhvbGRlcicsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQgKm5nSWY9XCJpc1BlbmRpbmc7IGVsc2UgZGlzcGxheVRlbXBsYXRlXCI+PC9uZy1jb250ZW50PicgK1xuICAgICc8bmctdGVtcGxhdGUgI2Rpc3BsYXlUZW1wbGF0ZT48ZGl2IFtpbm5lckhUTUxdPVwidGVtcGxhdGVcIj48L2Rpdj48L25nLXRlbXBsYXRlPicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIFBsYWNlaG9sZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIHByaXZhdGUgaWQkID0gbmV3IFJlcGxheVN1YmplY3Q8c3RyaW5nPigxKTtcblxuICAvKiogRGV0ZXJtaW5lIGlmIHRoZSBwbGFjZWhvbGRlciBjb250ZW50IGlzIHBlbmRpbmcgKi9cbiAgcHVibGljIGlzUGVuZGluZz86IGJvb2xlYW47XG5cbiAgLyoqIEdlbmVyYXRlZCBIVE1MIHRlbXBsYXRlICovXG4gIHB1YmxpYyB0ZW1wbGF0ZT86IHN0cmluZztcblxuICAvKiogdGVtcGxhdGUgaWRlbnRpZnkgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBpZCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5pZCQubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN0b3JlOiBTdG9yZTxQbGFjZWhvbGRlclRlbXBsYXRlU3RvcmU+LCBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQoXG4gICAgICB0aGlzLmlkJC5waXBlKFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICBzd2l0Y2hNYXAoKGlkKSA9PiB0aGlzLnN0b3JlLnNlbGVjdChzZWxlY3RQbGFjZWhvbGRlclJlbmRlcmVkVGVtcGxhdGVzKGlkKSkpXG4gICAgICApLnN1YnNjcmliZSgodGVtcGxhdGVzKSA9PiB7XG4gICAgICAgIGlmICh0ZW1wbGF0ZXMpIHtcbiAgICAgICAgICB0aGlzLmlzUGVuZGluZyA9IHRlbXBsYXRlcy5pc1BlbmRpbmc7XG4gICAgICAgICAgY29uc3Qgb3JkZXJlZFJlbmRlcmVkVGVtcGxhdGVzID0gdGVtcGxhdGVzLm9yZGVyZWRSZW5kZXJlZFRlbXBsYXRlcztcbiAgICAgICAgICBpZiAoIW9yZGVyZWRSZW5kZXJlZFRlbXBsYXRlcyB8fCAhb3JkZXJlZFJlbmRlcmVkVGVtcGxhdGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy50ZW1wbGF0ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gQ29uY2F0ZW5hdGVzIHRoZSBsaXN0IG9mIHRlbXBsYXRlc1xuICAgICAgICAgICAgdGhpcy50ZW1wbGF0ZSA9IG9yZGVyZWRSZW5kZXJlZFRlbXBsYXRlcy5qb2luKCcnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5pc1BlbmRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnRlbXBsYXRlID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIl19
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Vob2xkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Rvb2xzL3BsYWNlaG9sZGVyL3BsYWNlaG9sZGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsS0FBSyxFQUdMLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ2xDLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ25GLE9BQU8sRUFBQyxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzVFLE9BQU8sRUFBMkIscUJBQXFCLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUVsRyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxXQUFXLENBQUM7Ozs7QUFFM0M7Ozs7O0dBS0c7QUFRSCxNQUFNLE9BQU8sb0JBQW9CO0lBZ0IvQix3QkFBd0I7SUFDeEIsSUFDVyxFQUFFLENBQUMsS0FBYTtRQUN6QixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQsWUFBNkIsS0FBc0MsRUFBbUIsRUFBcUI7UUFBOUUsVUFBSyxHQUFMLEtBQUssQ0FBaUM7UUFBbUIsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFwQjFGLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVsQyxRQUFHLEdBQUcsSUFBSSxlQUFlLENBQXFCLFNBQVMsQ0FBQyxDQUFDO1FBRXpELG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUVyQyxjQUFTLEdBQUcsSUFBSSxhQUFhLENBQTJCLENBQUMsQ0FBQyxDQUFDO0lBZTVFLENBQUM7SUFFRCxrQkFBa0I7SUFDWCxRQUFRO1FBQ2IsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQ25CLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUNYLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFDbEMsb0JBQW9CLEVBQUUsRUFDdEIsU0FBUyxDQUFDLENBQUMsRUFBVSxFQUFFLEVBQUUsQ0FDdkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMscUJBQXFCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQy9DLEdBQUcsQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNyQixFQUFFO1lBQ0YsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLGdCQUFnQjtZQUNoRCxTQUFTLEVBQUUsWUFBWSxFQUFFLFNBQVM7U0FDbkMsQ0FBQyxDQUFDLEVBQ0gsb0JBQW9CLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FDekMsUUFBUSxDQUFDLEVBQUUsS0FBSyxPQUFPLENBQUMsRUFBRTtZQUMxQixRQUFRLENBQUMsU0FBUyxLQUFLLE9BQU8sQ0FBQyxTQUFTO1lBQ3hDLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUNwRixPQUFPLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUNwRixDQUNGLENBQ0YsQ0FDRixDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBQyxFQUFFLEVBQUU7WUFDaEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7WUFDM0IsSUFBSSxDQUFDLGdCQUFnQixFQUFFLE1BQU0sRUFBRTtnQkFDN0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUM7YUFDM0I7aUJBQU07Z0JBQ0wscUNBQXFDO2dCQUNyQyxJQUFJLENBQUMsUUFBUSxHQUFHLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUM1RjtZQUNELElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxLQUFLLEVBQUU7Z0JBQzVCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO29CQUNsQixXQUFXLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDeEcsYUFBYSxFQUFFLEVBQUU7aUJBQ2xCLENBQUMsQ0FBQzthQUNKO1lBQ0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FDSCxDQUFDO1FBQ0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQ2pCLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQzNCLG9CQUFvQixDQUFDLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQ2xHLENBQUMsU0FBUyxDQUFDO1lBQ1YsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDYixnQkFBZ0IsQ0FBa0MsNEJBQTRCLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQztZQUM5RixRQUFRLEVBQUUsR0FBRyxFQUFFLENBQ2IsZ0JBQWdCLENBQWtDLDRCQUE0QixFQUFFO2dCQUM5RSxhQUFhLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLO2dCQUM3QixXQUFXLEVBQUUsRUFBRTthQUNoQixFQUFFLEtBQUssQ0FBQztTQUNaLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxrQkFBa0I7UUFDdkIsMkRBQTJEO1FBQzNELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELGtCQUFrQjtJQUNYLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbEMsQ0FBQztpSUF2RlUsb0JBQW9CO3FIQUFwQixvQkFBb0I7OzJGQUFwQixvQkFBb0I7a0JBUGhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsUUFBUSxFQUFFLG1FQUFtRTt3QkFDM0UsZ0ZBQWdGO29CQUNsRixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7aUJBQ3RDOzBHQW1CWSxFQUFFO3NCQURaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7U3RvcmV9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBSZXBsYXlTdWJqZWN0LCBzYW1wbGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2Rpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgc3dpdGNoTWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1BsYWNlaG9sZGVyVGVtcGxhdGVTdG9yZSwgc2VsZWN0U29ydGVkVGVtcGxhdGVzfSBmcm9tICcuLi8uLi9zdG9yZXMvcGxhY2Vob2xkZXItdGVtcGxhdGUnO1xuaW1wb3J0IHtQbGFjZWhvbGRlckxvYWRpbmdTdGF0dXMsIFBsYWNlaG9sZGVyTG9hZGluZ1N0YXR1c01lc3NhZ2V9IGZyb20gJy4vcGxhY2Vob2xkZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7c2VuZE90dGVyTWVzc2FnZX0gZnJvbSAnQG8zci9jb3JlJztcblxuLyoqXG4gKiBQbGFjZWhvbGRlciBjb21wb25lbnQgdGhhdCBpcyBiaW5kIHRvIHRoZSBQbGFjZWhvbGRlclRlbXBsYXRlU3RvcmUgdG8gZGlzcGxheSBhIHRlbXBsYXRlIGJhc2VkIG9uIGl0cyBJRFxuICogQSBsb2FkaW5nIGluZGljYXRpb24gY2FuIGJlIHByb3ZpZGVkIHZpYSBwcm9qZWN0aW9uXG4gKiBAZXhhbXBsZVxuICogIDxvM3ItcGxhY2Vob2xkZXIgaWQ9XCJteS10ZW1wbGF0ZS1pZFwiPklzIGxvYWRpbmcgLi4uPC9vM3ItcGxhY2Vob2xkZXI+XG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28zci1wbGFjZWhvbGRlcicsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQgKm5nSWY9XCJpc1BlbmRpbmc7IGVsc2UgZGlzcGxheVRlbXBsYXRlXCI+PC9uZy1jb250ZW50PicgK1xuICAgICc8bmctdGVtcGxhdGUgI2Rpc3BsYXlUZW1wbGF0ZT48ZGl2IFtpbm5lckhUTUxdPVwidGVtcGxhdGVcIj48L2Rpdj48L25nLXRlbXBsYXRlPicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIFBsYWNlaG9sZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgaWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBhZnRlclZpZXdJbml0JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBtZXNzYWdlcyQgPSBuZXcgUmVwbGF5U3ViamVjdDxQbGFjZWhvbGRlckxvYWRpbmdTdGF0dXM+KDEpO1xuXG4gIC8qKiBEZXRlcm1pbmUgaWYgdGhlIHBsYWNlaG9sZGVyIGNvbnRlbnQgaXMgcGVuZGluZyAqL1xuICBwdWJsaWMgaXNQZW5kaW5nPzogYm9vbGVhbjtcblxuICAvKiogR2VuZXJhdGVkIEhUTUwgdGVtcGxhdGUgKi9cbiAgcHVibGljIHRlbXBsYXRlPzogc3RyaW5nO1xuXG4gIC8qKiB0ZW1wbGF0ZSBpZGVudGlmeSAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGlkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmlkJC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgc3RvcmU6IFN0b3JlPFBsYWNlaG9sZGVyVGVtcGxhdGVTdG9yZT4sIHByaXZhdGUgcmVhZG9ubHkgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIHRoaXMuaWQkLnBpcGUoXG4gICAgICAgIGZpbHRlcigoaWQpOiBpZCBpcyBzdHJpbmcgPT4gISFpZCksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIHN3aXRjaE1hcCgoaWQ6IHN0cmluZykgPT5cbiAgICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChzZWxlY3RTb3J0ZWRUZW1wbGF0ZXMoaWQpKS5waXBlKFxuICAgICAgICAgICAgbWFwKChwbGFjZWhvbGRlcnMpID0+ICh7XG4gICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICBvcmRlcmVkVGVtcGxhdGVzOiBwbGFjZWhvbGRlcnM/Lm9yZGVyZWRUZW1wbGF0ZXMsXG4gICAgICAgICAgICAgIGlzUGVuZGluZzogcGxhY2Vob2xkZXJzPy5pc1BlbmRpbmdcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChwcmV2aW91cywgY3VycmVudCkgPT5cbiAgICAgICAgICAgICAgcHJldmlvdXMuaWQgPT09IGN1cnJlbnQuaWQgJiZcbiAgICAgICAgICAgICAgcHJldmlvdXMuaXNQZW5kaW5nID09PSBjdXJyZW50LmlzUGVuZGluZyAmJlxuICAgICAgICAgICAgICBwcmV2aW91cy5vcmRlcmVkVGVtcGxhdGVzPy5tYXAocGxhY2Vob2xkZXIgPT4gcGxhY2Vob2xkZXIucmVuZGVyZWRUZW1wbGF0ZSkuam9pbignJykgPT09XG4gICAgICAgICAgICAgIGN1cnJlbnQub3JkZXJlZFRlbXBsYXRlcz8ubWFwKHBsYWNlaG9sZGVyID0+IHBsYWNlaG9sZGVyLnJlbmRlcmVkVGVtcGxhdGUpLmpvaW4oJycpXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApLnN1YnNjcmliZSgoe2lkLCBvcmRlcmVkVGVtcGxhdGVzLCBpc1BlbmRpbmd9KSA9PiB7XG4gICAgICAgIHRoaXMuaXNQZW5kaW5nID0gaXNQZW5kaW5nO1xuICAgICAgICBpZiAoIW9yZGVyZWRUZW1wbGF0ZXM/Lmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMudGVtcGxhdGUgPSB1bmRlZmluZWQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gQ29uY2F0ZW5hdGVzIHRoZSBsaXN0IG9mIHRlbXBsYXRlc1xuICAgICAgICAgIHRoaXMudGVtcGxhdGUgPSBvcmRlcmVkVGVtcGxhdGVzLm1hcChwbGFjZWhvbGRlciA9PiBwbGFjZWhvbGRlci5yZW5kZXJlZFRlbXBsYXRlKS5qb2luKCcnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc1BlbmRpbmcgPT09IGZhbHNlKSB7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlcyQubmV4dCh7XG4gICAgICAgICAgICB0ZW1wbGF0ZUlkczogIXRoaXMuaXNQZW5kaW5nID8gKG9yZGVyZWRUZW1wbGF0ZXMgfHwgW10pLm1hcChwbGFjZWhvbGRlciA9PiBwbGFjZWhvbGRlci5yZXNvbHZlZFVybCkgOiBbXSxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVySWQ6IGlkXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLm1lc3NhZ2VzJC5waXBlKFxuICAgICAgc2FtcGxlKHRoaXMuYWZ0ZXJWaWV3SW5pdCQpLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKHByZXZpb3VzLCBjdXJyZW50KSA9PiBKU09OLnN0cmluZ2lmeShjdXJyZW50KSA9PT0gSlNPTi5zdHJpbmdpZnkocHJldmlvdXMpKVxuICAgICkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChkYXRhKSA9PlxuICAgICAgICBzZW5kT3R0ZXJNZXNzYWdlPFBsYWNlaG9sZGVyTG9hZGluZ1N0YXR1c01lc3NhZ2U+KCdwbGFjZWhvbGRlci1sb2FkaW5nLXN0YXR1cycsIGRhdGEsIGZhbHNlKSxcbiAgICAgIGNvbXBsZXRlOiAoKSA9PlxuICAgICAgICBzZW5kT3R0ZXJNZXNzYWdlPFBsYWNlaG9sZGVyTG9hZGluZ1N0YXR1c01lc3NhZ2U+KCdwbGFjZWhvbGRlci1sb2FkaW5nLXN0YXR1cycsIHtcbiAgICAgICAgICBwbGFjZWhvbGRlcklkOiB0aGlzLmlkJC52YWx1ZSxcbiAgICAgICAgICB0ZW1wbGF0ZUlkczogW11cbiAgICAgICAgfSwgZmFsc2UpXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdDaGVja2VkKCkge1xuICAgIC8vIE1ha2Ugc3VyZSB0aGUgdmlldyBpcyByZW5kZXJlZCBiZWZvcmUgcG9zdGluZyB0aGUgc3RhdHVzXG4gICAgdGhpcy5hZnRlclZpZXdJbml0JC5uZXh0KCk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMubWVzc2FnZXMkLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5hZnRlclZpZXdJbml0JC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Vob2xkZXIuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Rvb2xzL3BsYWNlaG9sZGVyL3BsYWNlaG9sZGVyLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge090dGVyTWVzc2FnZUNvbnRlbnR9IGZyb20gJ0BvM3IvY29yZSc7XG5cbi8qKlxuICogUGF5bG9hZCBvZiB0aGUge0BzZWUgUGxhY2Vob2xkZXJMb2FkaW5nU3RhdHVzTWVzc2FnZX1cbiAqXG4gKiBEZXNjcmliZSB0aGUgc3RhdGUgb2YgYW4gaWRlbnRpZmllZCBwbGFjZWhvbGRlcjogd2hhdCB0ZW1wbGF0ZSBpcyBiZWluZyBsb2FkZWQgYW5kIHdoZXRoZXIgdGhlIGxvYWQgaXMgZG9uZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsYWNlaG9sZGVyTG9hZGluZ1N0YXR1cyB7XG4gIC8qKlxuICAgKiBJZHMgb2YgdGhlIHRlbXBsYXRlIHRvIGJlIGxvYWRlZCBpbiB0aGUgcGxhY2Vob2xkZXJcbiAgICovXG4gIHRlbXBsYXRlSWRzPzogc3RyaW5nW107XG4gIC8qKlxuICAgKiBJZGVudGlmeSB0aGUgcGxhY2Vob2xkZXIgdW5kZXIgY29uc2lkZXJhdGlvblxuICAgKi9cbiAgcGxhY2Vob2xkZXJJZD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBNZXNzYWdlIHRvIGRlc2NyaWJlIGEgcGxhY2Vob2xkZXIncyBsb2FkaW5nIHN0YXR1czogdGhlIHRlbXBsYXRlcyB0byBiZSBsb2FkZWQgYW5kIHRoZSBwZW5kaW5nIHN0YXR1cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbGFjZWhvbGRlckxvYWRpbmdTdGF0dXNNZXNzYWdlIGV4dGVuZHMgUGxhY2Vob2xkZXJMb2FkaW5nU3RhdHVzLFxuICBPdHRlck1lc3NhZ2VDb250ZW50PCdwbGFjZWhvbGRlci1sb2FkaW5nLXN0YXR1cyc+IHt9XG4iXX0=
|
|
@@ -6,17 +6,17 @@ import { PlaceholderComponent } from './placeholder.component';
|
|
|
6
6
|
import { PlaceholderRequestStoreModule } from '../../stores/placeholder-request/index';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
export class PlaceholderModule {
|
|
9
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
10
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
9
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: PlaceholderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
10
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.8", ngImport: i0, type: PlaceholderModule, declarations: [PlaceholderComponent], imports: [CommonModule,
|
|
11
11
|
StoreModule,
|
|
12
12
|
PlaceholderTemplateStoreModule,
|
|
13
13
|
PlaceholderRequestStoreModule], exports: [PlaceholderComponent] }); }
|
|
14
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
14
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: PlaceholderModule, imports: [CommonModule,
|
|
15
15
|
StoreModule,
|
|
16
16
|
PlaceholderTemplateStoreModule,
|
|
17
17
|
PlaceholderRequestStoreModule] }); }
|
|
18
18
|
}
|
|
19
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: PlaceholderModule, decorators: [{
|
|
20
20
|
type: NgModule,
|
|
21
21
|
args: [{
|
|
22
22
|
imports: [
|
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { inject, Injectable, Optional, NgModule } from '@angular/core';
|
|
3
|
+
import * as i1$1 from '@ngrx/effects';
|
|
4
|
+
import { ofType, createEffect, EffectsModule } from '@ngrx/effects';
|
|
5
|
+
import { selectPlaceholderTemplateEntities, selectPlaceholderRequestEntities, deletePlaceholderTemplateEntity, setPlaceholderTemplateEntity, updatePlaceholderRequestEntity, setPlaceholderRequestEntityFromUrl, selectPlaceholderRequestEntityUsage, failPlaceholderRequestEntity, cancelPlaceholderRequest, PlaceholderRequestStoreModule, PlaceholderTemplateStoreModule } from '@o3r/components';
|
|
6
|
+
import * as i2 from '@o3r/logger';
|
|
7
|
+
import { Subscription, Subject, map, distinctUntilChanged, of, combineLatest, withLatestFrom, firstValueFrom, EMPTY } from 'rxjs';
|
|
8
|
+
import * as i1 from '@ngrx/store';
|
|
9
|
+
import { select } from '@ngrx/store';
|
|
10
|
+
import * as i3 from '@o3r/localization';
|
|
11
|
+
import * as i4 from '@o3r/dynamic-content';
|
|
12
|
+
import { DynamicContentService } from '@o3r/dynamic-content';
|
|
13
|
+
import { fromApiEffectSwitchMapById } from '@o3r/core';
|
|
14
|
+
import { map as map$1, distinctUntilChanged as distinctUntilChanged$1, switchMap, take } from 'rxjs/operators';
|
|
15
|
+
import { JSONPath } from 'jsonpath-plus';
|
|
16
|
+
import * as i3$1 from '@o3r/rules-engine';
|
|
17
|
+
|
|
18
|
+
/** ActionUpdatePlaceholderBlock */
|
|
19
|
+
const RULES_ENGINE_PLACEHOLDER_UPDATE_ACTION_TYPE = 'UPDATE_PLACEHOLDER';
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Service to handle async PlaceholderTemplate actions
|
|
23
|
+
*/
|
|
24
|
+
class PlaceholderRulesEngineActionHandler {
|
|
25
|
+
constructor(store, logger, translateService) {
|
|
26
|
+
this.logger = logger;
|
|
27
|
+
this.subscription = new Subscription();
|
|
28
|
+
this.placeholdersActions$ = new Subject();
|
|
29
|
+
/** @inheritdoc */
|
|
30
|
+
this.supportingActions = [RULES_ENGINE_PLACEHOLDER_UPDATE_ACTION_TYPE];
|
|
31
|
+
const lang$ = translateService ? translateService.getTranslateService().onLangChange.pipe(map(({ lang }) => lang), distinctUntilChanged()) : of(null);
|
|
32
|
+
const filteredActions$ = combineLatest([lang$, this.placeholdersActions$.pipe(distinctUntilChanged((prev, next) => JSON.stringify(prev) === JSON.stringify(next)))]).pipe(withLatestFrom(combineLatest([store.pipe(select(selectPlaceholderTemplateEntities)), store.pipe(select(selectPlaceholderRequestEntities))])), map(([langAndTemplatesUrls, storedPlaceholdersAndRequests]) => {
|
|
33
|
+
const [lang, placeholderActions] = langAndTemplatesUrls;
|
|
34
|
+
const storedPlaceholders = storedPlaceholdersAndRequests[0] || {};
|
|
35
|
+
const storedPlaceholderRequests = storedPlaceholdersAndRequests[1] || {};
|
|
36
|
+
const placeholderNewRequests = [];
|
|
37
|
+
// Stores all raw Urls used from the current engine execution
|
|
38
|
+
const usedUrls = {};
|
|
39
|
+
// Get all Urls that needs to be resolved from current rules engine output
|
|
40
|
+
const placeholdersTemplates = placeholderActions.reduce((acc, placeholderAction) => {
|
|
41
|
+
const placeholdersTemplateUrl = {
|
|
42
|
+
rawUrl: placeholderAction.templateUrl,
|
|
43
|
+
priority: placeholderAction.priority
|
|
44
|
+
};
|
|
45
|
+
if (acc[placeholderAction.placeholderId]) {
|
|
46
|
+
acc[placeholderAction.placeholderId].push(placeholdersTemplateUrl);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
acc[placeholderAction.placeholderId] = [placeholdersTemplateUrl];
|
|
50
|
+
}
|
|
51
|
+
const resolvedUrl = this.resolveUrlWithLang(placeholderAction.templateUrl, lang);
|
|
52
|
+
// Filters duplicates and resolved urls that are already in the store
|
|
53
|
+
if (!usedUrls[placeholderAction.templateUrl] && (!storedPlaceholderRequests[placeholderAction.templateUrl]
|
|
54
|
+
|| storedPlaceholderRequests[placeholderAction.templateUrl].resolvedUrl !== resolvedUrl)) {
|
|
55
|
+
placeholderNewRequests.push({
|
|
56
|
+
rawUrl: placeholderAction.templateUrl,
|
|
57
|
+
resolvedUrl: this.resolveUrlWithLang(placeholderAction.templateUrl, lang)
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
usedUrls[placeholderAction.templateUrl] = true;
|
|
61
|
+
return acc;
|
|
62
|
+
}, {});
|
|
63
|
+
// Urls not used anymore and not already disabled
|
|
64
|
+
const placeholderRequestsToDisable = [];
|
|
65
|
+
// Urls used that were disabled
|
|
66
|
+
const placeholderRequestsToEnable = [];
|
|
67
|
+
Object.keys(storedPlaceholderRequests).forEach((storedPlaceholderRequestRawUrl) => {
|
|
68
|
+
const usedFromEngineIteration = usedUrls[storedPlaceholderRequestRawUrl];
|
|
69
|
+
const usedFromStore = (storedPlaceholderRequests && storedPlaceholderRequests[storedPlaceholderRequestRawUrl]) ? storedPlaceholderRequests[storedPlaceholderRequestRawUrl].used : false;
|
|
70
|
+
if (!usedFromEngineIteration && usedFromStore) {
|
|
71
|
+
placeholderRequestsToDisable.push(storedPlaceholderRequestRawUrl);
|
|
72
|
+
}
|
|
73
|
+
else if (usedFromEngineIteration && !usedFromStore) {
|
|
74
|
+
placeholderRequestsToEnable.push(storedPlaceholderRequestRawUrl);
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
// Placeholder that are no longer filled by the current engine execution output will be cleared
|
|
78
|
+
const placeholdersTemplatesToBeCleanedUp = Object.keys(storedPlaceholders)
|
|
79
|
+
.filter(placeholderId => !placeholdersTemplates[placeholderId]);
|
|
80
|
+
const placeholdersTemplatesToBeSet = Object.keys(placeholdersTemplates).reduce((changedPlaceholderTemplates, placeholderTemplateId) => {
|
|
81
|
+
// Caching if the placeholder template already exists with the same urls
|
|
82
|
+
if (!storedPlaceholders[placeholderTemplateId] ||
|
|
83
|
+
!(JSON.stringify(storedPlaceholders[placeholderTemplateId].urlsWithPriority) === JSON.stringify(placeholdersTemplates[placeholderTemplateId]))) {
|
|
84
|
+
changedPlaceholderTemplates.push({
|
|
85
|
+
id: placeholderTemplateId,
|
|
86
|
+
urlsWithPriority: placeholdersTemplates[placeholderTemplateId]
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
return changedPlaceholderTemplates;
|
|
90
|
+
}, []);
|
|
91
|
+
return {
|
|
92
|
+
placeholdersTemplatesToBeCleanedUp,
|
|
93
|
+
placeholderRequestsToDisable,
|
|
94
|
+
placeholderRequestsToEnable,
|
|
95
|
+
placeholdersTemplatesToBeSet,
|
|
96
|
+
placeholderNewRequests
|
|
97
|
+
};
|
|
98
|
+
}));
|
|
99
|
+
this.subscription.add(filteredActions$.subscribe((placeholdersUpdates) => {
|
|
100
|
+
placeholdersUpdates.placeholdersTemplatesToBeCleanedUp.forEach(placeholderId => store.dispatch(deletePlaceholderTemplateEntity({
|
|
101
|
+
id: placeholderId
|
|
102
|
+
})));
|
|
103
|
+
placeholdersUpdates.placeholdersTemplatesToBeSet.forEach(placeholdersTemplateToBeSet => {
|
|
104
|
+
store.dispatch(setPlaceholderTemplateEntity({ entity: placeholdersTemplateToBeSet }));
|
|
105
|
+
});
|
|
106
|
+
placeholdersUpdates.placeholderRequestsToDisable.forEach(placeholderRequestToDisable => {
|
|
107
|
+
store.dispatch(updatePlaceholderRequestEntity({ entity: { id: placeholderRequestToDisable, used: false } }));
|
|
108
|
+
});
|
|
109
|
+
placeholdersUpdates.placeholderRequestsToEnable.forEach(placeholderRequestToEnable => {
|
|
110
|
+
store.dispatch(updatePlaceholderRequestEntity({ entity: { id: placeholderRequestToEnable, used: true } }));
|
|
111
|
+
});
|
|
112
|
+
placeholdersUpdates.placeholderNewRequests.forEach(placeholderNewRequest => {
|
|
113
|
+
store.dispatch(setPlaceholderRequestEntityFromUrl({
|
|
114
|
+
resolvedUrl: placeholderNewRequest.resolvedUrl,
|
|
115
|
+
id: placeholderNewRequest.rawUrl,
|
|
116
|
+
call: this.retrieveTemplate(placeholderNewRequest.resolvedUrl)
|
|
117
|
+
}));
|
|
118
|
+
});
|
|
119
|
+
}));
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Localize the url, replacing the language marker
|
|
123
|
+
* @param url
|
|
124
|
+
* @param language
|
|
125
|
+
*/
|
|
126
|
+
resolveUrlWithLang(url, language) {
|
|
127
|
+
if (!language && url.includes('[LANGUAGE]')) {
|
|
128
|
+
this.logger.warn(`Missing language when trying to resolve ${url}`);
|
|
129
|
+
}
|
|
130
|
+
return language ? url.replace(/\[LANGUAGE]/g, language) : url;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Retrieve template as json from a given url
|
|
134
|
+
* @param url
|
|
135
|
+
*/
|
|
136
|
+
async retrieveTemplate(url) {
|
|
137
|
+
const resolvedUrl$ = inject(DynamicContentService, { optional: true })?.getContentPathStream(url) || of(url);
|
|
138
|
+
const fullUrl = await firstValueFrom(resolvedUrl$);
|
|
139
|
+
return fetch(fullUrl).then((response) => response.json());
|
|
140
|
+
}
|
|
141
|
+
/** @inheritdoc */
|
|
142
|
+
executeActions(actions) {
|
|
143
|
+
const templates = actions.map((action) => ({
|
|
144
|
+
placeholderId: action.placeholderId,
|
|
145
|
+
templateUrl: action.value,
|
|
146
|
+
priority: action.priority || 0
|
|
147
|
+
}));
|
|
148
|
+
this.placeholdersActions$.next(templates);
|
|
149
|
+
}
|
|
150
|
+
/** @inheritdoc */
|
|
151
|
+
ngOnDestroy() {
|
|
152
|
+
this.subscription.unsubscribe();
|
|
153
|
+
}
|
|
154
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: PlaceholderRulesEngineActionHandler, deps: [{ token: i1.Store }, { token: i2.LoggerService }, { token: i3.LocalizationService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
155
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: PlaceholderRulesEngineActionHandler }); }
|
|
156
|
+
}
|
|
157
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: PlaceholderRulesEngineActionHandler, decorators: [{
|
|
158
|
+
type: Injectable
|
|
159
|
+
}], ctorParameters: () => [{ type: i1.Store }, { type: i2.LoggerService }, { type: i3.LocalizationService, decorators: [{
|
|
160
|
+
type: Optional
|
|
161
|
+
}] }] });
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* Service to handle async PlaceholderTemplate actions
|
|
165
|
+
*/
|
|
166
|
+
class PlaceholderTemplateResponseEffect {
|
|
167
|
+
constructor(actions$, store, rulesEngineService, dynamicContentService, translationService) {
|
|
168
|
+
this.actions$ = actions$;
|
|
169
|
+
this.store = store;
|
|
170
|
+
this.rulesEngineService = rulesEngineService;
|
|
171
|
+
this.dynamicContentService = dynamicContentService;
|
|
172
|
+
this.translationService = translationService;
|
|
173
|
+
/**
|
|
174
|
+
* Set the PlaceholderRequest entity with the reply content, dispatch failPlaceholderRequestEntity if it catches a failure
|
|
175
|
+
* Handles the rendering of the HTML content from the template and creates the combine latest from facts list if needed
|
|
176
|
+
* Disables unused templates refresh if used is false in the store
|
|
177
|
+
*/
|
|
178
|
+
this.setPlaceholderRequestEntityFromUrl$ = createEffect(() => this.actions$.pipe(ofType(setPlaceholderRequestEntityFromUrl), fromApiEffectSwitchMapById((templateResponse, action) => {
|
|
179
|
+
const facts = templateResponse.vars ? Object.values(templateResponse.vars).filter((variable) => variable.type === 'fact') : [];
|
|
180
|
+
const factsStreamsList = this.rulesEngineService ? facts.map((fact) => this.rulesEngineService.engine.retrieveOrCreateFactStream(fact.value).pipe(map$1((factValue) => ({
|
|
181
|
+
name: fact.value,
|
|
182
|
+
// eslint-disable-next-line new-cap
|
|
183
|
+
factValue: (fact.path && factValue) ? JSONPath({ wrap: false, json: factValue, path: fact.path }) : factValue
|
|
184
|
+
})), distinctUntilChanged$1((previous, current) => previous.factValue === current.factValue))) : [];
|
|
185
|
+
const factsStreamsList$ = factsStreamsList.length ? combineLatest(factsStreamsList) : of([]);
|
|
186
|
+
return combineLatest([factsStreamsList$, this.store.select(selectPlaceholderRequestEntityUsage(action.id)).pipe(distinctUntilChanged$1())]).pipe(switchMap(([factsUsedInTemplate, placeholderRequestUsage]) => {
|
|
187
|
+
if (!placeholderRequestUsage) {
|
|
188
|
+
return EMPTY;
|
|
189
|
+
}
|
|
190
|
+
return this.getRenderedHTML$(templateResponse.template, templateResponse.vars, factsUsedInTemplate).pipe(map$1(({ renderedTemplate, unknownTypeFound }) =>
|
|
191
|
+
// Update instead of set because used already set by the update from url action
|
|
192
|
+
updatePlaceholderRequestEntity({
|
|
193
|
+
entity: {
|
|
194
|
+
...templateResponse,
|
|
195
|
+
resolvedUrl: action.resolvedUrl,
|
|
196
|
+
id: action.id,
|
|
197
|
+
renderedTemplate,
|
|
198
|
+
unknownTypeFound
|
|
199
|
+
},
|
|
200
|
+
requestId: action.requestId
|
|
201
|
+
})));
|
|
202
|
+
}));
|
|
203
|
+
}, (error, action) => of(failPlaceholderRequestEntity({ ids: [action.id], error, requestId: action.requestId })), (requestIdPayload, action) => cancelPlaceholderRequest({ ...requestIdPayload, id: action.id }))));
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Renders the html template, replacing facts and urls and localizationKeys
|
|
207
|
+
* @param template
|
|
208
|
+
* @param vars
|
|
209
|
+
* @param facts
|
|
210
|
+
*/
|
|
211
|
+
getRenderedHTML$(template, vars, facts) {
|
|
212
|
+
let unknownTypeFound = false;
|
|
213
|
+
const factset = (facts || []).reduce((set, fact) => {
|
|
214
|
+
set[fact.name] = fact.factValue;
|
|
215
|
+
return set;
|
|
216
|
+
}, {});
|
|
217
|
+
const replacements$ = [];
|
|
218
|
+
if (vars && template) {
|
|
219
|
+
for (const varName in vars) {
|
|
220
|
+
if (Object.prototype.hasOwnProperty.call(vars, varName)) {
|
|
221
|
+
const ejsVar = new RegExp(`<%=\\s*${varName}\\s*%>`, 'g');
|
|
222
|
+
switch (vars[varName].type) {
|
|
223
|
+
case 'relativeUrl': {
|
|
224
|
+
replacements$.push(this.dynamicContentService?.getMediaPathStream(vars[varName].value).pipe(take(1), map$1((value) => ({ ejsVar, value }))) || of({ ejsVar, value: vars[varName].value }));
|
|
225
|
+
break;
|
|
226
|
+
}
|
|
227
|
+
case 'fullUrl': {
|
|
228
|
+
template = template.replace(ejsVar, vars[varName].value);
|
|
229
|
+
break;
|
|
230
|
+
}
|
|
231
|
+
case 'fact': {
|
|
232
|
+
template = template.replace(ejsVar, factset[vars[varName].value] ?? '');
|
|
233
|
+
break;
|
|
234
|
+
}
|
|
235
|
+
case 'localisation': {
|
|
236
|
+
const linkedParams = (vars[varName].vars || []).reduce((acc, parameter) => {
|
|
237
|
+
const paramName = vars[parameter].value;
|
|
238
|
+
acc[paramName] = factset[paramName];
|
|
239
|
+
return acc;
|
|
240
|
+
}, {});
|
|
241
|
+
replacements$.push(this.translationService ?
|
|
242
|
+
this.translationService.translate(vars[varName].value, linkedParams).pipe(map$1((value) => (value ? { ejsVar, value } : null))) :
|
|
243
|
+
of(null));
|
|
244
|
+
break;
|
|
245
|
+
}
|
|
246
|
+
default: {
|
|
247
|
+
unknownTypeFound = true;
|
|
248
|
+
break;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
return replacements$.length > 0 && !!template ?
|
|
255
|
+
combineLatest(replacements$).pipe(map$1((replacements) => ({
|
|
256
|
+
renderedTemplate: replacements.reduce((acc, replacement) => replacement ? acc.replace(replacement.ejsVar, replacement.value) : acc, template),
|
|
257
|
+
unknownTypeFound
|
|
258
|
+
}))) : of({ renderedTemplate: template, unknownTypeFound });
|
|
259
|
+
}
|
|
260
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: PlaceholderTemplateResponseEffect, deps: [{ token: i1$1.Actions }, { token: i1.Store }, { token: i3$1.RulesEngineRunnerService, optional: true }, { token: i4.DynamicContentService, optional: true }, { token: i3.LocalizationService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
261
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: PlaceholderTemplateResponseEffect }); }
|
|
262
|
+
}
|
|
263
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: PlaceholderTemplateResponseEffect, decorators: [{
|
|
264
|
+
type: Injectable
|
|
265
|
+
}], ctorParameters: () => [{ type: i1$1.Actions }, { type: i1.Store }, { type: i3$1.RulesEngineRunnerService, decorators: [{
|
|
266
|
+
type: Optional
|
|
267
|
+
}] }, { type: i4.DynamicContentService, decorators: [{
|
|
268
|
+
type: Optional
|
|
269
|
+
}] }, { type: i3.LocalizationService, decorators: [{
|
|
270
|
+
type: Optional
|
|
271
|
+
}] }] });
|
|
272
|
+
|
|
273
|
+
class PlaceholderRulesEngineActionModule {
|
|
274
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: PlaceholderRulesEngineActionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
275
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.8", ngImport: i0, type: PlaceholderRulesEngineActionModule, imports: [i1$1.EffectsFeatureModule, PlaceholderRequestStoreModule,
|
|
276
|
+
PlaceholderTemplateStoreModule] }); }
|
|
277
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: PlaceholderRulesEngineActionModule, providers: [
|
|
278
|
+
PlaceholderRulesEngineActionHandler
|
|
279
|
+
], imports: [EffectsModule.forFeature([PlaceholderTemplateResponseEffect]),
|
|
280
|
+
PlaceholderRequestStoreModule,
|
|
281
|
+
PlaceholderTemplateStoreModule] }); }
|
|
282
|
+
}
|
|
283
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: PlaceholderRulesEngineActionModule, decorators: [{
|
|
284
|
+
type: NgModule,
|
|
285
|
+
args: [{
|
|
286
|
+
imports: [
|
|
287
|
+
EffectsModule.forFeature([PlaceholderTemplateResponseEffect]),
|
|
288
|
+
PlaceholderRequestStoreModule,
|
|
289
|
+
PlaceholderTemplateStoreModule
|
|
290
|
+
],
|
|
291
|
+
providers: [
|
|
292
|
+
PlaceholderRulesEngineActionHandler
|
|
293
|
+
]
|
|
294
|
+
}]
|
|
295
|
+
}] });
|
|
296
|
+
|
|
297
|
+
/**
|
|
298
|
+
* Generated bundle index. Do not edit.
|
|
299
|
+
*/
|
|
300
|
+
|
|
301
|
+
export { PlaceholderRulesEngineActionHandler, PlaceholderRulesEngineActionModule, RULES_ENGINE_PLACEHOLDER_UPDATE_ACTION_TYPE };
|
|
302
|
+
//# sourceMappingURL=o3r-components-rules-engine.mjs.map
|