@sitecore-jss/sitecore-jss-angular 21.2.3-canary.0 → 21.2.3
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/dist/components/data-resolver-factory.d.ts +13 -13
- package/dist/components/date.directive.d.ts +20 -20
- package/dist/components/editframe.component.d.ts +22 -22
- package/dist/components/file.directive.d.ts +17 -17
- package/dist/components/generic-link.directive.d.ts +20 -20
- package/dist/components/guard-resolver-factory.d.ts +11 -11
- package/dist/components/hidden-rendering.component.d.ts +7 -7
- package/dist/components/image.directive.d.ts +35 -35
- package/dist/components/link.directive.d.ts +26 -26
- package/dist/components/missing-component.component.d.ts +7 -7
- package/dist/components/placeholder-loading.directive.d.ts +8 -8
- package/dist/components/placeholder.component.d.ts +59 -59
- package/dist/components/placeholder.token.d.ts +64 -64
- package/dist/components/raw.component.d.ts +12 -12
- package/dist/components/render-component.component.d.ts +33 -33
- package/dist/components/render-each.directive.d.ts +8 -8
- package/dist/components/render-empty.directive.d.ts +8 -8
- package/dist/components/rendering-field.d.ts +41 -41
- package/dist/components/rendering.d.ts +5 -5
- package/dist/components/rich-text.directive.d.ts +18 -18
- package/dist/components/router-link.directive.d.ts +19 -19
- package/dist/components/text.directive.d.ts +16 -16
- package/dist/esm2020/components/data-resolver-factory.mjs +57 -57
- package/dist/esm2020/components/date.directive.mjs +59 -59
- package/dist/esm2020/components/editframe.component.mjs +65 -65
- package/dist/esm2020/components/file.directive.mjs +44 -44
- package/dist/esm2020/components/generic-link.directive.mjs +64 -64
- package/dist/esm2020/components/guard-resolver-factory.mjs +87 -87
- package/dist/esm2020/components/hidden-rendering.component.mjs +20 -20
- package/dist/esm2020/components/image.directive.mjs +137 -137
- package/dist/esm2020/components/link.directive.mjs +117 -117
- package/dist/esm2020/components/missing-component.component.mjs +15 -15
- package/dist/esm2020/components/placeholder-loading.directive.mjs +15 -15
- package/dist/esm2020/components/placeholder.component.mjs +250 -250
- package/dist/esm2020/components/placeholder.token.mjs +23 -23
- package/dist/esm2020/components/raw.component.mjs +35 -35
- package/dist/esm2020/components/render-component.component.mjs +90 -90
- package/dist/esm2020/components/render-each.directive.mjs +15 -15
- package/dist/esm2020/components/render-empty.directive.mjs +15 -15
- package/dist/esm2020/components/rendering-field.mjs +1 -1
- package/dist/esm2020/components/rendering.mjs +7 -7
- package/dist/esm2020/components/rich-text.directive.mjs +62 -62
- package/dist/esm2020/components/router-link.directive.mjs +47 -47
- package/dist/esm2020/components/text.directive.mjs +57 -57
- package/dist/esm2020/jss-component-factory.service.mjs +83 -83
- package/dist/esm2020/lib.module.mjs +167 -167
- package/dist/esm2020/public_api.mjs +24 -24
- package/dist/esm2020/sitecore-jss-sitecore-jss-angular.mjs +4 -4
- package/dist/esm2020/utils.mjs +16 -16
- package/dist/fesm2015/sitecore-jss-sitecore-jss-angular.mjs +1415 -1415
- package/dist/fesm2020/sitecore-jss-sitecore-jss-angular.mjs +1422 -1422
- package/dist/index.d.ts +5 -5
- package/dist/jss-component-factory.service.d.ts +25 -25
- package/dist/lib.module.d.ts +46 -46
- package/dist/package.json +2 -2
- package/dist/public_api.d.ts +25 -25
- package/dist/utils.d.ts +7 -7
- package/package.json +3 -3
|
@@ -1,58 +1,58 @@
|
|
|
1
|
-
import { Directive, Input, } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class TextDirective {
|
|
4
|
-
constructor(viewContainer, templateRef) {
|
|
5
|
-
this.viewContainer = viewContainer;
|
|
6
|
-
this.templateRef = templateRef;
|
|
7
|
-
this.editable = true;
|
|
8
|
-
this.encode = true;
|
|
9
|
-
}
|
|
10
|
-
ngOnChanges(changes) {
|
|
11
|
-
if (changes.field || changes.editable || changes.encode) {
|
|
12
|
-
if (!this.viewRef) {
|
|
13
|
-
this.viewContainer.clear();
|
|
14
|
-
this.viewRef = this.viewContainer.createEmbeddedView(this.templateRef);
|
|
15
|
-
}
|
|
16
|
-
this.updateView();
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
updateView() {
|
|
20
|
-
const field = this.field;
|
|
21
|
-
let editable = this.editable;
|
|
22
|
-
if (!field || (!field.editable && (field.value === undefined || field.value === ''))) {
|
|
23
|
-
return;
|
|
24
|
-
}
|
|
25
|
-
// can't use editable value if we want to output unencoded
|
|
26
|
-
if (!this.encode) {
|
|
27
|
-
editable = false;
|
|
28
|
-
}
|
|
29
|
-
const html = field.editable && editable ? field.editable : field.value;
|
|
30
|
-
const setDangerously = (field.editable && editable) || !this.encode;
|
|
31
|
-
this.viewRef.rootNodes.forEach((node) => {
|
|
32
|
-
if (setDangerously) {
|
|
33
|
-
node.innerHTML = html;
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
36
|
-
node.textContent = html;
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
TextDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TextDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
42
|
-
TextDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.12", type: TextDirective, selector: "[scText]", inputs: { editable: ["scTextEditable", "editable"], encode: ["scTextEncode", "encode"], field: ["scText", "field"] }, usesOnChanges: true, ngImport: i0 });
|
|
43
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TextDirective, decorators: [{
|
|
44
|
-
type: Directive,
|
|
45
|
-
args: [{
|
|
46
|
-
selector: '[scText]',
|
|
47
|
-
}]
|
|
48
|
-
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }]; }, propDecorators: { editable: [{
|
|
49
|
-
type: Input,
|
|
50
|
-
args: ['scTextEditable']
|
|
51
|
-
}], encode: [{
|
|
52
|
-
type: Input,
|
|
53
|
-
args: ['scTextEncode']
|
|
54
|
-
}], field: [{
|
|
55
|
-
type: Input,
|
|
56
|
-
args: ['scText']
|
|
57
|
-
}] } });
|
|
1
|
+
import { Directive, Input, } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class TextDirective {
|
|
4
|
+
constructor(viewContainer, templateRef) {
|
|
5
|
+
this.viewContainer = viewContainer;
|
|
6
|
+
this.templateRef = templateRef;
|
|
7
|
+
this.editable = true;
|
|
8
|
+
this.encode = true;
|
|
9
|
+
}
|
|
10
|
+
ngOnChanges(changes) {
|
|
11
|
+
if (changes.field || changes.editable || changes.encode) {
|
|
12
|
+
if (!this.viewRef) {
|
|
13
|
+
this.viewContainer.clear();
|
|
14
|
+
this.viewRef = this.viewContainer.createEmbeddedView(this.templateRef);
|
|
15
|
+
}
|
|
16
|
+
this.updateView();
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
updateView() {
|
|
20
|
+
const field = this.field;
|
|
21
|
+
let editable = this.editable;
|
|
22
|
+
if (!field || (!field.editable && (field.value === undefined || field.value === ''))) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
// can't use editable value if we want to output unencoded
|
|
26
|
+
if (!this.encode) {
|
|
27
|
+
editable = false;
|
|
28
|
+
}
|
|
29
|
+
const html = field.editable && editable ? field.editable : field.value;
|
|
30
|
+
const setDangerously = (field.editable && editable) || !this.encode;
|
|
31
|
+
this.viewRef.rootNodes.forEach((node) => {
|
|
32
|
+
if (setDangerously) {
|
|
33
|
+
node.innerHTML = html;
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
node.textContent = html;
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
TextDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TextDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
42
|
+
TextDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.12", type: TextDirective, selector: "[scText]", inputs: { editable: ["scTextEditable", "editable"], encode: ["scTextEncode", "encode"], field: ["scText", "field"] }, usesOnChanges: true, ngImport: i0 });
|
|
43
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TextDirective, decorators: [{
|
|
44
|
+
type: Directive,
|
|
45
|
+
args: [{
|
|
46
|
+
selector: '[scText]',
|
|
47
|
+
}]
|
|
48
|
+
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }]; }, propDecorators: { editable: [{
|
|
49
|
+
type: Input,
|
|
50
|
+
args: ['scTextEditable']
|
|
51
|
+
}], encode: [{
|
|
52
|
+
type: Input,
|
|
53
|
+
args: ['scTextEncode']
|
|
54
|
+
}], field: [{
|
|
55
|
+
type: Input,
|
|
56
|
+
args: ['scText']
|
|
57
|
+
}] } });
|
|
58
58
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy90ZXh0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssR0FLTixNQUFNLGVBQWUsQ0FBQzs7QUFNdkIsTUFBTSxPQUFPLGFBQWE7SUFTeEIsWUFBb0IsYUFBK0IsRUFBVSxXQUFpQztRQUExRSxrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBc0I7UUFSckUsYUFBUSxHQUFHLElBQUksQ0FBQztRQUVsQixXQUFNLEdBQUcsSUFBSSxDQUFDO0lBTTRELENBQUM7SUFFbEcsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUU7WUFDdkQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDeEU7WUFFRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7U0FDbkI7SUFDSCxDQUFDO0lBRU8sVUFBVTtRQUNoQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3pCLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFFN0IsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssQ0FBQyxLQUFLLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRTtZQUNwRixPQUFPO1NBQ1I7UUFFRCwwREFBMEQ7UUFDMUQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDaEIsUUFBUSxHQUFHLEtBQUssQ0FBQztTQUNsQjtRQUVELE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ3ZFLE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7UUFFcEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDdEMsSUFBSSxjQUFjLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO2FBQ3ZCO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO2FBQ3pCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzsyR0E3Q1UsYUFBYTsrRkFBYixhQUFhOzRGQUFiLGFBQWE7a0JBSHpCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFVBQVU7aUJBQ3JCO2lJQUUwQixRQUFRO3NCQUFoQyxLQUFLO3VCQUFDLGdCQUFnQjtnQkFFQSxNQUFNO3NCQUE1QixLQUFLO3VCQUFDLGNBQWM7Z0JBRUosS0FBSztzQkFBckIsS0FBSzt1QkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBEaXJlY3RpdmUsXHJcbiAgRW1iZWRkZWRWaWV3UmVmLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIFZpZXdDb250YWluZXJSZWYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRleHRGaWVsZCB9IGZyb20gJy4vcmVuZGVyaW5nLWZpZWxkJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW3NjVGV4dF0nLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGV4dERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcbiAgQElucHV0KCdzY1RleHRFZGl0YWJsZScpIGVkaXRhYmxlID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KCdzY1RleHRFbmNvZGUnKSBlbmNvZGUgPSB0cnVlO1xyXG5cclxuICBASW5wdXQoJ3NjVGV4dCcpIGZpZWxkOiBUZXh0RmllbGQ7XHJcblxyXG4gIHByaXZhdGUgdmlld1JlZjogRW1iZWRkZWRWaWV3UmVmPHVua25vd24+O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsIHByaXZhdGUgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPHVua25vd24+KSB7fVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBpZiAoY2hhbmdlcy5maWVsZCB8fCBjaGFuZ2VzLmVkaXRhYmxlIHx8IGNoYW5nZXMuZW5jb2RlKSB7XHJcbiAgICAgIGlmICghdGhpcy52aWV3UmVmKSB7XHJcbiAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyLmNsZWFyKCk7XHJcbiAgICAgICAgdGhpcy52aWV3UmVmID0gdGhpcy52aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlUmVmKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy51cGRhdGVWaWV3KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZVZpZXcoKSB7XHJcbiAgICBjb25zdCBmaWVsZCA9IHRoaXMuZmllbGQ7XHJcbiAgICBsZXQgZWRpdGFibGUgPSB0aGlzLmVkaXRhYmxlO1xyXG5cclxuICAgIGlmICghZmllbGQgfHwgKCFmaWVsZC5lZGl0YWJsZSAmJiAoZmllbGQudmFsdWUgPT09IHVuZGVmaW5lZCB8fCBmaWVsZC52YWx1ZSA9PT0gJycpKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gY2FuJ3QgdXNlIGVkaXRhYmxlIHZhbHVlIGlmIHdlIHdhbnQgdG8gb3V0cHV0IHVuZW5jb2RlZFxyXG4gICAgaWYgKCF0aGlzLmVuY29kZSkge1xyXG4gICAgICBlZGl0YWJsZSA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGh0bWwgPSBmaWVsZC5lZGl0YWJsZSAmJiBlZGl0YWJsZSA/IGZpZWxkLmVkaXRhYmxlIDogZmllbGQudmFsdWU7XHJcbiAgICBjb25zdCBzZXREYW5nZXJvdXNseSA9IChmaWVsZC5lZGl0YWJsZSAmJiBlZGl0YWJsZSkgfHwgIXRoaXMuZW5jb2RlO1xyXG5cclxuICAgIHRoaXMudmlld1JlZi5yb290Tm9kZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xyXG4gICAgICBpZiAoc2V0RGFuZ2Vyb3VzbHkpIHtcclxuICAgICAgICBub2RlLmlubmVySFRNTCA9IGh0bWw7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbm9kZS50ZXh0Q29udGVudCA9IGh0bWw7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -1,84 +1,84 @@
|
|
|
1
|
-
import { Inject, Injectable, createNgModule } from '@angular/core';
|
|
2
|
-
import { DYNAMIC_COMPONENT, PLACEHOLDER_COMPONENTS, PLACEHOLDER_LAZY_COMPONENTS, } from './components/placeholder.token';
|
|
3
|
-
import { RawComponent } from './components/raw.component';
|
|
4
|
-
import { isRawRendering } from './components/rendering';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export class JssComponentFactoryService {
|
|
7
|
-
constructor(injector, components, lazyComponents) {
|
|
8
|
-
this.injector = injector;
|
|
9
|
-
this.components = components;
|
|
10
|
-
this.lazyComponents = lazyComponents;
|
|
11
|
-
this.componentMap = new Map();
|
|
12
|
-
this.lazyComponentMap = new Map();
|
|
13
|
-
this.components.forEach((c) => this.componentMap.set(c.name, c));
|
|
14
|
-
if (this.lazyComponents) {
|
|
15
|
-
this.lazyComponents.forEach((c) => this.lazyComponentMap.set(c.path, c));
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
getComponent(component) {
|
|
19
|
-
const loadedComponent = this.componentMap.get(component.componentName);
|
|
20
|
-
if (loadedComponent) {
|
|
21
|
-
return Promise.resolve({
|
|
22
|
-
componentDefinition: component,
|
|
23
|
-
componentImplementation: loadedComponent.type,
|
|
24
|
-
canActivate: loadedComponent.canActivate,
|
|
25
|
-
resolve: loadedComponent.resolve,
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
const lazyComponent = this.lazyComponentMap.get(component.componentName);
|
|
29
|
-
if (lazyComponent) {
|
|
30
|
-
return lazyComponent.loadChildren().then((lazyChild) => {
|
|
31
|
-
let componentType = null;
|
|
32
|
-
const moduleRef = createNgModule(lazyChild, this.injector);
|
|
33
|
-
const dynamicComponentType = moduleRef.injector.get(DYNAMIC_COMPONENT);
|
|
34
|
-
if (!dynamicComponentType) {
|
|
35
|
-
throw new Error(`JssComponentFactoryService: Lazy load module for component "${lazyComponent.path}" missing DYNAMIC_COMPONENT provider. Missing JssModule.forChild()?`);
|
|
36
|
-
}
|
|
37
|
-
if (component.componentName in dynamicComponentType) {
|
|
38
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
39
|
-
componentType = dynamicComponentType[component.componentName];
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
if (typeof dynamicComponentType === 'function') {
|
|
43
|
-
componentType = dynamicComponentType;
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
throw new Error(`JssComponentFactoryService: Lazy load module for component "${lazyComponent.path}" missing DYNAMIC_COMPONENT provider. Missing JssModule.forChild()?`);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
return {
|
|
50
|
-
componentDefinition: component,
|
|
51
|
-
componentImplementation: componentType,
|
|
52
|
-
componentFactory: moduleRef.componentFactoryResolver.resolveComponentFactory(componentType),
|
|
53
|
-
canActivate: lazyComponent.canActivate,
|
|
54
|
-
resolve: lazyComponent.resolve,
|
|
55
|
-
};
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
return Promise.resolve({
|
|
59
|
-
componentDefinition: component,
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
getComponents(components) {
|
|
63
|
-
// acquire all components and keep them in order while handling their potential async-ness
|
|
64
|
-
return Promise.all(components.map((component) => isRawRendering(component) ? this.getRawComponent(component) : this.getComponent(component)));
|
|
65
|
-
}
|
|
66
|
-
getRawComponent(component) {
|
|
67
|
-
return Promise.resolve({
|
|
68
|
-
componentImplementation: RawComponent,
|
|
69
|
-
componentDefinition: component,
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
JssComponentFactoryService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: JssComponentFactoryService, deps: [{ token: i0.Injector }, { token: PLACEHOLDER_COMPONENTS }, { token: PLACEHOLDER_LAZY_COMPONENTS }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
74
|
-
JssComponentFactoryService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: JssComponentFactoryService });
|
|
75
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: JssComponentFactoryService, decorators: [{
|
|
76
|
-
type: Injectable
|
|
77
|
-
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: undefined, decorators: [{
|
|
78
|
-
type: Inject,
|
|
79
|
-
args: [PLACEHOLDER_COMPONENTS]
|
|
80
|
-
}] }, { type: undefined, decorators: [{
|
|
81
|
-
type: Inject,
|
|
82
|
-
args: [PLACEHOLDER_LAZY_COMPONENTS]
|
|
83
|
-
}] }]; } });
|
|
1
|
+
import { Inject, Injectable, createNgModule } from '@angular/core';
|
|
2
|
+
import { DYNAMIC_COMPONENT, PLACEHOLDER_COMPONENTS, PLACEHOLDER_LAZY_COMPONENTS, } from './components/placeholder.token';
|
|
3
|
+
import { RawComponent } from './components/raw.component';
|
|
4
|
+
import { isRawRendering } from './components/rendering';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class JssComponentFactoryService {
|
|
7
|
+
constructor(injector, components, lazyComponents) {
|
|
8
|
+
this.injector = injector;
|
|
9
|
+
this.components = components;
|
|
10
|
+
this.lazyComponents = lazyComponents;
|
|
11
|
+
this.componentMap = new Map();
|
|
12
|
+
this.lazyComponentMap = new Map();
|
|
13
|
+
this.components.forEach((c) => this.componentMap.set(c.name, c));
|
|
14
|
+
if (this.lazyComponents) {
|
|
15
|
+
this.lazyComponents.forEach((c) => this.lazyComponentMap.set(c.path, c));
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
getComponent(component) {
|
|
19
|
+
const loadedComponent = this.componentMap.get(component.componentName);
|
|
20
|
+
if (loadedComponent) {
|
|
21
|
+
return Promise.resolve({
|
|
22
|
+
componentDefinition: component,
|
|
23
|
+
componentImplementation: loadedComponent.type,
|
|
24
|
+
canActivate: loadedComponent.canActivate,
|
|
25
|
+
resolve: loadedComponent.resolve,
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
const lazyComponent = this.lazyComponentMap.get(component.componentName);
|
|
29
|
+
if (lazyComponent) {
|
|
30
|
+
return lazyComponent.loadChildren().then((lazyChild) => {
|
|
31
|
+
let componentType = null;
|
|
32
|
+
const moduleRef = createNgModule(lazyChild, this.injector);
|
|
33
|
+
const dynamicComponentType = moduleRef.injector.get(DYNAMIC_COMPONENT);
|
|
34
|
+
if (!dynamicComponentType) {
|
|
35
|
+
throw new Error(`JssComponentFactoryService: Lazy load module for component "${lazyComponent.path}" missing DYNAMIC_COMPONENT provider. Missing JssModule.forChild()?`);
|
|
36
|
+
}
|
|
37
|
+
if (component.componentName in dynamicComponentType) {
|
|
38
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
39
|
+
componentType = dynamicComponentType[component.componentName];
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
if (typeof dynamicComponentType === 'function') {
|
|
43
|
+
componentType = dynamicComponentType;
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
throw new Error(`JssComponentFactoryService: Lazy load module for component "${lazyComponent.path}" missing DYNAMIC_COMPONENT provider. Missing JssModule.forChild()?`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return {
|
|
50
|
+
componentDefinition: component,
|
|
51
|
+
componentImplementation: componentType,
|
|
52
|
+
componentFactory: moduleRef.componentFactoryResolver.resolveComponentFactory(componentType),
|
|
53
|
+
canActivate: lazyComponent.canActivate,
|
|
54
|
+
resolve: lazyComponent.resolve,
|
|
55
|
+
};
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
return Promise.resolve({
|
|
59
|
+
componentDefinition: component,
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
getComponents(components) {
|
|
63
|
+
// acquire all components and keep them in order while handling their potential async-ness
|
|
64
|
+
return Promise.all(components.map((component) => isRawRendering(component) ? this.getRawComponent(component) : this.getComponent(component)));
|
|
65
|
+
}
|
|
66
|
+
getRawComponent(component) {
|
|
67
|
+
return Promise.resolve({
|
|
68
|
+
componentImplementation: RawComponent,
|
|
69
|
+
componentDefinition: component,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
JssComponentFactoryService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: JssComponentFactoryService, deps: [{ token: i0.Injector }, { token: PLACEHOLDER_COMPONENTS }, { token: PLACEHOLDER_LAZY_COMPONENTS }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
74
|
+
JssComponentFactoryService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: JssComponentFactoryService });
|
|
75
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: JssComponentFactoryService, decorators: [{
|
|
76
|
+
type: Injectable
|
|
77
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: undefined, decorators: [{
|
|
78
|
+
type: Inject,
|
|
79
|
+
args: [PLACEHOLDER_COMPONENTS]
|
|
80
|
+
}] }, { type: undefined, decorators: [{
|
|
81
|
+
type: Inject,
|
|
82
|
+
args: [PLACEHOLDER_LAZY_COMPONENTS]
|
|
83
|
+
}] }]; } });
|
|
84
84
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNzLWNvbXBvbmVudC1mYWN0b3J5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvanNzLWNvbXBvbmVudC1mYWN0b3J5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQWtCLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRixPQUFPLEVBR0wsaUJBQWlCLEVBSWpCLHNCQUFzQixFQUN0QiwyQkFBMkIsR0FDNUIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQWV4RCxNQUFNLE9BQU8sMEJBQTBCO0lBSXJDLFlBQ1UsUUFBa0IsRUFDYyxVQUFrQyxFQUM3QixjQUF3QztRQUY3RSxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2MsZUFBVSxHQUFWLFVBQVUsQ0FBd0I7UUFDN0IsbUJBQWMsR0FBZCxjQUFjLENBQTBCO1FBRXJGLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUVsQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWpFLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN2QixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENB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QyxzQkFBc0I7OzBCQUM3QixNQUFNOzJCQUFDLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIFR5cGUsIGNyZWF0ZU5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudFJlbmRlcmluZywgSHRtbEVsZW1lbnRSZW5kZXJpbmcgfSBmcm9tICdAc2l0ZWNvcmUtanNzL3NpdGVjb3JlLWpzcy9sYXlvdXQnO1xyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudE5hbWVBbmRNb2R1bGUsXHJcbiAgQ29tcG9uZW50TmFtZUFuZFR5cGUsXHJcbiAgRFlOQU1JQ19DT01QT05FTlQsXHJcbiAgSnNzQ2FuQWN0aXZhdGUsXHJcbiAgSnNzQ2FuQWN0aXZhdGVGbixcclxuICBKc3NSZXNvbHZlLFxyXG4gIFBMQUNFSE9MREVSX0NPTVBPTkVOVFMsXHJcbiAgUExBQ0VIT0xERVJfTEFaWV9DT01QT05FTlRTLFxyXG59IGZyb20gJy4vY29tcG9uZW50cy9wbGFjZWhvbGRlci50b2tlbic7XHJcbmltcG9ydCB7IFJhd0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9yYXcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgaXNSYXdSZW5kZXJpbmcgfSBmcm9tICcuL2NvbXBvbmVudHMvcmVuZGVyaW5nJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50RmFjdG9yeVJlc3VsdCB7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBjb21wb25lbnRJbXBsZW1lbnRhdGlvbj86IFR5cGU8YW55PjtcclxuICBjb21wb25lbnREZWZpbml0aW9uOiBDb21wb25lbnRSZW5kZXJpbmcgfCBIdG1sRWxlbWVudFJlbmRlcmluZztcclxuICBjYW5BY3RpdmF0ZT86XHJcbiAgICB8IEpzc0NhbkFjdGl2YXRlXHJcbiAgICB8IFR5cGU8SnNzQ2FuQWN0aXZhdGU+XHJcbiAgICB8IEpzc0NhbkFjdGl2YXRlRm5cclxuICAgIHwgQXJyYXk8SnNzQ2FuQWN0aXZhdGUgfCBKc3NDYW5BY3RpdmF0ZUZuIHwgVHlwZTxKc3NDYW5BY3RpdmF0ZT4+O1xyXG4gIHJlc29sdmU/OiB7IFtrZXk6IHN0cmluZ106IEpzc1Jlc29sdmU8YW55PiB8IFR5cGU8SnNzUmVzb2x2ZTxhbnk+PiB9O1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBKc3NDb21wb25lbnRGYWN0b3J5U2VydmljZSB7XHJcbiAgcHJpdmF0ZSBjb21wb25lbnRNYXA6IE1hcDxzdHJpbmcsIENvbXBvbmVudE5hbWVBbmRUeXBlPjtcclxuICBwcml2YXRlIGxhenlDb21wb25lbnRNYXA6IE1hcDxzdHJpbmcsIENvbXBvbmVudE5hbWVBbmRNb2R1bGU+O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgQEluamVjdChQTEFDRUhPTERFUl9DT01QT05FTlRTKSBwcml2YXRlIGNvbXBvbmVudHM6IENvbXBvbmVudE5hbWVBbmRUeXBlW10sXHJcbiAgICBASW5qZWN0KFBMQUNFSE9MREVSX0xBWllfQ09NUE9ORU5UUykgcHJpdmF0ZSBsYXp5Q29tcG9uZW50czogQ29tcG9uZW50TmFtZUFuZE1vZHVsZVtdXHJcbiAgKSB7XHJcbiAgICB0aGlzLmNvbXBvbmVudE1hcCA9IG5ldyBNYXAoKTtcclxuICAgIHRoaXMubGF6eUNvbXBvbmVudE1hcCA9IG5ldyBNYXAoKTtcclxuXHJcbiAgICB0aGlzLmNvbXBvbmVudHMuZm9yRWFjaCgoYykgPT4gdGhpcy5jb21wb25lbnRNYXAuc2V0KGMubmFtZSwgYykpO1xyXG5cclxuICAgIGlmICh0aGlzLmxhenlDb21wb25lbnRzKSB7XHJcbiAgICAgIHRoaXMubGF6eUNvbXBvbmVudHMuZm9yRWFjaCgoYykgPT4gdGhpcy5sYXp5Q29tcG9uZW50TWFwLnNldChjLnBhdGgsIGMpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldENvbXBvbmVudChjb21wb25lbnQ6IENvbXBvbmVudFJlbmRlcmluZyk6IFByb21pc2U8Q29tcG9uZW50RmFjdG9yeVJlc3VsdD4ge1xyXG4gICAgY29uc3QgbG9hZGVkQ29tcG9uZW50ID0gdGhpcy5jb21wb25lbnRNYXAuZ2V0KGNvbXBvbmVudC5jb21wb25lbnROYW1lKTtcclxuXHJcbiAgICBpZiAobG9hZGVkQ29tcG9uZW50KSB7XHJcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe1xyXG4gICAgICAgIGNvbXBvbmVudERlZmluaXRpb246IGNvbXBvbmVudCxcclxuICAgICAgICBjb21wb25lbnRJbXBsZW1lbnRhdGlvbjogbG9hZGVkQ29tcG9uZW50LnR5cGUsXHJcbiAgICAgICAgY2FuQWN0aXZhdGU6IGxvYWRlZENvbXBvbmVudC5jYW5BY3RpdmF0ZSxcclxuICAgICAgICByZXNvbHZlOiBsb2FkZWRDb21wb25lbnQucmVzb2x2ZSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbGF6eUNvbXBvbmVudCA9IHRoaXMubGF6eUNvbXBvbmVudE1hcC5nZXQoY29tcG9uZW50LmNvbXBvbmVudE5hbWUpO1xyXG5cclxuICAgIGlmIChsYXp5Q29tcG9uZW50KSB7XHJcbiAgICAgIHJldHVybiBsYXp5Q29tcG9uZW50LmxvYWRDaGlsZHJlbigpLnRoZW4oKGxhenlDaGlsZCkgPT4ge1xyXG4gICAgICAgIGxldCBjb21wb25lbnRUeXBlID0gbnVsbDtcclxuICAgICAgICBjb25zdCBtb2R1bGVSZWYgPSBjcmVhdGVOZ01vZHVsZShsYXp5Q2hpbGQsIHRoaXMuaW5qZWN0b3IpO1xyXG4gICAgICAgIGNvbnN0IGR5bmFtaWNDb21wb25lbnRUeXBlID0gbW9kdWxlUmVmLmluamVjdG9yLmdldChEWU5BTUlDX0NPTVBPTkVOVCk7XHJcbiAgICAgICAgaWYgKCFkeW5hbWljQ29tcG9uZW50VHlwZSkge1xyXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgICAgICBgSnNzQ29tcG9uZW50RmFjdG9yeVNlcnZpY2U6IExhenkgbG9hZCBtb2R1bGUgZm9yIGNvbXBvbmVudCBcIiR7bGF6eUNvbXBvbmVudC5wYXRofVwiIG1pc3NpbmcgRFlOQU1JQ19DT01QT05FTlQgcHJvdmlkZXIuIE1pc3NpbmcgSnNzTW9kdWxlLmZvckNoaWxkKCk/YFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjb21wb25lbnQuY29tcG9uZW50TmFtZSBpbiBkeW5hbWljQ29tcG9uZW50VHlwZSkge1xyXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICAgIGNvbXBvbmVudFR5cGUgPSAoZHluYW1pY0NvbXBvbmVudFR5cGUgYXMgeyBbczogc3RyaW5nXTogYW55IH0pW2NvbXBvbmVudC5jb21wb25lbnROYW1lXTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKHR5cGVvZiBkeW5hbWljQ29tcG9uZW50VHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICBjb21wb25lbnRUeXBlID0gZHluYW1pY0NvbXBvbmVudFR5cGU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgICAgICAgICAgYEpzc0NvbXBvbmVudEZhY3RvcnlTZXJ2aWNlOiBMYXp5IGxvYWQgbW9kdWxlIGZvciBjb21wb25lbnQgXCIke2xhenlDb21wb25lbnQucGF0aH1cIiBtaXNzaW5nIERZTkFNSUNfQ09NUE9ORU5UIHByb3ZpZGVyLiBNaXNzaW5nIEpzc01vZHVsZS5mb3JDaGlsZCgpP2BcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBjb21wb25lbnREZWZpbml0aW9uOiBjb21wb25lbnQsXHJcbiAgICAgICAgICBjb21wb25lbnRJbXBsZW1lbnRhdGlvbjogY29tcG9uZW50VHlwZSxcclxuICAgICAgICAgIGNvbXBvbmVudEZhY3Rvcnk6IG1vZHVsZVJlZi5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoXHJcbiAgICAgICAgICAgIGNvbXBvbmVudFR5cGVcclxuICAgICAgICAgICksXHJcbiAgICAgICAgICBjYW5BY3RpdmF0ZTogbGF6eUNvbXBvbmVudC5jYW5BY3RpdmF0ZSxcclxuICAgICAgICAgIHJlc29sdmU6IGxhenlDb21wb25lbnQucmVzb2x2ZSxcclxuICAgICAgICB9O1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHtcclxuICAgICAgY29tcG9uZW50RGVmaW5pdGlvbjogY29tcG9uZW50LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRDb21wb25lbnRzKFxyXG4gICAgY29tcG9uZW50czogQXJyYXk8Q29tcG9uZW50UmVuZGVyaW5nIHwgSHRtbEVsZW1lbnRSZW5kZXJpbmc+XHJcbiAgKTogUHJvbWlzZTxDb21wb25lbnRGYWN0b3J5UmVzdWx0W10+IHtcclxuICAgIC8vIGFjcXVpcmUgYWxsIGNvbXBvbmVudHMgYW5kIGtlZXAgdGhlbSBpbiBvcmRlciB3aGlsZSBoYW5kbGluZyB0aGVpciBwb3RlbnRpYWwgYXN5bmMtbmVzc1xyXG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFxyXG4gICAgICBjb21wb25lbnRzLm1hcCgoY29tcG9uZW50KSA9PlxyXG4gICAgICAgIGlzUmF3UmVuZGVyaW5nKGNvbXBvbmVudCkgPyB0aGlzLmdldFJhd0NvbXBvbmVudChjb21wb25lbnQpIDogdGhpcy5nZXRDb21wb25lbnQoY29tcG9uZW50KVxyXG4gICAgICApXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRSYXdDb21wb25lbnQoY29tcG9uZW50OiBIdG1sRWxlbWVudFJlbmRlcmluZyk6IFByb21pc2U8Q29tcG9uZW50RmFjdG9yeVJlc3VsdD4ge1xyXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7XHJcbiAgICAgIGNvbXBvbmVudEltcGxlbWVudGF0aW9uOiBSYXdDb21wb25lbnQsXHJcbiAgICAgIGNvbXBvbmVudERlZmluaXRpb246IGNvbXBvbmVudCxcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
|