@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 { Component, Input } from '@angular/core';
2
- import { mapButtonToCommand, } from '@sitecore-jss/sitecore-jss/utils';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/common";
5
- export class EditFrameComponent {
6
- dataSource;
7
- buttons;
8
- title;
9
- tooltip;
10
- cssClass;
11
- parameters;
12
- sitecore;
13
- isEditing = false;
14
- frameProps = {};
15
- chromeData = '';
16
- ngOnChanges() {
17
- this.isEditing = this.sitecore.context.pageEditing || false;
18
- if (!this.isEditing) {
19
- return;
20
- }
21
- this.frameProps.class = 'scLooseFrameZone';
22
- if (this.cssClass) {
23
- this.frameProps.class = `${this.frameProps.class} ${this.cssClass}`;
24
- }
25
- // item uri for edit frame target
26
- if (this.dataSource) {
27
- const route = this.sitecore.route;
28
- const databaseName = this.dataSource.databaseName || route?.databaseName;
29
- const language = this.dataSource.language || this.sitecore.context.language;
30
- this.frameProps.sc_item = `sitecore://${databaseName}/${this.dataSource.itemId}?lang=${language}`;
31
- }
32
- this.chromeData = this.buildChromeData();
33
- }
34
- buildChromeData() {
35
- const chromeData = {
36
- displayName: this.title,
37
- expandedDisplayName: this.tooltip,
38
- };
39
- if (this.dataSource) {
40
- chromeData.contextItemUri = this.frameProps.sc_item;
41
- }
42
- chromeData.commands = this.buttons?.map((value) => {
43
- return mapButtonToCommand(value, this.dataSource?.itemId, this.parameters);
44
- });
45
- return JSON.stringify(chromeData);
46
- }
47
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EditFrameComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1
+ import { Component, Input } from '@angular/core';
2
+ import { mapButtonToCommand, } from '@sitecore-jss/sitecore-jss/utils';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ export class EditFrameComponent {
6
+ dataSource;
7
+ buttons;
8
+ title;
9
+ tooltip;
10
+ cssClass;
11
+ parameters;
12
+ sitecore;
13
+ isEditing = false;
14
+ frameProps = {};
15
+ chromeData = '';
16
+ ngOnChanges() {
17
+ this.isEditing = this.sitecore.context.pageEditing || false;
18
+ if (!this.isEditing) {
19
+ return;
20
+ }
21
+ this.frameProps.class = 'scLooseFrameZone';
22
+ if (this.cssClass) {
23
+ this.frameProps.class = `${this.frameProps.class} ${this.cssClass}`;
24
+ }
25
+ // item uri for edit frame target
26
+ if (this.dataSource) {
27
+ const route = this.sitecore.route;
28
+ const databaseName = this.dataSource.databaseName || route?.databaseName;
29
+ const language = this.dataSource.language || this.sitecore.context.language;
30
+ this.frameProps.sc_item = `sitecore://${databaseName}/${this.dataSource.itemId}?lang=${language}`;
31
+ }
32
+ this.chromeData = this.buildChromeData();
33
+ }
34
+ buildChromeData() {
35
+ const chromeData = {
36
+ displayName: this.title,
37
+ expandedDisplayName: this.tooltip,
38
+ };
39
+ if (this.dataSource) {
40
+ chromeData.contextItemUri = this.frameProps.sc_item;
41
+ }
42
+ chromeData.commands = this.buttons?.map((value) => {
43
+ return mapButtonToCommand(value, this.dataSource?.itemId, this.parameters);
44
+ });
45
+ return JSON.stringify(chromeData);
46
+ }
47
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EditFrameComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
48
48
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EditFrameComponent, selector: "sc-edit-frame,[sc-edit-frame]", inputs: { dataSource: "dataSource", buttons: "buttons", title: "title", tooltip: "tooltip", cssClass: "cssClass", parameters: "parameters", sitecore: "sitecore" }, usesOnChanges: true, ngImport: i0, template: `
49
49
  <ng-template #childContent>
50
50
  <ng-content></ng-content>
@@ -60,12 +60,12 @@ export class EditFrameComponent {
60
60
  <ng-template #elseBlock>
61
61
  <ng-container *ngTemplateOutlet="childContent"></ng-container>
62
62
  </ng-template>
63
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
64
- }
65
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EditFrameComponent, decorators: [{
66
- type: Component,
67
- args: [{
68
- selector: 'sc-edit-frame,[sc-edit-frame]',
63
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
64
+ }
65
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EditFrameComponent, decorators: [{
66
+ type: Component,
67
+ args: [{
68
+ selector: 'sc-edit-frame,[sc-edit-frame]',
69
69
  template: `
70
70
  <ng-template #childContent>
71
71
  <ng-content></ng-content>
@@ -81,21 +81,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
81
81
  <ng-template #elseBlock>
82
82
  <ng-container *ngTemplateOutlet="childContent"></ng-container>
83
83
  </ng-template>
84
- `,
85
- }]
86
- }], propDecorators: { dataSource: [{
87
- type: Input
88
- }], buttons: [{
89
- type: Input
90
- }], title: [{
91
- type: Input
92
- }], tooltip: [{
93
- type: Input
94
- }], cssClass: [{
95
- type: Input
96
- }], parameters: [{
97
- type: Input
98
- }], sitecore: [{
99
- type: Input
100
- }] } });
84
+ `,
85
+ }]
86
+ }], propDecorators: { dataSource: [{
87
+ type: Input
88
+ }], buttons: [{
89
+ type: Input
90
+ }], title: [{
91
+ type: Input
92
+ }], tooltip: [{
93
+ type: Input
94
+ }], cssClass: [{
95
+ type: Input
96
+ }], parameters: [{
97
+ type: Input
98
+ }], sitecore: [{
99
+ type: Input
100
+ }] } });
101
101
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdGZyYW1lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2VkaXRmcmFtZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUlMLGtCQUFrQixHQUNuQixNQUFNLGtDQUFrQyxDQUFDOzs7QUFzQjFDLE1BQU0sT0FBTyxrQkFBa0I7SUFDcEIsVUFBVSxDQUFzQjtJQUVoQyxPQUFPLENBQW9CO0lBRTNCLEtBQUssQ0FBUztJQUVkLE9BQU8sQ0FBUztJQUVoQixRQUFRLENBQVM7SUFFakIsVUFBVSxDQUErRDtJQUV6RSxRQUFRLENBRWY7SUFFRixTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ2xCLFVBQVUsR0FBNEIsRUFBRSxDQUFDO0lBQ3pDLFVBQVUsR0FBRyxFQUFFLENBQUM7SUFFaEIsV0FBVztRQUNULElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsV0FBVyxJQUFJLEtBQUssQ0FBQztRQUM1RCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNuQixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssR0FBRyxrQkFBa0IsQ0FBQztRQUMzQyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDckU7UUFFRCxpQ0FBaUM7UUFDakMsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO1lBQ2xDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxJQUFJLEtBQUssRUFBRSxZQUFZLENBQUM7WUFDekUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO1lBQzVFLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxHQUFHLGNBQWMsWUFBWSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxTQUFTLFFBQVEsRUFBRSxDQUFDO1NBQ25HO1FBRUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVELGVBQWU7UUFDYixNQUFNLFVBQVUsR0FBNEI7WUFDMUMsV0FBVyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ3ZCLG1CQUFtQixFQUFFLElBQUksQ0FBQyxPQUFPO1NBQ2xDLENBQUM7UUFFRixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDbkIsVUFBVSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQztTQUNyRDtRQUVELFVBQVUsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQ3JDLENBQUMsS0FBSyxFQUFpQixFQUFFO1lBQ3ZCLE9BQU8sa0JBQWtCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM3RSxDQUFDLENBQ0YsQ0FBQztRQUVGLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNwQyxDQUFDO3dHQTVEVSxrQkFBa0I7NEZBQWxCLGtCQUFrQiw4UEFqQm5COzs7Ozs7Ozs7Ozs7Ozs7R0FlVDs7NEZBRVUsa0JBQWtCO2tCQW5COUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsK0JBQStCO29CQUN6QyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7OztHQWVUO2lCQUNGOzhCQUVVLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBFZGl0RnJhbWVEYXRhU291cmNlLFxyXG4gIENocm9tZUNvbW1hbmQsXHJcbiAgRWRpdEJ1dHRvblR5cGVzLFxyXG4gIG1hcEJ1dHRvblRvQ29tbWFuZCxcclxufSBmcm9tICdAc2l0ZWNvcmUtanNzL3NpdGVjb3JlLWpzcy91dGlscyc7XHJcbmltcG9ydCB7IExheW91dFNlcnZpY2VDb250ZXh0RGF0YSwgUm91dGVEYXRhIH0gZnJvbSAnQHNpdGVjb3JlLWpzcy9zaXRlY29yZS1qc3MvbGF5b3V0JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2MtZWRpdC1mcmFtZSxbc2MtZWRpdC1mcmFtZV0nLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8bmctdGVtcGxhdGUgI2NoaWxkQ29udGVudD5cclxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxkaXZcclxuICAgICAgKm5nSWY9XCJpc0VkaXRpbmc7IGVsc2UgZWxzZUJsb2NrXCJcclxuICAgICAgW2NsYXNzXT1cImZyYW1lUHJvcHMuY2xhc3NcIlxyXG4gICAgICBbYXR0ci5zY19pdGVtXT1cImZyYW1lUHJvcHMuc2NfaXRlbVwiXHJcbiAgICA+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic2NDaHJvbWVEYXRhXCI+e3sgY2hyb21lRGF0YSB9fTwvc3Bhbj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNoaWxkQ29udGVudFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bmctdGVtcGxhdGUgI2Vsc2VCbG9jaz5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNoaWxkQ29udGVudFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICBgLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRWRpdEZyYW1lQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuICBASW5wdXQoKSBkYXRhU291cmNlOiBFZGl0RnJhbWVEYXRhU291cmNlO1xyXG5cclxuICBASW5wdXQoKSBidXR0b25zOiBFZGl0QnV0dG9uVHlwZXNbXTtcclxuXHJcbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZztcclxuXHJcbiAgQElucHV0KCkgdG9vbHRpcDogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKSBjc3NDbGFzczogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKSBwYXJhbWV0ZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgdW5kZWZpbmVkIHwgbnVsbD47XHJcblxyXG4gIEBJbnB1dCgpIHNpdGVjb3JlOiBMYXlvdXRTZXJ2aWNlQ29udGV4dERhdGEgJiB7XHJcbiAgICByb3V0ZTogUm91dGVEYXRhPHVua25vd24+IHwgbnVsbDtcclxuICB9O1xyXG5cclxuICBpc0VkaXRpbmcgPSBmYWxzZTtcclxuICBmcmFtZVByb3BzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xyXG4gIGNocm9tZURhdGEgPSAnJztcclxuXHJcbiAgbmdPbkNoYW5nZXMoKSB7XHJcbiAgICB0aGlzLmlzRWRpdGluZyA9IHRoaXMuc2l0ZWNvcmUuY29udGV4dC5wYWdlRWRpdGluZyB8fCBmYWxzZTtcclxuICAgIGlmICghdGhpcy5pc0VkaXRpbmcpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZnJhbWVQcm9wcy5jbGFzcyA9ICdzY0xvb3NlRnJhbWVab25lJztcclxuICAgIGlmICh0aGlzLmNzc0NsYXNzKSB7XHJcbiAgICAgIHRoaXMuZnJhbWVQcm9wcy5jbGFzcyA9IGAke3RoaXMuZnJhbWVQcm9wcy5jbGFzc30gJHt0aGlzLmNzc0NsYXNzfWA7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gaXRlbSB1cmkgZm9yIGVkaXQgZnJhbWUgdGFyZ2V0XHJcbiAgICBpZiAodGhpcy5kYXRhU291cmNlKSB7XHJcbiAgICAgIGNvbnN0IHJvdXRlID0gdGhpcy5zaXRlY29yZS5yb3V0ZTtcclxuICAgICAgY29uc3QgZGF0YWJhc2VOYW1lID0gdGhpcy5kYXRhU291cmNlLmRhdGFiYXNlTmFtZSB8fCByb3V0ZT8uZGF0YWJhc2VOYW1lO1xyXG4gICAgICBjb25zdCBsYW5ndWFnZSA9IHRoaXMuZGF0YVNvdXJjZS5sYW5ndWFnZSB8fCB0aGlzLnNpdGVjb3JlLmNvbnRleHQubGFuZ3VhZ2U7XHJcbiAgICAgIHRoaXMuZnJhbWVQcm9wcy5zY19pdGVtID0gYHNpdGVjb3JlOi8vJHtkYXRhYmFzZU5hbWV9LyR7dGhpcy5kYXRhU291cmNlLml0ZW1JZH0/bGFuZz0ke2xhbmd1YWdlfWA7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jaHJvbWVEYXRhID0gdGhpcy5idWlsZENocm9tZURhdGEoKTtcclxuICB9XHJcblxyXG4gIGJ1aWxkQ2hyb21lRGF0YSgpIHtcclxuICAgIGNvbnN0IGNocm9tZURhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge1xyXG4gICAgICBkaXNwbGF5TmFtZTogdGhpcy50aXRsZSxcclxuICAgICAgZXhwYW5kZWREaXNwbGF5TmFtZTogdGhpcy50b29sdGlwLFxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAodGhpcy5kYXRhU291cmNlKSB7XHJcbiAgICAgIGNocm9tZURhdGEuY29udGV4dEl0ZW1VcmkgPSB0aGlzLmZyYW1lUHJvcHMuc2NfaXRlbTtcclxuICAgIH1cclxuXHJcbiAgICBjaHJvbWVEYXRhLmNvbW1hbmRzID0gdGhpcy5idXR0b25zPy5tYXAoXHJcbiAgICAgICh2YWx1ZSk6IENocm9tZUNvbW1hbmQgPT4ge1xyXG4gICAgICAgIHJldHVybiBtYXBCdXR0b25Ub0NvbW1hbmQodmFsdWUsIHRoaXMuZGF0YVNvdXJjZT8uaXRlbUlkLCB0aGlzLnBhcmFtZXRlcnMpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG5cclxuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShjaHJvbWVEYXRhKTtcclxuICB9XHJcbn1cclxuIl19
@@ -1,49 +1,49 @@
1
- import { Directive, Input, } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- /**
4
- * File fields cannot be managed via the EE. We never output "editable."
5
- */
6
- export class FileDirective {
7
- viewContainer;
8
- templateRef;
9
- field;
10
- viewRef;
11
- constructor(viewContainer, templateRef) {
12
- this.viewContainer = viewContainer;
13
- this.templateRef = templateRef;
14
- }
15
- ngOnChanges(changes) {
16
- if (changes.field) {
17
- if (!this.viewRef) {
18
- this.viewContainer.clear();
19
- this.viewRef = this.viewContainer.createEmbeddedView(this.templateRef);
20
- }
21
- this.updateView();
22
- }
23
- }
24
- updateView() {
25
- const field = this.field;
26
- if (!field || (!field.value && !field.src)) {
27
- return;
28
- }
29
- const file = field.src ? field : field.value;
30
- this.viewRef.rootNodes.forEach((node) => {
31
- if (!file)
32
- return;
33
- node.href = file.src;
34
- if (node.innerHTML === '') {
35
- node.innerHTML = file.title || file.displayName;
36
- }
37
- });
38
- }
39
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FileDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
40
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: FileDirective, selector: "[scFile]", inputs: { field: ["scFile", "field"] }, usesOnChanges: true, ngImport: i0 });
41
- }
42
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FileDirective, decorators: [{
43
- type: Directive,
44
- args: [{ selector: '[scFile]' }]
45
- }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }]; }, propDecorators: { field: [{
46
- type: Input,
47
- args: ['scFile']
48
- }] } });
1
+ import { Directive, Input, } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * File fields cannot be managed via the EE. We never output "editable."
5
+ */
6
+ export class FileDirective {
7
+ viewContainer;
8
+ templateRef;
9
+ field;
10
+ viewRef;
11
+ constructor(viewContainer, templateRef) {
12
+ this.viewContainer = viewContainer;
13
+ this.templateRef = templateRef;
14
+ }
15
+ ngOnChanges(changes) {
16
+ if (changes.field) {
17
+ if (!this.viewRef) {
18
+ this.viewContainer.clear();
19
+ this.viewRef = this.viewContainer.createEmbeddedView(this.templateRef);
20
+ }
21
+ this.updateView();
22
+ }
23
+ }
24
+ updateView() {
25
+ const field = this.field;
26
+ if (!field || (!field.value && !field.src)) {
27
+ return;
28
+ }
29
+ const file = field.src ? field : field.value;
30
+ this.viewRef.rootNodes.forEach((node) => {
31
+ if (!file)
32
+ return;
33
+ node.href = file.src;
34
+ if (node.innerHTML === '') {
35
+ node.innerHTML = file.title || file.displayName;
36
+ }
37
+ });
38
+ }
39
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FileDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
40
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: FileDirective, selector: "[scFile]", inputs: { field: ["scFile", "field"] }, usesOnChanges: true, ngImport: i0 });
41
+ }
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FileDirective, decorators: [{
43
+ type: Directive,
44
+ args: [{ selector: '[scFile]' }]
45
+ }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }]; }, propDecorators: { field: [{
46
+ type: Input,
47
+ args: ['scFile']
48
+ }] } });
49
49
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9maWxlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssR0FLTixNQUFNLGVBQWUsQ0FBQzs7QUFHdkI7O0dBRUc7QUFFSCxNQUFNLE9BQU8sYUFBYTtJQUtKO0lBQXlDO0lBSjVDLEtBQUssQ0FBWTtJQUUxQixPQUFPLENBQTJCO0lBRTFDLFlBQW9CLGFBQStCLEVBQVUsV0FBaUM7UUFBMUUsa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQXNCO0lBQUcsQ0FBQztJQUVsRyxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNqQixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQ3hFO1lBRUQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ25CO0lBQ0gsQ0FBQztJQUVPLFVBQVU7UUFDaEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUV6QixJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzFDLE9BQU87U0FDUjtRQUVELE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUM3QyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN0QyxJQUFJLENBQUMsSUFBSTtnQkFBRSxPQUFPO1lBRWxCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUNyQixJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssRUFBRSxFQUFFO2dCQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQzthQUNqRDtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt3R0FsQ1UsYUFBYTs0RkFBYixhQUFhOzs0RkFBYixhQUFhO2tCQUR6QixTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRTtpSUFFaEIsS0FBSztzQkFBckIsS0FBSzt1QkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBEaXJlY3RpdmUsXHJcbiAgRW1iZWRkZWRWaWV3UmVmLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIFZpZXdDb250YWluZXJSZWYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZpbGVGaWVsZCB9IGZyb20gJy4vcmVuZGVyaW5nLWZpZWxkJztcclxuXHJcbi8qKlxyXG4gKiBGaWxlIGZpZWxkcyBjYW5ub3QgYmUgbWFuYWdlZCB2aWEgdGhlIEVFLiBXZSBuZXZlciBvdXRwdXQgXCJlZGl0YWJsZS5cIlxyXG4gKi9cclxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW3NjRmlsZV0nIH0pXHJcbmV4cG9ydCBjbGFzcyBGaWxlRGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuICBASW5wdXQoJ3NjRmlsZScpIGZpZWxkOiBGaWxlRmllbGQ7XHJcblxyXG4gIHByaXZhdGUgdmlld1JlZjogRW1iZWRkZWRWaWV3UmVmPHVua25vd24+O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsIHByaXZhdGUgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPHVua25vd24+KSB7fVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlcy5maWVsZCkge1xyXG4gICAgICBpZiAoIXRoaXMudmlld1JlZikge1xyXG4gICAgICAgIHRoaXMudmlld0NvbnRhaW5lci5jbGVhcigpO1xyXG4gICAgICAgIHRoaXMudmlld1JlZiA9IHRoaXMudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZVJlZik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMudXBkYXRlVmlldygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVWaWV3KCkge1xyXG4gICAgY29uc3QgZmllbGQgPSB0aGlzLmZpZWxkO1xyXG5cclxuICAgIGlmICghZmllbGQgfHwgKCFmaWVsZC52YWx1ZSAmJiAhZmllbGQuc3JjKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZmlsZSA9IGZpZWxkLnNyYyA/IGZpZWxkIDogZmllbGQudmFsdWU7XHJcbiAgICB0aGlzLnZpZXdSZWYucm9vdE5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcclxuICAgICAgaWYgKCFmaWxlKSByZXR1cm47XHJcblxyXG4gICAgICBub2RlLmhyZWYgPSBmaWxlLnNyYztcclxuICAgICAgaWYgKG5vZGUuaW5uZXJIVE1MID09PSAnJykge1xyXG4gICAgICAgIG5vZGUuaW5uZXJIVE1MID0gZmlsZS50aXRsZSB8fCBmaWxlLmRpc3BsYXlOYW1lO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIl19
@@ -1,68 +1,68 @@
1
- import { Directive, Input, } from '@angular/core';
2
- import { isAbsoluteUrl } from '@sitecore-jss/sitecore-jss/utils';
3
- import { LinkDirective } from './link.directive';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/router";
6
- export class GenericLinkDirective extends LinkDirective {
7
- router;
8
- editable = true;
9
- attrs = {};
10
- field;
11
- extras;
12
- constructor(viewContainer, templateRef, renderer, elementRef, router) {
13
- super(viewContainer, templateRef, renderer, elementRef);
14
- this.router = router;
15
- }
16
- renderTemplate(props, linkText) {
17
- const viewRef = this.viewContainer.createEmbeddedView(this.templateRef);
18
- viewRef.rootNodes.forEach((node) => {
19
- Object.entries(props).forEach(([key, propValue]) => {
20
- if (key === 'href' && !isAbsoluteUrl(propValue)) {
21
- const fragments = propValue.split('#');
22
- const url = fragments[0];
23
- const anchor = fragments[1];
24
- const urlTree = this.router.createUrlTree([url], {
25
- fragment: anchor,
26
- ...this.extras,
27
- });
28
- this.updateAttribute(node, key, this.router.serializeUrl(urlTree));
29
- this.renderer.listen(node, 'click', (event) => {
30
- this.router.navigate([url], {
31
- fragment: anchor,
32
- ...this.extras,
33
- });
34
- // shouldn't prevent default if the link includes a fragment
35
- if (!anchor) {
36
- event.preventDefault();
37
- }
38
- });
39
- }
40
- else {
41
- this.updateAttribute(node, key, propValue);
42
- }
43
- });
44
- if (node.childNodes && node.childNodes.length === 0 && linkText) {
45
- node.textContent = linkText;
46
- }
47
- });
48
- }
49
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GenericLinkDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Directive });
50
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: GenericLinkDirective, selector: "[scGenericLink]", inputs: { editable: ["scGenericLinkEditable", "editable"], attrs: ["scGenericLinkAttrs", "attrs"], field: ["scGenericLink", "field"], extras: ["scGenericLinkExtras", "extras"] }, usesInheritance: true, ngImport: i0 });
51
- }
52
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GenericLinkDirective, decorators: [{
53
- type: Directive,
54
- args: [{ selector: '[scGenericLink]' }]
55
- }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i1.Router }]; }, propDecorators: { editable: [{
56
- type: Input,
57
- args: ['scGenericLinkEditable']
58
- }], attrs: [{
59
- type: Input,
60
- args: ['scGenericLinkAttrs']
61
- }], field: [{
62
- type: Input,
63
- args: ['scGenericLink']
64
- }], extras: [{
65
- type: Input,
66
- args: ['scGenericLinkExtras']
67
- }] } });
1
+ import { Directive, Input, } from '@angular/core';
2
+ import { isAbsoluteUrl } from '@sitecore-jss/sitecore-jss/utils';
3
+ import { LinkDirective } from './link.directive';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/router";
6
+ export class GenericLinkDirective extends LinkDirective {
7
+ router;
8
+ editable = true;
9
+ attrs = {};
10
+ field;
11
+ extras;
12
+ constructor(viewContainer, templateRef, renderer, elementRef, router) {
13
+ super(viewContainer, templateRef, renderer, elementRef);
14
+ this.router = router;
15
+ }
16
+ renderTemplate(props, linkText) {
17
+ const viewRef = this.viewContainer.createEmbeddedView(this.templateRef);
18
+ viewRef.rootNodes.forEach((node) => {
19
+ Object.entries(props).forEach(([key, propValue]) => {
20
+ if (key === 'href' && !isAbsoluteUrl(propValue)) {
21
+ const fragments = propValue.split('#');
22
+ const url = fragments[0];
23
+ const anchor = fragments[1];
24
+ const urlTree = this.router.createUrlTree([url], {
25
+ fragment: anchor,
26
+ ...this.extras,
27
+ });
28
+ this.updateAttribute(node, key, this.router.serializeUrl(urlTree));
29
+ this.renderer.listen(node, 'click', (event) => {
30
+ this.router.navigate([url], {
31
+ fragment: anchor,
32
+ ...this.extras,
33
+ });
34
+ // shouldn't prevent default if the link includes a fragment
35
+ if (!anchor) {
36
+ event.preventDefault();
37
+ }
38
+ });
39
+ }
40
+ else {
41
+ this.updateAttribute(node, key, propValue);
42
+ }
43
+ });
44
+ if (node.childNodes && node.childNodes.length === 0 && linkText) {
45
+ node.textContent = linkText;
46
+ }
47
+ });
48
+ }
49
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GenericLinkDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Directive });
50
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: GenericLinkDirective, selector: "[scGenericLink]", inputs: { editable: ["scGenericLinkEditable", "editable"], attrs: ["scGenericLinkAttrs", "attrs"], field: ["scGenericLink", "field"], extras: ["scGenericLinkExtras", "extras"] }, usesInheritance: true, ngImport: i0 });
51
+ }
52
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GenericLinkDirective, decorators: [{
53
+ type: Directive,
54
+ args: [{ selector: '[scGenericLink]' }]
55
+ }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i1.Router }]; }, propDecorators: { editable: [{
56
+ type: Input,
57
+ args: ['scGenericLinkEditable']
58
+ }], attrs: [{
59
+ type: Input,
60
+ args: ['scGenericLinkAttrs']
61
+ }], field: [{
62
+ type: Input,
63
+ args: ['scGenericLink']
64
+ }], extras: [{
65
+ type: Input,
66
+ args: ['scGenericLinkExtras']
67
+ }] } });
68
68
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1saW5rLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2dlbmVyaWMtbGluay5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxLQUFLLEdBSU4sTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7O0FBSWpELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxhQUFhO0lBYzNDO0lBYnNCLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFFbkIsS0FBSyxHQUE4QixFQUFFLENBQUM7SUFFbkMsS0FBSyxDQUFZO0lBRW5CLE1BQU0sQ0FBb0I7SUFFeEQsWUFDRSxhQUErQixFQUMvQixXQUFpQyxFQUNqQyxRQUFtQixFQUNuQixVQUFzQixFQUNkLE1BQWM7UUFFdEIsS0FBSyxDQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRmhELFdBQU0sR0FBTixNQUFNLENBQVE7SUFHeEIsQ0FBQztJQUVTLGNBQWMsQ0FBQyxLQUFnQyxFQUFFLFFBQWdCO1FBQ3pFLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRXhFLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDakMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQW1CLEVBQUUsRUFBRTtnQkFDbkUsSUFBSSxHQUFHLEtBQUssTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxFQUFFO29CQUMvQyxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUN2QyxNQUFNLEdBQUcsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3pCLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDNUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRTt3QkFDL0MsUUFBUSxFQUFFLE1BQU07d0JBQ2hCLEdBQUcsSUFBSSxDQUFDLE1BQU07cUJBQ2YsQ0FBQyxDQUFDO29CQUNILElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO29CQUNuRSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7d0JBQzVDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUU7NEJBQzFCLFFBQVEsRUFBRSxNQUFNOzRCQUNoQixHQUFHLElBQUksQ0FBQyxNQUFNO3lCQUNmLENBQUMsQ0FBQzt3QkFFSCw0REFBNEQ7d0JBQzVELElBQUksQ0FBQyxNQUFNLEVBQUU7NEJBQ1gsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO3lCQUN4QjtvQkFDSCxDQUFDLENBQUMsQ0FBQztpQkFDSjtxQkFBTTtvQkFDTCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7aUJBQzVDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLFFBQVEsRUFBRTtnQkFDL0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUM7YUFDN0I7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7d0dBckRVLG9CQUFvQjs0RkFBcEIsb0JBQW9COzs0RkFBcEIsb0JBQW9CO2tCQURoQyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFO3VNQUVSLFFBQVE7c0JBQXZDLEtBQUs7dUJBQUMsdUJBQXVCO2dCQUVELEtBQUs7c0JBQWpDLEtBQUs7dUJBQUMsb0JBQW9CO2dCQUVLLEtBQUs7c0JBQXBDLEtBQUs7dUJBQUMsZUFBZTtnQkFFUSxNQUFNO3NCQUFuQyxLQUFLO3VCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgRGlyZWN0aXZlLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSW5wdXQsXHJcbiAgUmVuZGVyZXIyLFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIFZpZXdDb250YWluZXJSZWYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJvdXRlciwgTmF2aWdhdGlvbkV4dHJhcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IGlzQWJzb2x1dGVVcmwgfSBmcm9tICdAc2l0ZWNvcmUtanNzL3NpdGVjb3JlLWpzcy91dGlscyc7XHJcbmltcG9ydCB7IExpbmtEaXJlY3RpdmUgfSBmcm9tICcuL2xpbmsuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgTGlua0ZpZWxkIH0gZnJvbSAnLi9yZW5kZXJpbmctZmllbGQnO1xyXG5cclxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW3NjR2VuZXJpY0xpbmtdJyB9KVxyXG5leHBvcnQgY2xhc3MgR2VuZXJpY0xpbmtEaXJlY3RpdmUgZXh0ZW5kcyBMaW5rRGlyZWN0aXZlIHtcclxuICBASW5wdXQoJ3NjR2VuZXJpY0xpbmtFZGl0YWJsZScpIGVkaXRhYmxlID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KCdzY0dlbmVyaWNMaW5rQXR0cnMnKSBhdHRyczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xyXG5cclxuICBASW5wdXQoJ3NjR2VuZXJpY0xpbmsnKSBkZWNsYXJlIGZpZWxkOiBMaW5rRmllbGQ7XHJcblxyXG4gIEBJbnB1dCgnc2NHZW5lcmljTGlua0V4dHJhcycpIGV4dHJhcz86IE5hdmlnYXRpb25FeHRyYXM7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZixcclxuICAgIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjx1bmtub3duPixcclxuICAgIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxyXG4gICkge1xyXG4gICAgc3VwZXIodmlld0NvbnRhaW5lciwgdGVtcGxhdGVSZWYsIHJlbmRlcmVyLCBlbGVtZW50UmVmKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCByZW5kZXJUZW1wbGF0ZShwcm9wczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSwgbGlua1RleHQ6IHN0cmluZykge1xyXG4gICAgY29uc3Qgdmlld1JlZiA9IHRoaXMudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZVJlZik7XHJcblxyXG4gICAgdmlld1JlZi5yb290Tm9kZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xyXG4gICAgICBPYmplY3QuZW50cmllcyhwcm9wcykuZm9yRWFjaCgoW2tleSwgcHJvcFZhbHVlXTogW3N0cmluZywgc3RyaW5nXSkgPT4ge1xyXG4gICAgICAgIGlmIChrZXkgPT09ICdocmVmJyAmJiAhaXNBYnNvbHV0ZVVybChwcm9wVmFsdWUpKSB7XHJcbiAgICAgICAgICBjb25zdCBmcmFnbWVudHMgPSBwcm9wVmFsdWUuc3BsaXQoJyMnKTtcclxuICAgICAgICAgIGNvbnN0IHVybCA9IGZyYWdtZW50c1swXTtcclxuICAgICAgICAgIGNvbnN0IGFuY2hvciA9IGZyYWdtZW50c1sxXTtcclxuICAgICAgICAgIGNvbnN0IHVybFRyZWUgPSB0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKFt1cmxdLCB7XHJcbiAgICAgICAgICAgIGZyYWdtZW50OiBhbmNob3IsXHJcbiAgICAgICAgICAgIC4uLnRoaXMuZXh0cmFzLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZUF0dHJpYnV0ZShub2RlLCBrZXksIHRoaXMucm91dGVyLnNlcmlhbGl6ZVVybCh1cmxUcmVlKSk7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLmxpc3Rlbihub2RlLCAnY2xpY2snLCAoZXZlbnQpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3VybF0sIHtcclxuICAgICAgICAgICAgICBmcmFnbWVudDogYW5jaG9yLFxyXG4gICAgICAgICAgICAgIC4uLnRoaXMuZXh0cmFzLFxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIC8vIHNob3VsZG4ndCBwcmV2ZW50IGRlZmF1bHQgaWYgdGhlIGxpbmsgaW5jbHVkZXMgYSBmcmFnbWVudFxyXG4gICAgICAgICAgICBpZiAoIWFuY2hvcikge1xyXG4gICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZUF0dHJpYnV0ZShub2RlLCBrZXksIHByb3BWYWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGlmIChub2RlLmNoaWxkTm9kZXMgJiYgbm9kZS5jaGlsZE5vZGVzLmxlbmd0aCA9PT0gMCAmJiBsaW5rVGV4dCkge1xyXG4gICAgICAgIG5vZGUudGV4dENvbnRlbnQgPSBsaW5rVGV4dDtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,86 +1,86 @@
1
- import { UrlTree } from '@angular/router';
2
- import { take, mergeMap } from 'rxjs/operators';
3
- import { wrapIntoObservable } from '../utils';
4
- import { throwError, of, lastValueFrom } from 'rxjs';
5
- /**
6
- * @param {boolean | string | string[] | UrlTree} value
7
- * @returns instance of value
8
- */
9
- function isRedirectValue(value) {
10
- return value instanceof UrlTree || typeof value === 'string' || Array.isArray(value);
11
- }
12
- /**
13
- * Resolves components based on provided guards
14
- * @param {Injector} injector
15
- * @param {ActivatedRoute} activatedRoute
16
- * @param {Router} router
17
- * @returns {(factories: ComponentFactoryResult[]) => Promise<ComponentFactoryResult[]>} factory
18
- */
19
- export function guardResolverFactory(injector, activatedRoute, router) {
20
- /**
21
- * @param {JssCanActivate | Type<JssCanActivate> | JssCanActivateFn} guard
22
- * @returns resolved guard
23
- */
24
- function getGuardInstance(guard) {
25
- if ('canActivate' in guard) {
26
- return guard;
27
- }
28
- try {
29
- // Class is provided
30
- return injector.get(guard);
31
- }
32
- catch {
33
- // Function is provided
34
- return guard;
35
- }
36
- }
37
- /**
38
- * @param {ComponentFactoryResult} factory
39
- * @returns {(JssCanActivate | JssCanActivateFn)[]} guard instances
40
- */
41
- function collectGuardInstances(factory) {
42
- if (factory.canActivate) {
43
- return Array.isArray(factory.canActivate)
44
- ? factory.canActivate.map(getGuardInstance)
45
- : [getGuardInstance(factory.canActivate)];
46
- }
47
- return [];
48
- }
49
- /**
50
- *
51
- * @param {JssCanActivate | JssCanActivateFn} guard
52
- * @param {ComponentFactoryResult} factory
53
- * @returns canActivate
54
- */
55
- function resolveGuard(guard, factory) {
56
- const canActivate = 'canActivate' in guard ? guard.canActivate : guard;
57
- const guardValue = canActivate({
58
- activatedRoute: activatedRoute.snapshot,
59
- routerState: router.routerState.snapshot,
60
- rendering: factory.componentDefinition,
61
- });
62
- const canActivate$ = wrapIntoObservable(guardValue);
63
- return lastValueFrom(canActivate$.pipe(take(1), mergeMap((value) => {
64
- if (isRedirectValue(value)) {
65
- return throwError(() => new Error(value.toString()));
66
- }
67
- else {
68
- return of(value);
69
- }
70
- })));
71
- }
72
- return function resolveGuards(factories) {
73
- const resolved = factories.map((factory) => {
74
- const guards = collectGuardInstances(factory);
75
- const pending = guards.map((guard) => resolveGuard(guard, factory));
76
- return Promise.all(pending)
77
- .then((canActive) => canActive.every((v) => v))
78
- .then((canActivate) => ({
79
- factory,
80
- canActivate,
81
- }));
82
- });
83
- return Promise.all(resolved).then((mapped) => mapped.filter((m) => m.canActivate).map((m) => m.factory));
84
- };
85
- }
1
+ import { UrlTree } from '@angular/router';
2
+ import { take, mergeMap } from 'rxjs/operators';
3
+ import { wrapIntoObservable } from '../utils';
4
+ import { throwError, of, lastValueFrom } from 'rxjs';
5
+ /**
6
+ * @param {boolean | string | string[] | UrlTree} value
7
+ * @returns instance of value
8
+ */
9
+ function isRedirectValue(value) {
10
+ return value instanceof UrlTree || typeof value === 'string' || Array.isArray(value);
11
+ }
12
+ /**
13
+ * Resolves components based on provided guards
14
+ * @param {Injector} injector
15
+ * @param {ActivatedRoute} activatedRoute
16
+ * @param {Router} router
17
+ * @returns {(factories: ComponentFactoryResult[]) => Promise<ComponentFactoryResult[]>} factory
18
+ */
19
+ export function guardResolverFactory(injector, activatedRoute, router) {
20
+ /**
21
+ * @param {JssCanActivate | Type<JssCanActivate> | JssCanActivateFn} guard
22
+ * @returns resolved guard
23
+ */
24
+ function getGuardInstance(guard) {
25
+ if ('canActivate' in guard) {
26
+ return guard;
27
+ }
28
+ try {
29
+ // Class is provided
30
+ return injector.get(guard);
31
+ }
32
+ catch {
33
+ // Function is provided
34
+ return guard;
35
+ }
36
+ }
37
+ /**
38
+ * @param {ComponentFactoryResult} factory
39
+ * @returns {(JssCanActivate | JssCanActivateFn)[]} guard instances
40
+ */
41
+ function collectGuardInstances(factory) {
42
+ if (factory.canActivate) {
43
+ return Array.isArray(factory.canActivate)
44
+ ? factory.canActivate.map(getGuardInstance)
45
+ : [getGuardInstance(factory.canActivate)];
46
+ }
47
+ return [];
48
+ }
49
+ /**
50
+ *
51
+ * @param {JssCanActivate | JssCanActivateFn} guard
52
+ * @param {ComponentFactoryResult} factory
53
+ * @returns canActivate
54
+ */
55
+ function resolveGuard(guard, factory) {
56
+ const canActivate = 'canActivate' in guard ? guard.canActivate : guard;
57
+ const guardValue = canActivate({
58
+ activatedRoute: activatedRoute.snapshot,
59
+ routerState: router.routerState.snapshot,
60
+ rendering: factory.componentDefinition,
61
+ });
62
+ const canActivate$ = wrapIntoObservable(guardValue);
63
+ return lastValueFrom(canActivate$.pipe(take(1), mergeMap((value) => {
64
+ if (isRedirectValue(value)) {
65
+ return throwError(() => new Error(value.toString()));
66
+ }
67
+ else {
68
+ return of(value);
69
+ }
70
+ })));
71
+ }
72
+ return function resolveGuards(factories) {
73
+ const resolved = factories.map((factory) => {
74
+ const guards = collectGuardInstances(factory);
75
+ const pending = guards.map((guard) => resolveGuard(guard, factory));
76
+ return Promise.all(pending)
77
+ .then((canActive) => canActive.every((v) => v))
78
+ .then((canActivate) => ({
79
+ factory,
80
+ canActivate,
81
+ }));
82
+ });
83
+ return Promise.all(resolved).then((mapped) => mapped.filter((m) => m.canActivate).map((m) => m.factory));
84
+ };
85
+ }
86
86
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VhcmQtcmVzb2x2ZXItZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2d1YXJkLXJlc29sdmVyLWZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUEwQixPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWhELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUc5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFckQ7OztHQUdHO0FBQ0gsU0FBUyxlQUFlLENBQ3RCLEtBQTRDO0lBRTVDLE9BQU8sS0FBSyxZQUFZLE9BQU8sSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN2RixDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUNsQyxRQUFrQixFQUNsQixjQUE4QixFQUM5QixNQUFjO0lBRWQ7OztPQUdHO0lBQ0gsU0FBUyxnQkFBZ0IsQ0FDdkIsS0FBK0Q7UUFFL0QsSUFBSSxhQUFhLElBQUksS0FBSyxFQUFFO1lBQzFCLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxJQUFJO1lBQ0Ysb0JBQW9CO1lBQ3BCLE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM1QjtRQUFDLE1BQU07WUFDTix1QkFBdUI7WUFDdkIsT0FBTyxLQUF5QixDQUFDO1NBQ2xDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILFNBQVMscUJBQXFCLENBQzVCLE9BQStCO1FBRS9CLElBQUksT0FBTyxDQUFDLFdBQVcsRUFBRTtZQUN2QixPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztnQkFDdkMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDO2dCQUMzQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztTQUM3QztRQUVELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsU0FBUyxZQUFZLENBQUMsS0FBd0MsRUFBRSxPQUErQjtRQUM3RixNQUFNLFdBQVcsR0FBRyxhQUFhLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDdkUsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDO1lBQzdCLGNBQWMsRUFBRSxjQUFjLENBQUMsUUFBUTtZQUN2QyxXQUFXLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRO1lBQ3hDLFNBQVMsRUFBRSxPQUFPLENBQUMsbUJBQXlDO1NBQzdELENBQUMsQ0FBQztRQUVILE1BQU0sWUFBWSxHQUFHLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXBELE9BQU8sYUFBYSxDQUNsQixZQUFZLENBQUMsSUFBSSxDQUNmLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxRQUFRLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNqQixJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDMUIsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUN0RDtpQkFBTTtnQkFDTCxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUNsQjtRQUNILENBQUMsQ0FBQyxDQUNILENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLFNBQVMsYUFBYSxDQUFDLFNBQW1DO1FBQy9ELE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUN6QyxNQUFNLE1BQU0sR0FBRyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM5QyxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDcEUsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQztpQkFDeEIsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDOUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUN0QixPQUFPO2dCQUNQLFdBQVc7YUFDWixDQUFDLENBQUMsQ0FBQztRQUNSLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQzNDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FDMUQsQ0FBQztJQUNKLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RvciwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyLCBVcmxUcmVlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgdGFrZSwgbWVyZ2VNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IENvbXBvbmVudEZhY3RvcnlSZXN1bHQgfSBmcm9tICcuLi9qc3MtY29tcG9uZW50LWZhY3Rvcnkuc2VydmljZSc7XHJcbmltcG9ydCB7IHdyYXBJbnRvT2JzZXJ2YWJsZSB9IGZyb20gJy4uL3V0aWxzJztcclxuaW1wb3J0IHsgSnNzQ2FuQWN0aXZhdGUsIEpzc0NhbkFjdGl2YXRlRm4gfSBmcm9tICcuL3BsYWNlaG9sZGVyLnRva2VuJztcclxuaW1wb3J0IHsgQ29tcG9uZW50UmVuZGVyaW5nIH0gZnJvbSAnQHNpdGVjb3JlLWpzcy9zaXRlY29yZS1qc3MvbGF5b3V0JztcclxuaW1wb3J0IHsgdGhyb3dFcnJvciwgb2YsIGxhc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcclxuXHJcbi8qKlxyXG4gKiBAcGFyYW0ge2Jvb2xlYW4gfCBzdHJpbmcgfCBzdHJpbmdbXSB8IFVybFRyZWV9IHZhbHVlXHJcbiAqIEByZXR1cm5zIGluc3RhbmNlIG9mIHZhbHVlXHJcbiAqL1xyXG5mdW5jdGlvbiBpc1JlZGlyZWN0VmFsdWUoXHJcbiAgdmFsdWU6IGJvb2xlYW4gfCBzdHJpbmcgfCBzdHJpbmdbXSB8IFVybFRyZWVcclxuKTogdmFsdWUgaXMgc3RyaW5nIHwgc3RyaW5nW10gfCBVcmxUcmVlIHtcclxuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBVcmxUcmVlIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHwgQXJyYXkuaXNBcnJheSh2YWx1ZSk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZXNvbHZlcyBjb21wb25lbnRzIGJhc2VkIG9uIHByb3ZpZGVkIGd1YXJkc1xyXG4gKiBAcGFyYW0ge0luamVjdG9yfSBpbmplY3RvclxyXG4gKiBAcGFyYW0ge0FjdGl2YXRlZFJvdXRlfSBhY3RpdmF0ZWRSb3V0ZVxyXG4gKiBAcGFyYW0ge1JvdXRlcn0gcm91dGVyXHJcbiAqIEByZXR1cm5zIHsoZmFjdG9yaWVzOiBDb21wb25lbnRGYWN0b3J5UmVzdWx0W10pID0+IFByb21pc2U8Q29tcG9uZW50RmFjdG9yeVJlc3VsdFtdPn0gZmFjdG9yeVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGd1YXJkUmVzb2x2ZXJGYWN0b3J5KFxyXG4gIGluamVjdG9yOiBJbmplY3RvcixcclxuICBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgcm91dGVyOiBSb3V0ZXJcclxuKSB7XHJcbiAgLyoqXHJcbiAgICogQHBhcmFtIHtKc3NDYW5BY3RpdmF0ZSB8IFR5cGU8SnNzQ2FuQWN0aXZhdGU+IHwgSnNzQ2FuQWN0aXZhdGVGbn0gZ3VhcmRcclxuICAgKiBAcmV0dXJucyByZXNvbHZlZCBndWFyZFxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIGdldEd1YXJkSW5zdGFuY2UoXHJcbiAgICBndWFyZDogSnNzQ2FuQWN0aXZhdGUgfCBUeXBlPEpzc0NhbkFjdGl2YXRlPiB8IEpzc0NhbkFjdGl2YXRlRm5cclxuICApOiBKc3NDYW5BY3RpdmF0ZSB8IEpzc0NhbkFjdGl2YXRlRm4ge1xyXG4gICAgaWYgKCdjYW5BY3RpdmF0ZScgaW4gZ3VhcmQpIHtcclxuICAgICAgcmV0dXJuIGd1YXJkO1xyXG4gICAgfVxyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIC8vIENsYXNzIGlzIHByb3ZpZGVkXHJcbiAgICAgIHJldHVybiBpbmplY3Rvci5nZXQoZ3VhcmQpO1xyXG4gICAgfSBjYXRjaCB7XHJcbiAgICAgIC8vIEZ1bmN0aW9uIGlzIHByb3ZpZGVkXHJcbiAgICAgIHJldHVybiBndWFyZCBhcyBKc3NDYW5BY3RpdmF0ZUZuO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQHBhcmFtIHtDb21wb25lbnRGYWN0b3J5UmVzdWx0fSBmYWN0b3J5XHJcbiAgICogQHJldHVybnMgeyhKc3NDYW5BY3RpdmF0ZSB8IEpzc0NhbkFjdGl2YXRlRm4pW119IGd1YXJkIGluc3RhbmNlc1xyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIGNvbGxlY3RHdWFyZEluc3RhbmNlcyhcclxuICAgIGZhY3Rvcnk6IENvbXBvbmVudEZhY3RvcnlSZXN1bHRcclxuICApOiAoSnNzQ2FuQWN0aXZhdGUgfCBKc3NDYW5BY3RpdmF0ZUZuKVtdIHtcclxuICAgIGlmIChmYWN0b3J5LmNhbkFjdGl2YXRlKSB7XHJcbiAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KGZhY3RvcnkuY2FuQWN0aXZhdGUpXHJcbiAgICAgICAgPyBmYWN0b3J5LmNhbkFjdGl2YXRlLm1hcChnZXRHdWFyZEluc3RhbmNlKVxyXG4gICAgICAgIDogW2dldEd1YXJkSW5zdGFuY2UoZmFjdG9yeS5jYW5BY3RpdmF0ZSldO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBbXTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtKc3NDYW5BY3RpdmF0ZSB8IEpzc0NhbkFjdGl2YXRlRm59IGd1YXJkXHJcbiAgICogQHBhcmFtIHtDb21wb25lbnRGYWN0b3J5UmVzdWx0fSBmYWN0b3J5XHJcbiAgICogQHJldHVybnMgY2FuQWN0aXZhdGVcclxuICAgKi9cclxuICBmdW5jdGlvbiByZXNvbHZlR3VhcmQoZ3VhcmQ6IEpzc0NhbkFjdGl2YXRlIHwgSnNzQ2FuQWN0aXZhdGVGbiwgZmFjdG9yeTogQ29tcG9uZW50RmFjdG9yeVJlc3VsdCkge1xyXG4gICAgY29uc3QgY2FuQWN0aXZhdGUgPSAnY2FuQWN0aXZhdGUnIGluIGd1YXJkID8gZ3VhcmQuY2FuQWN0aXZhdGUgOiBndWFyZDtcclxuICAgIGNvbnN0IGd1YXJkVmFsdWUgPSBjYW5BY3RpdmF0ZSh7XHJcbiAgICAgIGFjdGl2YXRlZFJvdXRlOiBhY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdCxcclxuICAgICAgcm91dGVyU3RhdGU6IHJvdXRlci5yb3V0ZXJTdGF0ZS5zbmFwc2hvdCxcclxuICAgICAgcmVuZGVyaW5nOiBmYWN0b3J5LmNvbXBvbmVudERlZmluaXRpb24gYXMgQ29tcG9uZW50UmVuZGVyaW5nLFxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgY2FuQWN0aXZhdGUkID0gd3JhcEludG9PYnNlcnZhYmxlKGd1YXJkVmFsdWUpO1xyXG5cclxuICAgIHJldHVybiBsYXN0VmFsdWVGcm9tKFxyXG4gICAgICBjYW5BY3RpdmF0ZSQucGlwZShcclxuICAgICAgICB0YWtlKDEpLFxyXG4gICAgICAgIG1lcmdlTWFwKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGlzUmVkaXJlY3RWYWx1ZSh2YWx1ZSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKHZhbHVlLnRvU3RyaW5nKCkpKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBvZih2YWx1ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHJldHVybiBmdW5jdGlvbiByZXNvbHZlR3VhcmRzKGZhY3RvcmllczogQ29tcG9uZW50RmFjdG9yeVJlc3VsdFtdKSB7XHJcbiAgICBjb25zdCByZXNvbHZlZCA9IGZhY3Rvcmllcy5tYXAoKGZhY3RvcnkpID0+IHtcclxuICAgICAgY29uc3QgZ3VhcmRzID0gY29sbGVjdEd1YXJkSW5zdGFuY2VzKGZhY3RvcnkpO1xyXG4gICAgICBjb25zdCBwZW5kaW5nID0gZ3VhcmRzLm1hcCgoZ3VhcmQpID0+IHJlc29sdmVHdWFyZChndWFyZCwgZmFjdG9yeSkpO1xyXG4gICAgICByZXR1cm4gUHJvbWlzZS5hbGwocGVuZGluZylcclxuICAgICAgICAudGhlbigoY2FuQWN0aXZlKSA9PiBjYW5BY3RpdmUuZXZlcnkoKHYpID0+IHYpKVxyXG4gICAgICAgIC50aGVuKChjYW5BY3RpdmF0ZSkgPT4gKHtcclxuICAgICAgICAgIGZhY3RvcnksXHJcbiAgICAgICAgICBjYW5BY3RpdmF0ZSxcclxuICAgICAgICB9KSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwocmVzb2x2ZWQpLnRoZW4oKG1hcHBlZCkgPT5cclxuICAgICAgbWFwcGVkLmZpbHRlcigobSkgPT4gbS5jYW5BY3RpdmF0ZSkubWFwKChtKSA9PiBtLmZhY3RvcnkpXHJcbiAgICApO1xyXG4gIH07XHJcbn1cclxuIl19