@sitecore-jss/sitecore-jss-angular 21.2.0-canary.9 → 21.2.0

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