@sitecore-jss/sitecore-jss-angular 16.0.2 → 16.0.3-canary.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 +5 -5
- package/dist/README.md +5 -5
- package/dist/bundles/sitecore-jss-sitecore-jss-angular.umd.js +1389 -1385
- package/dist/bundles/sitecore-jss-sitecore-jss-angular.umd.js.map +1 -1
- package/dist/bundles/sitecore-jss-sitecore-jss-angular.umd.min.js +1 -1
- package/dist/bundles/sitecore-jss-sitecore-jss-angular.umd.min.js.map +1 -1
- package/dist/components/date.directive.d.ts +17 -17
- package/dist/components/file.directive.d.ts +14 -14
- package/dist/components/generic-link.directive.d.ts +14 -14
- package/dist/components/image.directive.d.ts +28 -28
- package/dist/components/link.directive.d.ts +18 -18
- package/dist/components/missing-component.component.d.ts +3 -3
- package/dist/components/placeholder-loading.directive.d.ts +5 -5
- package/dist/components/placeholder.component.d.ts +45 -45
- package/dist/components/placeholder.token.d.ts +30 -30
- package/dist/components/raw.component.d.ts +9 -9
- package/dist/components/render-component.component.d.ts +29 -29
- package/dist/components/render-each.directive.d.ts +5 -5
- package/dist/components/render-empty.directive.d.ts +5 -5
- package/dist/components/rendering-field.d.ts +20 -20
- package/dist/components/rendering.d.ts +5 -5
- package/dist/components/rich-text.directive.d.ts +12 -12
- package/dist/components/router-link.directive.d.ts +12 -12
- package/dist/components/text.directive.d.ts +13 -13
- package/dist/esm2015/components/date.directive.js +53 -53
- package/dist/esm2015/components/file.directive.js +43 -43
- package/dist/esm2015/components/generic-link.directive.js +58 -58
- package/dist/esm2015/components/image.directive.js +125 -123
- package/dist/esm2015/components/link.directive.js +101 -99
- package/dist/esm2015/components/missing-component.component.js +13 -13
- package/dist/esm2015/components/placeholder-loading.directive.js +15 -15
- package/dist/esm2015/components/placeholder.component.js +192 -192
- package/dist/esm2015/components/placeholder.token.js +21 -21
- package/dist/esm2015/components/raw.component.js +37 -37
- package/dist/esm2015/components/render-component.component.js +89 -89
- package/dist/esm2015/components/render-each.directive.js +15 -15
- package/dist/esm2015/components/render-empty.directive.js +15 -15
- package/dist/esm2015/components/rendering-field.js +1 -1
- package/dist/esm2015/components/rendering.js +8 -8
- package/dist/esm2015/components/rich-text.directive.js +41 -41
- package/dist/esm2015/components/router-link.directive.js +44 -44
- package/dist/esm2015/components/text.directive.js +54 -54
- package/dist/esm2015/jss-component-factory.service.js +87 -87
- package/dist/esm2015/layout-service-error.js +3 -3
- package/dist/esm2015/layout.service.js +28 -28
- package/dist/esm2015/lib.module.js +112 -112
- package/dist/esm2015/public_api.js +16 -16
- package/dist/esm2015/sitecore-jss-sitecore-jss-angular.js +13 -13
- package/dist/fesm2015/sitecore-jss-sitecore-jss-angular.js +1047 -1043
- package/dist/fesm2015/sitecore-jss-sitecore-jss-angular.js.map +1 -1
- package/dist/jss-component-factory.service.d.ts +21 -21
- package/dist/layout-service-error.d.ts +8 -8
- package/dist/layout.service.d.ts +8 -8
- package/dist/lib.module.d.ts +24 -24
- package/dist/package.json +2 -2
- package/dist/public_api.d.ts +16 -16
- package/dist/sitecore-jss-sitecore-jss-angular.d.ts +12 -12
- package/package.json +3 -3
- package/typings/README.md +2 -2
|
@@ -1,201 +1,201 @@
|
|
|
1
|
-
/* eslint-disable @angular-eslint/no-conflicting-lifecycle */
|
|
2
|
-
import { ChangeDetectorRef, Component, ComponentFactoryResolver, ContentChild, ElementRef, EventEmitter, Inject, Input, KeyValueDiffers, Output, Renderer2, Type, ViewChild, ViewContainerRef, } from '@angular/core';
|
|
3
|
-
import { Observable } from 'rxjs';
|
|
4
|
-
import { takeWhile } from 'rxjs/operators';
|
|
5
|
-
import { JssComponentFactoryService, } from '../jss-component-factory.service';
|
|
6
|
-
import { PlaceholderLoadingDirective } from './placeholder-loading.directive';
|
|
7
|
-
import { PLACEHOLDER_MISSING_COMPONENT_COMPONENT } from './placeholder.token';
|
|
8
|
-
import { RenderEachDirective } from './render-each.directive';
|
|
9
|
-
import { RenderEmptyDirective } from './render-empty.directive';
|
|
10
|
-
import { isRawRendering } from './rendering';
|
|
11
|
-
/**
|
|
12
|
-
* @param {ComponentRendering} rendering
|
|
13
|
-
* @param {string} name
|
|
14
|
-
*/
|
|
15
|
-
function getPlaceholder(rendering, name) {
|
|
16
|
-
if (rendering && rendering.placeholders && Object.keys(rendering.placeholders).length > 0) {
|
|
17
|
-
return rendering.placeholders[name];
|
|
18
|
-
}
|
|
19
|
-
return null;
|
|
20
|
-
}
|
|
21
|
-
export class PlaceholderComponent {
|
|
22
|
-
constructor(componentFactoryResolver, differs, componentFactory, changeDetectorRef, elementRef, renderer, missingComponentComponent) {
|
|
23
|
-
this.componentFactoryResolver = componentFactoryResolver;
|
|
24
|
-
this.differs = differs;
|
|
25
|
-
this.componentFactory = componentFactory;
|
|
26
|
-
this.changeDetectorRef = changeDetectorRef;
|
|
27
|
-
this.elementRef = elementRef;
|
|
28
|
-
this.renderer = renderer;
|
|
29
|
-
this.missingComponentComponent = missingComponentComponent;
|
|
30
|
-
this._componentInstances = [];
|
|
31
|
-
this.destroyed = false;
|
|
32
|
-
this.parentStyleAttribute = '';
|
|
33
|
-
this.isLoading = true;
|
|
34
|
-
this.loaded = new EventEmitter();
|
|
35
|
-
}
|
|
36
|
-
set inputs(value) {
|
|
37
|
-
this._inputs = value;
|
|
38
|
-
if (!this._differ && value) {
|
|
39
|
-
this._differ = this.differs.find(value).create();
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
ngOnInit() {
|
|
43
|
-
// just to ensure the element exists
|
|
44
|
-
const elem = this.elementRef.nativeElement;
|
|
45
|
-
if (elem) {
|
|
46
|
-
const attributes = elem.attributes;
|
|
47
|
-
for (let i = 0; i < attributes.length; i++) {
|
|
48
|
-
const attr = attributes.item(i);
|
|
49
|
-
if (attr && attr.name.indexOf('_ngcontent') !== -1) {
|
|
50
|
-
this.parentStyleAttribute = attr.name;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
ngOnDestroy() {
|
|
56
|
-
this.destroyed = true;
|
|
57
|
-
this._componentInstances = [];
|
|
58
|
-
}
|
|
59
|
-
ngOnChanges(changes) {
|
|
60
|
-
if (changes.rendering || changes.renderings) {
|
|
61
|
-
this._render();
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
ngDoCheck() {
|
|
65
|
-
if (!this._differ || !this._inputs || this._componentInstances.length === 0) {
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
const changes = this._differ.diff(this._inputs);
|
|
69
|
-
if (!changes) {
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
72
|
-
const updates = {};
|
|
73
|
-
changes.forEachRemovedItem((change) => (updates[change.key] = null));
|
|
74
|
-
changes.forEachAddedItem((change) => (updates[change.key] = change.currentValue));
|
|
75
|
-
changes.forEachChangedItem((change) => (updates[change.key] = change.currentValue));
|
|
76
|
-
this._componentInstances.forEach((componentInstance) => this._setComponentInputs(componentInstance, updates));
|
|
77
|
-
}
|
|
78
|
-
_setComponentInputs(componentInstance, inputs) {
|
|
79
|
-
Object.entries(inputs).forEach(([input, inputValue]) => (componentInstance[input] = inputValue));
|
|
80
|
-
}
|
|
81
|
-
_subscribeComponentOutputs(componentInstance, outputs) {
|
|
82
|
-
Object.keys(outputs)
|
|
83
|
-
.filter((output) => componentInstance[output] && componentInstance[output] instanceof Observable)
|
|
84
|
-
.forEach((output) => componentInstance[output]
|
|
85
|
-
.pipe(takeWhile(() => !this.destroyed))
|
|
86
|
-
.subscribe(outputs[output]));
|
|
87
|
-
}
|
|
88
|
-
_render() {
|
|
89
|
-
this._componentInstances = [];
|
|
90
|
-
this.view.clear();
|
|
91
|
-
if (!this.rendering && !this.renderings) {
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
94
|
-
if (!this.name && !this.renderings) {
|
|
95
|
-
console.warn('Placeholder name was not specified, and explicit renderings array was not passed. Placeholder requires either name and rendering, or renderings.');
|
|
96
|
-
this.isLoading = false;
|
|
97
|
-
return;
|
|
98
|
-
}
|
|
99
|
-
const placeholder = this.renderings || getPlaceholder(this.rendering, this.name || '');
|
|
100
|
-
if (!placeholder) {
|
|
101
|
-
console.warn(`Placeholder '${this.name}' was not found in the current rendering data`, JSON.stringify(this.rendering, null, 2));
|
|
102
|
-
this.isLoading = false;
|
|
103
|
-
return;
|
|
104
|
-
}
|
|
105
|
-
// if the placeholder is empty (contains only raw renderings), then we may need to use the empty template if it's defined
|
|
106
|
-
const placeholderIsEmpty = placeholder.every((rendering) => isRawRendering(rendering));
|
|
107
|
-
if (this.renderEmptyTemplate && placeholderIsEmpty) {
|
|
108
|
-
this.view.createEmbeddedView(this.renderEmptyTemplate.templateRef, {
|
|
109
|
-
renderings: placeholder,
|
|
110
|
-
});
|
|
111
|
-
this.isLoading = false;
|
|
112
|
-
}
|
|
113
|
-
else {
|
|
114
|
-
this.componentFactory
|
|
115
|
-
.getComponents(placeholder)
|
|
116
|
-
.then((components) => components.forEach((rendering, index) => {
|
|
117
|
-
if (this.renderEachTemplate && !isRawRendering(rendering.componentDefinition)) {
|
|
118
|
-
this._renderTemplatedComponent(rendering.componentDefinition, index);
|
|
119
|
-
}
|
|
120
|
-
else {
|
|
121
|
-
this._renderEmbeddedComponent(rendering, index);
|
|
122
|
-
}
|
|
123
|
-
this.isLoading = false;
|
|
124
|
-
}))
|
|
125
|
-
.then(() => {
|
|
126
|
-
this.changeDetectorRef.markForCheck();
|
|
127
|
-
this.loaded.emit(this.name);
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
_renderTemplatedComponent(rendering, index) {
|
|
132
|
-
// the render-each template takes care of all component mapping etc
|
|
133
|
-
// generally using <sc-render-component> which is about like _renderEmbeddedComponent()
|
|
134
|
-
// as a separate component
|
|
135
|
-
this.view.createEmbeddedView(this.renderEachTemplate.templateRef, {
|
|
136
|
-
rendering,
|
|
137
|
-
index,
|
|
138
|
-
});
|
|
139
|
-
}
|
|
140
|
-
_renderEmbeddedComponent(rendering, index) {
|
|
141
|
-
if (!rendering.componentImplementation) {
|
|
142
|
-
const componentName = rendering.componentDefinition.componentName;
|
|
1
|
+
/* eslint-disable @angular-eslint/no-conflicting-lifecycle */
|
|
2
|
+
import { ChangeDetectorRef, Component, ComponentFactoryResolver, ContentChild, ElementRef, EventEmitter, Inject, Input, KeyValueDiffers, Output, Renderer2, Type, ViewChild, ViewContainerRef, } from '@angular/core';
|
|
3
|
+
import { Observable } from 'rxjs';
|
|
4
|
+
import { takeWhile } from 'rxjs/operators';
|
|
5
|
+
import { JssComponentFactoryService, } from '../jss-component-factory.service';
|
|
6
|
+
import { PlaceholderLoadingDirective } from './placeholder-loading.directive';
|
|
7
|
+
import { PLACEHOLDER_MISSING_COMPONENT_COMPONENT } from './placeholder.token';
|
|
8
|
+
import { RenderEachDirective } from './render-each.directive';
|
|
9
|
+
import { RenderEmptyDirective } from './render-empty.directive';
|
|
10
|
+
import { isRawRendering } from './rendering';
|
|
11
|
+
/**
|
|
12
|
+
* @param {ComponentRendering} rendering
|
|
13
|
+
* @param {string} name
|
|
14
|
+
*/
|
|
15
|
+
function getPlaceholder(rendering, name) {
|
|
16
|
+
if (rendering && rendering.placeholders && Object.keys(rendering.placeholders).length > 0) {
|
|
17
|
+
return rendering.placeholders[name];
|
|
18
|
+
}
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
export class PlaceholderComponent {
|
|
22
|
+
constructor(componentFactoryResolver, differs, componentFactory, changeDetectorRef, elementRef, renderer, missingComponentComponent) {
|
|
23
|
+
this.componentFactoryResolver = componentFactoryResolver;
|
|
24
|
+
this.differs = differs;
|
|
25
|
+
this.componentFactory = componentFactory;
|
|
26
|
+
this.changeDetectorRef = changeDetectorRef;
|
|
27
|
+
this.elementRef = elementRef;
|
|
28
|
+
this.renderer = renderer;
|
|
29
|
+
this.missingComponentComponent = missingComponentComponent;
|
|
30
|
+
this._componentInstances = [];
|
|
31
|
+
this.destroyed = false;
|
|
32
|
+
this.parentStyleAttribute = '';
|
|
33
|
+
this.isLoading = true;
|
|
34
|
+
this.loaded = new EventEmitter();
|
|
35
|
+
}
|
|
36
|
+
set inputs(value) {
|
|
37
|
+
this._inputs = value;
|
|
38
|
+
if (!this._differ && value) {
|
|
39
|
+
this._differ = this.differs.find(value).create();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
ngOnInit() {
|
|
43
|
+
// just to ensure the element exists
|
|
44
|
+
const elem = this.elementRef.nativeElement;
|
|
45
|
+
if (elem) {
|
|
46
|
+
const attributes = elem.attributes;
|
|
47
|
+
for (let i = 0; i < attributes.length; i++) {
|
|
48
|
+
const attr = attributes.item(i);
|
|
49
|
+
if (attr && attr.name.indexOf('_ngcontent') !== -1) {
|
|
50
|
+
this.parentStyleAttribute = attr.name;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
ngOnDestroy() {
|
|
56
|
+
this.destroyed = true;
|
|
57
|
+
this._componentInstances = [];
|
|
58
|
+
}
|
|
59
|
+
ngOnChanges(changes) {
|
|
60
|
+
if (changes.rendering || changes.renderings) {
|
|
61
|
+
this._render();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
ngDoCheck() {
|
|
65
|
+
if (!this._differ || !this._inputs || this._componentInstances.length === 0) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
const changes = this._differ.diff(this._inputs);
|
|
69
|
+
if (!changes) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
const updates = {};
|
|
73
|
+
changes.forEachRemovedItem((change) => (updates[change.key] = null));
|
|
74
|
+
changes.forEachAddedItem((change) => (updates[change.key] = change.currentValue));
|
|
75
|
+
changes.forEachChangedItem((change) => (updates[change.key] = change.currentValue));
|
|
76
|
+
this._componentInstances.forEach((componentInstance) => this._setComponentInputs(componentInstance, updates));
|
|
77
|
+
}
|
|
78
|
+
_setComponentInputs(componentInstance, inputs) {
|
|
79
|
+
Object.entries(inputs).forEach(([input, inputValue]) => (componentInstance[input] = inputValue));
|
|
80
|
+
}
|
|
81
|
+
_subscribeComponentOutputs(componentInstance, outputs) {
|
|
82
|
+
Object.keys(outputs)
|
|
83
|
+
.filter((output) => componentInstance[output] && componentInstance[output] instanceof Observable)
|
|
84
|
+
.forEach((output) => componentInstance[output]
|
|
85
|
+
.pipe(takeWhile(() => !this.destroyed))
|
|
86
|
+
.subscribe(outputs[output]));
|
|
87
|
+
}
|
|
88
|
+
_render() {
|
|
89
|
+
this._componentInstances = [];
|
|
90
|
+
this.view.clear();
|
|
91
|
+
if (!this.rendering && !this.renderings) {
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
if (!this.name && !this.renderings) {
|
|
95
|
+
console.warn('Placeholder name was not specified, and explicit renderings array was not passed. Placeholder requires either name and rendering, or renderings.');
|
|
96
|
+
this.isLoading = false;
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
const placeholder = this.renderings || getPlaceholder(this.rendering, this.name || '');
|
|
100
|
+
if (!placeholder) {
|
|
101
|
+
console.warn(`Placeholder '${this.name}' was not found in the current rendering data`, JSON.stringify(this.rendering, null, 2));
|
|
102
|
+
this.isLoading = false;
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
// if the placeholder is empty (contains only raw renderings), then we may need to use the empty template if it's defined
|
|
106
|
+
const placeholderIsEmpty = placeholder.every((rendering) => isRawRendering(rendering));
|
|
107
|
+
if (this.renderEmptyTemplate && placeholderIsEmpty) {
|
|
108
|
+
this.view.createEmbeddedView(this.renderEmptyTemplate.templateRef, {
|
|
109
|
+
renderings: placeholder,
|
|
110
|
+
});
|
|
111
|
+
this.isLoading = false;
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
this.componentFactory
|
|
115
|
+
.getComponents(placeholder)
|
|
116
|
+
.then((components) => components.forEach((rendering, index) => {
|
|
117
|
+
if (this.renderEachTemplate && !isRawRendering(rendering.componentDefinition)) {
|
|
118
|
+
this._renderTemplatedComponent(rendering.componentDefinition, index);
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
this._renderEmbeddedComponent(rendering, index);
|
|
122
|
+
}
|
|
123
|
+
this.isLoading = false;
|
|
124
|
+
}))
|
|
125
|
+
.then(() => {
|
|
126
|
+
this.changeDetectorRef.markForCheck();
|
|
127
|
+
this.loaded.emit(this.name);
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
_renderTemplatedComponent(rendering, index) {
|
|
132
|
+
// the render-each template takes care of all component mapping etc
|
|
133
|
+
// generally using <sc-render-component> which is about like _renderEmbeddedComponent()
|
|
134
|
+
// as a separate component
|
|
135
|
+
this.view.createEmbeddedView(this.renderEachTemplate.templateRef, {
|
|
136
|
+
rendering,
|
|
137
|
+
index,
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
_renderEmbeddedComponent(rendering, index) {
|
|
141
|
+
if (!rendering.componentImplementation) {
|
|
142
|
+
const componentName = rendering.componentDefinition.componentName;
|
|
143
143
|
console.error(`Placeholder ${this.name} contains unknown component ${componentName}.`, `Ensure component is mapped, like:
|
|
144
144
|
JssModule.withComponents([
|
|
145
145
|
{ name: '${componentName}', type: ${componentName}Component }
|
|
146
|
-
])`);
|
|
147
|
-
rendering.componentImplementation = this.missingComponentComponent;
|
|
148
|
-
}
|
|
149
|
-
const componentFactory = rendering.componentFactory ||
|
|
150
|
-
this.componentFactoryResolver.resolveComponentFactory(rendering.componentImplementation);
|
|
151
|
-
// apply the parent style attribute _ngcontent
|
|
152
|
-
// work-around for https://github.com/angular/angular/issues/12215
|
|
153
|
-
const createdComponentRef = this.view.createComponent(componentFactory, index);
|
|
154
|
-
if (this.parentStyleAttribute) {
|
|
155
|
-
this.renderer.setAttribute(createdComponentRef.location.nativeElement, this.parentStyleAttribute, '');
|
|
156
|
-
}
|
|
157
|
-
const componentInstance = createdComponentRef.instance;
|
|
158
|
-
componentInstance.rendering = rendering.componentDefinition;
|
|
159
|
-
if (this._inputs) {
|
|
160
|
-
this._setComponentInputs(componentInstance, this._inputs);
|
|
161
|
-
}
|
|
162
|
-
if (this.outputs) {
|
|
163
|
-
this._subscribeComponentOutputs(componentInstance, this.outputs);
|
|
164
|
-
}
|
|
165
|
-
this._componentInstances.push(componentInstance);
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
PlaceholderComponent.decorators = [
|
|
169
|
-
{ type: Component, args: [{
|
|
170
|
-
selector: 'sc-placeholder,[sc-placeholder]',
|
|
146
|
+
])`);
|
|
147
|
+
rendering.componentImplementation = this.missingComponentComponent;
|
|
148
|
+
}
|
|
149
|
+
const componentFactory = rendering.componentFactory ||
|
|
150
|
+
this.componentFactoryResolver.resolveComponentFactory(rendering.componentImplementation);
|
|
151
|
+
// apply the parent style attribute _ngcontent
|
|
152
|
+
// work-around for https://github.com/angular/angular/issues/12215
|
|
153
|
+
const createdComponentRef = this.view.createComponent(componentFactory, index);
|
|
154
|
+
if (this.parentStyleAttribute) {
|
|
155
|
+
this.renderer.setAttribute(createdComponentRef.location.nativeElement, this.parentStyleAttribute, '');
|
|
156
|
+
}
|
|
157
|
+
const componentInstance = createdComponentRef.instance;
|
|
158
|
+
componentInstance.rendering = rendering.componentDefinition;
|
|
159
|
+
if (this._inputs) {
|
|
160
|
+
this._setComponentInputs(componentInstance, this._inputs);
|
|
161
|
+
}
|
|
162
|
+
if (this.outputs) {
|
|
163
|
+
this._subscribeComponentOutputs(componentInstance, this.outputs);
|
|
164
|
+
}
|
|
165
|
+
this._componentInstances.push(componentInstance);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
PlaceholderComponent.decorators = [
|
|
169
|
+
{ type: Component, args: [{
|
|
170
|
+
selector: 'sc-placeholder,[sc-placeholder]',
|
|
171
171
|
template: `
|
|
172
172
|
<ng-template
|
|
173
173
|
*ngIf="isLoading"
|
|
174
174
|
[ngTemplateOutlet]="placeholderLoading?.templateRef"
|
|
175
175
|
></ng-template>
|
|
176
176
|
<ng-template #view></ng-template>
|
|
177
|
-
`
|
|
178
|
-
},] }
|
|
179
|
-
];
|
|
180
|
-
PlaceholderComponent.ctorParameters = () => [
|
|
181
|
-
{ type: ComponentFactoryResolver },
|
|
182
|
-
{ type: KeyValueDiffers },
|
|
183
|
-
{ type: JssComponentFactoryService },
|
|
184
|
-
{ type: ChangeDetectorRef },
|
|
185
|
-
{ type: ElementRef },
|
|
186
|
-
{ type: Renderer2 },
|
|
187
|
-
{ type: Type, decorators: [{ type: Inject, args: [PLACEHOLDER_MISSING_COMPONENT_COMPONENT,] }] }
|
|
188
|
-
];
|
|
189
|
-
PlaceholderComponent.propDecorators = {
|
|
190
|
-
name: [{ type: Input }],
|
|
191
|
-
rendering: [{ type: Input }],
|
|
192
|
-
renderings: [{ type: Input }],
|
|
193
|
-
outputs: [{ type: Input }],
|
|
194
|
-
loaded: [{ type: Output }],
|
|
195
|
-
view: [{ type: ViewChild, args: ['view', { read: ViewContainerRef, static: true },] }],
|
|
196
|
-
renderEachTemplate: [{ type: ContentChild, args: [RenderEachDirective, { static: true },] }],
|
|
197
|
-
renderEmptyTemplate: [{ type: ContentChild, args: [RenderEmptyDirective, { static: true },] }],
|
|
198
|
-
placeholderLoading: [{ type: ContentChild, args: [PlaceholderLoadingDirective, { static: true },] }],
|
|
199
|
-
inputs: [{ type: Input }]
|
|
200
|
-
};
|
|
201
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Vob2xkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL2FkaXAvRGVza3RvcC9TaXRlY29yZS9qc3MvcGFja2FnZXMvc2l0ZWNvcmUtanNzLWFuZ3VsYXIvc3JjLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9wbGFjZWhvbGRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNkRBQTZEO0FBQzdELE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULHdCQUF3QixFQUN4QixZQUFZLEVBRVosVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLGVBQWUsRUFJZixNQUFNLEVBQ04sU0FBUyxFQUVULElBQUksRUFDSixTQUFTLEVBQ1QsZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFFTCwwQkFBMEIsR0FDM0IsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxQyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM5RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTdDOzs7R0FHRztBQUNILFNBQVMsY0FBYyxDQUFDLFNBQTZCLEVBQUUsSUFBWTtJQUNqRSxJQUFJLFNBQVMsSUFBSSxTQUFTLENBQUMsWUFBWSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDekYsT0FBTyxTQUFTLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3JDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBWUQsTUFBTSxPQUFPLG9CQUFvQjtJQThCL0IsWUFDVSx3QkFBa0QsRUFDbEQsT0FBd0IsRUFDeEIsZ0JBQTRDLEVBQzVDLGlCQUFvQyxFQUNwQyxVQUFzQixFQUN0QixRQUFtQixFQUM4Qix5QkFBb0M7UUFOckYsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUNsRCxZQUFPLEdBQVAsT0FBTyxDQUFpQjtRQUN4QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQTRCO1FBQzVDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQzhCLDhCQUF5QixHQUF6Qix5QkFBeUIsQ0FBVztRQWxDdkYsd0JBQW1CLEdBQVUsRUFBRSxDQUFDO1FBQ2hDLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIseUJBQW9CLEdBQUcsRUFBRSxDQUFDO1FBQzNCLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFReEIsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFzQixDQUFDO0lBd0I3QyxDQUFDO0lBaEJKLElBQ0ksTUFBTSxDQUFDLEtBQTZCO1FBQ3RDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLEtBQUssRUFBRTtZQUMxQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ2xEO0lBQ0gsQ0FBQztJQVlELFFBQVE7UUFDTixvQ0FBb0M7UUFDcEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7UUFFM0MsSUFBSSxJQUFJLEVBQUU7WUFDUixNQUFNLFVBQVUsR0FBaUIsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUNqRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDMUMsTUFBTSxJQUFJLEdBQWdCLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzdDLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO29CQUNsRCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztpQkFDdkM7YUFDRjtTQUNGO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUU7WUFDM0MsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ2hCO0lBQ0gsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDM0UsT0FBTztTQUNSO1FBRUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDWixPQUFPO1NBQ1I7UUFDRCxNQUFNLE9BQU8sR0FBMkIsRUFBRSxDQUFDO1FBQzNDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDckUsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDbEYsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDcEYsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FDckQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGlCQUFpQixFQUFFLE9BQU8sQ0FBQyxDQUNyRCxDQUFDO0lBQ0osQ0FBQztJQUVPLG1CQUFtQixDQUFDLGlCQUFzQixFQUFFLE1BQThCO1FBQ2hGLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUM1QixDQUFDLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUNqRSxDQUFDO0lBQ0osQ0FBQztJQUVPLDBCQUEwQixDQUNoQyxpQkFBc0IsRUFDdEIsT0FBa0Q7UUFFbEQsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7YUFDakIsTUFBTSxDQUNMLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsWUFBWSxVQUFVLENBQ3pGO2FBQ0EsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FDakIsaUJBQWlCLENBQUMsTUFBTSxDQUFxQjthQUMzQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQ3RDLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FDOUIsQ0FBQztJQUNOLENBQUM7SUFFTyxPQUFPO1FBQ2IsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRWxCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUN2QyxPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDbEMsT0FBTyxDQUFDLElBQUksQ0FDVixrSkFBa0osQ0FDbkosQ0FBQztZQUNGLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ3ZCLE9BQU87U0FDUjtRQUVELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxVQUFVLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztRQUV2RixJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2hCLE9BQU8sQ0FBQyxJQUFJLENBQ1YsZ0JBQWdCLElBQUksQ0FBQyxJQUFJLCtDQUErQyxFQUN4RSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUN4QyxDQUFDO1lBQ0YsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDdkIsT0FBTztTQUNSO1FBRUQseUhBQXlIO1FBQ3pILE1BQU0sa0JBQWtCLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FDMUMsQ0FBQyxTQUFvRCxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQ3BGLENBQUM7UUFFRixJQUFJLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxrQkFBa0IsRUFBRTtZQUNsRCxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUU7Z0JBQ2pFLFVBQVUsRUFBRSxXQUFXO2FBQ3hCLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1NBQ3hCO2FBQU07WUFDTCxJQUFJLENBQUMsZ0JBQWdCO2lCQUNsQixhQUFhLENBQUMsV0FBVyxDQUFDO2lCQUMxQixJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUNuQixVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxFQUFFO2dCQUN0QyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsRUFBRTtvQkFDN0UsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsRUFBRSxLQUFLLENBQUMsQ0FBQztpQkFDdEU7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztpQkFDakQ7Z0JBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDekIsQ0FBQyxDQUFDLENBQ0g7aUJBQ0EsSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDVCxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM5QixDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0gsQ0FBQztJQUVPLHlCQUF5QixDQUMvQixTQUFvRCxFQUNwRCxLQUFhO1FBRWIsbUVBQW1FO1FBQ25FLHVGQUF1RjtRQUN2RiwwQkFBMEI7UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxFQUFFO1lBQ2hFLFNBQVM7WUFDVCxLQUFLO1NBQ04sQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLHdCQUF3QixDQUFDLFNBQWlDLEVBQUUsS0FBYTtRQUMvRSxJQUFJLENBQUMsU0FBUyxDQUFDLHVCQUF1QixFQUFFO1lBQ3RDLE1BQU0sYUFBYSxHQUFJLFNBQVMsQ0FBQyxtQkFBMEMsQ0FBQyxhQUFhLENBQUM7WUFDMUYsT0FBTyxDQUFDLEtBQUssQ0FDWCxlQUFlLElBQUksQ0FBQyxJQUFJLCtCQUErQixhQUFhLEdBQUcsRUFDdkU7O3FCQUVhLGFBQWEsWUFBWSxhQUFhO1dBQ2hELENBQ0osQ0FBQztZQUVGLFNBQVMsQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUM7U0FDcEU7UUFFRCxNQUFNLGdCQUFnQixHQUNwQixTQUFTLENBQUMsZ0JBQWdCO1lBQzFCLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUUzRiw4Q0FBOEM7UUFDOUMsa0VBQWtFO1FBQ2xFLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDL0UsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUU7WUFDN0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQ3hCLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQzFDLElBQUksQ0FBQyxvQkFBb0IsRUFDekIsRUFBRSxDQUNILENBQUM7U0FDSDtRQUVELE1BQU0saUJBQWlCLEdBQUcsbUJBQW1CLENBQUMsUUFBUSxDQUFDO1FBQ3ZELGlCQUFpQixDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsbUJBQW1CLENBQUM7UUFDNUQsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDM0Q7UUFDRCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsSUFBSSxDQUFDLDBCQUEwQixDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNsRTtRQUNELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNuRCxDQUFDOzs7WUEvTkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxpQ0FBaUM7Z0JBQzNDLFFBQVEsRUFBRTs7Ozs7O0dBTVQ7YUFDRjs7O1lBcERDLHdCQUF3QjtZQVF4QixlQUFlO1lBZ0JmLDBCQUEwQjtZQTFCMUIsaUJBQWlCO1lBS2pCLFVBQVU7WUFVVixTQUFTO1lBRVQsSUFBSSx1QkEyRUQsTUFBTSxTQUFDLHVDQUF1Qzs7O21CQTdCaEQsS0FBSzt3QkFDTCxLQUFLO3lCQUNMLEtBQUs7c0JBQ0wsS0FBSztxQkFFTCxNQUFNO21CQUdOLFNBQVMsU0FBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtpQ0FDMUQsWUFBWSxTQUFDLG1CQUFtQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtrQ0FDbEQsWUFBWSxTQUFDLG9CQUFvQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtpQ0FDbkQsWUFBWSxTQUFDLDJCQUEyQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtxQkFHMUQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC9uby1jb25mbGljdGluZy1saWZlY3ljbGUgKi9cclxuaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxyXG4gIENvbnRlbnRDaGlsZCxcclxuICBEb0NoZWNrLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEluamVjdCxcclxuICBJbnB1dCxcclxuICBLZXlWYWx1ZURpZmZlcixcclxuICBLZXlWYWx1ZURpZmZlcnMsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFJlbmRlcmVyMixcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFR5cGUsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdDb250YWluZXJSZWYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudFJlbmRlcmluZywgSHRtbEVsZW1lbnRSZW5kZXJpbmcgfSBmcm9tICdAc2l0ZWNvcmUtanNzL3NpdGVjb3JlLWpzcyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGFrZVdoaWxlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudEZhY3RvcnlSZXN1bHQsXHJcbiAgSnNzQ29tcG9uZW50RmFjdG9yeVNlcnZpY2UsXHJcbn0gZnJvbSAnLi4vanNzLWNvbXBvbmVudC1mYWN0b3J5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQbGFjZWhvbGRlckxvYWRpbmdEaXJlY3RpdmUgfSBmcm9tICcuL3BsYWNlaG9sZGVyLWxvYWRpbmcuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgUExBQ0VIT0xERVJfTUlTU0lOR19DT01QT05FTlRfQ09NUE9ORU5UIH0gZnJvbSAnLi9wbGFjZWhvbGRlci50b2tlbic7XHJcbmltcG9ydCB7IFJlbmRlckVhY2hEaXJlY3RpdmUgfSBmcm9tICcuL3JlbmRlci1lYWNoLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFJlbmRlckVtcHR5RGlyZWN0aXZlIH0gZnJvbSAnLi9yZW5kZXItZW1wdHkuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgaXNSYXdSZW5kZXJpbmcgfSBmcm9tICcuL3JlbmRlcmluZyc7XHJcblxyXG4vKipcclxuICogQHBhcmFtIHtDb21wb25lbnRSZW5kZXJpbmd9IHJlbmRlcmluZ1xyXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxyXG4gKi9cclxuZnVuY3Rpb24gZ2V0UGxhY2Vob2xkZXIocmVuZGVyaW5nOiBDb21wb25lbnRSZW5kZXJpbmcsIG5hbWU6IHN0cmluZykge1xyXG4gIGlmIChyZW5kZXJpbmcgJiYgcmVuZGVyaW5nLnBsYWNlaG9sZGVycyAmJiBPYmplY3Qua2V5cyhyZW5kZXJpbmcucGxhY2Vob2xkZXJzKS5sZW5ndGggPiAwKSB7XHJcbiAgICByZXR1cm4gcmVuZGVyaW5nLnBsYWNlaG9sZGVyc1tuYW1lXTtcclxuICB9XHJcbiAgcmV0dXJuIG51bGw7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2MtcGxhY2Vob2xkZXIsW3NjLXBsYWNlaG9sZGVyXScsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxuZy10ZW1wbGF0ZVxyXG4gICAgICAqbmdJZj1cImlzTG9hZGluZ1wiXHJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInBsYWNlaG9sZGVyTG9hZGluZz8udGVtcGxhdGVSZWZcIlxyXG4gICAgPjwvbmctdGVtcGxhdGU+XHJcbiAgICA8bmctdGVtcGxhdGUgI3ZpZXc+PC9uZy10ZW1wbGF0ZT5cclxuICBgLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGxhY2Vob2xkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgRG9DaGVjaywgT25EZXN0cm95IHtcclxuICBwcml2YXRlIF9pbnB1dHM6IHsgW2tleTogc3RyaW5nXTogYW55IH07XHJcbiAgcHJpdmF0ZSBfZGlmZmVyOiBLZXlWYWx1ZURpZmZlcjxzdHJpbmcsIGFueT47XHJcbiAgcHJpdmF0ZSBfY29tcG9uZW50SW5zdGFuY2VzOiBhbnlbXSA9IFtdO1xyXG4gIHByaXZhdGUgZGVzdHJveWVkID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBwYXJlbnRTdHlsZUF0dHJpYnV0ZSA9ICcnO1xyXG4gIHB1YmxpYyBpc0xvYWRpbmcgPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKSBuYW1lPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHJlbmRlcmluZzogQ29tcG9uZW50UmVuZGVyaW5nO1xyXG4gIEBJbnB1dCgpIHJlbmRlcmluZ3M/OiBBcnJheTxDb21wb25lbnRSZW5kZXJpbmcgfCBIdG1sRWxlbWVudFJlbmRlcmluZz47XHJcbiAgQElucHV0KCkgb3V0cHV0czogeyBbazogc3RyaW5nXTogKGV2ZW50VHlwZTogYW55KSA9PiB2b2lkIH07XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIGxvYWRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nIHwgdW5kZWZpbmVkPigpO1xyXG5cclxuICBAVmlld0NoaWxkKCd2aWV3JywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmLCBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSB2aWV3OiBWaWV3Q29udGFpbmVyUmVmO1xyXG4gIEBDb250ZW50Q2hpbGQoUmVuZGVyRWFjaERpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUgfSkgcmVuZGVyRWFjaFRlbXBsYXRlOiBSZW5kZXJFYWNoRGlyZWN0aXZlO1xyXG4gIEBDb250ZW50Q2hpbGQoUmVuZGVyRW1wdHlEaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pIHJlbmRlckVtcHR5VGVtcGxhdGU6IFJlbmRlckVtcHR5RGlyZWN0aXZlO1xyXG4gIEBDb250ZW50Q2hpbGQoUGxhY2Vob2xkZXJMb2FkaW5nRGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIHBsYWNlaG9sZGVyTG9hZGluZz86IFBsYWNlaG9sZGVyTG9hZGluZ0RpcmVjdGl2ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgaW5wdXRzKHZhbHVlOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KSB7XHJcbiAgICB0aGlzLl9pbnB1dHMgPSB2YWx1ZTtcclxuICAgIGlmICghdGhpcy5fZGlmZmVyICYmIHZhbHVlKSB7XHJcbiAgICAgIHRoaXMuX2RpZmZlciA9IHRoaXMuZGlmZmVycy5maW5kKHZhbHVlKS5jcmVhdGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICAgIHByaXZhdGUgZGlmZmVyczogS2V5VmFsdWVEaWZmZXJzLFxyXG4gICAgcHJpdmF0ZSBjb21wb25lbnRGYWN0b3J5OiBKc3NDb21wb25lbnRGYWN0b3J5U2VydmljZSxcclxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgQEluamVjdChQTEFDRUhPTERFUl9NSVNTSU5HX0NPTVBPTkVOVF9DT01QT05FTlQpIHByaXZhdGUgbWlzc2luZ0NvbXBvbmVudENvbXBvbmVudDogVHlwZTxhbnk+XHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIC8vIGp1c3QgdG8gZW5zdXJlIHRoZSBlbGVtZW50IGV4aXN0c1xyXG4gICAgY29uc3QgZWxlbSA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xyXG5cclxuICAgIGlmIChlbGVtKSB7XHJcbiAgICAgIGNvbnN0IGF0dHJpYnV0ZXM6IE5hbWVkTm9kZU1hcCA9IGVsZW0uYXR0cmlidXRlcztcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhdHRyaWJ1dGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgYXR0cjogQXR0ciB8IG51bGwgPSBhdHRyaWJ1dGVzLml0ZW0oaSk7XHJcbiAgICAgICAgaWYgKGF0dHIgJiYgYXR0ci5uYW1lLmluZGV4T2YoJ19uZ2NvbnRlbnQnKSAhPT0gLTEpIHtcclxuICAgICAgICAgIHRoaXMucGFyZW50U3R5bGVBdHRyaWJ1dGUgPSBhdHRyLm5hbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuZGVzdHJveWVkID0gdHJ1ZTtcclxuICAgIHRoaXMuX2NvbXBvbmVudEluc3RhbmNlcyA9IFtdO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKGNoYW5nZXMucmVuZGVyaW5nIHx8IGNoYW5nZXMucmVuZGVyaW5ncykge1xyXG4gICAgICB0aGlzLl9yZW5kZXIoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nRG9DaGVjaygpIHtcclxuICAgIGlmICghdGhpcy5fZGlmZmVyIHx8ICF0aGlzLl9pbnB1dHMgfHwgdGhpcy5fY29tcG9uZW50SW5zdGFuY2VzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY2hhbmdlcyA9IHRoaXMuX2RpZmZlci5kaWZmKHRoaXMuX2lucHV0cyk7XHJcbiAgICBpZiAoIWNoYW5nZXMpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdXBkYXRlczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xyXG4gICAgY2hhbmdlcy5mb3JFYWNoUmVtb3ZlZEl0ZW0oKGNoYW5nZSkgPT4gKHVwZGF0ZXNbY2hhbmdlLmtleV0gPSBudWxsKSk7XHJcbiAgICBjaGFuZ2VzLmZvckVhY2hBZGRlZEl0ZW0oKGNoYW5nZSkgPT4gKHVwZGF0ZXNbY2hhbmdlLmtleV0gPSBjaGFuZ2UuY3VycmVudFZhbHVlKSk7XHJcbiAgICBjaGFuZ2VzLmZvckVhY2hDaGFuZ2VkSXRlbSgoY2hhbmdlKSA9PiAodXBkYXRlc1tjaGFuZ2Uua2V5XSA9IGNoYW5nZS5jdXJyZW50VmFsdWUpKTtcclxuICAgIHRoaXMuX2NvbXBvbmVudEluc3RhbmNlcy5mb3JFYWNoKChjb21wb25lbnRJbnN0YW5jZSkgPT5cclxuICAgICAgdGhpcy5fc2V0Q29tcG9uZW50SW5wdXRzKGNvbXBvbmVudEluc3RhbmNlLCB1cGRhdGVzKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3NldENvbXBvbmVudElucHV0cyhjb21wb25lbnRJbnN0YW5jZTogYW55LCBpbnB1dHM6IHsgW2tleTogc3RyaW5nXTogYW55IH0pIHtcclxuICAgIE9iamVjdC5lbnRyaWVzKGlucHV0cykuZm9yRWFjaChcclxuICAgICAgKFtpbnB1dCwgaW5wdXRWYWx1ZV0pID0+IChjb21wb25lbnRJbnN0YW5jZVtpbnB1dF0gPSBpbnB1dFZhbHVlKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3N1YnNjcmliZUNvbXBvbmVudE91dHB1dHMoXHJcbiAgICBjb21wb25lbnRJbnN0YW5jZTogYW55LFxyXG4gICAgb3V0cHV0czogeyBbazogc3RyaW5nXTogKGV2ZW50VHlwZTogYW55KSA9PiB2b2lkIH1cclxuICApIHtcclxuICAgIE9iamVjdC5rZXlzKG91dHB1dHMpXHJcbiAgICAgIC5maWx0ZXIoXHJcbiAgICAgICAgKG91dHB1dCkgPT4gY29tcG9uZW50SW5zdGFuY2Vbb3V0cHV0XSAmJiBjb21wb25lbnRJbnN0YW5jZVtvdXRwdXRdIGluc3RhbmNlb2YgT2JzZXJ2YWJsZVxyXG4gICAgICApXHJcbiAgICAgIC5mb3JFYWNoKChvdXRwdXQpID0+XHJcbiAgICAgICAgKGNvbXBvbmVudEluc3RhbmNlW291dHB1dF0gYXMgT2JzZXJ2YWJsZTxhbnk+KVxyXG4gICAgICAgICAgLnBpcGUodGFrZVdoaWxlKCgpID0+ICF0aGlzLmRlc3Ryb3llZCkpXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKG91dHB1dHNbb3V0cHV0XSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3JlbmRlcigpIHtcclxuICAgIHRoaXMuX2NvbXBvbmVudEluc3RhbmNlcyA9IFtdO1xyXG4gICAgdGhpcy52aWV3LmNsZWFyKCk7XHJcblxyXG4gICAgaWYgKCF0aGlzLnJlbmRlcmluZyAmJiAhdGhpcy5yZW5kZXJpbmdzKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMubmFtZSAmJiAhdGhpcy5yZW5kZXJpbmdzKSB7XHJcbiAgICAgIGNvbnNvbGUud2FybihcclxuICAgICAgICAnUGxhY2Vob2xkZXIgbmFtZSB3YXMgbm90IHNwZWNpZmllZCwgYW5kIGV4cGxpY2l0IHJlbmRlcmluZ3MgYXJyYXkgd2FzIG5vdCBwYXNzZWQuIFBsYWNlaG9sZGVyIHJlcXVpcmVzIGVpdGhlciBuYW1lIGFuZCByZW5kZXJpbmcsIG9yIHJlbmRlcmluZ3MuJ1xyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcGxhY2Vob2xkZXIgPSB0aGlzLnJlbmRlcmluZ3MgfHwgZ2V0UGxhY2Vob2xkZXIodGhpcy5yZW5kZXJpbmcsIHRoaXMubmFtZSB8fCAnJyk7XHJcblxyXG4gICAgaWYgKCFwbGFjZWhvbGRlcikge1xyXG4gICAgICBjb25zb2xlLndhcm4oXHJcbiAgICAgICAgYFBsYWNlaG9sZGVyICcke3RoaXMubmFtZX0nIHdhcyBub3QgZm91bmQgaW4gdGhlIGN1cnJlbnQgcmVuZGVyaW5nIGRhdGFgLFxyXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMucmVuZGVyaW5nLCBudWxsLCAyKVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gaWYgdGhlIHBsYWNlaG9sZGVyIGlzIGVtcHR5IChjb250YWlucyBvbmx5IHJhdyByZW5kZXJpbmdzKSwgdGhlbiB3ZSBtYXkgbmVlZCB0byB1c2UgdGhlIGVtcHR5IHRlbXBsYXRlIGlmIGl0J3MgZGVmaW5lZFxyXG4gICAgY29uc3QgcGxhY2Vob2xkZXJJc0VtcHR5ID0gcGxhY2Vob2xkZXIuZXZlcnkoXHJcbiAgICAgIChyZW5kZXJpbmc6IENvbXBvbmVudFJlbmRlcmluZyB8IEh0bWxFbGVtZW50UmVuZGVyaW5nKSA9PiBpc1Jhd1JlbmRlcmluZyhyZW5kZXJpbmcpXHJcbiAgICApO1xyXG5cclxuICAgIGlmICh0aGlzLnJlbmRlckVtcHR5VGVtcGxhdGUgJiYgcGxhY2Vob2xkZXJJc0VtcHR5KSB7XHJcbiAgICAgIHRoaXMudmlldy5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5yZW5kZXJFbXB0eVRlbXBsYXRlLnRlbXBsYXRlUmVmLCB7XHJcbiAgICAgICAgcmVuZGVyaW5nczogcGxhY2Vob2xkZXIsXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jb21wb25lbnRGYWN0b3J5XHJcbiAgICAgICAgLmdldENvbXBvbmVudHMocGxhY2Vob2xkZXIpXHJcbiAgICAgICAgLnRoZW4oKGNvbXBvbmVudHMpID0+XHJcbiAgICAgICAgICBjb21wb25lbnRzLmZvckVhY2goKHJlbmRlcmluZywgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMucmVuZGVyRWFjaFRlbXBsYXRlICYmICFpc1Jhd1JlbmRlcmluZyhyZW5kZXJpbmcuY29tcG9uZW50RGVmaW5pdGlvbikpIHtcclxuICAgICAgICAgICAgICB0aGlzLl9yZW5kZXJUZW1wbGF0ZWRDb21wb25lbnQocmVuZGVyaW5nLmNvbXBvbmVudERlZmluaXRpb24sIGluZGV4KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLl9yZW5kZXJFbWJlZGRlZENvbXBvbmVudChyZW5kZXJpbmcsIGluZGV4KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApXHJcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgIHRoaXMubG9hZGVkLmVtaXQodGhpcy5uYW1lKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3JlbmRlclRlbXBsYXRlZENvbXBvbmVudChcclxuICAgIHJlbmRlcmluZzogQ29tcG9uZW50UmVuZGVyaW5nIHwgSHRtbEVsZW1lbnRSZW5kZXJpbmcsXHJcbiAgICBpbmRleDogbnVtYmVyXHJcbiAgKSB7XHJcbiAgICAvLyB0aGUgcmVuZGVyLWVhY2ggdGVtcGxhdGUgdGFrZXMgY2FyZSBvZiBhbGwgY29tcG9uZW50IG1hcHBpbmcgZXRjXHJcbiAgICAvLyBnZW5lcmFsbHkgdXNpbmcgPHNjLXJlbmRlci1jb21wb25lbnQ+IHdoaWNoIGlzIGFib3V0IGxpa2UgX3JlbmRlckVtYmVkZGVkQ29tcG9uZW50KClcclxuICAgIC8vIGFzIGEgc2VwYXJhdGUgY29tcG9uZW50XHJcbiAgICB0aGlzLnZpZXcuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMucmVuZGVyRWFjaFRlbXBsYXRlLnRlbXBsYXRlUmVmLCB7XHJcbiAgICAgIHJlbmRlcmluZyxcclxuICAgICAgaW5kZXgsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3JlbmRlckVtYmVkZGVkQ29tcG9uZW50KHJlbmRlcmluZzogQ29tcG9uZW50RmFjdG9yeVJlc3VsdCwgaW5kZXg6IG51bWJlcikge1xyXG4gICAgaWYgKCFyZW5kZXJpbmcuY29tcG9uZW50SW1wbGVtZW50YXRpb24pIHtcclxuICAgICAgY29uc3QgY29tcG9uZW50TmFtZSA9IChyZW5kZXJpbmcuY29tcG9uZW50RGVmaW5pdGlvbiBhcyBDb21wb25lbnRSZW5kZXJpbmcpLmNvbXBvbmVudE5hbWU7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoXHJcbiAgICAgICAgYFBsYWNlaG9sZGVyICR7dGhpcy5uYW1lfSBjb250YWlucyB1bmtub3duIGNvbXBvbmVudCAke2NvbXBvbmVudE5hbWV9LmAsXHJcbiAgICAgICAgYEVuc3VyZSBjb21wb25lbnQgaXMgbWFwcGVkLCBsaWtlOlxyXG4gICAgICAgIEpzc01vZHVsZS53aXRoQ29tcG9uZW50cyhbXHJcbiAgICAgICAgICB7IG5hbWU6ICcke2NvbXBvbmVudE5hbWV9JywgdHlwZTogJHtjb21wb25lbnROYW1lfUNvbXBvbmVudCB9XHJcbiAgICAgICAgXSlgXHJcbiAgICAgICk7XHJcblxyXG4gICAgICByZW5kZXJpbmcuY29tcG9uZW50SW1wbGVtZW50YXRpb24gPSB0aGlzLm1pc3NpbmdDb21wb25lbnRDb21wb25lbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY29tcG9uZW50RmFjdG9yeSA9XHJcbiAgICAgIHJlbmRlcmluZy5jb21wb25lbnRGYWN0b3J5IHx8XHJcbiAgICAgIHRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KHJlbmRlcmluZy5jb21wb25lbnRJbXBsZW1lbnRhdGlvbik7XHJcblxyXG4gICAgLy8gYXBwbHkgdGhlIHBhcmVudCBzdHlsZSBhdHRyaWJ1dGUgX25nY29udGVudFxyXG4gICAgLy8gd29yay1hcm91bmQgZm9yIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzEyMjE1XHJcbiAgICBjb25zdCBjcmVhdGVkQ29tcG9uZW50UmVmID0gdGhpcy52aWV3LmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnRGYWN0b3J5LCBpbmRleCk7XHJcbiAgICBpZiAodGhpcy5wYXJlbnRTdHlsZUF0dHJpYnV0ZSkge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShcclxuICAgICAgICBjcmVhdGVkQ29tcG9uZW50UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQsXHJcbiAgICAgICAgdGhpcy5wYXJlbnRTdHlsZUF0dHJpYnV0ZSxcclxuICAgICAgICAnJ1xyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNvbXBvbmVudEluc3RhbmNlID0gY3JlYXRlZENvbXBvbmVudFJlZi5pbnN0YW5jZTtcclxuICAgIGNvbXBvbmVudEluc3RhbmNlLnJlbmRlcmluZyA9IHJlbmRlcmluZy5jb21wb25lbnREZWZpbml0aW9uO1xyXG4gICAgaWYgKHRoaXMuX2lucHV0cykge1xyXG4gICAgICB0aGlzLl9zZXRDb21wb25lbnRJbnB1dHMoY29tcG9uZW50SW5zdGFuY2UsIHRoaXMuX2lucHV0cyk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5vdXRwdXRzKSB7XHJcbiAgICAgIHRoaXMuX3N1YnNjcmliZUNvbXBvbmVudE91dHB1dHMoY29tcG9uZW50SW5zdGFuY2UsIHRoaXMub3V0cHV0cyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9jb21wb25lbnRJbnN0YW5jZXMucHVzaChjb21wb25lbnRJbnN0YW5jZSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
177
|
+
`
|
|
178
|
+
},] }
|
|
179
|
+
];
|
|
180
|
+
PlaceholderComponent.ctorParameters = () => [
|
|
181
|
+
{ type: ComponentFactoryResolver },
|
|
182
|
+
{ type: KeyValueDiffers },
|
|
183
|
+
{ type: JssComponentFactoryService },
|
|
184
|
+
{ type: ChangeDetectorRef },
|
|
185
|
+
{ type: ElementRef },
|
|
186
|
+
{ type: Renderer2 },
|
|
187
|
+
{ type: Type, decorators: [{ type: Inject, args: [PLACEHOLDER_MISSING_COMPONENT_COMPONENT,] }] }
|
|
188
|
+
];
|
|
189
|
+
PlaceholderComponent.propDecorators = {
|
|
190
|
+
name: [{ type: Input }],
|
|
191
|
+
rendering: [{ type: Input }],
|
|
192
|
+
renderings: [{ type: Input }],
|
|
193
|
+
outputs: [{ type: Input }],
|
|
194
|
+
loaded: [{ type: Output }],
|
|
195
|
+
view: [{ type: ViewChild, args: ['view', { read: ViewContainerRef, static: true },] }],
|
|
196
|
+
renderEachTemplate: [{ type: ContentChild, args: [RenderEachDirective, { static: true },] }],
|
|
197
|
+
renderEmptyTemplate: [{ type: ContentChild, args: [RenderEmptyDirective, { static: true },] }],
|
|
198
|
+
placeholderLoading: [{ type: ContentChild, args: [PlaceholderLoadingDirective, { static: true },] }],
|
|
199
|
+
inputs: [{ type: Input }]
|
|
200
|
+
};
|
|
201
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Vob2xkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9ob21lL3ZzdHMvd29yay8xL3MvcGFja2FnZXMvc2l0ZWNvcmUtanNzLWFuZ3VsYXIvc3JjLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9wbGFjZWhvbGRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNkRBQTZEO0FBQzdELE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULHdCQUF3QixFQUN4QixZQUFZLEVBRVosVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLGVBQWUsRUFJZixNQUFNLEVBQ04sU0FBUyxFQUVULElBQUksRUFDSixTQUFTLEVBQ1QsZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFFTCwwQkFBMEIsR0FDM0IsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxQyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM5RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTdDOzs7R0FHRztBQUNILFNBQVMsY0FBYyxDQUFDLFNBQTZCLEVBQUUsSUFBWTtJQUNqRSxJQUFJLFNBQVMsSUFBSSxTQUFTLENBQUMsWUFBWSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDekYsT0FBTyxT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QUNELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNuRCxDQUFDOzs7WUEvTkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxpQ0FBaUM7Z0JBQzNDLFFBQVEsRUFBRTs7Ozs7O0dBTVQ7YUFDRjs7O1lBcERDLHdCQUF3QjtZQVF4QixlQUFlO1lBZ0JmLDBCQUEwQjtZQTFCMUIsaUJBQWlCO1lBS2pCLFVBQVU7WUFVVixTQUFTO1lBRVQsSUFBSSx1QkEyRUQsTUFBTSxTQUFDLHVDQUF1Qzs7O21CQTdCaEQsS0FBSzt3QkFDTCxLQUFLO3lCQUNMLEtBQUs7c0JBQ0wsS0FBSztxQkFFTCxNQUFNO21CQUdOLFNBQVMsU0FBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtpQ0FDMUQsWUFBWSxTQUFDLG1CQUFtQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtrQ0FDbEQsWUFBWSxTQUFDLG9CQUFvQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtpQ0FDbkQsWUFBWSxTQUFDLDJCQUEyQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtxQkFHMUQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC9uby1jb25mbGljdGluZy1saWZlY3ljbGUgKi9cclxuaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxyXG4gIENvbnRlbnRDaGlsZCxcclxuICBEb0NoZWNrLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEluamVjdCxcclxuICBJbnB1dCxcclxuICBLZXlWYWx1ZURpZmZlcixcclxuICBLZXlWYWx1ZURpZmZlcnMsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFJlbmRlcmVyMixcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFR5cGUsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdDb250YWluZXJSZWYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudFJlbmRlcmluZywgSHRtbEVsZW1lbnRSZW5kZXJpbmcgfSBmcm9tICdAc2l0ZWNvcmUtanNzL3NpdGVjb3JlLWpzcyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGFrZVdoaWxlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudEZhY3RvcnlSZXN1bHQsXHJcbiAgSnNzQ29tcG9uZW50RmFjdG9yeVNlcnZpY2UsXHJcbn0gZnJvbSAnLi4vanNzLWNvbXBvbmVudC1mYWN0b3J5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQbGFjZWhvbGRlckxvYWRpbmdEaXJlY3RpdmUgfSBmcm9tICcuL3BsYWNlaG9sZGVyLWxvYWRpbmcuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgUExBQ0VIT0xERVJfTUlTU0lOR19DT01QT05FTlRfQ09NUE9ORU5UIH0gZnJvbSAnLi9wbGFjZWhvbGRlci50b2tlbic7XHJcbmltcG9ydCB7IFJlbmRlckVhY2hEaXJlY3RpdmUgfSBmcm9tICcuL3JlbmRlci1lYWNoLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFJlbmRlckVtcHR5RGlyZWN0aXZlIH0gZnJvbSAnLi9yZW5kZXItZW1wdHkuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgaXNSYXdSZW5kZXJpbmcgfSBmcm9tICcuL3JlbmRlcmluZyc7XHJcblxyXG4vKipcclxuICogQHBhcmFtIHtDb21wb25lbnRSZW5kZXJpbmd9IHJlbmRlcmluZ1xyXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxyXG4gKi9cclxuZnVuY3Rpb24gZ2V0UGxhY2Vob2xkZXIocmVuZGVyaW5nOiBDb21wb25lbnRSZW5kZXJpbmcsIG5hbWU6IHN0cmluZykge1xyXG4gIGlmIChyZW5kZXJpbmcgJiYgcmVuZGVyaW5nLnBsYWNlaG9sZGVycyAmJiBPYmplY3Qua2V5cyhyZW5kZXJpbmcucGxhY2Vob2xkZXJzKS5sZW5ndGggPiAwKSB7XHJcbiAgICByZXR1cm4gcmVuZGVyaW5nLnBsYWNlaG9sZGVyc1tuYW1lXTtcclxuICB9XHJcbiAgcmV0dXJuIG51bGw7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2MtcGxhY2Vob2xkZXIsW3NjLXBsYWNlaG9sZGVyXScsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxuZy10ZW1wbGF0ZVxyXG4gICAgICAqbmdJZj1cImlzTG9hZGluZ1wiXHJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInBsYWNlaG9sZGVyTG9hZGluZz8udGVtcGxhdGVSZWZcIlxyXG4gICAgPjwvbmctdGVtcGxhdGU+XHJcbiAgICA8bmctdGVtcGxhdGUgI3ZpZXc+PC9uZy10ZW1wbGF0ZT5cclxuICBgLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGxhY2Vob2xkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgRG9DaGVjaywgT25EZXN0cm95IHtcclxuICBwcml2YXRlIF9pbnB1dHM6IHsgW2tleTogc3RyaW5nXTogYW55IH07XHJcbiAgcHJpdmF0ZSBfZGlmZmVyOiBLZXlWYWx1ZURpZmZlcjxzdHJpbmcsIGFueT47XHJcbiAgcHJpdmF0ZSBfY29tcG9uZW50SW5zdGFuY2VzOiBhbnlbXSA9IFtdO1xyXG4gIHByaXZhdGUgZGVzdHJveWVkID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBwYXJlbnRTdHlsZUF0dHJpYnV0ZSA9ICcnO1xyXG4gIHB1YmxpYyBpc0xvYWRpbmcgPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKSBuYW1lPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHJlbmRlcmluZzogQ29tcG9uZW50UmVuZGVyaW5nO1xyXG4gIEBJbnB1dCgpIHJlbmRlcmluZ3M/OiBBcnJheTxDb21wb25lbnRSZW5kZXJpbmcgfCBIdG1sRWxlbWVudFJlbmRlcmluZz47XHJcbiAgQElucHV0KCkgb3V0cHV0czogeyBbazogc3RyaW5nXTogKGV2ZW50VHlwZTogYW55KSA9PiB2b2lkIH07XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIGxvYWRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nIHwgdW5kZWZpbmVkPigpO1xyXG5cclxuICBAVmlld0NoaWxkKCd2aWV3JywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmLCBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSB2aWV3OiBWaWV3Q29udGFpbmVyUmVmO1xyXG4gIEBDb250ZW50Q2hpbGQoUmVuZGVyRWFjaERpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUgfSkgcmVuZGVyRWFjaFRlbXBsYXRlOiBSZW5kZXJFYWNoRGlyZWN0aXZlO1xyXG4gIEBDb250ZW50Q2hpbGQoUmVuZGVyRW1wdHlEaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pIHJlbmRlckVtcHR5VGVtcGxhdGU6IFJlbmRlckVtcHR5RGlyZWN0aXZlO1xyXG4gIEBDb250ZW50Q2hpbGQoUGxhY2Vob2xkZXJMb2FkaW5nRGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIHBsYWNlaG9sZGVyTG9hZGluZz86IFBsYWNlaG9sZGVyTG9hZGluZ0RpcmVjdGl2ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgaW5wdXRzKHZhbHVlOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KSB7XHJcbiAgICB0aGlzLl9pbnB1dHMgPSB2YWx1ZTtcclxuICAgIGlmICghdGhpcy5fZGlmZmVyICYmIHZhbHVlKSB7XHJcbiAgICAgIHRoaXMuX2RpZmZlciA9IHRoaXMuZGlmZmVycy5maW5kKHZhbHVlKS5jcmVhdGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICAgIHByaXZhdGUgZGlmZmVyczogS2V5VmFsdWVEaWZmZXJzLFxyXG4gICAgcHJpdmF0ZSBjb21wb25lbnRGYWN0b3J5OiBKc3NDb21wb25lbnRGYWN0b3J5U2VydmljZSxcclxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgQEluamVjdChQTEFDRUhPTERFUl9NSVNTSU5HX0NPTVBPTkVOVF9DT01QT05FTlQpIHByaXZhdGUgbWlzc2luZ0NvbXBvbmVudENvbXBvbmVudDogVHlwZTxhbnk+XHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIC8vIGp1c3QgdG8gZW5zdXJlIHRoZSBlbGVtZW50IGV4aXN0c1xyXG4gICAgY29uc3QgZWxlbSA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xyXG5cclxuICAgIGlmIChlbGVtKSB7XHJcbiAgICAgIGNvbnN0IGF0dHJpYnV0ZXM6IE5hbWVkTm9kZU1hcCA9IGVsZW0uYXR0cmlidXRlcztcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhdHRyaWJ1dGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgYXR0cjogQXR0ciB8IG51bGwgPSBhdHRyaWJ1dGVzLml0ZW0oaSk7XHJcbiAgICAgICAgaWYgKGF0dHIgJiYgYXR0ci5uYW1lLmluZGV4T2YoJ19uZ2NvbnRlbnQnKSAhPT0gLTEpIHtcclxuICAgICAgICAgIHRoaXMucGFyZW50U3R5bGVBdHRyaWJ1dGUgPSBhdHRyLm5hbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuZGVzdHJveWVkID0gdHJ1ZTtcclxuICAgIHRoaXMuX2NvbXBvbmVudEluc3RhbmNlcyA9IFtdO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKGNoYW5nZXMucmVuZGVyaW5nIHx8IGNoYW5nZXMucmVuZGVyaW5ncykge1xyXG4gICAgICB0aGlzLl9yZW5kZXIoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nRG9DaGVjaygpIHtcclxuICAgIGlmICghdGhpcy5fZGlmZmVyIHx8ICF0aGlzLl9pbnB1dHMgfHwgdGhpcy5fY29tcG9uZW50SW5zdGFuY2VzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY2hhbmdlcyA9IHRoaXMuX2RpZmZlci5kaWZmKHRoaXMuX2lucHV0cyk7XHJcbiAgICBpZiAoIWNoYW5nZXMpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdXBkYXRlczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xyXG4gICAgY2hhbmdlcy5mb3JFYWNoUmVtb3ZlZEl0ZW0oKGNoYW5nZSkgPT4gKHVwZGF0ZXNbY2hhbmdlLmtleV0gPSBudWxsKSk7XHJcbiAgICBjaGFuZ2VzLmZvckVhY2hBZGRlZEl0ZW0oKGNoYW5nZSkgPT4gKHVwZGF0ZXNbY2hhbmdlLmtleV0gPSBjaGFuZ2UuY3VycmVudFZhbHVlKSk7XHJcbiAgICBjaGFuZ2VzLmZvckVhY2hDaGFuZ2VkSXRlbSgoY2hhbmdlKSA9PiAodXBkYXRlc1tjaGFuZ2Uua2V5XSA9IGNoYW5nZS5jdXJyZW50VmFsdWUpKTtcclxuICAgIHRoaXMuX2NvbXBvbmVudEluc3RhbmNlcy5mb3JFYWNoKChjb21wb25lbnRJbnN0YW5jZSkgPT5cclxuICAgICAgdGhpcy5fc2V0Q29tcG9uZW50SW5wdXRzKGNvbXBvbmVudEluc3RhbmNlLCB1cGRhdGVzKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3NldENvbXBvbmVudElucHV0cyhjb21wb25lbnRJbnN0YW5jZTogYW55LCBpbnB1dHM6IHsgW2tleTogc3RyaW5nXTogYW55IH0pIHtcclxuICAgIE9iamVjdC5lbnRyaWVzKGlucHV0cykuZm9yRWFjaChcclxuICAgICAgKFtpbnB1dCwgaW5wdXRWYWx1ZV0pID0+IChjb21wb25lbnRJbnN0YW5jZVtpbnB1dF0gPSBpbnB1dFZhbHVlKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3N1YnNjcmliZUNvbXBvbmVudE91dHB1dHMoXHJcbiAgICBjb21wb25lbnRJbnN0YW5jZTogYW55LFxyXG4gICAgb3V0cHV0czogeyBbazogc3RyaW5nXTogKGV2ZW50VHlwZTogYW55KSA9PiB2b2lkIH1cclxuICApIHtcclxuICAgIE9iamVjdC5rZXlzKG91dHB1dHMpXHJcbiAgICAgIC5maWx0ZXIoXHJcbiAgICAgICAgKG91dHB1dCkgPT4gY29tcG9uZW50SW5zdGFuY2Vbb3V0cHV0XSAmJiBjb21wb25lbnRJbnN0YW5jZVtvdXRwdXRdIGluc3RhbmNlb2YgT2JzZXJ2YWJsZVxyXG4gICAgICApXHJcbiAgICAgIC5mb3JFYWNoKChvdXRwdXQpID0+XHJcbiAgICAgICAgKGNvbXBvbmVudEluc3RhbmNlW291dHB1dF0gYXMgT2JzZXJ2YWJsZTxhbnk+KVxyXG4gICAgICAgICAgLnBpcGUodGFrZVdoaWxlKCgpID0+ICF0aGlzLmRlc3Ryb3llZCkpXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKG91dHB1dHNbb3V0cHV0XSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3JlbmRlcigpIHtcclxuICAgIHRoaXMuX2NvbXBvbmVudEluc3RhbmNlcyA9IFtdO1xyXG4gICAgdGhpcy52aWV3LmNsZWFyKCk7XHJcblxyXG4gICAgaWYgKCF0aGlzLnJlbmRlcmluZyAmJiAhdGhpcy5yZW5kZXJpbmdzKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMubmFtZSAmJiAhdGhpcy5yZW5kZXJpbmdzKSB7XHJcbiAgICAgIGNvbnNvbGUud2FybihcclxuICAgICAgICAnUGxhY2Vob2xkZXIgbmFtZSB3YXMgbm90IHNwZWNpZmllZCwgYW5kIGV4cGxpY2l0IHJlbmRlcmluZ3MgYXJyYXkgd2FzIG5vdCBwYXNzZWQuIFBsYWNlaG9sZGVyIHJlcXVpcmVzIGVpdGhlciBuYW1lIGFuZCByZW5kZXJpbmcsIG9yIHJlbmRlcmluZ3MuJ1xyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcGxhY2Vob2xkZXIgPSB0aGlzLnJlbmRlcmluZ3MgfHwgZ2V0UGxhY2Vob2xkZXIodGhpcy5yZW5kZXJpbmcsIHRoaXMubmFtZSB8fCAnJyk7XHJcblxyXG4gICAgaWYgKCFwbGFjZWhvbGRlcikge1xyXG4gICAgICBjb25zb2xlLndhcm4oXHJcbiAgICAgICAgYFBsYWNlaG9sZGVyICcke3RoaXMubmFtZX0nIHdhcyBub3QgZm91bmQgaW4gdGhlIGN1cnJlbnQgcmVuZGVyaW5nIGRhdGFgLFxyXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMucmVuZGVyaW5nLCBudWxsLCAyKVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gaWYgdGhlIHBsYWNlaG9sZGVyIGlzIGVtcHR5IChjb250YWlucyBvbmx5IHJhdyByZW5kZXJpbmdzKSwgdGhlbiB3ZSBtYXkgbmVlZCB0byB1c2UgdGhlIGVtcHR5IHRlbXBsYXRlIGlmIGl0J3MgZGVmaW5lZFxyXG4gICAgY29uc3QgcGxhY2Vob2xkZXJJc0VtcHR5ID0gcGxhY2Vob2xkZXIuZXZlcnkoXHJcbiAgICAgIChyZW5kZXJpbmc6IENvbXBvbmVudFJlbmRlcmluZyB8IEh0bWxFbGVtZW50UmVuZGVyaW5nKSA9PiBpc1Jhd1JlbmRlcmluZyhyZW5kZXJpbmcpXHJcbiAgICApO1xyXG5cclxuICAgIGlmICh0aGlzLnJlbmRlckVtcHR5VGVtcGxhdGUgJiYgcGxhY2Vob2xkZXJJc0VtcHR5KSB7XHJcbiAgICAgIHRoaXMudmlldy5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5yZW5kZXJFbXB0eVRlbXBsYXRlLnRlbXBsYXRlUmVmLCB7XHJcbiAgICAgICAgcmVuZGVyaW5nczogcGxhY2Vob2xkZXIsXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jb21wb25lbnRGYWN0b3J5XHJcbiAgICAgICAgLmdldENvbXBvbmVudHMocGxhY2Vob2xkZXIpXHJcbiAgICAgICAgLnRoZW4oKGNvbXBvbmVudHMpID0+XHJcbiAgICAgICAgICBjb21wb25lbnRzLmZvckVhY2goKHJlbmRlcmluZywgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMucmVuZGVyRWFjaFRlbXBsYXRlICYmICFpc1Jhd1JlbmRlcmluZyhyZW5kZXJpbmcuY29tcG9uZW50RGVmaW5pdGlvbikpIHtcclxuICAgICAgICAgICAgICB0aGlzLl9yZW5kZXJUZW1wbGF0ZWRDb21wb25lbnQocmVuZGVyaW5nLmNvbXBvbmVudERlZmluaXRpb24sIGluZGV4KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLl9yZW5kZXJFbWJlZGRlZENvbXBvbmVudChyZW5kZXJpbmcsIGluZGV4KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApXHJcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgIHRoaXMubG9hZGVkLmVtaXQodGhpcy5uYW1lKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3JlbmRlclRlbXBsYXRlZENvbXBvbmVudChcclxuICAgIHJlbmRlcmluZzogQ29tcG9uZW50UmVuZGVyaW5nIHwgSHRtbEVsZW1lbnRSZW5kZXJpbmcsXHJcbiAgICBpbmRleDogbnVtYmVyXHJcbiAgKSB7XHJcbiAgICAvLyB0aGUgcmVuZGVyLWVhY2ggdGVtcGxhdGUgdGFrZXMgY2FyZSBvZiBhbGwgY29tcG9uZW50IG1hcHBpbmcgZXRjXHJcbiAgICAvLyBnZW5lcmFsbHkgdXNpbmcgPHNjLXJlbmRlci1jb21wb25lbnQ+IHdoaWNoIGlzIGFib3V0IGxpa2UgX3JlbmRlckVtYmVkZGVkQ29tcG9uZW50KClcclxuICAgIC8vIGFzIGEgc2VwYXJhdGUgY29tcG9uZW50XHJcbiAgICB0aGlzLnZpZXcuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMucmVuZGVyRWFjaFRlbXBsYXRlLnRlbXBsYXRlUmVmLCB7XHJcbiAgICAgIHJlbmRlcmluZyxcclxuICAgICAgaW5kZXgsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3JlbmRlckVtYmVkZGVkQ29tcG9uZW50KHJlbmRlcmluZzogQ29tcG9uZW50RmFjdG9yeVJlc3VsdCwgaW5kZXg6IG51bWJlcikge1xyXG4gICAgaWYgKCFyZW5kZXJpbmcuY29tcG9uZW50SW1wbGVtZW50YXRpb24pIHtcclxuICAgICAgY29uc3QgY29tcG9uZW50TmFtZSA9IChyZW5kZXJpbmcuY29tcG9uZW50RGVmaW5pdGlvbiBhcyBDb21wb25lbnRSZW5kZXJpbmcpLmNvbXBvbmVudE5hbWU7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoXHJcbiAgICAgICAgYFBsYWNlaG9sZGVyICR7dGhpcy5uYW1lfSBjb250YWlucyB1bmtub3duIGNvbXBvbmVudCAke2NvbXBvbmVudE5hbWV9LmAsXHJcbiAgICAgICAgYEVuc3VyZSBjb21wb25lbnQgaXMgbWFwcGVkLCBsaWtlOlxyXG4gICAgICAgIEpzc01vZHVsZS53aXRoQ29tcG9uZW50cyhbXHJcbiAgICAgICAgICB7IG5hbWU6ICcke2NvbXBvbmVudE5hbWV9JywgdHlwZTogJHtjb21wb25lbnROYW1lfUNvbXBvbmVudCB9XHJcbiAgICAgICAgXSlgXHJcbiAgICAgICk7XHJcblxyXG4gICAgICByZW5kZXJpbmcuY29tcG9uZW50SW1wbGVtZW50YXRpb24gPSB0aGlzLm1pc3NpbmdDb21wb25lbnRDb21wb25lbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY29tcG9uZW50RmFjdG9yeSA9XHJcbiAgICAgIHJlbmRlcmluZy5jb21wb25lbnRGYWN0b3J5IHx8XHJcbiAgICAgIHRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KHJlbmRlcmluZy5jb21wb25lbnRJbXBsZW1lbnRhdGlvbik7XHJcblxyXG4gICAgLy8gYXBwbHkgdGhlIHBhcmVudCBzdHlsZSBhdHRyaWJ1dGUgX25nY29udGVudFxyXG4gICAgLy8gd29yay1hcm91bmQgZm9yIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzEyMjE1XHJcbiAgICBjb25zdCBjcmVhdGVkQ29tcG9uZW50UmVmID0gdGhpcy52aWV3LmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnRGYWN0b3J5LCBpbmRleCk7XHJcbiAgICBpZiAodGhpcy5wYXJlbnRTdHlsZUF0dHJpYnV0ZSkge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShcclxuICAgICAgICBjcmVhdGVkQ29tcG9uZW50UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQsXHJcbiAgICAgICAgdGhpcy5wYXJlbnRTdHlsZUF0dHJpYnV0ZSxcclxuICAgICAgICAnJ1xyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNvbXBvbmVudEluc3RhbmNlID0gY3JlYXRlZENvbXBvbmVudFJlZi5pbnN0YW5jZTtcclxuICAgIGNvbXBvbmVudEluc3RhbmNlLnJlbmRlcmluZyA9IHJlbmRlcmluZy5jb21wb25lbnREZWZpbml0aW9uO1xyXG4gICAgaWYgKHRoaXMuX2lucHV0cykge1xyXG4gICAgICB0aGlzLl9zZXRDb21wb25lbnRJbnB1dHMoY29tcG9uZW50SW5zdGFuY2UsIHRoaXMuX2lucHV0cyk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5vdXRwdXRzKSB7XHJcbiAgICAgIHRoaXMuX3N1YnNjcmliZUNvbXBvbmVudE91dHB1dHMoY29tcG9uZW50SW5zdGFuY2UsIHRoaXMub3V0cHV0cyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9jb21wb25lbnRJbnN0YW5jZXMucHVzaChjb21wb25lbnRJbnN0YW5jZSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import { InjectionToken } from '@angular/core';
|
|
2
|
-
/** Registers a statically loaded component */
|
|
3
|
-
export class ComponentNameAndType {
|
|
4
|
-
}
|
|
5
|
-
/**
|
|
6
|
-
* @param {any} object
|
|
7
|
-
*/
|
|
8
|
-
export function instanceOfComponentNameAndType(object) {
|
|
9
|
-
return 'type' in object;
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* @param {any} object
|
|
13
|
-
*/
|
|
14
|
-
export function instanceOfComponentNameAndModule(object) {
|
|
15
|
-
return '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 DYNAMIC_COMPONENT = new InjectionToken('Sc.placeholder.dynamicComponent');
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
/** Registers a statically loaded component */
|
|
3
|
+
export class ComponentNameAndType {
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* @param {any} object
|
|
7
|
+
*/
|
|
8
|
+
export function instanceOfComponentNameAndType(object) {
|
|
9
|
+
return 'type' in object;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* @param {any} object
|
|
13
|
+
*/
|
|
14
|
+
export function instanceOfComponentNameAndModule(object) {
|
|
15
|
+
return '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 DYNAMIC_COMPONENT = new InjectionToken('Sc.placeholder.dynamicComponent');
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Vob2xkZXIudG9rZW4uanMiLCJzb3VyY2VSb290IjoiL2hvbWUvdnN0cy93b3JrLzEvcy9wYWNrYWdlcy9zaXRlY29yZS1qc3MtYW5ndWxhci9zcmMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL3BsYWNlaG9sZGVyLnRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFFckQsOENBQThDO0FBQzlDLE1BQU0sT0FBTyxvQkFBb0I7Q0FHaEM7QUFhRDs7R0FFRztBQUNILE1BQU0sVUFBVSw4QkFBOEIsQ0FBQyxNQUFXO0lBQ3hELE9BQU8sTUFBTSxJQUFJLE1BQU0sQ0FBQztBQUMxQixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsZ0NBQWdDLENBQUMsTUFBVztJQUMxRCxPQUFPLFFBQVEsSUFBSSxNQUFNLENBQUM7QUFDNUIsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLElBQUksY0FBYyxDQUN0RCwyQkFBMkIsQ0FDNUIsQ0FBQztBQUNGLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLElBQUksY0FBYyxDQUMzRCwrQkFBK0IsQ0FDaEMsQ0FBQztBQUNGLE1BQU0sQ0FBQyxNQUFNLHVDQUF1QyxHQUFHLElBQUksY0FBYyxDQUN2RSwwQ0FBMEMsQ0FDM0MsQ0FBQztBQUNGLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLElBQUksY0FBYyxDQUNqRCxpQ0FBaUMsQ0FDbEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG4vKiogUmVnaXN0ZXJzIGEgc3RhdGljYWxseSBsb2FkZWQgY29tcG9uZW50ICovXHJcbmV4cG9ydCBjbGFzcyBDb21wb25lbnROYW1lQW5kVHlwZSB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIHR5cGU6IFR5cGU8YW55PjtcclxufVxyXG5cclxuLyoqIFJlZ2lzdGVycyBhIGxhemlseSBsb2FkZWQgY29tcG9uZW50IGJ5IG5hbWUgYW5kIG1vZHVsZSB0byBsYXp5IGxvYWQgd2hlbiBpdCdzIG5lZWRlZCAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudE5hbWVBbmRNb2R1bGUge1xyXG4gIC8qKiBOYW1lIG9mIHRoZSBjb21wb25lbnQgKi9cclxuICBwYXRoOiBzdHJpbmc7XHJcbiAgLyoqXHJcbiAgICogRHluYW1pYyBpbXBvcnQgb2YgdGhlIGNvbXBvbmVudCxcclxuICAgKiBlLmcuICgpID0+IGltcG9ydCgnLi9wYXRoL3RvL2xhenlsb2FkZWRjb21wb25lbnQubW9kdWxlJykudGhlbihtID0+IG0uTGF6eUxvYWRlZENvbXBvbmVudE1vZHVsZUV4cG9ydE5hbWUpXHJcbiAgICovXHJcbiAgbG9hZENoaWxkcmVuOiAoKSA9PiBQcm9taXNlPGFueT47XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBAcGFyYW0ge2FueX0gb2JqZWN0XHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFuY2VPZkNvbXBvbmVudE5hbWVBbmRUeXBlKG9iamVjdDogYW55KTogb2JqZWN0IGlzIENvbXBvbmVudE5hbWVBbmRUeXBlIHtcclxuICByZXR1cm4gJ3R5cGUnIGluIG9iamVjdDtcclxufVxyXG5cclxuLyoqXHJcbiAqIEBwYXJhbSB7YW55fSBvYmplY3RcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW5jZU9mQ29tcG9uZW50TmFtZUFuZE1vZHVsZShvYmplY3Q6IGFueSk6IG9iamVjdCBpcyBDb21wb25lbnROYW1lQW5kTW9kdWxlIHtcclxuICByZXR1cm4gJ21vZHVsZScgaW4gb2JqZWN0O1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgUExBQ0VIT0xERVJfQ09NUE9ORU5UUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxDb21wb25lbnROYW1lQW5kVHlwZVtdPihcclxuICAnU2MucGxhY2Vob2xkZXIuY29tcG9uZW50cydcclxuKTtcclxuZXhwb3J0IGNvbnN0IFBMQUNFSE9MREVSX0xBWllfQ09NUE9ORU5UUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxDb21wb25lbnROYW1lQW5kVHlwZVtdPihcclxuICAnU2MucGxhY2Vob2xkZXIubGF6eUNvbXBvbmVudHMnXHJcbik7XHJcbmV4cG9ydCBjb25zdCBQTEFDRUhPTERFUl9NSVNTSU5HX0NPTVBPTkVOVF9DT01QT05FTlQgPSBuZXcgSW5qZWN0aW9uVG9rZW48VHlwZTxhbnk+PihcclxuICAnU2MucGxhY2Vob2xkZXIubWlzc2luZ0NvbXBvbmVudENvbXBvbmVudCdcclxuKTtcclxuZXhwb3J0IGNvbnN0IERZTkFNSUNfQ09NUE9ORU5UID0gbmV3IEluamVjdGlvblRva2VuPFR5cGU8YW55PiB8IHsgW3M6IHN0cmluZ106IGFueSB9PihcclxuICAnU2MucGxhY2Vob2xkZXIuZHluYW1pY0NvbXBvbmVudCdcclxuKTtcclxuIl19
|
|
@@ -1,37 +1,37 @@
|
|
|
1
|
-
import { Component, ElementRef, Input, Renderer2 } from '@angular/core';
|
|
2
|
-
export class RawComponent {
|
|
3
|
-
constructor(renderer, elementRef) {
|
|
4
|
-
this.renderer = renderer;
|
|
5
|
-
this.elementRef = elementRef;
|
|
6
|
-
}
|
|
7
|
-
ngOnInit() {
|
|
8
|
-
const el = this.renderer.createElement(this.rendering.name);
|
|
9
|
-
const contents = this.renderer.createText(this.rendering.contents || '');
|
|
10
|
-
const attributes = this.rendering.attributes;
|
|
11
|
-
for (const attr in attributes) {
|
|
12
|
-
// eslint-disable-next-line no-prototype-builtins
|
|
13
|
-
if (attributes.hasOwnProperty(attr)) {
|
|
14
|
-
const value = attributes[attr];
|
|
15
|
-
this.renderer.setAttribute(el, attr, value || '');
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
this.renderer.appendChild(el, contents);
|
|
19
|
-
const parentNode = this.renderer.parentNode(this.elementRef.nativeElement);
|
|
20
|
-
this.renderer.insertBefore(parentNode, el, this.elementRef.nativeElement);
|
|
21
|
-
parentNode.removeChild(this.elementRef.nativeElement);
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
RawComponent.decorators = [
|
|
25
|
-
{ type: Component, args: [{
|
|
26
|
-
selector: 'sc-raw',
|
|
27
|
-
template: ''
|
|
28
|
-
},] }
|
|
29
|
-
];
|
|
30
|
-
RawComponent.ctorParameters = () => [
|
|
31
|
-
{ type: Renderer2 },
|
|
32
|
-
{ type: ElementRef }
|
|
33
|
-
];
|
|
34
|
-
RawComponent.propDecorators = {
|
|
35
|
-
rendering: [{ type: Input }]
|
|
36
|
-
};
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Component, ElementRef, Input, Renderer2 } from '@angular/core';
|
|
2
|
+
export class RawComponent {
|
|
3
|
+
constructor(renderer, elementRef) {
|
|
4
|
+
this.renderer = renderer;
|
|
5
|
+
this.elementRef = elementRef;
|
|
6
|
+
}
|
|
7
|
+
ngOnInit() {
|
|
8
|
+
const el = this.renderer.createElement(this.rendering.name);
|
|
9
|
+
const contents = this.renderer.createText(this.rendering.contents || '');
|
|
10
|
+
const attributes = this.rendering.attributes;
|
|
11
|
+
for (const attr in attributes) {
|
|
12
|
+
// eslint-disable-next-line no-prototype-builtins
|
|
13
|
+
if (attributes.hasOwnProperty(attr)) {
|
|
14
|
+
const value = attributes[attr];
|
|
15
|
+
this.renderer.setAttribute(el, attr, value || '');
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
this.renderer.appendChild(el, contents);
|
|
19
|
+
const parentNode = this.renderer.parentNode(this.elementRef.nativeElement);
|
|
20
|
+
this.renderer.insertBefore(parentNode, el, this.elementRef.nativeElement);
|
|
21
|
+
parentNode.removeChild(this.elementRef.nativeElement);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
RawComponent.decorators = [
|
|
25
|
+
{ type: Component, args: [{
|
|
26
|
+
selector: 'sc-raw',
|
|
27
|
+
template: ''
|
|
28
|
+
},] }
|
|
29
|
+
];
|
|
30
|
+
RawComponent.ctorParameters = () => [
|
|
31
|
+
{ type: Renderer2 },
|
|
32
|
+
{ type: ElementRef }
|
|
33
|
+
];
|
|
34
|
+
RawComponent.propDecorators = {
|
|
35
|
+
rendering: [{ type: Input }]
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS92c3RzL3dvcmsvMS9zL3BhY2thZ2VzL3NpdGVjb3JlLWpzcy1hbmd1bGFyL3NyYy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvcmF3LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBT2hGLE1BQU0sT0FBTyxZQUFZO0lBR3ZCLFlBQW9CLFFBQW1CLEVBQVUsVUFBc0I7UUFBbkQsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUFVLGVBQVUsR0FBVixVQUFVLENBQVk7SUFBRyxDQUFDO0lBRTNFLFFBQVE7UUFDTixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3pFLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDO1FBQzdDLEtBQUssTUFBTSxJQUFJLElBQUksVUFBVSxFQUFFO1lBQzdCLGlEQUFpRDtZQUNqRCxJQUFLLFVBQWtCLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUM1QyxNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2FBQ25EO1NBQ0Y7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDeEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMzRSxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDMUUsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3hELENBQUM7OztZQXpCRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLFFBQVEsRUFBRSxFQUFFO2FBQ2I7OztZQU44QyxTQUFTO1lBQXBDLFVBQVU7Ozt3QkFRM0IsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE9uSW5pdCwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0bWxFbGVtZW50UmVuZGVyaW5nIH0gZnJvbSAnQHNpdGVjb3JlLWpzcy9zaXRlY29yZS1qc3MnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzYy1yYXcnLFxyXG4gIHRlbXBsYXRlOiAnJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFJhd0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgcmVuZGVyaW5nOiBIdG1sRWxlbWVudFJlbmRlcmluZztcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLCBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHt9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgY29uc3QgZWwgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQodGhpcy5yZW5kZXJpbmcubmFtZSk7XHJcbiAgICBjb25zdCBjb250ZW50cyA9IHRoaXMucmVuZGVyZXIuY3JlYXRlVGV4dCh0aGlzLnJlbmRlcmluZy5jb250ZW50cyB8fCAnJyk7XHJcbiAgICBjb25zdCBhdHRyaWJ1dGVzID0gdGhpcy5yZW5kZXJpbmcuYXR0cmlidXRlcztcclxuICAgIGZvciAoY29uc3QgYXR0ciBpbiBhdHRyaWJ1dGVzKSB7XHJcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcclxuICAgICAgaWYgKChhdHRyaWJ1dGVzIGFzIGFueSkuaGFzT3duUHJvcGVydHkoYXR0cikpIHtcclxuICAgICAgICBjb25zdCB2YWx1ZSA9IGF0dHJpYnV0ZXNbYXR0cl07XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoZWwsIGF0dHIsIHZhbHVlIHx8ICcnKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQoZWwsIGNvbnRlbnRzKTtcclxuICAgIGNvbnN0IHBhcmVudE5vZGUgPSB0aGlzLnJlbmRlcmVyLnBhcmVudE5vZGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5pbnNlcnRCZWZvcmUocGFyZW50Tm9kZSwgZWwsIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcclxuICAgIHBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xyXG4gIH1cclxufVxyXG4iXX0=
|