@sitecore-jss/sitecore-jss-angular 21.6.2-canary.2 → 21.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/LICENSE.txt +202 -202
  2. package/README.md +7 -7
  3. package/angular.json +48 -48
  4. package/dist/README.md +7 -7
  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 -41
  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/esm2022/components/data-resolver-factory.mjs +58 -58
  28. package/dist/esm2022/components/date.directive.mjs +67 -67
  29. package/dist/esm2022/components/editframe.component.mjs +70 -70
  30. package/dist/esm2022/components/file.directive.mjs +48 -48
  31. package/dist/esm2022/components/generic-link.directive.mjs +67 -67
  32. package/dist/esm2022/components/guard-resolver-factory.mjs +85 -85
  33. package/dist/esm2022/components/hidden-rendering.component.mjs +20 -20
  34. package/dist/esm2022/components/image.directive.mjs +150 -150
  35. package/dist/esm2022/components/link.directive.mjs +122 -122
  36. package/dist/esm2022/components/missing-component.component.mjs +16 -16
  37. package/dist/esm2022/components/placeholder-loading.directive.mjs +16 -16
  38. package/dist/esm2022/components/placeholder.component.mjs +271 -271
  39. package/dist/esm2022/components/placeholder.token.mjs +27 -27
  40. package/dist/esm2022/components/raw.component.mjs +38 -38
  41. package/dist/esm2022/components/render-component.component.mjs +98 -98
  42. package/dist/esm2022/components/render-each.directive.mjs +16 -16
  43. package/dist/esm2022/components/render-empty.directive.mjs +16 -16
  44. package/dist/esm2022/components/rendering-field.mjs +1 -1
  45. package/dist/esm2022/components/rendering.mjs +7 -7
  46. package/dist/esm2022/components/rich-text.directive.mjs +68 -68
  47. package/dist/esm2022/components/router-link.directive.mjs +49 -49
  48. package/dist/esm2022/components/text.directive.mjs +61 -61
  49. package/dist/esm2022/jss-component-factory.service.mjs +87 -87
  50. package/dist/esm2022/lib.module.mjs +160 -160
  51. package/dist/esm2022/public_api.mjs +24 -24
  52. package/dist/esm2022/sitecore-jss-sitecore-jss-angular.mjs +4 -4
  53. package/dist/esm2022/utils.mjs +16 -16
  54. package/dist/fesm2022/sitecore-jss-sitecore-jss-angular.mjs +1507 -1507
  55. package/dist/index.d.ts +5 -5
  56. package/dist/jss-component-factory.service.d.ts +25 -25
  57. package/dist/lib.module.d.ts +46 -46
  58. package/dist/package.json +2 -2
  59. package/dist/public_api.d.ts +25 -25
  60. package/dist/utils.d.ts +6 -6
  61. package/ng-package.json +13 -13
  62. package/package.json +3 -3
  63. package/tsconfig.json +9 -9
  64. package/tsconfig.spec.json +17 -17
  65. package/typings/README.md +2 -2
