@sitecore-jss/sitecore-jss-angular 21.2.0-canary.9 → 21.2.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/LICENSE.txt +202 -202
- package/README.md +10 -10
- package/angular.json +48 -48
- package/dist/README.md +10 -10
- 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 -40
- 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 +65 -53
- 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 +118 -115
- 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 +2 -2
- 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 +48 -45
- 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 -1403
- package/dist/fesm2015/sitecore-jss-sitecore-jss-angular.mjs.map +1 -1
- package/dist/fesm2020/sitecore-jss-sitecore-jss-angular.mjs +1422 -1404
- package/dist/fesm2020/sitecore-jss-sitecore-jss-angular.mjs.map +1 -1
- 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/typings/README.md +2 -2
- package/dist/utils.d.ts +7 -7
- package/ng-package.json +13 -13
- package/package.json +3 -3
- package/tsconfig.json +9 -9
- package/tsconfig.spec.json +16 -16
- package/typings/README.md +2 -2
|
@@ -1,266 +1,266 @@
|
|
|
1
|
-
/* eslint-disable @angular-eslint/no-conflicting-lifecycle */
|
|
2
|
-
import { isPlatformServer } from '@angular/common';
|
|
3
|
-
import { Component, ContentChild, EventEmitter, Inject, Input, Output, PLATFORM_ID, ViewChild, ViewContainerRef, } from '@angular/core';
|
|
4
|
-
import { UrlTree } from '@angular/router';
|
|
5
|
-
import { Observable } from 'rxjs';
|
|
6
|
-
import { takeWhile } from 'rxjs/operators';
|
|
7
|
-
import { HIDDEN_RENDERING_NAME } from './hidden-rendering.component';
|
|
8
|
-
import { PlaceholderLoadingDirective } from './placeholder-loading.directive';
|
|
9
|
-
import { DATA_RESOLVER, GUARD_RESOLVER, PLACEHOLDER_HIDDEN_RENDERING_COMPONENT, PLACEHOLDER_MISSING_COMPONENT_COMPONENT, } from './placeholder.token';
|
|
10
|
-
import { RenderEachDirective } from './render-each.directive';
|
|
11
|
-
import { RenderEmptyDirective } from './render-empty.directive';
|
|
12
|
-
import { isRawRendering } from './rendering';
|
|
13
|
-
import * as i0 from "@angular/core";
|
|
14
|
-
import * as i1 from "../jss-component-factory.service";
|
|
15
|
-
import * as i2 from "@angular/router";
|
|
16
|
-
import * as i3 from "@angular/common";
|
|
17
|
-
/**
|
|
18
|
-
* @param {ComponentRendering} rendering
|
|
19
|
-
* @param {string} name
|
|
20
|
-
*/
|
|
21
|
-
function getPlaceholder(rendering, name) {
|
|
22
|
-
if (rendering && rendering.placeholders && Object.keys(rendering.placeholders).length > 0) {
|
|
23
|
-
return rendering.placeholders[name];
|
|
24
|
-
}
|
|
25
|
-
return null;
|
|
26
|
-
}
|
|
27
|
-
export class PlaceholderComponent {
|
|
28
|
-
constructor(differs, componentFactory, changeDetectorRef, elementRef, renderer, router, missingComponentComponent, hiddenRenderingComponent, guardResolver, dataResolver,
|
|
29
|
-
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
30
|
-
platformId) {
|
|
31
|
-
this.differs = differs;
|
|
32
|
-
this.componentFactory = componentFactory;
|
|
33
|
-
this.changeDetectorRef = changeDetectorRef;
|
|
34
|
-
this.elementRef = elementRef;
|
|
35
|
-
this.renderer = renderer;
|
|
36
|
-
this.router = router;
|
|
37
|
-
this.missingComponentComponent = missingComponentComponent;
|
|
38
|
-
this.hiddenRenderingComponent = hiddenRenderingComponent;
|
|
39
|
-
this.guardResolver = guardResolver;
|
|
40
|
-
this.dataResolver = dataResolver;
|
|
41
|
-
this.platformId = platformId;
|
|
42
|
-
this.clientOnly = false;
|
|
43
|
-
this.loaded = new EventEmitter();
|
|
44
|
-
this.isLoading = true;
|
|
45
|
-
this._componentInstances = [];
|
|
46
|
-
this.destroyed = false;
|
|
47
|
-
this.parentStyleAttribute = '';
|
|
48
|
-
}
|
|
49
|
-
set inputs(value) {
|
|
50
|
-
this._inputs = value;
|
|
51
|
-
if (!this._differ && value) {
|
|
52
|
-
this._differ = this.differs.find(value).create();
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
ngOnInit() {
|
|
56
|
-
// just to ensure the element exists
|
|
57
|
-
const elem = this.elementRef.nativeElement;
|
|
58
|
-
if (elem) {
|
|
59
|
-
const attributes = elem.attributes;
|
|
60
|
-
for (let i = 0; i < attributes.length; i++) {
|
|
61
|
-
const attr = attributes.item(i);
|
|
62
|
-
if (attr && attr.name.indexOf('_ngcontent') !== -1) {
|
|
63
|
-
this.parentStyleAttribute = attr.name;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
ngOnDestroy() {
|
|
69
|
-
this.destroyed = true;
|
|
70
|
-
this._componentInstances = [];
|
|
71
|
-
}
|
|
72
|
-
ngOnChanges(changes) {
|
|
73
|
-
if (changes.rendering || changes.renderings) {
|
|
74
|
-
this._render();
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
ngDoCheck() {
|
|
78
|
-
if (!this._differ || !this._inputs || this._componentInstances.length === 0) {
|
|
79
|
-
return;
|
|
80
|
-
}
|
|
81
|
-
const changes = this._differ.diff(this._inputs);
|
|
82
|
-
if (!changes) {
|
|
83
|
-
return;
|
|
84
|
-
}
|
|
85
|
-
const updates = {};
|
|
86
|
-
changes.forEachRemovedItem((change) => (updates[change.key] = null));
|
|
87
|
-
changes.forEachAddedItem((change) => (updates[change.key] = change.currentValue));
|
|
88
|
-
changes.forEachChangedItem((change) => (updates[change.key] = change.currentValue));
|
|
89
|
-
this._componentInstances.forEach((componentInstance) => this._setComponentInputs(componentInstance, updates));
|
|
90
|
-
}
|
|
91
|
-
_setComponentInputs(componentInstance, inputs) {
|
|
92
|
-
Object.entries(inputs).forEach(([input, inputValue]) => (componentInstance[input] = inputValue));
|
|
93
|
-
}
|
|
94
|
-
_subscribeComponentOutputs(componentInstance, outputs) {
|
|
95
|
-
Object.keys(outputs)
|
|
96
|
-
.filter((output) => componentInstance[output] && componentInstance[output] instanceof Observable)
|
|
97
|
-
.forEach((output) => componentInstance[output]
|
|
98
|
-
.pipe(takeWhile(() => !this.destroyed))
|
|
99
|
-
.subscribe(outputs[output]));
|
|
100
|
-
}
|
|
101
|
-
async _render() {
|
|
102
|
-
if (this.clientOnly && isPlatformServer(this.platformId)) {
|
|
103
|
-
return;
|
|
104
|
-
}
|
|
105
|
-
this._componentInstances = [];
|
|
106
|
-
this.view.clear();
|
|
107
|
-
if (!this.rendering && !this.renderings) {
|
|
108
|
-
return;
|
|
109
|
-
}
|
|
110
|
-
if (!this.name && !this.renderings) {
|
|
111
|
-
console.warn('Placeholder name was not specified, and explicit renderings array was not passed. Placeholder requires either name and rendering, or renderings.');
|
|
112
|
-
this.isLoading = false;
|
|
113
|
-
return;
|
|
114
|
-
}
|
|
115
|
-
const placeholder = this.renderings || getPlaceholder(this.rendering, this.name || '');
|
|
116
|
-
if (!placeholder) {
|
|
117
|
-
console.warn(`Placeholder '${this.name}' was not found in the current rendering data`, JSON.stringify(this.rendering, null, 2));
|
|
118
|
-
this.isLoading = false;
|
|
119
|
-
return;
|
|
120
|
-
}
|
|
121
|
-
// if the placeholder is empty (contains only raw renderings), then we may need to use the empty template if it's defined
|
|
122
|
-
const placeholderIsEmpty = placeholder.every((rendering) => isRawRendering(rendering));
|
|
123
|
-
if (this.renderEmptyTemplate && placeholderIsEmpty) {
|
|
124
|
-
this.view.createEmbeddedView(this.renderEmptyTemplate.templateRef, {
|
|
125
|
-
renderings: placeholder,
|
|
126
|
-
});
|
|
127
|
-
this.isLoading = false;
|
|
128
|
-
}
|
|
129
|
-
else {
|
|
130
|
-
const factories = await this.componentFactory.getComponents(placeholder);
|
|
131
|
-
try {
|
|
132
|
-
const nonGuarded = await this.guardResolver(factories);
|
|
133
|
-
const withData = await this.dataResolver(nonGuarded);
|
|
134
|
-
withData.forEach((rendering, index) => {
|
|
135
|
-
if (this.renderEachTemplate && !isRawRendering(rendering.factory.componentDefinition)) {
|
|
136
|
-
this._renderTemplatedComponent(rendering.factory.componentDefinition, index);
|
|
137
|
-
}
|
|
138
|
-
else {
|
|
139
|
-
this._renderEmbeddedComponent(rendering.factory, rendering.data, index);
|
|
140
|
-
}
|
|
141
|
-
});
|
|
142
|
-
this.isLoading = false;
|
|
143
|
-
this.changeDetectorRef.markForCheck();
|
|
144
|
-
this.loaded.emit(this.name);
|
|
145
|
-
}
|
|
146
|
-
catch (e) {
|
|
147
|
-
this.isLoading = false;
|
|
148
|
-
if (e instanceof UrlTree) {
|
|
149
|
-
this.router.navigateByUrl(e);
|
|
150
|
-
}
|
|
151
|
-
else if (typeof e === 'string') {
|
|
152
|
-
this.router.navigate([e]);
|
|
153
|
-
}
|
|
154
|
-
else if (Array.isArray(e)) {
|
|
155
|
-
this.router.navigate(e);
|
|
156
|
-
}
|
|
157
|
-
else {
|
|
158
|
-
throw e;
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
_renderTemplatedComponent(rendering, index) {
|
|
164
|
-
// the render-each template takes care of all component mapping etc
|
|
165
|
-
// generally using <sc-render-component> which is about like _renderEmbeddedComponent()
|
|
166
|
-
// as a separate component
|
|
167
|
-
this.view.createEmbeddedView(this.renderEachTemplate.templateRef, {
|
|
168
|
-
rendering,
|
|
169
|
-
index,
|
|
170
|
-
});
|
|
171
|
-
}
|
|
172
|
-
_renderEmbeddedComponent(rendering, data, index) {
|
|
173
|
-
if (rendering.componentDefinition.componentName === HIDDEN_RENDERING_NAME) {
|
|
174
|
-
rendering.componentImplementation = this.hiddenRenderingComponent;
|
|
175
|
-
}
|
|
176
|
-
if (!rendering.componentImplementation) {
|
|
177
|
-
const componentName = rendering.componentDefinition.componentName;
|
|
1
|
+
/* eslint-disable @angular-eslint/no-conflicting-lifecycle */
|
|
2
|
+
import { isPlatformServer } from '@angular/common';
|
|
3
|
+
import { Component, ContentChild, EventEmitter, Inject, Input, Output, PLATFORM_ID, ViewChild, ViewContainerRef, } from '@angular/core';
|
|
4
|
+
import { UrlTree } from '@angular/router';
|
|
5
|
+
import { Observable } from 'rxjs';
|
|
6
|
+
import { takeWhile } from 'rxjs/operators';
|
|
7
|
+
import { HIDDEN_RENDERING_NAME } from './hidden-rendering.component';
|
|
8
|
+
import { PlaceholderLoadingDirective } from './placeholder-loading.directive';
|
|
9
|
+
import { DATA_RESOLVER, GUARD_RESOLVER, PLACEHOLDER_HIDDEN_RENDERING_COMPONENT, PLACEHOLDER_MISSING_COMPONENT_COMPONENT, } from './placeholder.token';
|
|
10
|
+
import { RenderEachDirective } from './render-each.directive';
|
|
11
|
+
import { RenderEmptyDirective } from './render-empty.directive';
|
|
12
|
+
import { isRawRendering } from './rendering';
|
|
13
|
+
import * as i0 from "@angular/core";
|
|
14
|
+
import * as i1 from "../jss-component-factory.service";
|
|
15
|
+
import * as i2 from "@angular/router";
|
|
16
|
+
import * as i3 from "@angular/common";
|
|
17
|
+
/**
|
|
18
|
+
* @param {ComponentRendering} rendering
|
|
19
|
+
* @param {string} name
|
|
20
|
+
*/
|
|
21
|
+
function getPlaceholder(rendering, name) {
|
|
22
|
+
if (rendering && rendering.placeholders && Object.keys(rendering.placeholders).length > 0) {
|
|
23
|
+
return rendering.placeholders[name];
|
|
24
|
+
}
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
export class PlaceholderComponent {
|
|
28
|
+
constructor(differs, componentFactory, changeDetectorRef, elementRef, renderer, router, missingComponentComponent, hiddenRenderingComponent, guardResolver, dataResolver,
|
|
29
|
+
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
30
|
+
platformId) {
|
|
31
|
+
this.differs = differs;
|
|
32
|
+
this.componentFactory = componentFactory;
|
|
33
|
+
this.changeDetectorRef = changeDetectorRef;
|
|
34
|
+
this.elementRef = elementRef;
|
|
35
|
+
this.renderer = renderer;
|
|
36
|
+
this.router = router;
|
|
37
|
+
this.missingComponentComponent = missingComponentComponent;
|
|
38
|
+
this.hiddenRenderingComponent = hiddenRenderingComponent;
|
|
39
|
+
this.guardResolver = guardResolver;
|
|
40
|
+
this.dataResolver = dataResolver;
|
|
41
|
+
this.platformId = platformId;
|
|
42
|
+
this.clientOnly = false;
|
|
43
|
+
this.loaded = new EventEmitter();
|
|
44
|
+
this.isLoading = true;
|
|
45
|
+
this._componentInstances = [];
|
|
46
|
+
this.destroyed = false;
|
|
47
|
+
this.parentStyleAttribute = '';
|
|
48
|
+
}
|
|
49
|
+
set inputs(value) {
|
|
50
|
+
this._inputs = value;
|
|
51
|
+
if (!this._differ && value) {
|
|
52
|
+
this._differ = this.differs.find(value).create();
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
ngOnInit() {
|
|
56
|
+
// just to ensure the element exists
|
|
57
|
+
const elem = this.elementRef.nativeElement;
|
|
58
|
+
if (elem) {
|
|
59
|
+
const attributes = elem.attributes;
|
|
60
|
+
for (let i = 0; i < attributes.length; i++) {
|
|
61
|
+
const attr = attributes.item(i);
|
|
62
|
+
if (attr && attr.name.indexOf('_ngcontent') !== -1) {
|
|
63
|
+
this.parentStyleAttribute = attr.name;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
ngOnDestroy() {
|
|
69
|
+
this.destroyed = true;
|
|
70
|
+
this._componentInstances = [];
|
|
71
|
+
}
|
|
72
|
+
ngOnChanges(changes) {
|
|
73
|
+
if (changes.rendering || changes.renderings) {
|
|
74
|
+
this._render();
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
ngDoCheck() {
|
|
78
|
+
if (!this._differ || !this._inputs || this._componentInstances.length === 0) {
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
const changes = this._differ.diff(this._inputs);
|
|
82
|
+
if (!changes) {
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
const updates = {};
|
|
86
|
+
changes.forEachRemovedItem((change) => (updates[change.key] = null));
|
|
87
|
+
changes.forEachAddedItem((change) => (updates[change.key] = change.currentValue));
|
|
88
|
+
changes.forEachChangedItem((change) => (updates[change.key] = change.currentValue));
|
|
89
|
+
this._componentInstances.forEach((componentInstance) => this._setComponentInputs(componentInstance, updates));
|
|
90
|
+
}
|
|
91
|
+
_setComponentInputs(componentInstance, inputs) {
|
|
92
|
+
Object.entries(inputs).forEach(([input, inputValue]) => (componentInstance[input] = inputValue));
|
|
93
|
+
}
|
|
94
|
+
_subscribeComponentOutputs(componentInstance, outputs) {
|
|
95
|
+
Object.keys(outputs)
|
|
96
|
+
.filter((output) => componentInstance[output] && componentInstance[output] instanceof Observable)
|
|
97
|
+
.forEach((output) => componentInstance[output]
|
|
98
|
+
.pipe(takeWhile(() => !this.destroyed))
|
|
99
|
+
.subscribe(outputs[output]));
|
|
100
|
+
}
|
|
101
|
+
async _render() {
|
|
102
|
+
if (this.clientOnly && isPlatformServer(this.platformId)) {
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
this._componentInstances = [];
|
|
106
|
+
this.view.clear();
|
|
107
|
+
if (!this.rendering && !this.renderings) {
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
if (!this.name && !this.renderings) {
|
|
111
|
+
console.warn('Placeholder name was not specified, and explicit renderings array was not passed. Placeholder requires either name and rendering, or renderings.');
|
|
112
|
+
this.isLoading = false;
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
const placeholder = this.renderings || getPlaceholder(this.rendering, this.name || '');
|
|
116
|
+
if (!placeholder) {
|
|
117
|
+
console.warn(`Placeholder '${this.name}' was not found in the current rendering data`, JSON.stringify(this.rendering, null, 2));
|
|
118
|
+
this.isLoading = false;
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
// if the placeholder is empty (contains only raw renderings), then we may need to use the empty template if it's defined
|
|
122
|
+
const placeholderIsEmpty = placeholder.every((rendering) => isRawRendering(rendering));
|
|
123
|
+
if (this.renderEmptyTemplate && placeholderIsEmpty) {
|
|
124
|
+
this.view.createEmbeddedView(this.renderEmptyTemplate.templateRef, {
|
|
125
|
+
renderings: placeholder,
|
|
126
|
+
});
|
|
127
|
+
this.isLoading = false;
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
const factories = await this.componentFactory.getComponents(placeholder);
|
|
131
|
+
try {
|
|
132
|
+
const nonGuarded = await this.guardResolver(factories);
|
|
133
|
+
const withData = await this.dataResolver(nonGuarded);
|
|
134
|
+
withData.forEach((rendering, index) => {
|
|
135
|
+
if (this.renderEachTemplate && !isRawRendering(rendering.factory.componentDefinition)) {
|
|
136
|
+
this._renderTemplatedComponent(rendering.factory.componentDefinition, index);
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
this._renderEmbeddedComponent(rendering.factory, rendering.data, index);
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
this.isLoading = false;
|
|
143
|
+
this.changeDetectorRef.markForCheck();
|
|
144
|
+
this.loaded.emit(this.name);
|
|
145
|
+
}
|
|
146
|
+
catch (e) {
|
|
147
|
+
this.isLoading = false;
|
|
148
|
+
if (e instanceof UrlTree) {
|
|
149
|
+
this.router.navigateByUrl(e);
|
|
150
|
+
}
|
|
151
|
+
else if (typeof e === 'string') {
|
|
152
|
+
this.router.navigate([e]);
|
|
153
|
+
}
|
|
154
|
+
else if (Array.isArray(e)) {
|
|
155
|
+
this.router.navigate(e);
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
throw e;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
_renderTemplatedComponent(rendering, index) {
|
|
164
|
+
// the render-each template takes care of all component mapping etc
|
|
165
|
+
// generally using <sc-render-component> which is about like _renderEmbeddedComponent()
|
|
166
|
+
// as a separate component
|
|
167
|
+
this.view.createEmbeddedView(this.renderEachTemplate.templateRef, {
|
|
168
|
+
rendering,
|
|
169
|
+
index,
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
_renderEmbeddedComponent(rendering, data, index) {
|
|
173
|
+
if (rendering.componentDefinition.componentName === HIDDEN_RENDERING_NAME) {
|
|
174
|
+
rendering.componentImplementation = this.hiddenRenderingComponent;
|
|
175
|
+
}
|
|
176
|
+
if (!rendering.componentImplementation) {
|
|
177
|
+
const componentName = rendering.componentDefinition.componentName;
|
|
178
178
|
console.error(`Placeholder ${this.name} contains unknown component ${componentName}.`, `Ensure component is mapped, like:
|
|
179
179
|
JssModule.withComponents([
|
|
180
180
|
{ name: '${componentName}', type: ${componentName}Component }
|
|
181
|
-
])`);
|
|
182
|
-
rendering.componentImplementation = this.missingComponentComponent;
|
|
183
|
-
}
|
|
184
|
-
// apply the parent style attribute _ngcontent
|
|
185
|
-
// work-around for https://github.com/angular/angular/issues/12215
|
|
186
|
-
const createdComponentRef = this.view.createComponent(rendering.componentImplementation, {
|
|
187
|
-
index: index,
|
|
188
|
-
});
|
|
189
|
-
if (this.parentStyleAttribute) {
|
|
190
|
-
this.renderer.setAttribute(createdComponentRef.location.nativeElement, this.parentStyleAttribute, '');
|
|
191
|
-
}
|
|
192
|
-
const componentInstance = createdComponentRef.instance;
|
|
193
|
-
componentInstance.rendering = rendering.componentDefinition;
|
|
194
|
-
componentInstance.data = data;
|
|
195
|
-
if (this._inputs) {
|
|
196
|
-
this._setComponentInputs(componentInstance, this._inputs);
|
|
197
|
-
}
|
|
198
|
-
if (this.outputs) {
|
|
199
|
-
this._subscribeComponentOutputs(componentInstance, this.outputs);
|
|
200
|
-
}
|
|
201
|
-
this._componentInstances.push(componentInstance);
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
PlaceholderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: PlaceholderComponent, deps: [{ token: i0.KeyValueDiffers }, { token: i1.JssComponentFactoryService }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i2.Router }, { token: PLACEHOLDER_MISSING_COMPONENT_COMPONENT }, { token: PLACEHOLDER_HIDDEN_RENDERING_COMPONENT }, { token: GUARD_RESOLVER }, { token: DATA_RESOLVER }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component });
|
|
181
|
+
])`);
|
|
182
|
+
rendering.componentImplementation = this.missingComponentComponent;
|
|
183
|
+
}
|
|
184
|
+
// apply the parent style attribute _ngcontent
|
|
185
|
+
// work-around for https://github.com/angular/angular/issues/12215
|
|
186
|
+
const createdComponentRef = this.view.createComponent(rendering.componentImplementation, {
|
|
187
|
+
index: index,
|
|
188
|
+
});
|
|
189
|
+
if (this.parentStyleAttribute) {
|
|
190
|
+
this.renderer.setAttribute(createdComponentRef.location.nativeElement, this.parentStyleAttribute, '');
|
|
191
|
+
}
|
|
192
|
+
const componentInstance = createdComponentRef.instance;
|
|
193
|
+
componentInstance.rendering = rendering.componentDefinition;
|
|
194
|
+
componentInstance.data = data;
|
|
195
|
+
if (this._inputs) {
|
|
196
|
+
this._setComponentInputs(componentInstance, this._inputs);
|
|
197
|
+
}
|
|
198
|
+
if (this.outputs) {
|
|
199
|
+
this._subscribeComponentOutputs(componentInstance, this.outputs);
|
|
200
|
+
}
|
|
201
|
+
this._componentInstances.push(componentInstance);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
PlaceholderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: PlaceholderComponent, deps: [{ token: i0.KeyValueDiffers }, { token: i1.JssComponentFactoryService }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i2.Router }, { token: PLACEHOLDER_MISSING_COMPONENT_COMPONENT }, { token: PLACEHOLDER_HIDDEN_RENDERING_COMPONENT }, { token: GUARD_RESOLVER }, { token: DATA_RESOLVER }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component });
|
|
205
205
|
PlaceholderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: PlaceholderComponent, selector: "sc-placeholder,[sc-placeholder]", inputs: { name: "name", rendering: "rendering", renderings: "renderings", outputs: "outputs", clientOnly: "clientOnly", inputs: "inputs" }, outputs: { loaded: "loaded" }, queries: [{ propertyName: "renderEachTemplate", first: true, predicate: RenderEachDirective, descendants: true, static: true }, { propertyName: "renderEmptyTemplate", first: true, predicate: RenderEmptyDirective, descendants: true, static: true }, { propertyName: "placeholderLoading", first: true, predicate: PlaceholderLoadingDirective, descendants: true, static: true }], viewQueries: [{ propertyName: "view", first: true, predicate: ["view"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: `
|
|
206
206
|
<ng-template
|
|
207
207
|
*ngIf="isLoading"
|
|
208
208
|
[ngTemplateOutlet]="placeholderLoading?.templateRef"
|
|
209
209
|
></ng-template>
|
|
210
210
|
<ng-template #view></ng-template>
|
|
211
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
|
|
212
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: PlaceholderComponent, decorators: [{
|
|
213
|
-
type: Component,
|
|
214
|
-
args: [{
|
|
215
|
-
selector: 'sc-placeholder,[sc-placeholder]',
|
|
211
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
|
|
212
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: PlaceholderComponent, decorators: [{
|
|
213
|
+
type: Component,
|
|
214
|
+
args: [{
|
|
215
|
+
selector: 'sc-placeholder,[sc-placeholder]',
|
|
216
216
|
template: `
|
|
217
217
|
<ng-template
|
|
218
218
|
*ngIf="isLoading"
|
|
219
219
|
[ngTemplateOutlet]="placeholderLoading?.templateRef"
|
|
220
220
|
></ng-template>
|
|
221
221
|
<ng-template #view></ng-template>
|
|
222
|
-
`,
|
|
223
|
-
}]
|
|
224
|
-
}], ctorParameters: function () { return [{ type: i0.KeyValueDiffers }, { type: i1.JssComponentFactoryService }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i2.Router }, { type: i0.Type, decorators: [{
|
|
225
|
-
type: Inject,
|
|
226
|
-
args: [PLACEHOLDER_MISSING_COMPONENT_COMPONENT]
|
|
227
|
-
}] }, { type: i0.Type, decorators: [{
|
|
228
|
-
type: Inject,
|
|
229
|
-
args: [PLACEHOLDER_HIDDEN_RENDERING_COMPONENT]
|
|
230
|
-
}] }, { type: undefined, decorators: [{
|
|
231
|
-
type: Inject,
|
|
232
|
-
args: [GUARD_RESOLVER]
|
|
233
|
-
}] }, { type: undefined, decorators: [{
|
|
234
|
-
type: Inject,
|
|
235
|
-
args: [DATA_RESOLVER]
|
|
236
|
-
}] }, { type: Object, decorators: [{
|
|
237
|
-
type: Inject,
|
|
238
|
-
args: [PLATFORM_ID]
|
|
239
|
-
}] }]; }, propDecorators: { name: [{
|
|
240
|
-
type: Input
|
|
241
|
-
}], rendering: [{
|
|
242
|
-
type: Input
|
|
243
|
-
}], renderings: [{
|
|
244
|
-
type: Input
|
|
245
|
-
}], outputs: [{
|
|
246
|
-
type: Input
|
|
247
|
-
}], clientOnly: [{
|
|
248
|
-
type: Input
|
|
249
|
-
}], loaded: [{
|
|
250
|
-
type: Output
|
|
251
|
-
}], renderEachTemplate: [{
|
|
252
|
-
type: ContentChild,
|
|
253
|
-
args: [RenderEachDirective, { static: true }]
|
|
254
|
-
}], renderEmptyTemplate: [{
|
|
255
|
-
type: ContentChild,
|
|
256
|
-
args: [RenderEmptyDirective, { static: true }]
|
|
257
|
-
}], placeholderLoading: [{
|
|
258
|
-
type: ContentChild,
|
|
259
|
-
args: [PlaceholderLoadingDirective, { static: true }]
|
|
260
|
-
}], view: [{
|
|
261
|
-
type: ViewChild,
|
|
262
|
-
args: ['view', { read: ViewContainerRef, static: true }]
|
|
263
|
-
}], inputs: [{
|
|
264
|
-
type: Input
|
|
265
|
-
}] } });
|
|
222
|
+
`,
|
|
223
|
+
}]
|
|
224
|
+
}], ctorParameters: function () { return [{ type: i0.KeyValueDiffers }, { type: i1.JssComponentFactoryService }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i2.Router }, { type: i0.Type, decorators: [{
|
|
225
|
+
type: Inject,
|
|
226
|
+
args: [PLACEHOLDER_MISSING_COMPONENT_COMPONENT]
|
|
227
|
+
}] }, { type: i0.Type, decorators: [{
|
|
228
|
+
type: Inject,
|
|
229
|
+
args: [PLACEHOLDER_HIDDEN_RENDERING_COMPONENT]
|
|
230
|
+
}] }, { type: undefined, decorators: [{
|
|
231
|
+
type: Inject,
|
|
232
|
+
args: [GUARD_RESOLVER]
|
|
233
|
+
}] }, { type: undefined, decorators: [{
|
|
234
|
+
type: Inject,
|
|
235
|
+
args: [DATA_RESOLVER]
|
|
236
|
+
}] }, { type: Object, decorators: [{
|
|
237
|
+
type: Inject,
|
|
238
|
+
args: [PLATFORM_ID]
|
|
239
|
+
}] }]; }, propDecorators: { name: [{
|
|
240
|
+
type: Input
|
|
241
|
+
}], rendering: [{
|
|
242
|
+
type: Input
|
|
243
|
+
}], renderings: [{
|
|
244
|
+
type: Input
|
|
245
|
+
}], outputs: [{
|
|
246
|
+
type: Input
|
|
247
|
+
}], clientOnly: [{
|
|
248
|
+
type: Input
|
|
249
|
+
}], loaded: [{
|
|
250
|
+
type: Output
|
|
251
|
+
}], renderEachTemplate: [{
|
|
252
|
+
type: ContentChild,
|
|
253
|
+
args: [RenderEachDirective, { static: true }]
|
|
254
|
+
}], renderEmptyTemplate: [{
|
|
255
|
+
type: ContentChild,
|
|
256
|
+
args: [RenderEmptyDirective, { static: true }]
|
|
257
|
+
}], placeholderLoading: [{
|
|
258
|
+
type: ContentChild,
|
|
259
|
+
args: [PlaceholderLoadingDirective, { static: true }]
|
|
260
|
+
}], view: [{
|
|
261
|
+
type: ViewChild,
|
|
262
|
+
args: ['view', { read: ViewContainerRef, static: true }]
|
|
263
|
+
}], inputs: [{
|
|
264
|
+
type: Input
|
|
265
|
+
}] } });
|
|
266
266
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Vob2xkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcGxhY2Vob2xkZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDZEQUE2RDtBQUM3RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBRUwsU0FBUyxFQUNULFlBQVksRUFHWixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFNTCxNQUFNLEVBQ04sV0FBVyxFQUlYLFNBQVMsRUFDVCxnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFRLE9BQU8sRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBRXhELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSzNDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzlFLE9BQU8sRUFFTCxhQUFhLEVBRWIsY0FBYyxFQUNkLHNDQUFzQyxFQUN0Qyx1Q0FBdUMsR0FDeEMsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDOzs7OztBQUU3Qzs7O0dBR0c7QUFDSCxTQUFTLGNBQWMsQ0FBQyxTQUE2QixFQUFFLElBQVk7SUFDakUsSUFBSSxTQUFTLElBQUksU0FBUyxDQUFDLFlBQVksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFN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VCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L25vLWNvbmZsaWN0aW5nLWxpZmVjeWNsZSAqL1xyXG5pbXBvcnQgeyBpc1BsYXRmb3JtU2VydmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgQ29udGVudENoaWxkLFxyXG4gIERvQ2hlY2ssXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5qZWN0LFxyXG4gIElucHV0LFxyXG4gIEtleVZhbHVlRGlmZmVyLFxyXG4gIEtleVZhbHVlRGlmZmVycyxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgUExBVEZPUk1fSUQsXHJcbiAgUmVuZGVyZXIyLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVHlwZSxcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0NvbnRhaW5lclJlZixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGF0YSwgVXJsVHJlZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQ29tcG9uZW50UmVuZGVyaW5nLCBIdG1sRWxlbWVudFJlbmRlcmluZyB9IGZyb20gJ0BzaXRlY29yZS1qc3Mvc2l0ZWNvcmUtanNzL2xheW91dCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGFrZVdoaWxlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudEZhY3RvcnlSZXN1bHQsXHJcbiAgSnNzQ29tcG9uZW50RmFjdG9yeVNlcnZpY2UsXHJcbn0gZnJvbSAnLi4vanNzLWNvbXBvbmVudC1mYWN0b3J5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBISURERU5fUkVOREVSSU5HX05BTUUgfSBmcm9tICcuL2hpZGRlbi1yZW5kZXJpbmcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUGxhY2Vob2xkZXJMb2FkaW5nRGlyZWN0aXZlIH0gZnJvbSAnLi9wbGFjZWhvbGRlci1sb2FkaW5nLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7XHJcbiAgRGF0YVJlc29sdmVyLFxyXG4gIERBVEFfUkVTT0xWRVIsXHJcbiAgR3VhcmRSZXNvbHZlcixcclxuICBHVUFSRF9SRVNPTFZFUixcclxuICBQTEFDRUhPTERFUl9ISURERU5fUkVOREVSSU5HX0NPTVBPTkVOVCxcclxuICBQTEFDRUhPTERFUl9NSVNTSU5HX0NPTVBPTkVOVF9DT01QT05FTlQsXHJcbn0gZnJvbSAnLi9wbGFjZWhvbGRlci50b2tlbic7XHJcbmltcG9ydCB7IFJlbmRlckVhY2hEaXJlY3RpdmUgfSBmcm9tICcuL3JlbmRlci1lYWNoLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFJlbmRlckVtcHR5RGlyZWN0aXZlIH0gZnJvbSAnLi9yZW5kZXItZW1wdHkuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgaXNSYXdSZW5kZXJpbmcgfSBmcm9tICcuL3JlbmRlcmluZyc7XHJcblxyXG4vKipcclxuICogQHBhcmFtIHtDb21wb25lbnRSZW5kZXJpbmd9IHJlbmRlcmluZ1xyXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxyXG4gKi9cclxuZnVuY3Rpb24gZ2V0UGxhY2Vob2xkZXIocmVuZGVyaW5nOiBDb21wb25lbnRSZW5kZXJpbmcsIG5hbWU6IHN0cmluZykge1xyXG4gIGlmIChyZW5kZXJpbmcgJiYgcmVuZGVyaW5nLnBsYWNlaG9sZGVycyAmJiBPYmplY3Qua2V5cyhyZW5kZXJpbmcucGxhY2Vob2xkZXJzKS5sZW5ndGggPiAwKSB7XHJcbiAgICByZXR1cm4gcmVuZGVyaW5nLnBsYWNlaG9sZGVyc1tuYW1lXTtcclxuICB9XHJcbiAgcmV0dXJuIG51bGw7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRmFjdG9yeVdpdGhEYXRhIHtcclxuICBmYWN0b3J5OiBDb21wb25lbnRGYWN0b3J5UmVzdWx0O1xyXG4gIGRhdGE/OiBEYXRhO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NjLXBsYWNlaG9sZGVyLFtzYy1wbGFjZWhvbGRlcl0nLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8bmctdGVtcGxhdGVcclxuICAgICAgKm5nSWY9XCJpc0xvYWRpbmdcIlxyXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJwbGFjZWhvbGRlckxvYWRpbmc/LnRlbXBsYXRlUmVmXCJcclxuICAgID48L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLXRlbXBsYXRlICN2aWV3PjwvbmctdGVtcGxhdGU+XHJcbiAgYCxcclxufSlcclxuZXhwb3J0IGNsYXNzIFBsYWNlaG9sZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIERvQ2hlY2ssIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KCkgbmFtZT86IHN0cmluZztcclxuICBASW5wdXQoKSByZW5kZXJpbmc6IENvbXBvbmVudFJlbmRlcmluZztcclxuICBASW5wdXQoKSByZW5kZXJpbmdzPzogQXJyYXk8Q29tcG9uZW50UmVuZGVyaW5nIHwgSHRtbEVsZW1lbnRSZW5kZXJpbmc+O1xyXG4gIEBJbnB1dCgpIG91dHB1dHM6IHsgW2s6IHN0cmluZ106IChldmVudFR5cGU6IHVua25vd24pID0+IHZvaWQgfTtcclxuICBASW5wdXQoKSBjbGllbnRPbmx5ID0gZmFsc2U7XHJcblxyXG4gIEBPdXRwdXQoKSBsb2FkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZyB8IHVuZGVmaW5lZD4oKTtcclxuXHJcbiAgQENvbnRlbnRDaGlsZChSZW5kZXJFYWNoRGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KSByZW5kZXJFYWNoVGVtcGxhdGU6IFJlbmRlckVhY2hEaXJlY3RpdmU7XHJcbiAgQENvbnRlbnRDaGlsZChSZW5kZXJFbXB0eURpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUgfSkgcmVuZGVyRW1wdHlUZW1wbGF0ZTogUmVuZGVyRW1wdHlEaXJlY3RpdmU7XHJcbiAgQENvbnRlbnRDaGlsZChQbGFjZWhvbGRlckxvYWRpbmdEaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgcGxhY2Vob2xkZXJMb2FkaW5nPzogUGxhY2Vob2xkZXJMb2FkaW5nRGlyZWN0aXZlO1xyXG5cclxuICBAVmlld0NoaWxkKCd2aWV3JywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmLCBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSB2aWV3OiBWaWV3Q29udGFpbmVyUmVmO1xyXG5cclxuICBwdWJsaWMgaXNMb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgcHJpdmF0ZSBfaW5wdXRzOiB7IFtrZXk6IHN0cmluZ106IHVua25vd24gfTtcclxuICBwcml2YXRlIF9kaWZmZXI6IEtleVZhbHVlRGlmZmVyPHN0cmluZywgdW5rbm93bj47XHJcbiAgcHJpdmF0ZSBfY29tcG9uZW50SW5zdGFuY2VzOiB7IFtwcm9wOiBzdHJpbmddOiB1bmtub3duIH1bXSA9IFtdO1xyXG4gIHByaXZhdGUgZGVzdHJveWVkID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBwYXJlbnRTdHlsZUF0dHJpYnV0ZSA9ICcnO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBpbnB1dHModmFsdWU6IHsgW2tleTogc3RyaW5nXTogdW5rbm93biB9KSB7XHJcbiAgICB0aGlzLl9pbnB1dHMgPSB2YWx1ZTtcclxuICAgIGlmICghdGhpcy5fZGlmZmVyICYmIHZhbHVlKSB7XHJcbiAgICAgIHRoaXMuX2RpZmZlciA9IHRoaXMuZGlmZmVycy5maW5kKHZhbHVlKS5jcmVhdGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBkaWZmZXJzOiBLZXlWYWx1ZURpZmZlcnMsXHJcbiAgICBwcml2YXRlIGNvbXBvbmVudEZhY3Rvcnk6IEpzc0NvbXBvbmVudEZhY3RvcnlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgQEluamVjdChQTEFDRUhPTERFUl9NSVNTSU5HX0NPTVBPTkVOVF9DT01QT05FTlQpXHJcbiAgICBwcml2YXRlIG1pc3NpbmdDb21wb25lbnRDb21wb25lbnQ6IFR5cGU8dW5rbm93bj4sXHJcbiAgICBASW5qZWN0KFBMQUNFSE9MREVSX0hJRERFTl9SRU5ERVJJTkdfQ09NUE9ORU5UKSBwcml2YXRlIGhpZGRlblJlbmRlcmluZ0NvbXBvbmVudDogVHlwZTx1bmtub3duPixcclxuICAgIEBJbmplY3QoR1VBUkRfUkVTT0xWRVIpIHByaXZhdGUgZ3VhcmRSZXNvbHZlcjogR3VhcmRSZXNvbHZlcixcclxuICAgIEBJbmplY3QoREFUQV9SRVNPTFZFUikgcHJpdmF0ZSBkYXRhUmVzb2x2ZXI6IERhdGFSZXNvbHZlcixcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXR5cGVzXHJcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IE9iamVjdFxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICAvLyBqdXN0IHRvIGVuc3VyZSB0aGUgZWxlbWVudCBleGlzdHNcclxuICAgIGNvbnN0IGVsZW0gPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcclxuXHJcbiAgICBpZiAoZWxlbSkge1xyXG4gICAgICBjb25zdCBhdHRyaWJ1dGVzOiBOYW1lZE5vZGVNYXAgPSBlbGVtLmF0dHJpYnV0ZXM7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXR0cmlidXRlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IGF0dHI6IEF0dHIgfCBudWxsID0gYXR0cmlidXRlcy5pdGVtKGkpO1xyXG4gICAgICAgIGlmIChhdHRyICYmIGF0dHIubmFtZS5pbmRleE9mKCdfbmdjb250ZW50JykgIT09IC0xKSB7XHJcbiAgICAgICAgICB0aGlzLnBhcmVudFN0eWxlQXR0cmlidXRlID0gYXR0ci5uYW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLmRlc3Ryb3llZCA9IHRydWU7XHJcbiAgICB0aGlzLl9jb21wb25lbnRJbnN0YW5jZXMgPSBbXTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGlmIChjaGFuZ2VzLnJlbmRlcmluZyB8fCBjaGFuZ2VzLnJlbmRlcmluZ3MpIHtcclxuICAgICAgdGhpcy5fcmVuZGVyKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0RvQ2hlY2soKSB7XHJcbiAgICBpZiAoIXRoaXMuX2RpZmZlciB8fCAhdGhpcy5faW5wdXRzIHx8IHRoaXMuX2NvbXBvbmVudEluc3RhbmNlcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNoYW5nZXMgPSB0aGlzLl9kaWZmZXIuZGlmZih0aGlzLl9pbnB1dHMpO1xyXG4gICAgaWYgKCFjaGFuZ2VzKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHVwZGF0ZXM6IHsgW2tleTogc3RyaW5nXTogdW5rbm93biB9ID0ge307XHJcbiAgICBjaGFuZ2VzLmZvckVhY2hSZW1vdmVkSXRlbSgoY2hhbmdlKSA9PiAodXBkYXRlc1tjaGFuZ2Uua2V5XSA9IG51bGwpKTtcclxuICAgIGNoYW5nZXMuZm9yRWFjaEFkZGVkSXRlbSgoY2hhbmdlKSA9PiAodXBkYXRlc1tjaGFuZ2Uua2V5XSA9IGNoYW5nZS5jdXJyZW50VmFsdWUpKTtcclxuICAgIGNoYW5nZXMuZm9yRWFjaENoYW5nZWRJdGVtKChjaGFuZ2UpID0+ICh1cGRhdGVzW2NoYW5nZS5rZXldID0gY2hhbmdlLmN1cnJlbnRWYWx1ZSkpO1xyXG4gICAgdGhpcy5fY29tcG9uZW50SW5zdGFuY2VzLmZvckVhY2goKGNvbXBvbmVudEluc3RhbmNlKSA9PlxyXG4gICAgICB0aGlzLl9zZXRDb21wb25lbnRJbnB1dHMoY29tcG9uZW50SW5zdGFuY2UsIHVwZGF0ZXMpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2V0Q29tcG9uZW50SW5wdXRzKFxyXG4gICAgY29tcG9uZW50SW5zdGFuY2U6IHsgW2tleTogc3RyaW5nXTogdW5rbm93biB9LFxyXG4gICAgaW5wdXRzOiB7IFtrZXk6IHN0cmluZ106IHVua25vd24gfVxyXG4gICkge1xyXG4gICAgT2JqZWN0LmVudHJpZXMoaW5wdXRzKS5mb3JFYWNoKFxyXG4gICAgICAoW2lucHV0LCBpbnB1dFZhbHVlXSkgPT4gKGNvbXBvbmVudEluc3RhbmNlW2lucHV0XSA9IGlucHV0VmFsdWUpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc3Vic2NyaWJlQ29tcG9uZW50T3V0cHV0cyhcclxuICAgIGNvbXBvbmVudEluc3RhbmNlOiB7IFtrZXk6IHN0cmluZ106IHVua25vd24gfSxcclxuICAgIG91dHB1dHM6IHsgW2s6IHN0cmluZ106IChldmVudFR5cGU6IHVua25vd24pID0+IHZvaWQgfVxyXG4gICkge1xyXG4gICAgT2JqZWN0LmtleXMob3V0cHV0cylcclxuICAgICAgLmZpbHRlcihcclxuICAgICAgICAob3V0cHV0KSA9PiBjb21wb25lbnRJbnN0YW5jZVtvdXRwdXRdICYmIGNvbXBvbmVudEluc3RhbmNlW291dHB1dF0gaW5zdGFuY2VvZiBPYnNlcnZhYmxlXHJcbiAgICAgIClcclxuICAgICAgLmZvckVhY2goKG91dHB1dCkgPT5cclxuICAgICAgICAoY29tcG9uZW50SW5zdGFuY2Vbb3V0cHV0XSBhcyBPYnNlcnZhYmxlPHVua25vd24+KVxyXG4gICAgICAgICAgLnBpcGUodGFrZVdoaWxlKCgpID0+ICF0aGlzLmRlc3Ryb3llZCkpXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKG91dHB1dHNbb3V0cHV0XSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgX3JlbmRlcigpIHtcclxuICAgIGlmICh0aGlzLmNsaWVudE9ubHkgJiYgaXNQbGF0Zm9ybVNlcnZlcih0aGlzLnBsYXRmb3JtSWQpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9jb21wb25lbnRJbnN0YW5jZXMgPSBbXTtcclxuICAgIHRoaXMudmlldy5jbGVhcigpO1xyXG5cclxuICAgIGlmICghdGhpcy5yZW5kZXJpbmcgJiYgIXRoaXMucmVuZGVyaW5ncykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLm5hbWUgJiYgIXRoaXMucmVuZGVyaW5ncykge1xyXG4gICAgICBjb25zb2xlLndhcm4oXHJcbiAgICAgICAgJ1BsYWNlaG9sZGVyIG5hbWUgd2FzIG5vdCBzcGVjaWZpZWQsIGFuZCBleHBsaWNpdCByZW5kZXJpbmdzIGFycmF5IHdhcyBub3QgcGFzc2VkLiBQbGFjZWhvbGRlciByZXF1aXJlcyBlaXRoZXIgbmFtZSBhbmQgcmVuZGVyaW5nLCBvciByZW5kZXJpbmdzLidcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHBsYWNlaG9sZGVyID0gdGhpcy5yZW5kZXJpbmdzIHx8IGdldFBsYWNlaG9sZGVyKHRoaXMucmVuZGVyaW5nLCB0aGlzLm5hbWUgfHwgJycpO1xyXG5cclxuICAgIGlmICghcGxhY2Vob2xkZXIpIHtcclxuICAgICAgY29uc29sZS53YXJuKFxyXG4gICAgICAgIGBQbGFjZWhvbGRlciAnJHt0aGlzLm5hbWV9JyB3YXMgbm90IGZvdW5kIGluIHRoZSBjdXJyZW50IHJlbmRlcmluZyBkYXRhYCxcclxuICAgICAgICBKU09OLnN0cmluZ2lmeSh0aGlzLnJlbmRlcmluZywgbnVsbCwgMilcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGlmIHRoZSBwbGFjZWhvbGRlciBpcyBlbXB0eSAoY29udGFpbnMgb25seSByYXcgcmVuZGVyaW5ncyksIHRoZW4gd2UgbWF5IG5lZWQgdG8gdXNlIHRoZSBlbXB0eSB0ZW1wbGF0ZSBpZiBpdCdzIGRlZmluZWRcclxuICAgIGNvbnN0IHBsYWNlaG9sZGVySXNFbXB0eSA9IHBsYWNlaG9sZGVyLmV2ZXJ5KFxyXG4gICAgICAocmVuZGVyaW5nOiBDb21wb25lbnRSZW5kZXJpbmcgfCBIdG1sRWxlbWVudFJlbmRlcmluZykgPT4gaXNSYXdSZW5kZXJpbmcocmVuZGVyaW5nKVxyXG4gICAgKTtcclxuXHJcbiAgICBpZiAodGhpcy5yZW5kZXJFbXB0eVRlbXBsYXRlICYmIHBsYWNlaG9sZGVySXNFbXB0eSkge1xyXG4gICAgICB0aGlzLnZpZXcuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMucmVuZGVyRW1wdHlUZW1wbGF0ZS50ZW1wbGF0ZVJlZiwge1xyXG4gICAgICAgIHJlbmRlcmluZ3M6IHBsYWNlaG9sZGVyLFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGZhY3RvcmllcyA9IGF3YWl0IHRoaXMuY29tcG9uZW50RmFjdG9yeS5nZXRDb21wb25lbnRzKHBsYWNlaG9sZGVyKTtcclxuXHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3Qgbm9uR3VhcmRlZCA9IGF3YWl0IHRoaXMuZ3VhcmRSZXNvbHZlcihmYWN0b3JpZXMpO1xyXG4gICAgICAgIGNvbnN0IHdpdGhEYXRhID0gYXdhaXQgdGhpcy5kYXRhUmVzb2x2ZXIobm9uR3VhcmRlZCk7XHJcblxyXG4gICAgICAgIHdpdGhEYXRhLmZvckVhY2goKHJlbmRlcmluZywgaW5kZXgpID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLnJlbmRlckVhY2hUZW1wbGF0ZSAmJiAhaXNSYXdSZW5kZXJpbmcocmVuZGVyaW5nLmZhY3RvcnkuY29tcG9uZW50RGVmaW5pdGlvbikpIHtcclxuICAgICAgICAgICAgdGhpcy5fcmVuZGVyVGVtcGxhdGVkQ29tcG9uZW50KHJlbmRlcmluZy5mYWN0b3J5LmNvbXBvbmVudERlZmluaXRpb24sIGluZGV4KTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3JlbmRlckVtYmVkZGVkQ29tcG9uZW50KHJlbmRlcmluZy5mYWN0b3J5LCByZW5kZXJpbmcuZGF0YSwgaW5kZXgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgdGhpcy5sb2FkZWQuZW1pdCh0aGlzLm5hbWUpO1xyXG4gICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIFVybFRyZWUpIHtcclxuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoZSk7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtlXSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGUpKSB7XHJcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhyb3cgZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3JlbmRlclRlbXBsYXRlZENvbXBvbmVudChcclxuICAgIHJlbmRlcmluZzogQ29tcG9uZW50UmVuZGVyaW5nIHwgSHRtbEVsZW1lbnRSZW5kZXJpbmcsXHJcbiAgICBpbmRleDogbnVtYmVyXHJcbiAgKSB7XHJcbiAgICAvLyB0aGUgcmVuZGVyLWVhY2ggdGVtcGxhdGUgdGFrZXMgY2FyZSBvZiBhbGwgY29tcG9uZW50IG1hcHBpbmcgZXRjXHJcbiAgICAvLyBnZW5lcmFsbHkgdXNpbmcgPHNjLXJlbmRlci1jb21wb25lbnQ+IHdoaWNoIGlzIGFib3V0IGxpa2UgX3JlbmRlckVtYmVkZGVkQ29tcG9uZW50KClcclxuICAgIC8vIGFzIGEgc2VwYXJhdGUgY29tcG9uZW50XHJcbiAgICB0aGlzLnZpZXcuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMucmVuZGVyRWFjaFRlbXBsYXRlLnRlbXBsYXRlUmVmLCB7XHJcbiAgICAgIHJlbmRlcmluZyxcclxuICAgICAgaW5kZXgsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3JlbmRlckVtYmVkZGVkQ29tcG9uZW50KHJlbmRlcmluZzogQ29tcG9uZW50RmFjdG9yeVJlc3VsdCwgZGF0YTogRGF0YSwgaW5kZXg6IG51bWJlcikge1xyXG4gICAgaWYgKFxyXG4gICAgICAocmVuZGVyaW5nLmNvbXBvbmVudERlZmluaXRpb24gYXMgQ29tcG9uZW50UmVuZGVyaW5nKS5jb21wb25lbnROYW1lID09PSBISURERU5fUkVOREVSSU5HX05BTUVcclxuICAgICkge1xyXG4gICAgICByZW5kZXJpbmcuY29tcG9uZW50SW1wbGVtZW50YXRpb24gPSB0aGlzLmhpZGRlblJlbmRlcmluZ0NvbXBvbmVudDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXJlbmRlcmluZy5jb21wb25lbnRJbXBsZW1lbnRhdGlvbikge1xyXG4gICAgICBjb25zdCBjb21wb25lbnROYW1lID0gKHJlbmRlcmluZy5jb21wb25lbnREZWZpbml0aW9uIGFzIENvbXBvbmVudFJlbmRlcmluZykuY29tcG9uZW50TmFtZTtcclxuICAgICAgY29uc29sZS5lcnJvcihcclxuICAgICAgICBgUGxhY2Vob2xkZXIgJHt0aGlzLm5hbWV9IGNvbnRhaW5zIHVua25vd24gY29tcG9uZW50ICR7Y29tcG9uZW50TmFtZX0uYCxcclxuICAgICAgICBgRW5zdXJlIGNvbXBvbmVudCBpcyBtYXBwZWQsIGxpa2U6XHJcbiAgICAgICAgSnNzTW9kdWxlLndpdGhDb21wb25lbnRzKFtcclxuICAgICAgICAgIHsgbmFtZTogJyR7Y29tcG9uZW50TmFtZX0nLCB0eXBlOiAke2NvbXBvbmVudE5hbWV9Q29tcG9uZW50IH1cclxuICAgICAgICBdKWBcclxuICAgICAgKTtcclxuXHJcbiAgICAgIHJlbmRlcmluZy5jb21wb25lbnRJbXBsZW1lbnRhdGlvbiA9IHRoaXMubWlzc2luZ0NvbXBvbmVudENvbXBvbmVudDtcclxuICAgIH1cclxuICAgIC8vIGFwcGx5IHRoZSBwYXJlbnQgc3R5bGUgYXR0cmlidXRlIF9uZ2NvbnRlbnRcclxuICAgIC8vIHdvcmstYXJvdW5kIGZvciBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy8xMjIxNVxyXG4gICAgY29uc3QgY3JlYXRlZENvbXBvbmVudFJlZiA9IHRoaXMudmlldy5jcmVhdGVDb21wb25lbnQocmVuZGVyaW5nLmNvbXBvbmVudEltcGxlbWVudGF0aW9uLCB7XHJcbiAgICAgIGluZGV4OiBpbmRleCxcclxuICAgIH0pO1xyXG4gICAgaWYgKHRoaXMucGFyZW50U3R5bGVBdHRyaWJ1dGUpIHtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoXHJcbiAgICAgICAgY3JlYXRlZENvbXBvbmVudFJlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50LFxyXG4gICAgICAgIHRoaXMucGFyZW50U3R5bGVBdHRyaWJ1dGUsXHJcbiAgICAgICAgJydcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjb21wb25lbnRJbnN0YW5jZSA9IGNyZWF0ZWRDb21wb25lbnRSZWYuaW5zdGFuY2U7XHJcbiAgICBjb21wb25lbnRJbnN0YW5jZS5yZW5kZXJpbmcgPSByZW5kZXJpbmcuY29tcG9uZW50RGVmaW5pdGlvbjtcclxuICAgIGNvbXBvbmVudEluc3RhbmNlLmRhdGEgPSBkYXRhO1xyXG5cclxuICAgIGlmICh0aGlzLl9pbnB1dHMpIHtcclxuICAgICAgdGhpcy5fc2V0Q29tcG9uZW50SW5wdXRzKGNvbXBvbmVudEluc3RhbmNlLCB0aGlzLl9pbnB1dHMpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMub3V0cHV0cykge1xyXG4gICAgICB0aGlzLl9zdWJzY3JpYmVDb21wb25lbnRPdXRwdXRzKGNvbXBvbmVudEluc3RhbmNlLCB0aGlzLm91dHB1dHMpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fY29tcG9uZW50SW5zdGFuY2VzLnB1c2goY29tcG9uZW50SW5zdGFuY2UpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import { InjectionToken } from '@angular/core';
|
|
2
|
-
/** Registers a statically loaded component */
|
|
3
|
-
export class ComponentNameAndType {
|
|
4
|
-
}
|
|
5
|
-
/**
|
|
6
|
-
* @param {unknown} object
|
|
7
|
-
*/
|
|
8
|
-
export function instanceOfComponentNameAndType(object) {
|
|
9
|
-
return typeof object === 'object' && object !== null && 'type' in object;
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* @param {unknown} object
|
|
13
|
-
*/
|
|
14
|
-
export function instanceOfComponentNameAndModule(object) {
|
|
15
|
-
return typeof object === 'object' && object !== null && 'module' in object;
|
|
16
|
-
}
|
|
17
|
-
export const PLACEHOLDER_COMPONENTS = new InjectionToken('Sc.placeholder.components');
|
|
18
|
-
export const PLACEHOLDER_LAZY_COMPONENTS = new InjectionToken('Sc.placeholder.lazyComponents');
|
|
19
|
-
export const PLACEHOLDER_MISSING_COMPONENT_COMPONENT = new InjectionToken('Sc.placeholder.missingComponentComponent');
|
|
20
|
-
export const PLACEHOLDER_HIDDEN_RENDERING_COMPONENT = new InjectionToken('Sc.placeholder.hiddenRenderingComponent');
|
|
21
|
-
export const DYNAMIC_COMPONENT = new InjectionToken('Sc.placeholder.dynamicComponent');
|
|
22
|
-
export const GUARD_RESOLVER = new InjectionToken('Sc.placeholder.guardResolver');
|
|
23
|
-
export const DATA_RESOLVER = new InjectionToken('Sc.placeholder.dataResolver');
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
/** Registers a statically loaded component */
|
|
3
|
+
export class ComponentNameAndType {
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* @param {unknown} object
|
|
7
|
+
*/
|
|
8
|
+
export function instanceOfComponentNameAndType(object) {
|
|
9
|
+
return typeof object === 'object' && object !== null && 'type' in object;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* @param {unknown} object
|
|
13
|
+
*/
|
|
14
|
+
export function instanceOfComponentNameAndModule(object) {
|
|
15
|
+
return typeof object === 'object' && object !== null && 'module' in object;
|
|
16
|
+
}
|
|
17
|
+
export const PLACEHOLDER_COMPONENTS = new InjectionToken('Sc.placeholder.components');
|
|
18
|
+
export const PLACEHOLDER_LAZY_COMPONENTS = new InjectionToken('Sc.placeholder.lazyComponents');
|
|
19
|
+
export const PLACEHOLDER_MISSING_COMPONENT_COMPONENT = new InjectionToken('Sc.placeholder.missingComponentComponent');
|
|
20
|
+
export const PLACEHOLDER_HIDDEN_RENDERING_COMPONENT = new InjectionToken('Sc.placeholder.hiddenRenderingComponent');
|
|
21
|
+
export const DYNAMIC_COMPONENT = new InjectionToken('Sc.placeholder.dynamicComponent');
|
|
22
|
+
export const GUARD_RESOLVER = new InjectionToken('Sc.placeholder.guardResolver');
|
|
23
|
+
export const DATA_RESOLVER = new InjectionToken('Sc.placeholder.dataResolver');
|
|
24
24
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Vob2xkZXIudG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9wbGFjZWhvbGRlci50b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFRLE1BQU0sZUFBZSxDQUFDO0FBTXJELDhDQUE4QztBQUM5QyxNQUFNLE9BQU8sb0JBQW9CO0NBVWhDO0FBbUJEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLDhCQUE4QixDQUFDLE1BQWU7SUFDNUQsT0FBTyxPQUFPLE1BQU0sS0FBSyxRQUFRLElBQUksTUFBTSxLQUFLLElBQUksSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDO0FBQzNFLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxnQ0FBZ0MsQ0FDOUMsTUFBZTtJQUVmLE9BQU8sT0FBTyxNQUFNLEtBQUssUUFBUSxJQUFJLE1BQU0sS0FBSyxJQUFJLElBQUksUUFBUSxJQUFJLE1BQU0sQ0FBQztBQUM3RSxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxjQUFjLENBQ3RELDJCQUEyQixDQUM1QixDQUFDO0FBQ0YsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsSUFBSSxjQUFjLENBQzNELCtCQUErQixDQUNoQyxDQUFDO0FBQ0YsTUFBTSxDQUFDLE1BQU0sdUNBQXVDLEdBQUcsSUFBSSxjQUFjLENBQ3ZFLDBDQUEwQyxDQUMzQyxDQUFDO0FBQ0YsTUFBTSxDQUFDLE1BQU0sc0NBQXNDLEdBQUcsSUFBSSxjQUFjLENBQ3RFLHlDQUF5QyxDQUMxQyxDQUFDO0FBQ0YsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxjQUFjLENBQ2pELGlDQUFpQyxDQUNsQyxDQUFDO0FBSUYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLElBQUksY0FBYyxDQUFnQiw4QkFBOEIsQ0FBQyxDQUFDO0FBTWhHLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxJQUFJLGNBQWMsQ0FBZSw2QkFBNkIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgRGF0YSwgUm91dGVyU3RhdGVTbmFwc2hvdCwgVXJsVHJlZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ29tcG9uZW50RmFjdG9yeVJlc3VsdCB9IGZyb20gJy4uL2pzcy1jb21wb25lbnQtZmFjdG9yeS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tcG9uZW50UmVuZGVyaW5nIH0gZnJvbSAnLi4vcHVibGljX2FwaSc7XHJcblxyXG4vKiogUmVnaXN0ZXJzIGEgc3RhdGljYWxseSBsb2FkZWQgY29tcG9uZW50ICovXHJcbmV4cG9ydCBjbGFzcyBDb21wb25lbnROYW1lQW5kVHlwZSB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIHR5cGU6IFR5cGU8dW5rbm93bj47XHJcblxyXG4gIGNhbkFjdGl2YXRlPzpcclxuICAgIHwgSnNzQ2FuQWN0aXZhdGVcclxuICAgIHwgVHlwZTxKc3NDYW5BY3RpdmF0ZT5cclxuICAgIHwgSnNzQ2FuQWN0aXZhdGVGblxyXG4gICAgfCBBcnJheTxKc3NDYW5BY3RpdmF0ZSB8IEpzc0NhbkFjdGl2YXRlRm4gfCBUeXBlPEpzc0NhbkFjdGl2YXRlPj47XHJcbiAgcmVzb2x2ZT86IHsgW2tleTogc3RyaW5nXTogSnNzUmVzb2x2ZTx1bmtub3duPiB8IFR5cGU8SnNzUmVzb2x2ZTx1bmtub3duPj4gfTtcclxufVxyXG5cclxuLyoqIFJlZ2lzdGVycyBhIGxhemlseSBsb2FkZWQgY29tcG9uZW50IGJ5IG5hbWUgYW5kIG1vZHVsZSB0byBsYXp5IGxvYWQgd2hlbiBpdCdzIG5lZWRlZCAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudE5hbWVBbmRNb2R1bGUge1xyXG4gIC8qKiBOYW1lIG9mIHRoZSBjb21wb25lbnQgKi9cclxuICBwYXRoOiBzdHJpbmc7XHJcbiAgLyoqXHJcbiAgICogRHluYW1pYyBpbXBvcnQgb2YgdGhlIGNvbXBvbmVudCxcclxuICAgKiBlLmcuICgpID0+IGltcG9ydCgnLi9wYXRoL3RvL2xhenlsb2FkZWRjb21wb25lbnQubW9kdWxlJykudGhlbihtID0+IG0uTGF6eUxvYWRlZENvbXBvbmVudE1vZHVsZUV4cG9ydE5hbWUpXHJcbiAgICovXHJcbiAgbG9hZENoaWxkcmVuOiAoKSA9PiBQcm9taXNlPFR5cGU8dW5rbm93bj4+O1xyXG4gIGNhbkFjdGl2YXRlPzpcclxuICAgIHwgSnNzQ2FuQWN0aXZhdGVcclxuICAgIHwgSnNzQ2FuQWN0aXZhdGVGblxyXG4gICAgfCBUeXBlPEpzc0NhbkFjdGl2YXRlPlxyXG4gICAgfCBBcnJheTxKc3NDYW5BY3RpdmF0ZSB8IEpzc0NhbkFjdGl2YXRlRm4gfCBUeXBlPEpzc0NhbkFjdGl2YXRlPj47XHJcbiAgcmVzb2x2ZT86IHsgW2tleTogc3RyaW5nXTogSnNzUmVzb2x2ZTx1bmtub3duPiB8IFR5cGU8SnNzUmVzb2x2ZTx1bmtub3duPj4gfTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEBwYXJhbSB7dW5rbm93bn0gb2JqZWN0XHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFuY2VPZkNvbXBvbmVudE5hbWVBbmRUeXBlKG9iamVjdDogdW5rbm93bik6IG9iamVjdCBpcyBDb21wb25lbnROYW1lQW5kVHlwZSB7XHJcbiAgcmV0dXJuIHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnICYmIG9iamVjdCAhPT0gbnVsbCAmJiAndHlwZScgaW4gb2JqZWN0O1xyXG59XHJcblxyXG4vKipcclxuICogQHBhcmFtIHt1bmtub3dufSBvYmplY3RcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW5jZU9mQ29tcG9uZW50TmFtZUFuZE1vZHVsZShcclxuICBvYmplY3Q6IHVua25vd25cclxuKTogb2JqZWN0IGlzIENvbXBvbmVudE5hbWVBbmRNb2R1bGUge1xyXG4gIHJldHVybiB0eXBlb2Ygb2JqZWN0ID09PSAnb2JqZWN0JyAmJiBvYmplY3QgIT09IG51bGwgJiYgJ21vZHVsZScgaW4gb2JqZWN0O1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgUExBQ0VIT0xERVJfQ09NUE9ORU5UUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxDb21wb25lbnROYW1lQW5kVHlwZVtdPihcclxuICAnU2MucGxhY2Vob2xkZXIuY29tcG9uZW50cydcclxuKTtcclxuZXhwb3J0IGNvbnN0IFBMQUNFSE9MREVSX0xBWllfQ09NUE9ORU5UUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxDb21wb25lbnROYW1lQW5kVHlwZVtdPihcclxuICAnU2MucGxhY2Vob2xkZXIubGF6eUNvbXBvbmVudHMnXHJcbik7XHJcbmV4cG9ydCBjb25zdCBQTEFDRUhPTERFUl9NSVNTSU5HX0NPTVBPTkVOVF9DT01QT05FTlQgPSBuZXcgSW5qZWN0aW9uVG9rZW48VHlwZTx1bmtub3duPj4oXHJcbiAgJ1NjLnBsYWNlaG9sZGVyLm1pc3NpbmdDb21wb25lbnRDb21wb25lbnQnXHJcbik7XHJcbmV4cG9ydCBjb25zdCBQTEFDRUhPTERFUl9ISURERU5fUkVOREVSSU5HX0NPTVBPTkVOVCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxUeXBlPHVua25vd24+PihcclxuICAnU2MucGxhY2Vob2xkZXIuaGlkZGVuUmVuZGVyaW5nQ29tcG9uZW50J1xyXG4pO1xyXG5leHBvcnQgY29uc3QgRFlOQU1JQ19DT01QT05FTlQgPSBuZXcgSW5qZWN0aW9uVG9rZW48VHlwZTx1bmtub3duPiB8IHsgW3M6IHN0cmluZ106IHVua25vd24gfT4oXHJcbiAgJ1NjLnBsYWNlaG9sZGVyLmR5bmFtaWNDb21wb25lbnQnXHJcbik7XHJcblxyXG5leHBvcnQgdHlwZSBHdWFyZFJlc29sdmVyID0gKHJlc3VsdDogQ29tcG9uZW50RmFjdG9yeVJlc3VsdFtdKSA9PiBQcm9taXNlPENvbXBvbmVudEZhY3RvcnlSZXN1bHRbXT47XHJcblxyXG5leHBvcnQgY29uc3QgR1VBUkRfUkVTT0xWRVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48R3VhcmRSZXNvbHZlcj4oJ1NjLnBsYWNlaG9sZGVyLmd1YXJkUmVzb2x2ZXInKTtcclxuXHJcbmV4cG9ydCB0eXBlIERhdGFSZXNvbHZlciA9IChcclxuICByZXN1bHQ6IENvbXBvbmVudEZhY3RvcnlSZXN1bHRbXVxyXG4pID0+IFByb21pc2U8QXJyYXk8eyBmYWN0b3J5OiBDb21wb25lbnRGYWN0b3J5UmVzdWx0OyBkYXRhOiBEYXRhIH0+PjtcclxuXHJcbmV4cG9ydCBjb25zdCBEQVRBX1JFU09MVkVSID0gbmV3IEluamVjdGlvblRva2VuPERhdGFSZXNvbHZlcj4oJ1NjLnBsYWNlaG9sZGVyLmRhdGFSZXNvbHZlcicpO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBHdWFyZElucHV0IHtcclxuICBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdDtcclxuICByb3V0ZXJTdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdDtcclxuICByZW5kZXJpbmc6IENvbXBvbmVudFJlbmRlcmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBKc3NDYW5BY3RpdmF0ZUZuIHtcclxuICAoaW5wdXQ6IEd1YXJkSW5wdXQpOlxyXG4gICAgfCBPYnNlcnZhYmxlPGJvb2xlYW4gfCBVcmxUcmVlIHwgc3RyaW5nIHwgc3RyaW5nW10+XHJcbiAgICB8IFByb21pc2U8Ym9vbGVhbiB8IFVybFRyZWUgfCBzdHJpbmcgfCBzdHJpbmdbXT5cclxuICAgIHwgYm9vbGVhblxyXG4gICAgfCBVcmxUcmVlXHJcbiAgICB8IHN0cmluZ1xyXG4gICAgfCBzdHJpbmdbXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBKc3NDYW5BY3RpdmF0ZSB7XHJcbiAgY2FuQWN0aXZhdGU6IEpzc0NhbkFjdGl2YXRlRm47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSnNzUmVzb2x2ZTxUPiB7XHJcbiAgcmVzb2x2ZShpbnB1dDogR3VhcmRJbnB1dCk6IE9ic2VydmFibGU8VD4gfCBQcm9taXNlPFQ+IHwgVDtcclxufVxyXG4iXX0=
|