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