@sitecore-jss/sitecore-jss-angular 15.0.1 → 15.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/LICENSE.txt +202 -202
  2. package/README.md +5 -5
  3. package/dist/README.md +5 -5
  4. package/dist/bundles/sitecore-jss-sitecore-jss-angular.umd.js +1 -1
  5. package/dist/bundles/sitecore-jss-sitecore-jss-angular.umd.js.map +1 -1
  6. package/dist/bundles/sitecore-jss-sitecore-jss-angular.umd.min.js +1 -1
  7. package/dist/bundles/sitecore-jss-sitecore-jss-angular.umd.min.js.map +1 -1
  8. package/dist/esm2015/components/date.directive.js +1 -1
  9. package/dist/esm2015/components/file.directive.js +1 -1
  10. package/dist/esm2015/components/generic-link.directive.js +1 -1
  11. package/dist/esm2015/components/image.directive.js +1 -1
  12. package/dist/esm2015/components/link.directive.js +1 -1
  13. package/dist/esm2015/components/missing-component.component.js +1 -1
  14. package/dist/esm2015/components/placeholder-loading.directive.js +1 -1
  15. package/dist/esm2015/components/placeholder.component.js +1 -1
  16. package/dist/esm2015/components/placeholder.token.js +1 -1
  17. package/dist/esm2015/components/raw.component.js +1 -1
  18. package/dist/esm2015/components/render-component.component.js +1 -1
  19. package/dist/esm2015/components/render-each.directive.js +1 -1
  20. package/dist/esm2015/components/render-empty.directive.js +1 -1
  21. package/dist/esm2015/components/rendering-field.js +1 -1
  22. package/dist/esm2015/components/rendering.js +1 -1
  23. package/dist/esm2015/components/rich-text.directive.js +1 -1
  24. package/dist/esm2015/components/router-link.directive.js +2 -2
  25. package/dist/esm2015/components/text.directive.js +1 -1
  26. package/dist/esm2015/jss-component-factory.service.js +1 -1
  27. package/dist/esm2015/layout-service-error.js +1 -1
  28. package/dist/esm2015/layout.service.js +1 -1
  29. package/dist/esm2015/lib.module.js +1 -1
  30. package/dist/esm2015/public_api.js +1 -1
  31. package/dist/esm2015/sitecore-jss-sitecore-jss-angular.js +1 -1
  32. package/dist/fesm2015/sitecore-jss-sitecore-jss-angular.js +1 -1
  33. package/dist/fesm2015/sitecore-jss-sitecore-jss-angular.js.map +1 -1
  34. package/dist/package.json +2 -2
  35. package/package.json +3 -3
  36. package/typings/README.md +2 -2
  37. package/__ivy_ngcc__/dist/esm2015/components/date.directive.js +0 -74
  38. package/__ivy_ngcc__/dist/esm2015/components/file.directive.js +0 -50
  39. package/__ivy_ngcc__/dist/esm2015/components/generic-link.directive.js +0 -77
  40. package/__ivy_ngcc__/dist/esm2015/components/image.directive.js +0 -145
  41. package/__ivy_ngcc__/dist/esm2015/components/link.directive.js +0 -114
  42. package/__ivy_ngcc__/dist/esm2015/components/missing-component.component.js +0 -35
  43. package/__ivy_ngcc__/dist/esm2015/components/placeholder-loading.directive.js +0 -19
  44. package/__ivy_ngcc__/dist/esm2015/components/placeholder.component.js +0 -252
  45. package/__ivy_ngcc__/dist/esm2015/components/placeholder.token.js +0 -15
  46. package/__ivy_ngcc__/dist/esm2015/components/raw.component.js +0 -42
  47. package/__ivy_ngcc__/dist/esm2015/components/render-component.component.js +0 -116
  48. package/__ivy_ngcc__/dist/esm2015/components/render-each.directive.js +0 -20
  49. package/__ivy_ngcc__/dist/esm2015/components/render-empty.directive.js +0 -20
  50. package/__ivy_ngcc__/dist/esm2015/components/rendering.js +0 -4
  51. package/__ivy_ngcc__/dist/esm2015/components/rich-text.directive.js +0 -52
  52. package/__ivy_ngcc__/dist/esm2015/components/router-link.directive.js +0 -60
  53. package/__ivy_ngcc__/dist/esm2015/components/text.directive.js +0 -69
  54. package/__ivy_ngcc__/dist/esm2015/jss-component-factory.service.js +0 -103
  55. package/__ivy_ngcc__/dist/esm2015/layout-service-error.js +0 -3
  56. package/__ivy_ngcc__/dist/esm2015/layout.service.js +0 -33
  57. package/__ivy_ngcc__/dist/esm2015/lib.module.js +0 -146
  58. package/__ivy_ngcc__/dist/esm2015/public_api.js +0 -16
  59. package/__ivy_ngcc__/dist/esm2015/sitecore-jss-sitecore-jss-angular.js +0 -13
@@ -1,252 +0,0 @@
1
- import { ChangeDetectorRef, Component, ComponentFactoryResolver, ContentChild, ElementRef, EventEmitter, Inject, Input, KeyValueDiffers, Output, Renderer2, Type, ViewChild, ViewContainerRef, } from '@angular/core';
2
- import { Observable } from 'rxjs';
3
- import { takeWhile } from 'rxjs/operators';
4
- import { JssComponentFactoryService } from '../jss-component-factory.service';
5
- import { PlaceholderLoadingDirective } from './placeholder-loading.directive';
6
- import { PLACEHOLDER_MISSING_COMPONENT_COMPONENT } from './placeholder.token';
7
- import { RenderEachDirective } from './render-each.directive';
8
- import { RenderEmptyDirective } from './render-empty.directive';
9
- import { isRawRendering } from './rendering';
10
- import * as ɵngcc0 from '@angular/core';
11
- import * as ɵngcc1 from '@angular/common';
12
-
13
- const _c0 = ["view"];
14
- function PlaceholderComponent_0_ng_template_0_Template(rf, ctx) { }
15
- function PlaceholderComponent_0_Template(rf, ctx) { if (rf & 1) {
16
- ɵngcc0.ɵɵtemplate(0, PlaceholderComponent_0_ng_template_0_Template, 0, 0, "ng-template", 2);
17
- } if (rf & 2) {
18
- const ctx_r0 = ɵngcc0.ɵɵnextContext();
19
- ɵngcc0.ɵɵproperty("ngTemplateOutlet", ctx_r0.placeholderLoading == null ? null : ctx_r0.placeholderLoading.templateRef);
20
- } }
21
- function PlaceholderComponent_ng_template_1_Template(rf, ctx) { }
22
- function getPlaceholder(rendering, name) {
23
- if (rendering && rendering.placeholders && Object.keys(rendering.placeholders).length > 0) {
24
- return rendering.placeholders[name];
25
- }
26
- return null;
27
- }
28
- export class PlaceholderComponent {
29
- constructor(componentFactoryResolver, differs, componentFactory, changeDetectorRef, elementRef, renderer, missingComponentComponent) {
30
- this.componentFactoryResolver = componentFactoryResolver;
31
- this.differs = differs;
32
- this.componentFactory = componentFactory;
33
- this.changeDetectorRef = changeDetectorRef;
34
- this.elementRef = elementRef;
35
- this.renderer = renderer;
36
- this.missingComponentComponent = missingComponentComponent;
37
- this._componentInstances = [];
38
- this.destroyed = false;
39
- this.parentStyleAttribute = '';
40
- this.isLoading = true;
41
- this.loaded = new EventEmitter();
42
- }
43
- set inputs(value) {
44
- this._inputs = value;
45
- if (!this._differ && value) {
46
- this._differ = this.differs.find(value).create();
47
- }
48
- }
49
- ngOnInit() {
50
- // just to ensure the element exists
51
- const elem = this.elementRef.nativeElement;
52
- if (elem) {
53
- const attributes = elem.attributes;
54
- for (let i = 0; i < attributes.length; i++) {
55
- const attr = attributes.item(i);
56
- if (attr && attr.name.indexOf('_ngcontent') !== -1) {
57
- this.parentStyleAttribute = attr.name;
58
- }
59
- }
60
- }
61
- }
62
- ngOnDestroy() {
63
- this.destroyed = true;
64
- this._componentInstances = [];
65
- }
66
- ngOnChanges(changes) {
67
- if (changes['rendering'] || changes['renderings']) {
68
- this._render();
69
- }
70
- }
71
- ngDoCheck() {
72
- if (!this._differ || !this._inputs || this._componentInstances.length === 0) {
73
- return;
74
- }
75
- const changes = this._differ.diff(this._inputs);
76
- if (!changes) {
77
- return;
78
- }
79
- const updates = {};
80
- changes.forEachRemovedItem((change) => updates[change.key] = null);
81
- changes.forEachAddedItem((change) => updates[change.key] = change.currentValue);
82
- changes.forEachChangedItem((change) => updates[change.key] = change.currentValue);
83
- this._componentInstances.forEach((componentInstance) => this._setComponentInputs(componentInstance, updates));
84
- }
85
- _setComponentInputs(componentInstance, inputs) {
86
- Object.entries(inputs).forEach(([input, inputValue]) => componentInstance[input] = inputValue);
87
- }
88
- _subscribeComponentOutputs(componentInstance, outputs) {
89
- Object.keys(outputs)
90
- .filter((output) => componentInstance[output] && componentInstance[output] instanceof Observable)
91
- .forEach((output) => componentInstance[output]
92
- .pipe(takeWhile(() => !this.destroyed))
93
- .subscribe(outputs[output]));
94
- }
95
- _render() {
96
- this._componentInstances = [];
97
- this.view.clear();
98
- if (!this.rendering && !this.renderings) {
99
- return;
100
- }
101
- if (!this.name && !this.renderings) {
102
- // tslint:disable-next-line:max-line-length
103
- console.warn(`Placeholder name was not specified, and explicit renderings array was not passed. Placeholder requires either name and rendering, or renderings.`);
104
- this.isLoading = false;
105
- return;
106
- }
107
- const placeholder = this.renderings || getPlaceholder(this.rendering, this.name || '');
108
- if (!placeholder) {
109
- console.warn(`Placeholder '${this.name}' was not found in the current rendering data`, JSON.stringify(this.rendering, null, 2));
110
- this.isLoading = false;
111
- return;
112
- }
113
- // if the placeholder is empty (contains only raw renderings), then we may need to use the empty template if it's defined
114
- const placeholderIsEmpty = placeholder.every((rendering) => isRawRendering(rendering));
115
- if (this.renderEmptyTemplate && placeholderIsEmpty) {
116
- this.view.createEmbeddedView(this.renderEmptyTemplate.templateRef, {
117
- renderings: placeholder,
118
- });
119
- this.isLoading = false;
120
- }
121
- else {
122
- this.componentFactory.getComponents(placeholder)
123
- .then((components) => components.forEach((rendering, index) => {
124
- if (this.renderEachTemplate && !isRawRendering(rendering.componentDefinition)) {
125
- this._renderTemplatedComponent(rendering.componentDefinition, index);
126
- }
127
- else {
128
- this._renderEmbeddedComponent(rendering, index);
129
- }
130
- this.isLoading = false;
131
- })).then(() => {
132
- this.changeDetectorRef.markForCheck();
133
- this.loaded.emit(this.name);
134
- });
135
- }
136
- }
137
- _renderTemplatedComponent(rendering, index) {
138
- // the render-each template takes care of all component mapping etc
139
- // generally using <sc-render-component> which is about like _renderEmbeddedComponent()
140
- // as a separate component
141
- this.view.createEmbeddedView(this.renderEachTemplate.templateRef, {
142
- rendering,
143
- index,
144
- });
145
- }
146
- _renderEmbeddedComponent(rendering, index) {
147
- if (!rendering.componentImplementation) {
148
- const componentName = rendering.componentDefinition.componentName;
149
- console.error(`Placeholder ${this.name} contains unknown component ${componentName}.`, `Ensure component is mapped, like:
150
- JssModule.withComponents([
151
- { name: '${componentName}', type: ${componentName}Component }
152
- ])`);
153
- rendering.componentImplementation = this.missingComponentComponent;
154
- }
155
- const componentFactory = rendering.componentFactory || this.componentFactoryResolver.resolveComponentFactory(rendering.componentImplementation);
156
- // apply the parent style attribute _ngcontent
157
- // work-around for https://github.com/angular/angular/issues/12215
158
- const createdComponentRef = this.view.createComponent(componentFactory, index);
159
- if (this.parentStyleAttribute) {
160
- this.renderer.setAttribute(createdComponentRef.location.nativeElement, this.parentStyleAttribute, '');
161
- }
162
- const componentInstance = createdComponentRef.instance;
163
- componentInstance.rendering = rendering.componentDefinition;
164
- if (this._inputs) {
165
- this._setComponentInputs(componentInstance, this._inputs);
166
- }
167
- if (this.outputs) {
168
- this._subscribeComponentOutputs(componentInstance, this.outputs);
169
- }
170
- this._componentInstances.push(componentInstance);
171
- }
172
- }
173
- PlaceholderComponent.ɵfac = function PlaceholderComponent_Factory(t) { return new (t || PlaceholderComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.KeyValueDiffers), ɵngcc0.ɵɵdirectiveInject(JssComponentFactoryService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(PLACEHOLDER_MISSING_COMPONENT_COMPONENT)); };
174
- PlaceholderComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: PlaceholderComponent, selectors: [["sc-placeholder"], ["", "sc-placeholder", ""]], contentQueries: function PlaceholderComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
175
- ɵngcc0.ɵɵstaticContentQuery(dirIndex, RenderEachDirective, true);
176
- ɵngcc0.ɵɵstaticContentQuery(dirIndex, RenderEmptyDirective, true);
177
- ɵngcc0.ɵɵstaticContentQuery(dirIndex, PlaceholderLoadingDirective, true);
178
- } if (rf & 2) {
179
- var _t;
180
- ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.renderEachTemplate = _t.first);
181
- ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.renderEmptyTemplate = _t.first);
182
- ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.placeholderLoading = _t.first);
183
- } }, viewQuery: function PlaceholderComponent_Query(rf, ctx) { if (rf & 1) {
184
- ɵngcc0.ɵɵstaticViewQuery(_c0, true, ViewContainerRef);
185
- } if (rf & 2) {
186
- var _t;
187
- ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.view = _t.first);
188
- } }, inputs: { inputs: "inputs", name: "name", rendering: "rendering", renderings: "renderings", outputs: "outputs" }, outputs: { loaded: "loaded" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 3, vars: 1, consts: [[4, "ngIf"], ["view", ""], [3, "ngTemplateOutlet"]], template: function PlaceholderComponent_Template(rf, ctx) { if (rf & 1) {
189
- ɵngcc0.ɵɵtemplate(0, PlaceholderComponent_0_Template, 1, 1, undefined, 0);
190
- ɵngcc0.ɵɵtemplate(1, PlaceholderComponent_ng_template_1_Template, 0, 0, "ng-template", null, 1, ɵngcc0.ɵɵtemplateRefExtractor);
191
- } if (rf & 2) {
192
- ɵngcc0.ɵɵproperty("ngIf", ctx.isLoading);
193
- } }, directives: [ɵngcc1.NgIf, ɵngcc1.NgTemplateOutlet], encapsulation: 2 });
194
- PlaceholderComponent.ctorParameters = () => [
195
- { type: ComponentFactoryResolver },
196
- { type: KeyValueDiffers },
197
- { type: JssComponentFactoryService },
198
- { type: ChangeDetectorRef },
199
- { type: ElementRef },
200
- { type: Renderer2 },
201
- { type: Type, decorators: [{ type: Inject, args: [PLACEHOLDER_MISSING_COMPONENT_COMPONENT,] }] }
202
- ];
203
- PlaceholderComponent.propDecorators = {
204
- name: [{ type: Input }],
205
- rendering: [{ type: Input }],
206
- renderings: [{ type: Input }],
207
- outputs: [{ type: Input }],
208
- loaded: [{ type: Output }],
209
- view: [{ type: ViewChild, args: ['view', { read: ViewContainerRef, static: true },] }],
210
- renderEachTemplate: [{ type: ContentChild, args: [RenderEachDirective, { static: true },] }],
211
- renderEmptyTemplate: [{ type: ContentChild, args: [RenderEmptyDirective, { static: true },] }],
212
- placeholderLoading: [{ type: ContentChild, args: [PlaceholderLoadingDirective, { static: true },] }],
213
- inputs: [{ type: Input }]
214
- };
215
- /*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(PlaceholderComponent, [{
216
- type: Component,
217
- args: [{
218
- selector: 'sc-placeholder,[sc-placeholder]',
219
- template: `
220
- <ng-template *ngIf="isLoading" [ngTemplateOutlet]="placeholderLoading?.templateRef"></ng-template>
221
- <ng-template #view></ng-template>
222
- `
223
- }]
224
- }], function () { return [{ type: ɵngcc0.ComponentFactoryResolver }, { type: ɵngcc0.KeyValueDiffers }, { type: JssComponentFactoryService }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.Type, decorators: [{
225
- type: Inject,
226
- args: [PLACEHOLDER_MISSING_COMPONENT_COMPONENT]
227
- }] }]; }, { loaded: [{
228
- type: Output
229
- }], inputs: [{
230
- type: Input
231
- }], name: [{
232
- type: Input
233
- }], rendering: [{
234
- type: Input
235
- }], renderings: [{
236
- type: Input
237
- }], outputs: [{
238
- type: Input
239
- }], view: [{
240
- type: ViewChild,
241
- args: ['view', { read: ViewContainerRef, static: true }]
242
- }], renderEachTemplate: [{
243
- type: ContentChild,
244
- args: [RenderEachDirective, { static: true }]
245
- }], renderEmptyTemplate: [{
246
- type: ContentChild,
247
- args: [RenderEmptyDirective, { static: true }]
248
- }], placeholderLoading: [{
249
- type: ContentChild,
250
- args: [PlaceholderLoadingDirective, { static: true }]
251
- }] }); })();
252
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Vob2xkZXIuY29tcG9uZW50LmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9wbGFjZWhvbGRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQXVCQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQywzQ0FBM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBMEIsMEJBQTBCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQyw5RUFBdEcsT0FBTyxFQUEwQiwwQkFBMEIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RHLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDLDlFQUE5RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RSxPQUFPLEVBQ0wsdUNBQXVDLEVBQ3hDLE1BQU0scUJBQXFCLENBQUMsOUVBRjdCLE9BQU8sRUFDTCx1Q0FBdUMsRUFDeEMsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQyw5REFBOUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUMsaEVBQWhFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUMsN0NBQTdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFN0MsU0FBUyxjQUFjLENBQUMsU0FBNkIsRUFBRSxJQUFZO01BQ2pFLElBQUksU0FBUyxJQUFJLFNBQVMsQ0FBQzs7Q0FBWSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENB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O0FBQ2pCLFlBSUEsVUFBVTtBQUNWLFlBU0EsU0FBUztBQUNULFlBQ0EsSUFBSSx1QkFrRUQsTUFBTSxTQUFDLHVDQUF1QztBQUFRO0FBQUc7QUFDMUQsbUJBN0JELEtBQUs7QUFBSyx3QkFDVixLQUFLO0FBQUsseUJBQ1YsS0FBSztBQUFLLHNCQUNWLEtBQUs7QUFBSyxxQkFFVixNQUFNO0FBQ1AsbUJBRUMsU0FBUyxTQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO0FBQU8saUNBQ2pFLFlBQVksU0FBQyxtQkFBbUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7QUFBTyxrQ0FDekQsWUFBWSxTQUFDLG9CQUFvQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtBQUFPLGlDQUMxRCxZQUFZLFNBQUMsMkJBQTJCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO0FBQU8scUJBRWpFLEtBQUs7QUFDUDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF0RUEsQUFBQSxBQUNBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBQUEsQUFFQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBQUEsQUFDQSxBQUFBLEFBRUEsQUFBQSxBQUlBLEFBQUEsQUFDQSxBQUFBLEFBRUEsQUFBQSxBQUNBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxyXG4gIENvbnRlbnRDaGlsZCxcclxuICBEb0NoZWNrLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEluamVjdCxcclxuICBJbnB1dCxcclxuICBLZXlWYWx1ZURpZmZlcixcclxuICBLZXlWYWx1ZURpZmZlcnMsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFJlbmRlcmVyMixcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFR5cGUsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdDb250YWluZXJSZWYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudFJlbmRlcmluZywgSHRtbEVsZW1lbnRSZW5kZXJpbmcgfSBmcm9tICdAc2l0ZWNvcmUtanNzL3NpdGVjb3JlLWpzcyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGFrZVdoaWxlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRGYWN0b3J5UmVzdWx0LCBKc3NDb21wb25lbnRGYWN0b3J5U2VydmljZSB9IGZyb20gJy4uL2pzcy1jb21wb25lbnQtZmFjdG9yeS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUGxhY2Vob2xkZXJMb2FkaW5nRGlyZWN0aXZlIH0gZnJvbSAnLi9wbGFjZWhvbGRlci1sb2FkaW5nLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7XHJcbiAgUExBQ0VIT0xERVJfTUlTU0lOR19DT01QT05FTlRfQ09NUE9ORU5UXHJcbn0gZnJvbSAnLi9wbGFjZWhvbGRlci50b2tlbic7XHJcbmltcG9ydCB7IFJlbmRlckVhY2hEaXJlY3RpdmUgfSBmcm9tICcuL3JlbmRlci1lYWNoLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFJlbmRlckVtcHR5RGlyZWN0aXZlIH0gZnJvbSAnLi9yZW5kZXItZW1wdHkuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgaXNSYXdSZW5kZXJpbmcgfSBmcm9tICcuL3JlbmRlcmluZyc7XHJcblxyXG5mdW5jdGlvbiBnZXRQbGFjZWhvbGRlcihyZW5kZXJpbmc6IENvbXBvbmVudFJlbmRlcmluZywgbmFtZTogc3RyaW5nKSB7XHJcbiAgaWYgKHJlbmRlcmluZyAmJiByZW5kZXJpbmcucGxhY2Vob2xkZXJzICYmIE9iamVjdC5rZXlzKHJlbmRlcmluZy5wbGFjZWhvbGRlcnMpLmxlbmd0aCA+IDApIHtcclxuICAgIHJldHVybiByZW5kZXJpbmcucGxhY2Vob2xkZXJzW25hbWVdO1xyXG4gIH1cclxuICByZXR1cm4gbnVsbDtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzYy1wbGFjZWhvbGRlcixbc2MtcGxhY2Vob2xkZXJdJyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwiaXNMb2FkaW5nXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwicGxhY2Vob2xkZXJMb2FkaW5nPy50ZW1wbGF0ZVJlZlwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICA8bmctdGVtcGxhdGUgI3ZpZXc+PC9uZy10ZW1wbGF0ZT5cclxuICBgLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGxhY2Vob2xkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgRG9DaGVjaywgT25EZXN0cm95IHtcclxuICBwcml2YXRlIF9pbnB1dHM6IHsgW2tleTogc3RyaW5nXTogYW55IH07XHJcbiAgcHJpdmF0ZSBfZGlmZmVyOiBLZXlWYWx1ZURpZmZlcjxzdHJpbmcsIGFueT47XHJcbiAgcHJpdmF0ZSBfY29tcG9uZW50SW5zdGFuY2VzOiBhbnlbXSA9IFtdO1xyXG4gIHByaXZhdGUgZGVzdHJveWVkID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBwYXJlbnRTdHlsZUF0dHJpYnV0ZTogc3RyaW5nID0gJyc7XHJcbiAgcHVibGljIGlzTG9hZGluZyA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpIG5hbWU/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcmVuZGVyaW5nOiBDb21wb25lbnRSZW5kZXJpbmc7XHJcbiAgQElucHV0KCkgcmVuZGVyaW5ncz86IEFycmF5PENvbXBvbmVudFJlbmRlcmluZyB8IEh0bWxFbGVtZW50UmVuZGVyaW5nPjtcclxuICBASW5wdXQoKSBvdXRwdXRzOiB7IFtrOiBzdHJpbmddOiAoZXZlbnRUeXBlOiBhbnkpID0+IHZvaWQgfTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgbG9hZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3ZpZXcnLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYsIHN0YXRpYzogdHJ1ZSB9KSBwcml2YXRlIHZpZXc6IFZpZXdDb250YWluZXJSZWY7XHJcbiAgQENvbnRlbnRDaGlsZChSZW5kZXJFYWNoRGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KSByZW5kZXJFYWNoVGVtcGxhdGU6IFJlbmRlckVhY2hEaXJlY3RpdmU7XHJcbiAgQENvbnRlbnRDaGlsZChSZW5kZXJFbXB0eURpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUgfSkgcmVuZGVyRW1wdHlUZW1wbGF0ZTogUmVuZGVyRW1wdHlEaXJlY3RpdmU7XHJcbiAgQENvbnRlbnRDaGlsZChQbGFjZWhvbGRlckxvYWRpbmdEaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pIHBsYWNlaG9sZGVyTG9hZGluZz86IFBsYWNlaG9sZGVyTG9hZGluZ0RpcmVjdGl2ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgaW5wdXRzKHZhbHVlOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KSB7XHJcbiAgICB0aGlzLl9pbnB1dHMgPSB2YWx1ZTtcclxuICAgIGlmICghdGhpcy5fZGlmZmVyICYmIHZhbHVlKSB7XHJcbiAgICAgIHRoaXMuX2RpZmZlciA9IHRoaXMuZGlmZmVycy5maW5kKHZhbHVlKS5jcmVhdGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICAgIHByaXZhdGUgZGlmZmVyczogS2V5VmFsdWVEaWZmZXJzLFxyXG4gICAgcHJpdmF0ZSBjb21wb25lbnRGYWN0b3J5OiBKc3NDb21wb25lbnRGYWN0b3J5U2VydmljZSxcclxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgQEluamVjdChQTEFDRUhPTERFUl9NSVNTSU5HX0NPTVBPTkVOVF9DT01QT05FTlQpIHByaXZhdGUgbWlzc2luZ0NvbXBvbmVudENvbXBvbmVudDogVHlwZTxhbnk+XHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICAvLyBqdXN0IHRvIGVuc3VyZSB0aGUgZWxlbWVudCBleGlzdHNcclxuICAgIGNvbnN0IGVsZW0gPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcclxuXHJcbiAgICBpZiAoZWxlbSkge1xyXG4gICAgICBjb25zdCBhdHRyaWJ1dGVzOiBOYW1lZE5vZGVNYXAgPSBlbGVtLmF0dHJpYnV0ZXM7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXR0cmlidXRlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IGF0dHI6IEF0dHIgfCBudWxsID0gYXR0cmlidXRlcy5pdGVtKGkpO1xyXG4gICAgICAgIGlmIChhdHRyICYmIGF0dHIubmFtZS5pbmRleE9mKCdfbmdjb250ZW50JykgIT09IC0xKSB7XHJcbiAgICAgICAgICAgIHRoaXMucGFyZW50U3R5bGVBdHRyaWJ1dGUgPSBhdHRyLm5hbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuZGVzdHJveWVkID0gdHJ1ZTtcclxuICAgIHRoaXMuX2NvbXBvbmVudEluc3RhbmNlcyA9IFtdO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKGNoYW5nZXNbJ3JlbmRlcmluZyddIHx8IGNoYW5nZXNbJ3JlbmRlcmluZ3MnXSkge1xyXG4gICAgICB0aGlzLl9yZW5kZXIoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nRG9DaGVjaygpIHtcclxuICAgIGlmICghdGhpcy5fZGlmZmVyIHx8ICF0aGlzLl9pbnB1dHMgfHwgdGhpcy5fY29tcG9uZW50SW5zdGFuY2VzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY2hhbmdlcyA9IHRoaXMuX2RpZmZlci5kaWZmKHRoaXMuX2lucHV0cyk7XHJcbiAgICBpZiAoIWNoYW5nZXMpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdXBkYXRlczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xyXG4gICAgY2hhbmdlcy5mb3JFYWNoUmVtb3ZlZEl0ZW0oKGNoYW5nZSkgPT4gdXBkYXRlc1tjaGFuZ2Uua2V5XSA9IG51bGwpO1xyXG4gICAgY2hhbmdlcy5mb3JFYWNoQWRkZWRJdGVtKChjaGFuZ2UpID0+IHVwZGF0ZXNbY2hhbmdlLmtleV0gPSBjaGFuZ2UuY3VycmVudFZhbHVlKTtcclxuICAgIGNoYW5nZXMuZm9yRWFjaENoYW5nZWRJdGVtKChjaGFuZ2UpID0+IHVwZGF0ZXNbY2hhbmdlLmtleV0gPSBjaGFuZ2UuY3VycmVudFZhbHVlKTtcclxuICAgIHRoaXMuX2NvbXBvbmVudEluc3RhbmNlcy5mb3JFYWNoKChjb21wb25lbnRJbnN0YW5jZSkgPT4gdGhpcy5fc2V0Q29tcG9uZW50SW5wdXRzKGNvbXBvbmVudEluc3RhbmNlLCB1cGRhdGVzKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zZXRDb21wb25lbnRJbnB1dHMoY29tcG9uZW50SW5zdGFuY2U6IGFueSwgaW5wdXRzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KSB7XHJcbiAgICBPYmplY3QuZW50cmllcyhpbnB1dHMpLmZvckVhY2goKFtpbnB1dCwgaW5wdXRWYWx1ZV0pID0+IGNvbXBvbmVudEluc3RhbmNlW2lucHV0XSA9IGlucHV0VmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc3Vic2NyaWJlQ29tcG9uZW50T3V0cHV0cyhjb21wb25lbnRJbnN0YW5jZTogYW55LCBvdXRwdXRzOiB7IFtrOiBzdHJpbmddOiAoZXZlbnRUeXBlOiBhbnkpID0+IHZvaWQgfSkge1xyXG4gICAgT2JqZWN0LmtleXMob3V0cHV0cylcclxuICAgICAgLmZpbHRlcigob3V0cHV0KSA9PiBjb21wb25lbnRJbnN0YW5jZVtvdXRwdXRdICYmIGNvbXBvbmVudEluc3RhbmNlW291dHB1dF0gaW5zdGFuY2VvZiBPYnNlcnZhYmxlKVxyXG4gICAgICAuZm9yRWFjaCgob3V0cHV0KSA9PiAoY29tcG9uZW50SW5zdGFuY2Vbb3V0cHV0XSBhcyBPYnNlcnZhYmxlPGFueT4pXHJcbiAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICB0YWtlV2hpbGUoKCkgPT4gIXRoaXMuZGVzdHJveWVkKVxyXG4gICAgICAgIClcclxuICAgICAgICAuc3Vic2NyaWJlKG91dHB1dHNbb3V0cHV0XSkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVuZGVyKCkge1xyXG4gICAgdGhpcy5fY29tcG9uZW50SW5zdGFuY2VzID0gW107XHJcbiAgICB0aGlzLnZpZXcuY2xlYXIoKTtcclxuXHJcbiAgICBpZiAoIXRoaXMucmVuZGVyaW5nICYmICF0aGlzLnJlbmRlcmluZ3MpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5uYW1lICYmICF0aGlzLnJlbmRlcmluZ3MpIHtcclxuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm1heC1saW5lLWxlbmd0aFxyXG4gICAgICBjb25zb2xlLndhcm4oYFBsYWNlaG9sZGVyIG5hbWUgd2FzIG5vdCBzcGVjaWZpZWQsIGFuZCBleHBsaWNpdCByZW5kZXJpbmdzIGFycmF5IHdhcyBub3QgcGFzc2VkLiBQbGFjZWhvbGRlciByZXF1aXJlcyBlaXRoZXIgbmFtZSBhbmQgcmVuZGVyaW5nLCBvciByZW5kZXJpbmdzLmApO1xyXG4gICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcGxhY2Vob2xkZXIgPSB0aGlzLnJlbmRlcmluZ3MgfHwgZ2V0UGxhY2Vob2xkZXIodGhpcy5yZW5kZXJpbmcsIHRoaXMubmFtZSB8fCAnJyk7XHJcblxyXG4gICAgaWYgKCFwbGFjZWhvbGRlcikge1xyXG4gICAgICBjb25zb2xlLndhcm4oYFBsYWNlaG9sZGVyICcke3RoaXMubmFtZX0nIHdhcyBub3QgZm91bmQgaW4gdGhlIGN1cnJlbnQgcmVuZGVyaW5nIGRhdGFgLCBKU09OLnN0cmluZ2lmeSh0aGlzLnJlbmRlcmluZywgbnVsbCwgMikpO1xyXG4gICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gaWYgdGhlIHBsYWNlaG9sZGVyIGlzIGVtcHR5IChjb250YWlucyBvbmx5IHJhdyByZW5kZXJpbmdzKSwgdGhlbiB3ZSBtYXkgbmVlZCB0byB1c2UgdGhlIGVtcHR5IHRlbXBsYXRlIGlmIGl0J3MgZGVmaW5lZFxyXG4gICAgY29uc3QgcGxhY2Vob2xkZXJJc0VtcHR5ID0gcGxhY2Vob2xkZXIuZXZlcnkoKHJlbmRlcmluZzogQ29tcG9uZW50UmVuZGVyaW5nIHwgSHRtbEVsZW1lbnRSZW5kZXJpbmcpID0+IGlzUmF3UmVuZGVyaW5nKHJlbmRlcmluZykpO1xyXG5cclxuICAgIGlmICh0aGlzLnJlbmRlckVtcHR5VGVtcGxhdGUgJiYgcGxhY2Vob2xkZXJJc0VtcHR5KSB7XHJcbiAgICAgIHRoaXMudmlldy5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5yZW5kZXJFbXB0eVRlbXBsYXRlLnRlbXBsYXRlUmVmLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHJlbmRlcmluZ3M6IHBsYWNlaG9sZGVyLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jb21wb25lbnRGYWN0b3J5LmdldENvbXBvbmVudHMocGxhY2Vob2xkZXIpXHJcbiAgICAgICAgLnRoZW4oKGNvbXBvbmVudHMpID0+IGNvbXBvbmVudHMuZm9yRWFjaCgocmVuZGVyaW5nLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMucmVuZGVyRWFjaFRlbXBsYXRlICYmICFpc1Jhd1JlbmRlcmluZyhyZW5kZXJpbmcuY29tcG9uZW50RGVmaW5pdGlvbikpIHtcclxuICAgICAgICAgICAgdGhpcy5fcmVuZGVyVGVtcGxhdGVkQ29tcG9uZW50KHJlbmRlcmluZy5jb21wb25lbnREZWZpbml0aW9uLCBpbmRleCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLl9yZW5kZXJFbWJlZGRlZENvbXBvbmVudChyZW5kZXJpbmcsIGluZGV4KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfSkpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgIHRoaXMubG9hZGVkLmVtaXQodGhpcy5uYW1lKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3JlbmRlclRlbXBsYXRlZENvbXBvbmVudChcclxuICAgIHJlbmRlcmluZzogQ29tcG9uZW50UmVuZGVyaW5nIHwgSHRtbEVsZW1lbnRSZW5kZXJpbmcsXHJcbiAgICBpbmRleDogbnVtYmVyXHJcbiAgKSB7XHJcbiAgICAvLyB0aGUgcmVuZGVyLWVhY2ggdGVtcGxhdGUgdGFrZXMgY2FyZSBvZiBhbGwgY29tcG9uZW50IG1hcHBpbmcgZXRjXHJcbiAgICAvLyBnZW5lcmFsbHkgdXNpbmcgPHNjLXJlbmRlci1jb21wb25lbnQ+IHdoaWNoIGlzIGFib3V0IGxpa2UgX3JlbmRlckVtYmVkZGVkQ29tcG9uZW50KClcclxuICAgIC8vIGFzIGEgc2VwYXJhdGUgY29tcG9uZW50XHJcbiAgICB0aGlzLnZpZXcuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMucmVuZGVyRWFjaFRlbXBsYXRlLnRlbXBsYXRlUmVmLFxyXG4gICAgICB7XHJcbiAgICAgICAgcmVuZGVyaW5nLFxyXG4gICAgICAgIGluZGV4LFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3JlbmRlckVtYmVkZGVkQ29tcG9uZW50KHJlbmRlcmluZzogQ29tcG9uZW50RmFjdG9yeVJlc3VsdCwgaW5kZXg6IG51bWJlcikge1xyXG4gICAgaWYgKCFyZW5kZXJpbmcuY29tcG9uZW50SW1wbGVtZW50YXRpb24pIHtcclxuICAgICAgY29uc3QgY29tcG9uZW50TmFtZSA9IChyZW5kZXJpbmcuY29tcG9uZW50RGVmaW5pdGlvbiBhcyBDb21wb25lbnRSZW5kZXJpbmcpLmNvbXBvbmVudE5hbWU7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoXHJcbiAgICAgICAgYFBsYWNlaG9sZGVyICR7dGhpcy5uYW1lfSBjb250YWlucyB1bmtub3duIGNvbXBvbmVudCAke2NvbXBvbmVudE5hbWV9LmAsXHJcbiAgICAgICAgYEVuc3VyZSBjb21wb25lbnQgaXMgbWFwcGVkLCBsaWtlOlxyXG4gICAgICAgIEpzc01vZHVsZS53aXRoQ29tcG9uZW50cyhbXHJcbiAgICAgICAgICB7IG5hbWU6ICcke2NvbXBvbmVudE5hbWV9JywgdHlwZTogJHtjb21wb25lbnROYW1lfUNvbXBvbmVudCB9XHJcbiAgICAgICAgXSlgXHJcbiAgICAgICk7XHJcblxyXG4gICAgICByZW5kZXJpbmcuY29tcG9uZW50SW1wbGVtZW50YXRpb24gPSB0aGlzLm1pc3NpbmdDb21wb25lbnRDb21wb25lbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY29tcG9uZW50RmFjdG9yeSA9XHJcbiAgICAgIHJlbmRlcmluZy5jb21wb25lbnRGYWN0b3J5IHx8IHRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KHJlbmRlcmluZy5jb21wb25lbnRJbXBsZW1lbnRhdGlvbik7XHJcblxyXG4gICAgLy8gYXBwbHkgdGhlIHBhcmVudCBzdHlsZSBhdHRyaWJ1dGUgX25nY29udGVudFxyXG4gICAgLy8gd29yay1hcm91bmQgZm9yIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzEyMjE1XHJcbiAgICBjb25zdCBjcmVhdGVkQ29tcG9uZW50UmVmID0gdGhpcy52aWV3LmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnRGYWN0b3J5LCBpbmRleCk7XHJcbiAgICBpZiAodGhpcy5wYXJlbnRTdHlsZUF0dHJpYnV0ZSkge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShjcmVhdGVkQ29tcG9uZW50UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQsIHRoaXMucGFyZW50U3R5bGVBdHRyaWJ1dGUsICcnKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjb21wb25lbnRJbnN0YW5jZSA9IGNyZWF0ZWRDb21wb25lbnRSZWYuaW5zdGFuY2U7XHJcbiAgICBjb21wb25lbnRJbnN0YW5jZS5yZW5kZXJpbmcgPSByZW5kZXJpbmcuY29tcG9uZW50RGVmaW5pdGlvbjtcclxuICAgIGlmICh0aGlzLl9pbnB1dHMpIHtcclxuICAgICAgdGhpcy5fc2V0Q29tcG9uZW50SW5wdXRzKGNvbXBvbmVudEluc3RhbmNlLCB0aGlzLl9pbnB1dHMpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMub3V0cHV0cykge1xyXG4gICAgICB0aGlzLl9zdWJzY3JpYmVDb21wb25lbnRPdXRwdXRzKGNvbXBvbmVudEluc3RhbmNlLCB0aGlzLm91dHB1dHMpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fY29tcG9uZW50SW5zdGFuY2VzLnB1c2goY29tcG9uZW50SW5zdGFuY2UpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,15 +0,0 @@
1
- import { InjectionToken } from '@angular/core';
2
- /** Registers a statically loaded component */
3
- export class ComponentNameAndType {
4
- }
5
- export function instanceOfComponentNameAndType(object) {
6
- return 'type' in object;
7
- }
8
- export function instanceOfComponentNameAndModule(object) {
9
- return 'module' in object;
10
- }
11
- export const PLACEHOLDER_COMPONENTS = new InjectionToken('Sc.placeholder.components');
12
- export const PLACEHOLDER_LAZY_COMPONENTS = new InjectionToken('Sc.placeholder.lazyComponents');
13
- export const PLACEHOLDER_MISSING_COMPONENT_COMPONENT = new InjectionToken('Sc.placeholder.missingComponentComponent');
14
- export const DYNAMIC_COMPONENT = new InjectionToken('Sc.placeholder.dynamicComponent');
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Vob2xkZXIudG9rZW4uanMiLCJzb3VyY2VSb290IjoiQzovd29yay9wcm9qZWN0cy9qc3MtcmVsZWFzZS0xNS9wYWNrYWdlcy9zaXRlY29yZS1qc3MtYW5ndWxhci9zcmMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL3BsYWNlaG9sZGVyLnRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFFckQsOENBQThDO0FBQzlDLE1BQU0sT0FBTyxvQkFBb0I7Q0FHaEM7QUFhRCxNQUFNLFVBQVUsOEJBQThCLENBQUMsTUFBVztJQUN4RCxPQUFPLE1BQU0sSUFBSSxNQUFNLENBQUM7QUFDMUIsQ0FBQztBQUVELE1BQU0sVUFBVSxnQ0FBZ0MsQ0FBQyxNQUFXO0lBQzFELE9BQU8sUUFBUSxJQUFJLE1BQU0sQ0FBQztBQUM1QixDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxjQUFjLENBQXlCLDJCQUEyQixDQUFDLENBQUM7QUFDOUcsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsSUFBSSxjQUFjLENBQXlCLCtCQUErQixDQUFDLENBQUM7QUFDdkgsTUFBTSxDQUFDLE1BQU0sdUNBQXVDLEdBQUcsSUFBSSxjQUFjLENBQVksMENBQTBDLENBQUMsQ0FBQztBQUNqSSxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLGNBQWMsQ0FBa0MsaUNBQWlDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG4vKiogUmVnaXN0ZXJzIGEgc3RhdGljYWxseSBsb2FkZWQgY29tcG9uZW50ICovXHJcbmV4cG9ydCBjbGFzcyBDb21wb25lbnROYW1lQW5kVHlwZSB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIHR5cGU6IFR5cGU8YW55PjtcclxufVxyXG5cclxuLyoqIFJlZ2lzdGVycyBhIGxhemlseSBsb2FkZWQgY29tcG9uZW50IGJ5IG5hbWUgYW5kIG1vZHVsZSB0byBsYXp5IGxvYWQgd2hlbiBpdCdzIG5lZWRlZCAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudE5hbWVBbmRNb2R1bGUge1xyXG4gIC8qKiBOYW1lIG9mIHRoZSBjb21wb25lbnQgKi9cclxuICBwYXRoOiBzdHJpbmc7XHJcbiAgLyoqXHJcbiAgICogRHluYW1pYyBpbXBvcnQgb2YgdGhlIGNvbXBvbmVudCxcclxuICAgKiBlLmcuICgpID0+IGltcG9ydCgnLi9wYXRoL3RvL2xhenlsb2FkZWRjb21wb25lbnQubW9kdWxlJykudGhlbihtID0+IG0uTGF6eUxvYWRlZENvbXBvbmVudE1vZHVsZUV4cG9ydE5hbWUpXHJcbiAgICovXHJcbiAgbG9hZENoaWxkcmVuOiAoKSA9PiBQcm9taXNlPGFueT47XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW5jZU9mQ29tcG9uZW50TmFtZUFuZFR5cGUob2JqZWN0OiBhbnkpOiBvYmplY3QgaXMgQ29tcG9uZW50TmFtZUFuZFR5cGUge1xyXG4gIHJldHVybiAndHlwZScgaW4gb2JqZWN0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFuY2VPZkNvbXBvbmVudE5hbWVBbmRNb2R1bGUob2JqZWN0OiBhbnkpOiBvYmplY3QgaXMgQ29tcG9uZW50TmFtZUFuZE1vZHVsZSB7XHJcbiAgcmV0dXJuICdtb2R1bGUnIGluIG9iamVjdDtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IFBMQUNFSE9MREVSX0NPTVBPTkVOVFMgPSBuZXcgSW5qZWN0aW9uVG9rZW48Q29tcG9uZW50TmFtZUFuZFR5cGVbXT4oJ1NjLnBsYWNlaG9sZGVyLmNvbXBvbmVudHMnKTtcclxuZXhwb3J0IGNvbnN0IFBMQUNFSE9MREVSX0xBWllfQ09NUE9ORU5UUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxDb21wb25lbnROYW1lQW5kVHlwZVtdPignU2MucGxhY2Vob2xkZXIubGF6eUNvbXBvbmVudHMnKTtcclxuZXhwb3J0IGNvbnN0IFBMQUNFSE9MREVSX01JU1NJTkdfQ09NUE9ORU5UX0NPTVBPTkVOVCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxUeXBlPGFueT4+KCdTYy5wbGFjZWhvbGRlci5taXNzaW5nQ29tcG9uZW50Q29tcG9uZW50Jyk7XHJcbmV4cG9ydCBjb25zdCBEWU5BTUlDX0NPTVBPTkVOVCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxUeXBlPGFueT4gfCB7W3M6IHN0cmluZ106IGFueX0+ICgnU2MucGxhY2Vob2xkZXIuZHluYW1pY0NvbXBvbmVudCcpO1xyXG4iXX0=
@@ -1,42 +0,0 @@
1
- import { Component, ElementRef, Input, Renderer2 } from '@angular/core';
2
- import * as ɵngcc0 from '@angular/core';
3
- export class RawComponent {
4
- constructor(renderer, elementRef) {
5
- this.renderer = renderer;
6
- this.elementRef = elementRef;
7
- }
8
- ngOnInit() {
9
- const el = this.renderer.createElement(this.rendering.name);
10
- const contents = this.renderer.createText(this.rendering.contents || '');
11
- const attributes = this.rendering.attributes;
12
- for (const attr in attributes) {
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.ɵfac = function RawComponent_Factory(t) { return new (t || RawComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };
25
- RawComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: RawComponent, selectors: [["sc-raw"]], inputs: { rendering: "rendering" }, decls: 0, vars: 0, template: function RawComponent_Template(rf, ctx) { }, encapsulation: 2 });
26
- RawComponent.ctorParameters = () => [
27
- { type: Renderer2 },
28
- { type: ElementRef }
29
- ];
30
- RawComponent.propDecorators = {
31
- rendering: [{ type: Input }]
32
- };
33
- /*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(RawComponent, [{
34
- type: Component,
35
- args: [{
36
- selector: 'sc-raw',
37
- template: ``
38
- }]
39
- }], function () { return [{ type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }]; }, { rendering: [{
40
- type: Input
41
- }] }); })();
42
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF3LmNvbXBvbmVudC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcmF3LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQU9BLE1BQU0sT0FBTyxZQUFZO0lBR3ZCLFlBQ1UsUUFBbUIsRUFDbkIsVUFBc0IscENBTE4sSUFHMUIsWUFDVSxRQUFtQixFQUNuQixVQUFzQjtRQUR0QixhQUFRLEdBQVIsUUFBUSxDQUFXLGpDQUU1QixRQUZTLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsZUFBVSxHQUFWLFVBQVUsQ0FBWSxyQ0FERixRQUNwQixlQUFVLEdBQVYsVUFBVSxDQUFZO0lBQzVCLENBQUMsTEFBUCxJQUFNLENBQUM7SUFFTCxRQUFRLFpBRFYsSUFDRSxRQUFRO1FBQ04sTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxwRUFBaEUsUUFBSSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLGpGQUE3RSxRQUFJLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3pFLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLHJEQUFqRCxRQUFJLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDO1FBQzdDLEtBQUssTUFBTSxJQUFJLElBQUksVUFBVSxFQUFFLHZDQUFuQyxRQUFJLEtBQUssTUFBTSxJQUFJLElBQUksVUFBVSxFQUFFO1lBQzdCLElBQUssVUFBa0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsakRBQXBELFlBQU0sSUFBSyxVQUFrQixDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDNUMsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLC9DQUF2QyxnQkFBUSxNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLGxFQUExRCxnQkFBUSxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQzthQUNuRCxiQUFQLGFBQU87U0FDRjtRQUVELElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQyxoREFENUMsUUFDSSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDeEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxuRkFBL0UsUUFBSSxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzNFLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxsRkFBOUUsUUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDMUUsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLDlEQUExRCxRQUFJLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN4RCxDQUFDLExBQUgsSUFBRSxDQUFDO0FBQ0g7d0NBNUJDLFNBQVMsU0FBQyxrQkFDVCxRQUFRLEVBQUUsUUFBUSxrQkFDbEIsUUFBUSxFQUFFLEVBQUUsY0FDYixsR0FIQSxTQUFTLFNBQUMsa0JBQ1QsUUFBUSxFQUFFLFFBQVEsa0JBQ2xCLFFBQVEsRUFBRSxFQUFFLGNBQ2I7aUJBTjhDLFNBQVMsZ0JBQXBDLFVBQVUsOERBUTNCLEtBQUssdUdBREg7QUFBQztBQUFzQyxZQVBHLFNBQVM7QUFBSSxZQUF4QyxVQUFVO0FBQUc7QUFBRztBQUFnQyx3QkFRakUsS0FBSztBQUFJOzs7Ozs7Ozs7O0FBUkEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQU9BLEFBQUEsQUFBQSxBQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgT25Jbml0LCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHRtbEVsZW1lbnRSZW5kZXJpbmcgfSBmcm9tICdAc2l0ZWNvcmUtanNzL3NpdGVjb3JlLWpzcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NjLXJhdycsXHJcbiAgdGVtcGxhdGU6IGBgLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmF3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSByZW5kZXJpbmc6IEh0bWxFbGVtZW50UmVuZGVyaW5nO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZlxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgY29uc3QgZWwgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQodGhpcy5yZW5kZXJpbmcubmFtZSk7XHJcbiAgICBjb25zdCBjb250ZW50cyA9IHRoaXMucmVuZGVyZXIuY3JlYXRlVGV4dCh0aGlzLnJlbmRlcmluZy5jb250ZW50cyB8fCAnJyk7XHJcbiAgICBjb25zdCBhdHRyaWJ1dGVzID0gdGhpcy5yZW5kZXJpbmcuYXR0cmlidXRlcztcclxuICAgIGZvciAoY29uc3QgYXR0ciBpbiBhdHRyaWJ1dGVzKSB7XHJcbiAgICAgIGlmICgoYXR0cmlidXRlcyBhcyBhbnkpLmhhc093blByb3BlcnR5KGF0dHIpKSB7XHJcbiAgICAgICAgY29uc3QgdmFsdWUgPSBhdHRyaWJ1dGVzW2F0dHJdO1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKGVsLCBhdHRyLCB2YWx1ZSB8fCAnJyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKGVsLCBjb250ZW50cyk7XHJcbiAgICBjb25zdCBwYXJlbnROb2RlID0gdGhpcy5yZW5kZXJlci5wYXJlbnROb2RlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcclxuICAgIHRoaXMucmVuZGVyZXIuaW5zZXJ0QmVmb3JlKHBhcmVudE5vZGUsIGVsLCB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XHJcbiAgICBwYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcclxuICB9XHJcbn1cclxuIl19
@@ -1,116 +0,0 @@
1
- import { Component, ComponentFactoryResolver, Inject, Input, KeyValueDiffers, Type, ViewChild, ViewContainerRef, } from '@angular/core';
2
- import { Observable } from 'rxjs';
3
- import { takeWhile } from 'rxjs/operators';
4
- import { JssComponentFactoryService } from '../jss-component-factory.service';
5
- import { PLACEHOLDER_MISSING_COMPONENT_COMPONENT } from './placeholder.token';
6
- import { RawComponent } from './raw.component';
7
- import { isRawRendering } from './rendering';
8
- /**
9
- * Renders a single JSS component given a rendering definition.
10
- * Useful inside templated placeholders.
11
- */
12
- import * as ɵngcc0 from '@angular/core';
13
-
14
- const _c0 = ["view"];
15
- function RenderComponentComponent_ng_template_0_Template(rf, ctx) { }
16
- export class RenderComponentComponent {
17
- constructor(componentFactoryResolver, differs, componentFactory, missingComponentComponent) {
18
- this.componentFactoryResolver = componentFactoryResolver;
19
- this.differs = differs;
20
- this.componentFactory = componentFactory;
21
- this.missingComponentComponent = missingComponentComponent;
22
- this.destroyed = false;
23
- }
24
- set inputs(value) {
25
- this._inputs = value;
26
- if (!this._differ && value) {
27
- this._differ = this.differs.find(value).create();
28
- }
29
- }
30
- ngOnChanges(changes) {
31
- if (changes['rendering']) {
32
- this._render();
33
- }
34
- }
35
- _setComponentInputs(componentInstance, inputs) {
36
- Object.entries(inputs).forEach(([input, inputValue]) => componentInstance[input] = inputValue);
37
- }
38
- _subscribeComponentOutputs(componentInstance, outputs) {
39
- Object.keys(outputs)
40
- .filter((output) => componentInstance[output] && componentInstance[output] instanceof Observable)
41
- .forEach((output) => componentInstance[output]
42
- .pipe(takeWhile(() => !this.destroyed))
43
- .subscribe(outputs[output]));
44
- }
45
- _render() {
46
- this.view.clear();
47
- if (!this.rendering) {
48
- return;
49
- }
50
- const resolveComponent = isRawRendering(this.rendering)
51
- ? Promise.resolve({ componentImplementation: RawComponent, componentDefinition: this.rendering })
52
- : this.componentFactory.getComponent(this.rendering);
53
- resolveComponent.then((rendering) => {
54
- if (!rendering.componentImplementation) {
55
- const componentName = rendering.componentDefinition.componentName;
56
- console.error(`Attempted to render unknown component ${componentName}.`, `Ensure component is mapped, like:
57
- JssModule.withComponents([
58
- { name: '${componentName}', type: ${componentName}Component }
59
- ])`);
60
- rendering.componentImplementation = this.missingComponentComponent;
61
- }
62
- const componentFactory = rendering.componentFactory || this.componentFactoryResolver.resolveComponentFactory(rendering.componentImplementation);
63
- const componentInstance = this.view.createComponent(componentFactory, 0).instance;
64
- componentInstance.rendering = rendering.componentDefinition;
65
- if (this._inputs) {
66
- this._setComponentInputs(componentInstance, this._inputs);
67
- }
68
- if (this.outputs) {
69
- this._subscribeComponentOutputs(componentInstance, this.outputs);
70
- }
71
- });
72
- }
73
- }
74
- RenderComponentComponent.ɵfac = function RenderComponentComponent_Factory(t) { return new (t || RenderComponentComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.KeyValueDiffers), ɵngcc0.ɵɵdirectiveInject(JssComponentFactoryService), ɵngcc0.ɵɵdirectiveInject(PLACEHOLDER_MISSING_COMPONENT_COMPONENT)); };
75
- RenderComponentComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: RenderComponentComponent, selectors: [["sc-render-component"]], viewQuery: function RenderComponentComponent_Query(rf, ctx) { if (rf & 1) {
76
- ɵngcc0.ɵɵstaticViewQuery(_c0, true, ViewContainerRef);
77
- } if (rf & 2) {
78
- var _t;
79
- ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.view = _t.first);
80
- } }, inputs: { inputs: "inputs", rendering: "rendering", outputs: "outputs" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 2, vars: 0, consts: [["view", ""]], template: function RenderComponentComponent_Template(rf, ctx) { if (rf & 1) {
81
- ɵngcc0.ɵɵtemplate(0, RenderComponentComponent_ng_template_0_Template, 0, 0, "ng-template", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);
82
- } }, encapsulation: 2 });
83
- RenderComponentComponent.ctorParameters = () => [
84
- { type: ComponentFactoryResolver },
85
- { type: KeyValueDiffers },
86
- { type: JssComponentFactoryService },
87
- { type: Type, decorators: [{ type: Inject, args: [PLACEHOLDER_MISSING_COMPONENT_COMPONENT,] }] }
88
- ];
89
- RenderComponentComponent.propDecorators = {
90
- rendering: [{ type: Input }],
91
- outputs: [{ type: Input }],
92
- view: [{ type: ViewChild, args: ['view', { read: ViewContainerRef, static: true },] }],
93
- inputs: [{ type: Input }]
94
- };
95
- /*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(RenderComponentComponent, [{
96
- type: Component,
97
- args: [{
98
- selector: 'sc-render-component',
99
- template: `
100
- <ng-template #view></ng-template>
101
- `
102
- }]
103
- }], function () { return [{ type: ɵngcc0.ComponentFactoryResolver }, { type: ɵngcc0.KeyValueDiffers }, { type: JssComponentFactoryService }, { type: ɵngcc0.Type, decorators: [{
104
- type: Inject,
105
- args: [PLACEHOLDER_MISSING_COMPONENT_COMPONENT]
106
- }] }]; }, { inputs: [{
107
- type: Input
108
- }], rendering: [{
109
- type: Input
110
- }], outputs: [{
111
- type: Input
112
- }], view: [{
113
- type: ViewChild,
114
- args: ['view', { read: ViewContainerRef, static: true }]
115
- }] }); })();
116
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLWNvbXBvbmVudC5jb21wb25lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3JlbmRlci1jb21wb25lbnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFjQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQywzQ0FBM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBMEIsMEJBQTBCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQyw5RUFBdEcsT0FBTyxFQUEwQiwwQkFBMEIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RHLE9BQU8sRUFBRSx1Q0FBdUMsRUFBRSxNQUFNLHFCQUFxQixDQUFDLDlFQUE5RSxPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM5RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUMsL0NBQS9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDLDdDQUE3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTdDLEFBQUE7QUFDQTtBQUNBO0dBQ0csSEFBSCxHQUFHO0FBT0gsTUFBTSxPQUFPLHdCQUF3Qjs7RUFpQm5DLFlBQ1U7Z0JBQWtELEVBQ2xELE9BQXdCLEVBQ3hCLGdCQUE0QyxFQUNLO0FBQW9DLFlBSHJGLFpBbEJaLE1BQU0sT0FBTyx3QkFBd0I7Q0FrQkQsR0FBeEIsd0JBQXdCLENBQTBCLFNBQ2xELFlBQU8sR0FBUCxPQUFPLENBQWlCLFNBQ3hCLHFCQUFnQixHQUFoQiw5RkFwQjRCLElBaUJ0QyxZQUNVLHdCQUFrRCxFQUNsRCxPQUF3QixFQUN4QixnQkFBNEMsRUFDSyx5QkFB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QUUsMkNBRVQsY0FDRixzRUE1QkMsd0JBQXdCLGdCQUl4QixlQUFlLGdCQVVnQixyU0FTaEMsU0FBUyxTQUFDLGtCQUNULFFBQVEsRUFBRSxxQkFBcUIsa0JBQy9CLFFBQVEsRUFBRSwyQ0FFVCxjQUNGO2VBZDBELGdCQVB6RCxJQUFJLHVCQTJDRCxNQUFNLFNBQUMsdUNBQXVDLCtFQWhCaEQsS0FBSztrQkFDTCxLQUFLLHdCQUNMLFNBQVM7RUFBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUU7Y0FBZ0I7QUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLDRCQUUxRCxLQUFLOzs7NkJBVEg7QUFBQztBQUFrRCxZQTdCdEQsd0JBQXdCO0FBQ3hCLFlBR0EsZUFBZTtBQUNmLFlBUytCLDBCQUEwQjtBQUFJLFlBUDdELElBQUksdUJBMkNELE1BQU0sU0FBQyx1Q0FBdUM7QUFBUTtBQUFHO0FBRTlELHdCQWxCRyxLQUFLO0FBQUssc0JBQ1YsS0FBSztBQUFLLG1CQUNWLFNBQVMsU0FBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtBQUFPLHFCQUVqRSxLQUFLO0FBQ1A7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF6Q0EsQUFBQSxBQUNBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBQUEsQUFFQSxBQUFBLEFBR0EsQUFBQSxBQUNBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxyXG4gIEluamVjdCxcclxuICBJbnB1dCxcclxuICBLZXlWYWx1ZURpZmZlcixcclxuICBLZXlWYWx1ZURpZmZlcnMsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVHlwZSxcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0NvbnRhaW5lclJlZixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tcG9uZW50UmVuZGVyaW5nLCBIdG1sRWxlbWVudFJlbmRlcmluZyB9IGZyb20gJ0BzaXRlY29yZS1qc3Mvc2l0ZWNvcmUtanNzJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlV2hpbGUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IENvbXBvbmVudEZhY3RvcnlSZXN1bHQsIEpzc0NvbXBvbmVudEZhY3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi4vanNzLWNvbXBvbmVudC1mYWN0b3J5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQTEFDRUhPTERFUl9NSVNTSU5HX0NPTVBPTkVOVF9DT01QT05FTlQgfSBmcm9tICcuL3BsYWNlaG9sZGVyLnRva2VuJztcclxuaW1wb3J0IHsgUmF3Q29tcG9uZW50IH0gZnJvbSAnLi9yYXcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgaXNSYXdSZW5kZXJpbmcgfSBmcm9tICcuL3JlbmRlcmluZyc7XHJcblxyXG4vKipcclxuICogUmVuZGVycyBhIHNpbmdsZSBKU1MgY29tcG9uZW50IGdpdmVuIGEgcmVuZGVyaW5nIGRlZmluaXRpb24uXHJcbiAqIFVzZWZ1bCBpbnNpZGUgdGVtcGxhdGVkIHBsYWNlaG9sZGVycy5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2MtcmVuZGVyLWNvbXBvbmVudCcsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxuZy10ZW1wbGF0ZSAjdmlldz48L25nLXRlbXBsYXRlPlxyXG4gIGAsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZW5kZXJDb21wb25lbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG4gIHByaXZhdGUgX2lucHV0czogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcclxuICBwcml2YXRlIF9kaWZmZXI6IEtleVZhbHVlRGlmZmVyPHN0cmluZywgYW55PjtcclxuICBwcml2YXRlIGRlc3Ryb3llZCA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSByZW5kZXJpbmc6IENvbXBvbmVudFJlbmRlcmluZyB8IEh0bWxFbGVtZW50UmVuZGVyaW5nO1xyXG4gIEBJbnB1dCgpIG91dHB1dHM6IHsgW2s6IHN0cmluZ106IChldmVudFR5cGU6IGFueSkgPT4gdm9pZCB9O1xyXG4gIEBWaWV3Q2hpbGQoJ3ZpZXcnLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYsIHN0YXRpYzogdHJ1ZSB9KSBwcml2YXRlIHZpZXc6IFZpZXdDb250YWluZXJSZWY7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGlucHV0cyh2YWx1ZTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSkge1xyXG4gICAgdGhpcy5faW5wdXRzID0gdmFsdWU7XHJcbiAgICBpZiAoIXRoaXMuX2RpZmZlciAmJiB2YWx1ZSkge1xyXG4gICAgICB0aGlzLl9kaWZmZXIgPSB0aGlzLmRpZmZlcnMuZmluZCh2YWx1ZSkuY3JlYXRlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXHJcbiAgICBwcml2YXRlIGRpZmZlcnM6IEtleVZhbHVlRGlmZmVycyxcclxuICAgIHByaXZhdGUgY29tcG9uZW50RmFjdG9yeTogSnNzQ29tcG9uZW50RmFjdG9yeVNlcnZpY2UsXHJcbiAgICBASW5qZWN0KFBMQUNFSE9MREVSX01JU1NJTkdfQ09NUE9ORU5UX0NPTVBPTkVOVCkgcHJpdmF0ZSBtaXNzaW5nQ29tcG9uZW50Q29tcG9uZW50OiBUeXBlPGFueT5cclxuICApIHsgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBpZiAoY2hhbmdlc1sncmVuZGVyaW5nJ10pIHtcclxuICAgICAgdGhpcy5fcmVuZGVyKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zZXRDb21wb25lbnRJbnB1dHMoY29tcG9uZW50SW5zdGFuY2U6IGFueSwgaW5wdXRzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KSB7XHJcbiAgICBPYmplY3QuZW50cmllcyhpbnB1dHMpLmZvckVhY2goKFtpbnB1dCwgaW5wdXRWYWx1ZV0pID0+IGNvbXBvbmVudEluc3RhbmNlW2lucHV0XSA9IGlucHV0VmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc3Vic2NyaWJlQ29tcG9uZW50T3V0cHV0cyhjb21wb25lbnRJbnN0YW5jZTogYW55LCBvdXRwdXRzOiB7IFtrOiBzdHJpbmddOiAoZXZlbnRUeXBlOiBhbnkpID0+IHZvaWQgfSkge1xyXG4gICAgT2JqZWN0LmtleXMob3V0cHV0cylcclxuICAgICAgLmZpbHRlcigob3V0cHV0KSA9PiBjb21wb25lbnRJbnN0YW5jZVtvdXRwdXRdICYmIGNvbXBvbmVudEluc3RhbmNlW291dHB1dF0gaW5zdGFuY2VvZiBPYnNlcnZhYmxlKVxyXG4gICAgICAuZm9yRWFjaCgob3V0cHV0KSA9PiAoY29tcG9uZW50SW5zdGFuY2Vbb3V0cHV0XSBhcyBPYnNlcnZhYmxlPGFueT4pXHJcbiAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFrZVdoaWxlKCgpID0+ICF0aGlzLmRlc3Ryb3llZClcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKG91dHB1dHNbb3V0cHV0XSkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVuZGVyKCkge1xyXG4gICAgdGhpcy52aWV3LmNsZWFyKCk7XHJcblxyXG4gICAgaWYgKCF0aGlzLnJlbmRlcmluZykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcmVzb2x2ZUNvbXBvbmVudDogUHJvbWlzZTxDb21wb25lbnRGYWN0b3J5UmVzdWx0PiA9IGlzUmF3UmVuZGVyaW5nKHRoaXMucmVuZGVyaW5nKVxyXG4gICAgICA/IFByb21pc2UucmVzb2x2ZSh7IGNvbXBvbmVudEltcGxlbWVudGF0aW9uOiBSYXdDb21wb25lbnQsIGNvbXBvbmVudERlZmluaXRpb246IHRoaXMucmVuZGVyaW5nIH0pXHJcbiAgICAgIDogdGhpcy5jb21wb25lbnRGYWN0b3J5LmdldENvbXBvbmVudCh0aGlzLnJlbmRlcmluZyk7XHJcblxyXG4gICAgcmVzb2x2ZUNvbXBvbmVudC50aGVuKChyZW5kZXJpbmcpID0+IHtcclxuICAgICAgaWYgKCFyZW5kZXJpbmcuY29tcG9uZW50SW1wbGVtZW50YXRpb24pIHtcclxuICAgICAgICBjb25zdCBjb21wb25lbnROYW1lID0gKHJlbmRlcmluZy5jb21wb25lbnREZWZpbml0aW9uIGFzIENvbXBvbmVudFJlbmRlcmluZykuY29tcG9uZW50TmFtZTtcclxuICAgICAgICBjb25zb2xlLmVycm9yKFxyXG4gICAgICAgICAgYEF0dGVtcHRlZCB0byByZW5kZXIgdW5rbm93biBjb21wb25lbnQgJHtjb21wb25lbnROYW1lfS5gLCBgRW5zdXJlIGNvbXBvbmVudCBpcyBtYXBwZWQsIGxpa2U6XHJcbiAgICAgICAgICBKc3NNb2R1bGUud2l0aENvbXBvbmVudHMoW1xyXG4gICAgICAgICAgICB7IG5hbWU6ICcke2NvbXBvbmVudE5hbWV9JywgdHlwZTogJHtjb21wb25lbnROYW1lfUNvbXBvbmVudCB9XHJcbiAgICAgICAgICBdKWBcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICByZW5kZXJpbmcuY29tcG9uZW50SW1wbGVtZW50YXRpb24gPSB0aGlzLm1pc3NpbmdDb21wb25lbnRDb21wb25lbnQ7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGNvbXBvbmVudEZhY3RvcnkgPVxyXG4gICAgICAgIHJlbmRlcmluZy5jb21wb25lbnRGYWN0b3J5IHx8IHRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KHJlbmRlcmluZy5jb21wb25lbnRJbXBsZW1lbnRhdGlvbik7XHJcblxyXG4gICAgICBjb25zdCBjb21wb25lbnRJbnN0YW5jZSA9IHRoaXMudmlldy5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50RmFjdG9yeSwgMCkuaW5zdGFuY2U7XHJcbiAgICAgIGNvbXBvbmVudEluc3RhbmNlLnJlbmRlcmluZyA9IHJlbmRlcmluZy5jb21wb25lbnREZWZpbml0aW9uO1xyXG4gICAgICBpZiAodGhpcy5faW5wdXRzKSB7XHJcbiAgICAgICAgdGhpcy5fc2V0Q29tcG9uZW50SW5wdXRzKGNvbXBvbmVudEluc3RhbmNlLCB0aGlzLl9pbnB1dHMpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLm91dHB1dHMpIHtcclxuICAgICAgICB0aGlzLl9zdWJzY3JpYmVDb21wb25lbnRPdXRwdXRzKGNvbXBvbmVudEluc3RhbmNlLCB0aGlzLm91dHB1dHMpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIl19
@@ -1,20 +0,0 @@
1
- import { Directive, TemplateRef } from '@angular/core';
2
- import * as ɵngcc0 from '@angular/core';
3
- export class RenderEachDirective {
4
- constructor(templateRef) {
5
- this.templateRef = templateRef;
6
- }
7
- }
8
- RenderEachDirective.ɵfac = function RenderEachDirective_Factory(t) { return new (t || RenderEachDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };
9
- RenderEachDirective.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: RenderEachDirective, selectors: [["", "renderEach", ""]] });
10
- RenderEachDirective.ctorParameters = () => [
11
- { type: TemplateRef }
12
- ];
13
- /*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(RenderEachDirective, [{
14
- type: Directive,
15
- args: [{
16
- // tslint:disable-next-line:directive-selector
17
- selector: '[renderEach]'
18
- }]
19
- }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();
20
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLWVhY2guZGlyZWN0aXZlLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9yZW5kZXItZWFjaC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFNQSxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCLFlBQW1CLFdBQTZCLDNCQUFsRCxJQUFFLFlBQW1CLFdBQTZCO1FBQTdCLGdCQUFXLEdBQVgsV0FBVyxDQUFrQix2Q0FBSSxRQUFqQyxnQkFBVyxHQUFYLFdBQVcsQ0FBa0I7SUFBRyxDQUFDLExBQUgsSUFBRSxDQUFDOzsrQ0FMckQsU0FBUyxTQUFDLGtCQUNULDhDQUE4QyxpQkFDOUMsUUFBUSxFQUFFO2FBQWMsZUFDekIsNEZBQ0k7QUFBQztZQU5jLFdBQVcsdkJBT2YsWUFQSSxXQUFXO0FBQUc7Ozs7Ozs7O0FBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFNQSxBQUFBLEFBQUEsQUFBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpkaXJlY3RpdmUtc2VsZWN0b3JcclxuICBzZWxlY3RvcjogJ1tyZW5kZXJFYWNoXScsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZW5kZXJFYWNoRGlyZWN0aXZlIHtcclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4pIHt9XHJcbn1cclxuIl19
@@ -1,20 +0,0 @@
1
- import { Directive, TemplateRef } from '@angular/core';
2
- import * as ɵngcc0 from '@angular/core';
3
- export class RenderEmptyDirective {
4
- constructor(templateRef) {
5
- this.templateRef = templateRef;
6
- }
7
- }
8
- RenderEmptyDirective.ɵfac = function RenderEmptyDirective_Factory(t) { return new (t || RenderEmptyDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };
9
- RenderEmptyDirective.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: RenderEmptyDirective, selectors: [["", "renderEmpty", ""]] });
10
- RenderEmptyDirective.ctorParameters = () => [
11
- { type: TemplateRef }
12
- ];
13
- /*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(RenderEmptyDirective, [{
14
- type: Directive,
15
- args: [{
16
- // tslint:disable-next-line:directive-selector
17
- selector: '[renderEmpty]'
18
- }]
19
- }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();
20
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLWVtcHR5LmRpcmVjdGl2ZS5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcmVuZGVyLWVtcHR5LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQU1BLE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsWUFBbUIsV0FBNkIsM0JBQWxELElBQUUsWUFBbUIsV0FBNkI7UUFBN0IsZ0JBQVcsR0FBWCxXQUFXLENBQWtCLHZDQUFJLFFBQWpDLGdCQUFXLEdBQVgsV0FBVyxDQUFrQjtJQUFHLENBQUMsTEFBSCxJQUFFLENBQUM7O2dEQUxyRCxTQUFTLFNBQUMsa0JBQ1QsOENBQThDLGlCQUM5QyxRQUFRLEVBQUU7WUFBZSxlQUMxQixnR0FDSTtBQUFDO1lBTmMsV0FBVyx2QkFPZixZQVBJLFdBQVc7QUFBRzs7Ozs7Ozs7QUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQU1BLEFBQUEsQUFBQSxBQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmRpcmVjdGl2ZS1zZWxlY3RvclxyXG4gIHNlbGVjdG9yOiAnW3JlbmRlckVtcHR5XScsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZW5kZXJFbXB0eURpcmVjdGl2ZSB7XHJcbiAgY29uc3RydWN0b3IocHVibGljIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+KSB7fVxyXG59XHJcbiJdfQ==
@@ -1,4 +0,0 @@
1
- export function isRawRendering(rendering) {
2
- return !rendering.componentName && rendering.name !== undefined;
3
- }
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyaW5nLmpzIiwic291cmNlUm9vdCI6IkM6L3dvcmsvcHJvamVjdHMvanNzLXJlbGVhc2UtMTUvcGFja2FnZXMvc2l0ZWNvcmUtanNzLWFuZ3VsYXIvc3JjLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9yZW5kZXJpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxVQUFVLGNBQWMsQ0FBQyxTQUFvRDtJQUNqRixPQUFPLENBQUUsU0FBZ0MsQ0FBQyxhQUFhLElBQUssU0FBa0MsQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDO0FBQ3BILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRSZW5kZXJpbmcsIEh0bWxFbGVtZW50UmVuZGVyaW5nIH0gZnJvbSAnQHNpdGVjb3JlLWpzcy9zaXRlY29yZS1qc3MnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGlzUmF3UmVuZGVyaW5nKHJlbmRlcmluZzogSHRtbEVsZW1lbnRSZW5kZXJpbmcgfCBDb21wb25lbnRSZW5kZXJpbmcpOiByZW5kZXJpbmcgaXMgSHRtbEVsZW1lbnRSZW5kZXJpbmcge1xyXG4gIHJldHVybiAhKHJlbmRlcmluZyBhcyBDb21wb25lbnRSZW5kZXJpbmcpLmNvbXBvbmVudE5hbWUgJiYgKHJlbmRlcmluZyBhcyBIdG1sRWxlbWVudFJlbmRlcmluZykubmFtZSAhPT0gdW5kZWZpbmVkO1xyXG59XHJcbiJdfQ==