@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.
Files changed (58) hide show
  1. package/dist/components/data-resolver-factory.d.ts +13 -13
  2. package/dist/components/date.directive.d.ts +20 -20
  3. package/dist/components/editframe.component.d.ts +22 -22
  4. package/dist/components/file.directive.d.ts +17 -17
  5. package/dist/components/generic-link.directive.d.ts +20 -20
  6. package/dist/components/guard-resolver-factory.d.ts +11 -11
  7. package/dist/components/hidden-rendering.component.d.ts +7 -7
  8. package/dist/components/image.directive.d.ts +35 -35
  9. package/dist/components/link.directive.d.ts +26 -26
  10. package/dist/components/missing-component.component.d.ts +7 -7
  11. package/dist/components/placeholder-loading.directive.d.ts +8 -8
  12. package/dist/components/placeholder.component.d.ts +59 -59
  13. package/dist/components/placeholder.token.d.ts +64 -64
  14. package/dist/components/raw.component.d.ts +12 -12
  15. package/dist/components/render-component.component.d.ts +33 -33
  16. package/dist/components/render-each.directive.d.ts +8 -8
  17. package/dist/components/render-empty.directive.d.ts +8 -8
  18. package/dist/components/rendering-field.d.ts +41 -41
  19. package/dist/components/rendering.d.ts +5 -5
  20. package/dist/components/rich-text.directive.d.ts +18 -18
  21. package/dist/components/router-link.directive.d.ts +19 -19
  22. package/dist/components/text.directive.d.ts +16 -16
  23. package/dist/esm2020/components/data-resolver-factory.mjs +57 -57
  24. package/dist/esm2020/components/date.directive.mjs +59 -59
  25. package/dist/esm2020/components/editframe.component.mjs +65 -65
  26. package/dist/esm2020/components/file.directive.mjs +44 -44
  27. package/dist/esm2020/components/generic-link.directive.mjs +64 -64
  28. package/dist/esm2020/components/guard-resolver-factory.mjs +87 -87
  29. package/dist/esm2020/components/hidden-rendering.component.mjs +20 -20
  30. package/dist/esm2020/components/image.directive.mjs +137 -137
  31. package/dist/esm2020/components/link.directive.mjs +117 -117
  32. package/dist/esm2020/components/missing-component.component.mjs +15 -15
  33. package/dist/esm2020/components/placeholder-loading.directive.mjs +15 -15
  34. package/dist/esm2020/components/placeholder.component.mjs +250 -250
  35. package/dist/esm2020/components/placeholder.token.mjs +23 -23
  36. package/dist/esm2020/components/raw.component.mjs +35 -35
  37. package/dist/esm2020/components/render-component.component.mjs +90 -90
  38. package/dist/esm2020/components/render-each.directive.mjs +15 -15
  39. package/dist/esm2020/components/render-empty.directive.mjs +15 -15
  40. package/dist/esm2020/components/rendering-field.mjs +1 -1
  41. package/dist/esm2020/components/rendering.mjs +7 -7
  42. package/dist/esm2020/components/rich-text.directive.mjs +62 -62
  43. package/dist/esm2020/components/router-link.directive.mjs +47 -47
  44. package/dist/esm2020/components/text.directive.mjs +57 -57
  45. package/dist/esm2020/jss-component-factory.service.mjs +83 -83
  46. package/dist/esm2020/lib.module.mjs +167 -167
  47. package/dist/esm2020/public_api.mjs +24 -24
  48. package/dist/esm2020/sitecore-jss-sitecore-jss-angular.mjs +4 -4
  49. package/dist/esm2020/utils.mjs +16 -16
  50. package/dist/fesm2015/sitecore-jss-sitecore-jss-angular.mjs +1415 -1415
  51. package/dist/fesm2020/sitecore-jss-sitecore-jss-angular.mjs +1422 -1422
  52. package/dist/index.d.ts +5 -5
  53. package/dist/jss-component-factory.service.d.ts +25 -25
  54. package/dist/lib.module.d.ts +46 -46
  55. package/dist/package.json +2 -2
  56. package/dist/public_api.d.ts +25 -25
  57. package/dist/utils.d.ts +7 -7
  58. 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNzLWNvbXBvbmVudC1mYWN0b3J5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvanNzLWNvbXBvbmVudC1mYWN0b3J5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQWtCLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRixPQUFPLEVBR0wsaUJBQWlCLEVBSWpCLHNCQUFzQixFQUN0QiwyQkFBMkIsR0FDNUIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQWV4RCxNQUFNLE9BQU8sMEJBQTBCO0lBSXJDLFlBQ1UsUUFBa0IsRUFDYyxVQUFrQyxFQUM3QixjQUF3QztRQUY3RSxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2MsZUFBVSxHQUFWLFVBQVUsQ0FBd0I7UUFDN0IsbUJBQWMsR0FBZCxjQUFjLENBQTBCO1FBRXJGLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUVsQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWpFLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN2QixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDMUU7SUFDSCxDQUFDO0lBRUQsWUFBWSxDQUFDLFNBQTZCO1FBQ3hDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUV2RSxJQUFJLGVBQWUsRUFBRTtZQUNuQixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUM7Z0JBQ3JCLG1CQUFtQixFQUFFLFNBQVM7Z0JBQzlCLHVCQUF1QixFQUFFLGVBQWUsQ0FBQyxJQUFJO2dCQUM3QyxXQUFXLEVBQUUsZUFBZSxDQUFDLFdBQVc7Z0JBQ3hDLE9BQU8sRUFBRSxlQUFlLENBQUMsT0FBTzthQUNqQyxDQUFDLENBQUM7U0FDSjtRQUVELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRXpFLElBQUksYUFBYSxFQUFFO1lBQ2pCLE9BQU8sYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO2dCQUNyRCxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUM7Z0JBQ3pCLE1BQU0sU0FBUyxHQUFHLGNBQWMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUMzRCxNQUFNLG9CQUFvQixHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7Z0JBQ3ZFLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtvQkFDekIsTUFBTSxJQUFJLEtBQUssQ0FDYiwrREFBK0QsYUFBYSxDQUFDLElBQUkscUVBQXFFLENBQ3ZKLENBQUM7aUJBQ0g7Z0JBRUQsSUFBSSxTQUFTLENBQUMsYUFBYSxJQUFJLG9CQUFvQixFQUFFO29CQUNuRCw4REFBOEQ7b0JBQzlELGFBQWEsR0FBSSxvQkFBNkMsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7aUJBQ3pGO3FCQUFNO29CQUNMLElBQUksT0FBTyxvQkFBb0IsS0FBSyxVQUFVLEVBQUU7d0JBQzlDLGFBQWEsR0FBRyxvQkFBb0IsQ0FBQztxQkFDdEM7eUJBQU07d0JBQ0wsTUFBTSxJQUFJLEtBQUssQ0FDYiwrREFBK0QsYUFBYSxDQUFDLElBQUkscUVBQXFFLENBQ3ZKLENBQUM7cUJBQ0g7aUJBQ0Y7Z0JBRUQsT0FBTztvQkFDTCxtQkFBbUIsRUFBRSxTQUFTO29CQUM5Qix1QkFBdUIsRUFBRSxhQUFhO29CQUN0QyxnQkFBZ0IsRUFBRSxTQUFTLENBQUMsd0JBQXdCLENBQUMsdUJBQXVCLENBQzFFLGFBQWEsQ0FDZDtvQkFDRCxXQUFXLEVBQUUsYUFBYSxDQUFDLFdBQVc7b0JBQ3RDLE9BQU8sRUFBRSxhQUFhLENBQUMsT0FBTztpQkFDL0IsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUM7WUFDckIsbUJBQW1CLEVBQUUsU0FBUztTQUMvQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsYUFBYSxDQUNYLFVBQTREO1FBRTVELDBGQUEwRjtRQUMxRixPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQ2hCLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUMzQixjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQzNGLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTyxlQUFlLENBQUMsU0FBK0I7UUFDckQsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDO1lBQ3JCLHVCQUF1QixFQUFFLFlBQVk7WUFDckMsbUJBQW1CLEVBQUUsU0FBUztTQUMvQixDQUFDLENBQUM7SUFDTCxDQUFDOzt3SEExRlUsMEJBQTBCLDBDQU0zQixzQkFBc0IsYUFDdEIsMkJBQTJCOzRIQVAxQiwwQkFBMEI7NEZBQTFCLDBCQUEwQjtrQkFEdEMsVUFBVTs7MEJBT04sTUFBTTsyQkFBQyxzQkFBc0I7OzBCQUM3QixNQUFNOzJCQUFDLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIFR5cGUsIGNyZWF0ZU5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudFJlbmRlcmluZywgSHRtbEVsZW1lbnRSZW5kZXJpbmcgfSBmcm9tICdAc2l0ZWNvcmUtanNzL3NpdGVjb3JlLWpzcy9sYXlvdXQnO1xyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudE5hbWVBbmRNb2R1bGUsXHJcbiAgQ29tcG9uZW50TmFtZUFuZFR5cGUsXHJcbiAgRFlOQU1JQ19DT01QT05FTlQsXHJcbiAgSnNzQ2FuQWN0aXZhdGUsXHJcbiAgSnNzQ2FuQWN0aXZhdGVGbixcclxuICBKc3NSZXNvbHZlLFxyXG4gIFBMQUNFSE9MREVSX0NPTVBPTkVOVFMsXHJcbiAgUExBQ0VIT0xERVJfTEFaWV9DT01QT05FTlRTLFxyXG59IGZyb20gJy4vY29tcG9uZW50cy9wbGFjZWhvbGRlci50b2tlbic7XHJcbmltcG9ydCB7IFJhd0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9yYXcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgaXNSYXdSZW5kZXJpbmcgfSBmcm9tICcuL2NvbXBvbmVudHMvcmVuZGVyaW5nJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50RmFjdG9yeVJlc3VsdCB7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBjb21wb25lbnRJbXBsZW1lbnRhdGlvbj86IFR5cGU8YW55PjtcclxuICBjb21wb25lbnREZWZpbml0aW9uOiBDb21wb25lbnRSZW5kZXJpbmcgfCBIdG1sRWxlbWVudFJlbmRlcmluZztcclxuICBjYW5BY3RpdmF0ZT86XHJcbiAgICB8IEpzc0NhbkFjdGl2YXRlXHJcbiAgICB8IFR5cGU8SnNzQ2FuQWN0aXZhdGU+XHJcbiAgICB8IEpzc0NhbkFjdGl2YXRlRm5cclxuICAgIHwgQXJyYXk8SnNzQ2FuQWN0aXZhdGUgfCBKc3NDYW5BY3RpdmF0ZUZuIHwgVHlwZTxKc3NDYW5BY3RpdmF0ZT4+O1xyXG4gIHJlc29sdmU/OiB7IFtrZXk6IHN0cmluZ106IEpzc1Jlc29sdmU8YW55PiB8IFR5cGU8SnNzUmVzb2x2ZTxhbnk+PiB9O1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBKc3NDb21wb25lbnRGYWN0b3J5U2VydmljZSB7XHJcbiAgcHJpdmF0ZSBjb21wb25lbnRNYXA6IE1hcDxzdHJpbmcsIENvbXBvbmVudE5hbWVBbmRUeXBlPjtcclxuICBwcml2YXRlIGxhenlDb21wb25lbnRNYXA6IE1hcDxzdHJpbmcsIENvbXBvbmVudE5hbWVBbmRNb2R1bGU+O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgQEluamVjdChQTEFDRUhPTERFUl9DT01QT05FTlRTKSBwcml2YXRlIGNvbXBvbmVudHM6IENvbXBvbmVudE5hbWVBbmRUeXBlW10sXHJcbiAgICBASW5qZWN0KFBMQUNFSE9MREVSX0xBWllfQ09NUE9ORU5UUykgcHJpdmF0ZSBsYXp5Q29tcG9uZW50czogQ29tcG9uZW50TmFtZUFuZE1vZHVsZVtdXHJcbiAgKSB7XHJcbiAgICB0aGlzLmNvbXBvbmVudE1hcCA9IG5ldyBNYXAoKTtcclxuICAgIHRoaXMubGF6eUNvbXBvbmVudE1hcCA9IG5ldyBNYXAoKTtcclxuXHJcbiAgICB0aGlzLmNvbXBvbmVudHMuZm9yRWFjaCgoYykgPT4gdGhpcy5jb21wb25lbnRNYXAuc2V0KGMubmFtZSwgYykpO1xyXG5cclxuICAgIGlmICh0aGlzLmxhenlDb21wb25lbnRzKSB7XHJcbiAgICAgIHRoaXMubGF6eUNvbXBvbmVudHMuZm9yRWFjaCgoYykgPT4gdGhpcy5sYXp5Q29tcG9uZW50TWFwLnNldChjLnBhdGgsIGMpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldENvbXBvbmVudChjb21wb25lbnQ6IENvbXBvbmVudFJlbmRlcmluZyk6IFByb21pc2U8Q29tcG9uZW50RmFjdG9yeVJlc3VsdD4ge1xyXG4gICAgY29uc3QgbG9hZGVkQ29tcG9uZW50ID0gdGhpcy5jb21wb25lbnRNYXAuZ2V0KGNvbXBvbmVudC5jb21wb25lbnROYW1lKTtcclxuXHJcbiAgICBpZiAobG9hZGVkQ29tcG9uZW50KSB7XHJcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe1xyXG4gICAgICAgIGNvbXBvbmVudERlZmluaXRpb246IGNvbXBvbmVudCxcclxuICAgICAgICBjb21wb25lbnRJbXBsZW1lbnRhdGlvbjogbG9hZGVkQ29tcG9uZW50LnR5cGUsXHJcbiAgICAgICAgY2FuQWN0aXZhdGU6IGxvYWRlZENvbXBvbmVudC5jYW5BY3RpdmF0ZSxcclxuICAgICAgICByZXNvbHZlOiBsb2FkZWRDb21wb25lbnQucmVzb2x2ZSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbGF6eUNvbXBvbmVudCA9IHRoaXMubGF6eUNvbXBvbmVudE1hcC5nZXQoY29tcG9uZW50LmNvbXBvbmVudE5hbWUpO1xyXG5cclxuICAgIGlmIChsYXp5Q29tcG9uZW50KSB7XHJcbiAgICAgIHJldHVybiBsYXp5Q29tcG9uZW50LmxvYWRDaGlsZHJlbigpLnRoZW4oKGxhenlDaGlsZCkgPT4ge1xyXG4gICAgICAgIGxldCBjb21wb25lbnRUeXBlID0gbnVsbDtcclxuICAgICAgICBjb25zdCBtb2R1bGVSZWYgPSBjcmVhdGVOZ01vZHVsZShsYXp5Q2hpbGQsIHRoaXMuaW5qZWN0b3IpO1xyXG4gICAgICAgIGNvbnN0IGR5bmFtaWNDb21wb25lbnRUeXBlID0gbW9kdWxlUmVmLmluamVjdG9yLmdldChEWU5BTUlDX0NPTVBPTkVOVCk7XHJcbiAgICAgICAgaWYgKCFkeW5hbWljQ29tcG9uZW50VHlwZSkge1xyXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgICAgICBgSnNzQ29tcG9uZW50RmFjdG9yeVNlcnZpY2U6IExhenkgbG9hZCBtb2R1bGUgZm9yIGNvbXBvbmVudCBcIiR7bGF6eUNvbXBvbmVudC5wYXRofVwiIG1pc3NpbmcgRFlOQU1JQ19DT01QT05FTlQgcHJvdmlkZXIuIE1pc3NpbmcgSnNzTW9kdWxlLmZvckNoaWxkKCk/YFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjb21wb25lbnQuY29tcG9uZW50TmFtZSBpbiBkeW5hbWljQ29tcG9uZW50VHlwZSkge1xyXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICAgIGNvbXBvbmVudFR5cGUgPSAoZHluYW1pY0NvbXBvbmVudFR5cGUgYXMgeyBbczogc3RyaW5nXTogYW55IH0pW2NvbXBvbmVudC5jb21wb25lbnROYW1lXTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKHR5cGVvZiBkeW5hbWljQ29tcG9uZW50VHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICBjb21wb25lbnRUeXBlID0gZHluYW1pY0NvbXBvbmVudFR5cGU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgICAgICAgICAgYEpzc0NvbXBvbmVudEZhY3RvcnlTZXJ2aWNlOiBMYXp5IGxvYWQgbW9kdWxlIGZvciBjb21wb25lbnQgXCIke2xhenlDb21wb25lbnQucGF0aH1cIiBtaXNzaW5nIERZTkFNSUNfQ09NUE9ORU5UIHByb3ZpZGVyLiBNaXNzaW5nIEpzc01vZHVsZS5mb3JDaGlsZCgpP2BcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBjb21wb25lbnREZWZpbml0aW9uOiBjb21wb25lbnQsXHJcbiAgICAgICAgICBjb21wb25lbnRJbXBsZW1lbnRhdGlvbjogY29tcG9uZW50VHlwZSxcclxuICAgICAgICAgIGNvbXBvbmVudEZhY3Rvcnk6IG1vZHVsZVJlZi5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoXHJcbiAgICAgICAgICAgIGNvbXBvbmVudFR5cGVcclxuICAgICAgICAgICksXHJcbiAgICAgICAgICBjYW5BY3RpdmF0ZTogbGF6eUNvbXBvbmVudC5jYW5BY3RpdmF0ZSxcclxuICAgICAgICAgIHJlc29sdmU6IGxhenlDb21wb25lbnQucmVzb2x2ZSxcclxuICAgICAgICB9O1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHtcclxuICAgICAgY29tcG9uZW50RGVmaW5pdGlvbjogY29tcG9uZW50LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRDb21wb25lbnRzKFxyXG4gICAgY29tcG9uZW50czogQXJyYXk8Q29tcG9uZW50UmVuZGVyaW5nIHwgSHRtbEVsZW1lbnRSZW5kZXJpbmc+XHJcbiAgKTogUHJvbWlzZTxDb21wb25lbnRGYWN0b3J5UmVzdWx0W10+IHtcclxuICAgIC8vIGFjcXVpcmUgYWxsIGNvbXBvbmVudHMgYW5kIGtlZXAgdGhlbSBpbiBvcmRlciB3aGlsZSBoYW5kbGluZyB0aGVpciBwb3RlbnRpYWwgYXN5bmMtbmVzc1xyXG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFxyXG4gICAgICBjb21wb25lbnRzLm1hcCgoY29tcG9uZW50KSA9PlxyXG4gICAgICAgIGlzUmF3UmVuZGVyaW5nKGNvbXBvbmVudCkgPyB0aGlzLmdldFJhd0NvbXBvbmVudChjb21wb25lbnQpIDogdGhpcy5nZXRDb21wb25lbnQoY29tcG9uZW50KVxyXG4gICAgICApXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRSYXdDb21wb25lbnQoY29tcG9uZW50OiBIdG1sRWxlbWVudFJlbmRlcmluZyk6IFByb21pc2U8Q29tcG9uZW50RmFjdG9yeVJlc3VsdD4ge1xyXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7XHJcbiAgICAgIGNvbXBvbmVudEltcGxlbWVudGF0aW9uOiBSYXdDb21wb25lbnQsXHJcbiAgICAgIGNvbXBvbmVudERlZmluaXRpb246IGNvbXBvbmVudCxcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=