@@ -1,50 +1,50 @@
1
- import { Directive, Input, } from '@angular/core';
2
- import { LinkDirective } from './link.directive';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/router";
5
- export class RouterLinkDirective extends LinkDirective {
6
- router;
7
- editable = true;
8
- attrs = {};
9
- field;
10
- constructor(viewContainer, templateRef, renderer, elementRef, router) {
11
- super(viewContainer, templateRef, renderer, elementRef);
12
- this.router = router;
13
- }
14
- renderTemplate(props, linkText) {
15
- const viewRef = this.viewContainer.createEmbeddedView(this.templateRef);
16
- viewRef.rootNodes.forEach((node) => {
17
- Object.entries(props).forEach(([key, propValue]) => {
18
- this.updateAttribute(node, key, propValue);
19
- if (key === 'href') {
20
- this.renderer.listen(node, 'click', (event) => {
21
- this.router.navigateByUrl(propValue);
22
- // shouldn't prevent default if the link includes a fragment
23
- if (!propValue.includes('#')) {
24
- event.preventDefault();
25
- }
26
- });
27
- }
28
- });
29
- if (node.childNodes && node.childNodes.length === 0 && linkText) {
30
- node.textContent = linkText;
31
- }
32
- });
33
- }
34
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouterLinkDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Directive });
35
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: RouterLinkDirective, selector: "[scRouterLink]", inputs: { editable: ["scRouterLinkEditable", "editable"], attrs: ["scRouterLinkAttrs", "attrs"], field: ["scRouterLink", "field"] }, usesInheritance: true, ngImport: i0 });
36
- }
37
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouterLinkDirective, decorators: [{
38
- type: Directive,
39
- args: [{ selector: '[scRouterLink]' }]
40
- }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i1.Router }]; }, propDecorators: { editable: [{
41
- type: Input,
42
- args: ['scRouterLinkEditable']
43
- }], attrs: [{
44
- type: Input,
45
- args: ['scRouterLinkAttrs']
46
- }], field: [{
47
- type: Input,
48
- args: ['scRouterLink']
49
- }] } });
1
+ import { Directive, Input, } from '@angular/core';
2
+ import { LinkDirective } from './link.directive';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/router";
5
+ export class RouterLinkDirective extends LinkDirective {
6
+ router;
7
+ editable = true;
8
+ attrs = {};
9
+ field;
10
+ constructor(viewContainer, templateRef, renderer, elementRef, router) {
11
+ super(viewContainer, templateRef, renderer, elementRef);
12
+ this.router = router;
13
+ }
14
+ renderTemplate(props, linkText) {
15
+ const viewRef = this.viewContainer.createEmbeddedView(this.templateRef);
16
+ viewRef.rootNodes.forEach((node) => {
17
+ Object.entries(props).forEach(([key, propValue]) => {
18
+ this.updateAttribute(node, key, propValue);
19
+ if (key === 'href') {
20
+ this.renderer.listen(node, 'click', (event) => {
21
+ this.router.navigateByUrl(propValue);
22
+ // shouldn't prevent default if the link includes a fragment
23
+ if (!propValue.includes('#')) {
24
+ event.preventDefault();
25
+ }
26
+ });
27
+ }
28
+ });
29
+ if (node.childNodes && node.childNodes.length === 0 && linkText) {
30
+ node.textContent = linkText;
31
+ }
32
+ });
33
+ }
34
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouterLinkDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Directive });
35
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: RouterLinkDirective, selector: "[scRouterLink]", inputs: { editable: ["scRouterLinkEditable", "editable"], attrs: ["scRouterLinkAttrs", "attrs"], field: ["scRouterLink", "field"] }, usesInheritance: true, ngImport: i0 });
36
+ }
37
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouterLinkDirective, decorators: [{
38
+ type: Directive,
39
+ args: [{ selector: '[scRouterLink]' }]
40
+ }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i1.Router }]; }, propDecorators: { editable: [{
41
+ type: Input,
42
+ args: ['scRouterLinkEditable']
43
+ }], attrs: [{
44
+ type: Input,
45
+ args: ['scRouterLinkAttrs']
46
+ }], field: [{
47
+ type: Input,
48
+ args: ['scRouterLink']
49
+ }] } });
50
50
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLWxpbmsuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcm91dGVyLWxpbmsuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsS0FBSyxHQUlOLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7O0FBSWpELE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxhQUFhO0lBWTFDO0lBWHFCLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFFbkIsS0FBSyxHQUErQixFQUFFLENBQUM7SUFFcEMsS0FBSyxDQUFZO0lBRWhELFlBQ0UsYUFBK0IsRUFDL0IsV0FBaUMsRUFDakMsUUFBbUIsRUFDbkIsVUFBc0IsRUFDZCxNQUFjO1FBRXRCLEtBQUssQ0FBQyxhQUFhLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUZoRCxXQUFNLEdBQU4sTUFBTSxDQUFRO0lBR3hCLENBQUM7SUFFUyxjQUFjLENBQUMsS0FBaUMsRUFBRSxRQUFnQjtRQUMxRSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUV4RSxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2pDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLEVBQUUsRUFBRTtnQkFDakQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUUzQyxJQUFJLEdBQUcsS0FBSyxNQUFNLEVBQUU7b0JBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTt3QkFDNUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7d0JBRXJDLDREQUE0RDt3QkFDNUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7NEJBQzVCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQzt5QkFDeEI7b0JBQ0gsQ0FBQyxDQUFDLENBQUM7aUJBQ0o7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUVILElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksUUFBUSxFQUFFO2dCQUMvRCxJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQzthQUM3QjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt3R0F4Q1UsbUJBQW1COzRGQUFuQixtQkFBbUI7OzRGQUFuQixtQkFBbUI7a0JBRC9CLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUU7dU1BRVIsUUFBUTtzQkFBdEMsS0FBSzt1QkFBQyxzQkFBc0I7Z0JBRUQsS0FBSztzQkFBaEMsS0FBSzt1QkFBQyxtQkFBbUI7Z0JBRUssS0FBSztzQkFBbkMsS0FBSzt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBEaXJlY3RpdmUsXHJcbiAgRWxlbWVudFJlZixcclxuICBJbnB1dCxcclxuICBSZW5kZXJlcjIsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgVmlld0NvbnRhaW5lclJlZixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgTGlua0RpcmVjdGl2ZSB9IGZyb20gJy4vbGluay5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBMaW5rRmllbGQgfSBmcm9tICcuL3JlbmRlcmluZy1maWVsZCc7XHJcblxyXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbc2NSb3V0ZXJMaW5rXScgfSlcclxuZXhwb3J0IGNsYXNzIFJvdXRlckxpbmtEaXJlY3RpdmUgZXh0ZW5kcyBMaW5rRGlyZWN0aXZlIHtcclxuICBASW5wdXQoJ3NjUm91dGVyTGlua0VkaXRhYmxlJykgZWRpdGFibGUgPSB0cnVlO1xyXG5cclxuICBASW5wdXQoJ3NjUm91dGVyTGlua0F0dHJzJykgYXR0cnM6IHsgW2F0dHI6IHN0cmluZ106IHN0cmluZyB9ID0ge307XHJcblxyXG4gIEBJbnB1dCgnc2NSb3V0ZXJMaW5rJykgZGVjbGFyZSBmaWVsZDogTGlua0ZpZWxkO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsXHJcbiAgICB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8dW5rbm93bj4sXHJcbiAgICByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgZWxlbWVudFJlZjogRWxlbWVudFJlZixcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXJcclxuICApIHtcclxuICAgIHN1cGVyKHZpZXdDb250YWluZXIsIHRlbXBsYXRlUmVmLCByZW5kZXJlciwgZWxlbWVudFJlZik7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgcmVuZGVyVGVtcGxhdGUocHJvcHM6IHsgW3Byb3A6IHN0cmluZ106IHN0cmluZyB9LCBsaW5rVGV4dDogc3RyaW5nKSB7XHJcbiAgICBjb25zdCB2aWV3UmVmID0gdGhpcy52aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlUmVmKTtcclxuXHJcbiAgICB2aWV3UmVmLnJvb3ROb2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XHJcbiAgICAgIE9iamVjdC5lbnRyaWVzKHByb3BzKS5mb3JFYWNoKChba2V5LCBwcm9wVmFsdWVdKSA9PiB7XHJcbiAgICAgICAgdGhpcy51cGRhdGVBdHRyaWJ1dGUobm9kZSwga2V5LCBwcm9wVmFsdWUpO1xyXG5cclxuICAgICAgICBpZiAoa2V5ID09PSAnaHJlZicpIHtcclxuICAgICAgICAgIHRoaXMucmVuZGVyZXIubGlzdGVuKG5vZGUsICdjbGljaycsIChldmVudCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHByb3BWYWx1ZSk7XHJcblxyXG4gICAgICAgICAgICAvLyBzaG91bGRuJ3QgcHJldmVudCBkZWZhdWx0IGlmIHRoZSBsaW5rIGluY2x1ZGVzIGEgZnJhZ21lbnRcclxuICAgICAgICAgICAgaWYgKCFwcm9wVmFsdWUuaW5jbHVkZXMoJyMnKSkge1xyXG4gICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICBpZiAobm9kZS5jaGlsZE5vZGVzICYmIG5vZGUuY2hpbGROb2Rlcy5sZW5ndGggPT09IDAgJiYgbGlua1RleHQpIHtcclxuICAgICAgICBub2RlLnRleHRDb250ZW50ID0gbGlua1RleHQ7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,62 +1,62 @@
1
- import { Directive, Input, } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class TextDirective {
4
- viewContainer;
5
- templateRef;
6
- editable = true;
7
- encode = true;
8
- field;
9
- viewRef;
10
- constructor(viewContainer, templateRef) {
11
- this.viewContainer = viewContainer;
12
- this.templateRef = templateRef;
13
- }
14
- ngOnChanges(changes) {
15
- if (changes.field || changes.editable || changes.encode) {
16
- if (!this.viewRef) {
17
- this.viewContainer.clear();
18
- this.viewRef = this.viewContainer.createEmbeddedView(this.templateRef);
19
- }
20
- this.updateView();
21
- }
22
- }
23
- updateView() {
24
- const field = this.field;
25
- let editable = this.editable;
26
- if (!field || (!field.editable && (field.value === undefined || field.value === ''))) {
27
- return;
28
- }
29
- // can't use editable value if we want to output unencoded
30
- if (!this.encode) {
31
- editable = false;
32
- }
33
- const html = field.editable && editable ? field.editable : field.value;
34
- const setDangerously = (field.editable && editable) || !this.encode;
35
- this.viewRef.rootNodes.forEach((node) => {
36
- if (setDangerously) {
37
- node.innerHTML = html;
38
- }
39
- else {
40
- node.textContent = html;
41
- }
42
- });
43
- }
44
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TextDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
45
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TextDirective, selector: "[scText]", inputs: { editable: ["scTextEditable", "editable"], encode: ["scTextEncode", "encode"], field: ["scText", "field"] }, usesOnChanges: true, ngImport: i0 });
46
- }
47
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TextDirective, decorators: [{
48
- type: Directive,
49
- args: [{
50
- selector: '[scText]',
51
- }]
52
- }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }]; }, propDecorators: { editable: [{
53
- type: Input,
54
- args: ['scTextEditable']
55
- }], encode: [{
56
- type: Input,
57
- args: ['scTextEncode']
58
- }], field: [{
59
- type: Input,
60
- args: ['scText']
61
- }] } });
1
+ import { Directive, Input, } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class TextDirective {
4
+ viewContainer;
5
+ templateRef;
6
+ editable = true;
7
+ encode = true;
8
+ field;
9
+ viewRef;
10
+ constructor(viewContainer, templateRef) {
11
+ this.viewContainer = viewContainer;
12
+ this.templateRef = templateRef;
13
+ }
14
+ ngOnChanges(changes) {
15
+ if (changes.field || changes.editable || changes.encode) {
16
+ if (!this.viewRef) {
17
+ this.viewContainer.clear();
18
+ this.viewRef = this.viewContainer.createEmbeddedView(this.templateRef);
19
+ }
20
+ this.updateView();
21
+ }
22
+ }
23
+ updateView() {
24
+ const field = this.field;
25
+ let editable = this.editable;
26
+ if (!field || (!field.editable && (field.value === undefined || field.value === ''))) {
27
+ return;
28
+ }
29
+ // can't use editable value if we want to output unencoded
30
+ if (!this.encode) {
31
+ editable = false;
32
+ }
33
+ const html = field.editable && editable ? field.editable : field.value;
34
+ const setDangerously = (field.editable && editable) || !this.encode;
35
+ this.viewRef.rootNodes.forEach((node) => {
36
+ if (setDangerously) {
37
+ node.innerHTML = html;
38
+ }
39
+ else {
40
+ node.textContent = html;
41
+ }
42
+ });
43
+ }
44
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TextDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
45
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TextDirective, selector: "[scText]", inputs: { editable: ["scTextEditable", "editable"], encode: ["scTextEncode", "encode"], field: ["scText", "field"] }, usesOnChanges: true, ngImport: i0 });
46
+ }
47
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TextDirective, decorators: [{
48
+ type: Directive,
49
+ args: [{
50
+ selector: '[scText]',
51
+ }]
52
+ }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }]; }, propDecorators: { editable: [{
53
+ type: Input,
54
+ args: ['scTextEditable']
55
+ }], encode: [{
56
+ type: Input,
57
+ args: ['scTextEncode']
58
+ }], field: [{
59
+ type: Input,
60
+ args: ['scText']
61
+ }] } });
62
62
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy90ZXh0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssR0FLTixNQUFNLGVBQWUsQ0FBQzs7QUFNdkIsTUFBTSxPQUFPLGFBQWE7SUFTSjtJQUF5QztJQVJwQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0lBRWxCLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFFcEIsS0FBSyxDQUFZO0lBRTFCLE9BQU8sQ0FBMkI7SUFFMUMsWUFBb0IsYUFBK0IsRUFBVSxXQUFpQztRQUExRSxrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBc0I7SUFBRyxDQUFDO0lBRWxHLFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLElBQUksT0FBTyxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO1lBQ3ZELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNqQixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQ3hFO1lBRUQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ25CO0lBQ0gsQ0FBQztJQUVPLFVBQVU7UUFDaEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN6QixJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBRTdCLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLENBQUMsS0FBSyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUU7WUFDcEYsT0FBTztTQUNSO1FBRUQsMERBQTBEO1FBQzFELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2hCLFFBQVEsR0FBRyxLQUFLLENBQUM7U0FDbEI7UUFFRCxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUN2RSxNQUFNLGNBQWMsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBRXBFLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3RDLElBQUksY0FBYyxFQUFFO2dCQUNsQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQzthQUN2QjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQzthQUN6QjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt3R0E3Q1UsYUFBYTs0RkFBYixhQUFhOzs0RkFBYixhQUFhO2tCQUh6QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxVQUFVO2lCQUNyQjtpSUFFMEIsUUFBUTtzQkFBaEMsS0FBSzt1QkFBQyxnQkFBZ0I7Z0JBRUEsTUFBTTtzQkFBNUIsS0FBSzt1QkFBQyxjQUFjO2dCQUVKLEtBQUs7c0JBQXJCLEtBQUs7dUJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgRGlyZWN0aXZlLFxyXG4gIEVtYmVkZGVkVmlld1JlZixcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBUZW1wbGF0ZVJlZixcclxuICBWaWV3Q29udGFpbmVyUmVmLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUZXh0RmllbGQgfSBmcm9tICcuL3JlbmRlcmluZy1maWVsZCc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1tzY1RleHRdJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRleHREaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG4gIEBJbnB1dCgnc2NUZXh0RWRpdGFibGUnKSBlZGl0YWJsZSA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgnc2NUZXh0RW5jb2RlJykgZW5jb2RlID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KCdzY1RleHQnKSBmaWVsZDogVGV4dEZpZWxkO1xyXG5cclxuICBwcml2YXRlIHZpZXdSZWY6IEVtYmVkZGVkVmlld1JlZjx1bmtub3duPjtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmLCBwcml2YXRlIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjx1bmtub3duPikge31cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKGNoYW5nZXMuZmllbGQgfHwgY2hhbmdlcy5lZGl0YWJsZSB8fCBjaGFuZ2VzLmVuY29kZSkge1xyXG4gICAgICBpZiAoIXRoaXMudmlld1JlZikge1xyXG4gICAgICAgIHRoaXMudmlld0NvbnRhaW5lci5jbGVhcigpO1xyXG4gICAgICAgIHRoaXMudmlld1JlZiA9IHRoaXMudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZVJlZik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMudXBkYXRlVmlldygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVWaWV3KCkge1xyXG4gICAgY29uc3QgZmllbGQgPSB0aGlzLmZpZWxkO1xyXG4gICAgbGV0IGVkaXRhYmxlID0gdGhpcy5lZGl0YWJsZTtcclxuXHJcbiAgICBpZiAoIWZpZWxkIHx8ICghZmllbGQuZWRpdGFibGUgJiYgKGZpZWxkLnZhbHVlID09PSB1bmRlZmluZWQgfHwgZmllbGQudmFsdWUgPT09ICcnKSkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGNhbid0IHVzZSBlZGl0YWJsZSB2YWx1ZSBpZiB3ZSB3YW50IHRvIG91dHB1dCB1bmVuY29kZWRcclxuICAgIGlmICghdGhpcy5lbmNvZGUpIHtcclxuICAgICAgZWRpdGFibGUgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBodG1sID0gZmllbGQuZWRpdGFibGUgJiYgZWRpdGFibGUgPyBmaWVsZC5lZGl0YWJsZSA6IGZpZWxkLnZhbHVlO1xyXG4gICAgY29uc3Qgc2V0RGFuZ2Vyb3VzbHkgPSAoZmllbGQuZWRpdGFibGUgJiYgZWRpdGFibGUpIHx8ICF0aGlzLmVuY29kZTtcclxuXHJcbiAgICB0aGlzLnZpZXdSZWYucm9vdE5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcclxuICAgICAgaWYgKHNldERhbmdlcm91c2x5KSB7XHJcbiAgICAgICAgbm9kZS5pbm5lckhUTUwgPSBodG1sO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5vZGUudGV4dENvbnRlbnQgPSBodG1sO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIl19
@@ -1,88 +1,88 @@
1
- import { Inject, Injectable, createNgModule } from '@angular/core';
2
- import { DYNAMIC_COMPONENT, PLACEHOLDER_COMPONENTS, PLACEHOLDER_LAZY_COMPONENTS, } from './components/placeholder.token';
3
- import { RawComponent } from './components/raw.component';
4
- import { isRawRendering } from './components/rendering';
5
- import * as i0 from "@angular/core";
6
- export class JssComponentFactoryService {
7
- injector;
8
- components;
9
- lazyComponents;
10
- componentMap;
11
- lazyComponentMap;
12
- constructor(injector, components, lazyComponents) {
13
- this.injector = injector;
14
- this.components = components;
15
- this.lazyComponents = lazyComponents;
16
- this.componentMap = new Map();
17
- this.lazyComponentMap = new Map();
18
- this.components.forEach((c) => this.componentMap.set(c.name, c));
19
- if (this.lazyComponents) {
20
- this.lazyComponents.forEach((c) => this.lazyComponentMap.set(c.path, c));
21
- }
22
- }
23
- getComponent(component) {
24
- const loadedComponent = this.componentMap.get(component.componentName);
25
- if (loadedComponent) {
26
- return Promise.resolve({
27
- componentDefinition: component,
28
- componentImplementation: loadedComponent.type,
29
- canActivate: loadedComponent.canActivate,
30
- resolve: loadedComponent.resolve,
31
- });
32
- }
33
- const lazyComponent = this.lazyComponentMap.get(component.componentName);
34
- if (lazyComponent) {
35
- return lazyComponent.loadChildren().then((lazyChild) => {
36
- let componentType = null;
37
- const moduleRef = createNgModule(lazyChild, this.injector);
38
- const dynamicComponentType = moduleRef.injector.get(DYNAMIC_COMPONENT);
39
- if (!dynamicComponentType) {
40
- throw new Error(`JssComponentFactoryService: Lazy load module for component "${lazyComponent.path}" missing DYNAMIC_COMPONENT provider. Missing JssModule.forChild()?`);
41
- }
42
- if (component.componentName in dynamicComponentType) {
43
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
44
- componentType = dynamicComponentType[component.componentName];
45
- }
46
- else {
47
- if (typeof dynamicComponentType === 'function') {
48
- componentType = dynamicComponentType;
49
- }
50
- else {
51
- throw new Error(`JssComponentFactoryService: Lazy load module for component "${lazyComponent.path}" missing DYNAMIC_COMPONENT provider. Missing JssModule.forChild()?`);
52
- }
53
- }
54
- return {
55
- componentDefinition: component,
56
- componentImplementation: componentType,
57
- canActivate: lazyComponent.canActivate,
58
- resolve: lazyComponent.resolve,
59
- };
60
- });
61
- }
62
- return Promise.resolve({
63
- componentDefinition: component,
64
- });
65
- }
66
- getComponents(components) {
67
- // acquire all components and keep them in order while handling their potential async-ness
68
- return Promise.all(components.map((component) => isRawRendering(component) ? this.getRawComponent(component) : this.getComponent(component)));
69
- }
70
- getRawComponent(component) {
71
- return Promise.resolve({
72
- componentImplementation: RawComponent,
73
- componentDefinition: component,
74
- });
75
- }
76
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: JssComponentFactoryService, deps: [{ token: i0.Injector }, { token: PLACEHOLDER_COMPONENTS }, { token: PLACEHOLDER_LAZY_COMPONENTS }], target: i0.ɵɵFactoryTarget.Injectable });
77
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: JssComponentFactoryService });
78
- }
79
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: JssComponentFactoryService, decorators: [{
80
- type: Injectable
81
- }], ctorParameters: function () { return [{ type: i0.Injector }, { type: undefined, decorators: [{
82
- type: Inject,
83
- args: [PLACEHOLDER_COMPONENTS]
84
- }] }, { type: undefined, decorators: [{
85
- type: Inject,
86
- args: [PLACEHOLDER_LAZY_COMPONENTS]
87
- }] }]; } });
1
+ import { Inject, Injectable, createNgModule } from '@angular/core';
2
+ import { DYNAMIC_COMPONENT, PLACEHOLDER_COMPONENTS, PLACEHOLDER_LAZY_COMPONENTS, } from './components/placeholder.token';
3
+ import { RawComponent } from './components/raw.component';
4
+ import { isRawRendering } from './components/rendering';
5
+ import * as i0 from "@angular/core";
6
+ export class JssComponentFactoryService {
7
+ injector;
8
+ components;
9
+ lazyComponents;
10
+ componentMap;
11
+ lazyComponentMap;
12
+ constructor(injector, components, lazyComponents) {
13
+ this.injector = injector;
14
+ this.components = components;
15
+ this.lazyComponents = lazyComponents;
16
+ this.componentMap = new Map();
17
+ this.lazyComponentMap = new Map();
18
+ this.components.forEach((c) => this.componentMap.set(c.name, c));
19
+ if (this.lazyComponents) {
20
+ this.lazyComponents.forEach((c) => this.lazyComponentMap.set(c.path, c));
21
+ }
22
+ }
23
+ getComponent(component) {
24
+ const loadedComponent = this.componentMap.get(component.componentName);
25
+ if (loadedComponent) {
26
+ return Promise.resolve({
27
+ componentDefinition: component,
28
+ componentImplementation: loadedComponent.type,
29
+ canActivate: loadedComponent.canActivate,
30
+ resolve: loadedComponent.resolve,
31
+ });
32
+ }
33
+ const lazyComponent = this.lazyComponentMap.get(component.componentName);
34
+ if (lazyComponent) {
35
+ return lazyComponent.loadChildren().then((lazyChild) => {
36
+ let componentType = null;
37
+ const moduleRef = createNgModule(lazyChild, this.injector);
38
+ const dynamicComponentType = moduleRef.injector.get(DYNAMIC_COMPONENT);
39
+ if (!dynamicComponentType) {
40
+ throw new Error(`JssComponentFactoryService: Lazy load module for component "${lazyComponent.path}" missing DYNAMIC_COMPONENT provider. Missing JssModule.forChild()?`);
41
+ }
42
+ if (component.componentName in dynamicComponentType) {
43
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
44
+ componentType = dynamicComponentType[component.componentName];
45
+ }
46
+ else {
47
+ if (typeof dynamicComponentType === 'function') {
48
+ componentType = dynamicComponentType;
49
+ }
50
+ else {
51
+ throw new Error(`JssComponentFactoryService: Lazy load module for component "${lazyComponent.path}" missing DYNAMIC_COMPONENT provider. Missing JssModule.forChild()?`);
52
+ }
53
+ }
54
+ return {
55
+ componentDefinition: component,
56
+ componentImplementation: componentType,
57
+ canActivate: lazyComponent.canActivate,
58
+ resolve: lazyComponent.resolve,
59
+ };
60
+ });
61
+ }
62
+ return Promise.resolve({
63
+ componentDefinition: component,
64
+ });
65
+ }
66
+ getComponents(components) {
67
+ // acquire all components and keep them in order while handling their potential async-ness
68
+ return Promise.all(components.map((component) => isRawRendering(component) ? this.getRawComponent(component) : this.getComponent(component)));
69
+ }
70
+ getRawComponent(component) {
71
+ return Promise.resolve({
72
+ componentImplementation: RawComponent,
73
+ componentDefinition: component,
74
+ });
75
+ }
76
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: JssComponentFactoryService, deps: [{ token: i0.Injector }, { token: PLACEHOLDER_COMPONENTS }, { token: PLACEHOLDER_LAZY_COMPONENTS }], target: i0.ɵɵFactoryTarget.Injectable });
77
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: JssComponentFactoryService });
78
+ }
79
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: JssComponentFactoryService, decorators: [{
80
+ type: Injectable
81
+ }], ctorParameters: function () { return [{ type: i0.Injector }, { type: undefined, decorators: [{
82
+ type: Inject,
83
+ args: [PLACEHOLDER_COMPONENTS]
84
+ }] }, { type: undefined, decorators: [{
85
+ type: Inject,
86
+ args: [PLACEHOLDER_LAZY_COMPONENTS]
87
+ }] }]; } });
88
88
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNzLWNvbXBvbmVudC1mYWN0b3J5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvanNzLWNvbXBvbmVudC1mYWN0b3J5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQWtCLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRixPQUFPLEVBR0wsaUJBQWlCLEVBSWpCLHNCQUFzQixFQUN0QiwyQkFBMkIsR0FDNUIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQWV4RCxNQUFNLE9BQU8sMEJBQTBCO0lBSzNCO0lBQ2dDO0lBQ0s7SUFOdkMsWUFBWSxDQUFvQztJQUNoRCxnQkFBZ0IsQ0FBc0M7SUFFOUQsWUFDVSxRQUFrQixFQUNjLFVBQWtDLEVBQzdCLGNBQXdDO1FBRjdFLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDYyxlQUFVLEdBQVYsVUFBVSxDQUF3QjtRQUM3QixtQkFBYyxHQUFkLGNBQWMsQ0FBMEI7UUFFckYsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRWxDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFakUsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdC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MEJBQzdCLE1BQU07MkJBQUMsMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3RvciwgVHlwZSwgY3JlYXRlTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tcG9uZW50UmVuZGVyaW5nLCBIdG1sRWxlbWVudFJlbmRlcmluZyB9IGZyb20gJ0BzaXRlY29yZS1qc3Mvc2l0ZWNvcmUtanNzL2xheW91dCc7XHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50TmFtZUFuZE1vZHVsZSxcclxuICBDb21wb25lbnROYW1lQW5kVHlwZSxcclxuICBEWU5BTUlDX0NPTVBPTkVOVCxcclxuICBKc3NDYW5BY3RpdmF0ZSxcclxuICBKc3NDYW5BY3RpdmF0ZUZuLFxyXG4gIEpzc1Jlc29sdmUsXHJcbiAgUExBQ0VIT0xERVJfQ09NUE9ORU5UUyxcclxuICBQTEFDRUhPTERFUl9MQVpZX0NPTVBPTkVOVFMsXHJcbn0gZnJvbSAnLi9jb21wb25lbnRzL3BsYWNlaG9sZGVyLnRva2VuJztcclxuaW1wb3J0IHsgUmF3Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Jhdy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBpc1Jhd1JlbmRlcmluZyB9IGZyb20gJy4vY29tcG9uZW50cy9yZW5kZXJpbmcnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRGYWN0b3J5UmVzdWx0IHtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGNvbXBvbmVudEltcGxlbWVudGF0aW9uPzogVHlwZTxhbnk+O1xyXG4gIGNvbXBvbmVudERlZmluaXRpb246IENvbXBvbmVudFJlbmRlcmluZyB8IEh0bWxFbGVtZW50UmVuZGVyaW5nO1xyXG4gIGNhbkFjdGl2YXRlPzpcclxuICAgIHwgSnNzQ2FuQWN0aXZhdGVcclxuICAgIHwgVHlwZTxKc3NDYW5BY3RpdmF0ZT5cclxuICAgIHwgSnNzQ2FuQWN0aXZhdGVGblxyXG4gICAgfCBBcnJheTxKc3NDYW5BY3RpdmF0ZSB8IEpzc0NhbkFjdGl2YXRlRm4gfCBUeXBlPEpzc0NhbkFjdGl2YXRlPj47XHJcbiAgcmVzb2x2ZT86IHsgW2tleTogc3RyaW5nXTogSnNzUmVzb2x2ZTxhbnk+IHwgVHlwZTxKc3NSZXNvbHZlPGFueT4+IH07XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEpzc0NvbXBvbmVudEZhY3RvcnlTZXJ2aWNlIHtcclxuICBwcml2YXRlIGNvbXBvbmVudE1hcDogTWFwPHN0cmluZywgQ29tcG9uZW50TmFtZUFuZFR5cGU+O1xyXG4gIHByaXZhdGUgbGF6eUNvbXBvbmVudE1hcDogTWFwPHN0cmluZywgQ29tcG9uZW50TmFtZUFuZE1vZHVsZT47XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBASW5qZWN0KFBMQUNFSE9MREVSX0NPTVBPTkVOVFMpIHByaXZhdGUgY29tcG9uZW50czogQ29tcG9uZW50TmFtZUFuZFR5cGVbXSxcclxuICAgIEBJbmplY3QoUExBQ0VIT0xERVJfTEFaWV9DT01QT05FTlRTKSBwcml2YXRlIGxhenlDb21wb25lbnRzOiBDb21wb25lbnROYW1lQW5kTW9kdWxlW11cclxuICApIHtcclxuICAgIHRoaXMuY29tcG9uZW50TWFwID0gbmV3IE1hcCgpO1xyXG4gICAgdGhpcy5sYXp5Q29tcG9uZW50TWFwID0gbmV3IE1hcCgpO1xyXG5cclxuICAgIHRoaXMuY29tcG9uZW50cy5mb3JFYWNoKChjKSA9PiB0aGlzLmNvbXBvbmVudE1hcC5zZXQoYy5uYW1lLCBjKSk7XHJcblxyXG4gICAgaWYgKHRoaXMubGF6eUNvbXBvbmVudHMpIHtcclxuICAgICAgdGhpcy5sYXp5Q29tcG9uZW50cy5mb3JFYWNoKChjKSA9PiB0aGlzLmxhenlDb21wb25lbnRNYXAuc2V0KGMucGF0aCwgYykpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0Q29tcG9uZW50KGNvbXBvbmVudDogQ29tcG9uZW50UmVuZGVyaW5nKTogUHJvbWlzZTxDb21wb25lbnRGYWN0b3J5UmVzdWx0PiB7XHJcbiAgICBjb25zdCBsb2FkZWRDb21wb25lbnQgPSB0aGlzLmNvbXBvbmVudE1hcC5nZXQoY29tcG9uZW50LmNvbXBvbmVudE5hbWUpO1xyXG5cclxuICAgIGlmIChsb2FkZWRDb21wb25lbnQpIHtcclxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7XHJcbiAgICAgICAgY29tcG9uZW50RGVmaW5pdGlvbjogY29tcG9uZW50LFxyXG4gICAgICAgIGNvbXBvbmVudEltcGxlbWVudGF0aW9uOiBsb2FkZWRDb21wb25lbnQudHlwZSxcclxuICAgICAgICBjYW5BY3RpdmF0ZTogbG9hZGVkQ29tcG9uZW50LmNhbkFjdGl2YXRlLFxyXG4gICAgICAgIHJlc29sdmU6IGxvYWRlZENvbXBvbmVudC5yZXNvbHZlLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBsYXp5Q29tcG9uZW50ID0gdGhpcy5sYXp5Q29tcG9uZW50TWFwLmdldChjb21wb25lbnQuY29tcG9uZW50TmFtZSk7XHJcblxyXG4gICAgaWYgKGxhenlDb21wb25lbnQpIHtcclxuICAgICAgcmV0dXJuIGxhenlDb21wb25lbnQubG9hZENoaWxkcmVuKCkudGhlbigobGF6eUNoaWxkKSA9PiB7XHJcbiAgICAgICAgbGV0IGNvbXBvbmVudFR5cGUgPSBudWxsO1xyXG4gICAgICAgIGNvbnN0IG1vZHVsZVJlZiA9IGNyZWF0ZU5nTW9kdWxlKGxhenlDaGlsZCwgdGhpcy5pbmplY3Rvcik7XHJcbiAgICAgICAgY29uc3QgZHluYW1pY0NvbXBvbmVudFR5cGUgPSBtb2R1bGVSZWYuaW5qZWN0b3IuZ2V0KERZTkFNSUNfQ09NUE9ORU5UKTtcclxuICAgICAgICBpZiAoIWR5bmFtaWNDb21wb25lbnRUeXBlKSB7XHJcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgICAgICAgIGBKc3NDb21wb25lbnRGYWN0b3J5U2VydmljZTogTGF6eSBsb2FkIG1vZHVsZSBmb3IgY29tcG9uZW50IFwiJHtsYXp5Q29tcG9uZW50LnBhdGh9XCIgbWlzc2luZyBEWU5BTUlDX0NPTVBPTkVOVCBwcm92aWRlci4gTWlzc2luZyBKc3NNb2R1bGUuZm9yQ2hpbGQoKT9gXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGNvbXBvbmVudC5jb21wb25lbnROYW1lIGluIGR5bmFtaWNDb21wb25lbnRUeXBlKSB7XHJcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgICAgY29tcG9uZW50VHlwZSA9IChkeW5hbWljQ29tcG9uZW50VHlwZSBhcyB7IFtzOiBzdHJpbmddOiBhbnkgfSlbY29tcG9uZW50LmNvbXBvbmVudE5hbWVdO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAodHlwZW9mIGR5bmFtaWNDb21wb25lbnRUeXBlID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgIGNvbXBvbmVudFR5cGUgPSBkeW5hbWljQ29tcG9uZW50VHlwZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICAgICAgICBgSnNzQ29tcG9uZW50RmFjdG9yeVNlcnZpY2U6IExhenkgbG9hZCBtb2R1bGUgZm9yIGNvbXBvbmVudCBcIiR7bGF6eUNvbXBvbmVudC5wYXRofVwiIG1pc3NpbmcgRFlOQU1JQ19DT01QT05FTlQgcHJvdmlkZXIuIE1pc3NpbmcgSnNzTW9kdWxlLmZvckNoaWxkKCk/YFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGNvbXBvbmVudERlZmluaXRpb246IGNvbXBvbmVudCxcclxuICAgICAgICAgIGNvbXBvbmVudEltcGxlbWVudGF0aW9uOiBjb21wb25lbnRUeXBlLFxyXG4gICAgICAgICAgY2FuQWN0aXZhdGU6IGxhenlDb21wb25lbnQuY2FuQWN0aXZhdGUsXHJcbiAgICAgICAgICByZXNvbHZlOiBsYXp5Q29tcG9uZW50LnJlc29sdmUsXHJcbiAgICAgICAgfTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7XHJcbiAgICAgIGNvbXBvbmVudERlZmluaXRpb246IGNvbXBvbmVudCxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29tcG9uZW50cyhcclxuICAgIGNvbXBvbmVudHM6IEFycmF5PENvbXBvbmVudFJlbmRlcmluZyB8IEh0bWxFbGVtZW50UmVuZGVyaW5nPlxyXG4gICk6IFByb21pc2U8Q29tcG9uZW50RmFjdG9yeVJlc3VsdFtdPiB7XHJcbiAgICAvLyBhY3F1aXJlIGFsbCBjb21wb25lbnRzIGFuZCBrZWVwIHRoZW0gaW4gb3JkZXIgd2hpbGUgaGFuZGxpbmcgdGhlaXIgcG90ZW50aWFsIGFzeW5jLW5lc3NcclxuICAgIHJldHVybiBQcm9taXNlLmFsbChcclxuICAgICAgY29tcG9uZW50cy5tYXAoKGNvbXBvbmVudCkgPT5cclxuICAgICAgICBpc1Jhd1JlbmRlcmluZyhjb21wb25lbnQpID8gdGhpcy5nZXRSYXdDb21wb25lbnQoY29tcG9uZW50KSA6IHRoaXMuZ2V0Q29tcG9uZW50KGNvbXBvbmVudClcclxuICAgICAgKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0UmF3Q29tcG9uZW50KGNvbXBvbmVudDogSHRtbEVsZW1lbnRSZW5kZXJpbmcpOiBQcm9taXNlPENvbXBvbmVudEZhY3RvcnlSZXN1bHQ+IHtcclxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe1xyXG4gICAgICBjb21wb25lbnRJbXBsZW1lbnRhdGlvbjogUmF3Q29tcG9uZW50LFxyXG4gICAgICBjb21wb25lbnREZWZpbml0aW9uOiBjb21wb25lbnQsXHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIl19