@searchstax-inc/searchstudio-ux-angular 1.2.51 → 2.0.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 (48) hide show
  1. package/CHANGELOG.md +8 -1
  2. package/README.md +1188 -686
  3. package/esm2022/lib/components/searchstax-input/searchstax-input.component.mjs +6 -40
  4. package/esm2022/lib/components/searchstax-results/searchstax-results.component.mjs +5 -3
  5. package/esm2022/lib/components/searchstax-search-answer/searchstax-search-answer.component.mjs +4 -3
  6. package/esm2022/lib/components/searchstax-search-external/searchstax-search-external.component.mjs +4 -3
  7. package/esm2022/lib/components/searchstax-search-facets/searchstax-search-facets.component.mjs +5 -3
  8. package/esm2022/lib/components/searchstax-search-location/searchstax-search-location.component.mjs +4 -4
  9. package/esm2022/lib/components/searchstax-search-overview/searchstax-search-overview.component.mjs +4 -3
  10. package/esm2022/lib/components/searchstax-search-pagination/searchstax-search-pagination.component.mjs +5 -3
  11. package/esm2022/lib/components/searchstax-search-related/searchstax-search-related.component.mjs +4 -3
  12. package/esm2022/lib/components/searchstax-search-sorting/searchstax-search-sorting.component.mjs +4 -4
  13. package/esm2022/lib/components/templates/SearchstaxLocationWidgetTemplateConfig.mjs +91 -0
  14. package/esm2022/lib/components/templates/searchstax-search-answer-template.mjs +119 -0
  15. package/esm2022/lib/components/templates/searchstax-search-external-template.mjs +107 -0
  16. package/esm2022/lib/components/templates/searchstax-search-facet-desktop-template.mjs +207 -0
  17. package/esm2022/lib/components/templates/searchstax-search-facet-mobile-template.mjs +343 -0
  18. package/esm2022/lib/components/templates/searchstax-search-input-template.mjs +126 -0
  19. package/esm2022/lib/components/templates/searchstax-search-location-template.mjs +152 -0
  20. package/esm2022/lib/components/templates/searchstax-search-no-results-template.mjs +85 -0
  21. package/esm2022/lib/components/templates/searchstax-search-overview-template.mjs +87 -0
  22. package/esm2022/lib/components/templates/searchstax-search-pagination-infinite-template.mjs +60 -0
  23. package/esm2022/lib/components/templates/searchstax-search-pagination-template.mjs +96 -0
  24. package/esm2022/lib/components/templates/searchstax-search-related-template.mjs +81 -0
  25. package/esm2022/lib/components/templates/searchstax-search-results-template.mjs +171 -0
  26. package/esm2022/lib/components/templates/searchstax-search-sorting-template.mjs +76 -0
  27. package/esm2022/lib/searchstudio-ux-angular.module.mjs +70 -5
  28. package/esm2022/public-api.mjs +14 -1
  29. package/fesm2022/searchstax-inc-searchstudio-ux-angular.mjs +1840 -64
  30. package/fesm2022/searchstax-inc-searchstudio-ux-angular.mjs.map +1 -1
  31. package/lib/components/searchstax-input/searchstax-input.component.d.ts +11 -1
  32. package/lib/components/templates/SearchstaxLocationWidgetTemplateConfig.d.ts +13 -0
  33. package/lib/components/templates/searchstax-search-answer-template.d.ts +7 -0
  34. package/lib/components/templates/searchstax-search-external-template.d.ts +7 -0
  35. package/lib/components/templates/searchstax-search-facet-desktop-template.d.ts +7 -0
  36. package/lib/components/templates/searchstax-search-facet-mobile-template.d.ts +7 -0
  37. package/lib/components/templates/searchstax-search-input-template.d.ts +7 -0
  38. package/lib/components/templates/searchstax-search-location-template.d.ts +7 -0
  39. package/lib/components/templates/searchstax-search-no-results-template.d.ts +7 -0
  40. package/lib/components/templates/searchstax-search-overview-template.d.ts +7 -0
  41. package/lib/components/templates/searchstax-search-pagination-infinite-template.d.ts +7 -0
  42. package/lib/components/templates/searchstax-search-pagination-template.d.ts +7 -0
  43. package/lib/components/templates/searchstax-search-related-template.d.ts +7 -0
  44. package/lib/components/templates/searchstax-search-results-template.d.ts +7 -0
  45. package/lib/components/templates/searchstax-search-sorting-template.d.ts +7 -0
  46. package/lib/searchstudio-ux-angular.module.d.ts +16 -3
  47. package/package.json +2 -2
  48. package/public-api.d.ts +13 -0
@@ -0,0 +1,119 @@
1
+ // reusable-template.component.ts
2
+ import { Component, ViewChild } from "@angular/core";
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ export class AnswerTemplateComponent {
6
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AnswerTemplateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AnswerTemplateComponent, selector: "app-answer-template", viewQueries: [{ propertyName: "answerTemplate", first: true, predicate: ["answerTemplate"], descendants: true }], ngImport: i0, template: `
8
+ <ng-template
9
+ #answerTemplate
10
+ let-answerData="answerData"
11
+ let-showMore="showMore"
12
+ let-context="context"
13
+ >
14
+ <div class="searchstax-answer-wrap">
15
+ <div class="searchstax-answer-icon"></div>
16
+ <div>
17
+ <div
18
+ [class]="{
19
+ 'searchstax-answer-container': true,
20
+ 'searchstax-answer-show-more': answerData.showMoreButtonVisible
21
+ }"
22
+ >
23
+ <div class="searchstax-answer-title">Smart Answers</div>
24
+ <div
25
+ class="searchstax-answer-error"
26
+ *ngIf="answerData.shouldShowAnswerError"
27
+ [innerHTML]="answerData.answerErrorMessage"
28
+ ></div>
29
+ <div
30
+ class="searchstax-answer-description"
31
+ [innerHTML]="answerData.fullAnswerFormatted"
32
+ ></div>
33
+ <div
34
+ *ngIf="answerData.answerLoading"
35
+ class="searchstax-answer-loading"
36
+ ></div>
37
+ </div>
38
+ <div
39
+ *ngIf="answerData.showMoreButtonVisible"
40
+ class="searchstax-answer-load-more-button-container"
41
+ >
42
+ <button
43
+ class="searchstax-answer-load-more-button"
44
+ (click)="showMore($event, context)"
45
+ >
46
+ Read More
47
+ </button>
48
+ </div>
49
+ </div>
50
+ <div class="searchstax-answer-footer">
51
+ <div id="feedbackWidgetContainer"></div>
52
+ <div class="searchstax-lightweight-widget-separator-inline"></div>
53
+ <p class="searchstax-disclaimer">Generative AI is Experimental</p>
54
+ </div>
55
+ </div>
56
+ </ng-template>
57
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
58
+ }
59
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AnswerTemplateComponent, decorators: [{
60
+ type: Component,
61
+ args: [{
62
+ selector: "app-answer-template",
63
+ template: `
64
+ <ng-template
65
+ #answerTemplate
66
+ let-answerData="answerData"
67
+ let-showMore="showMore"
68
+ let-context="context"
69
+ >
70
+ <div class="searchstax-answer-wrap">
71
+ <div class="searchstax-answer-icon"></div>
72
+ <div>
73
+ <div
74
+ [class]="{
75
+ 'searchstax-answer-container': true,
76
+ 'searchstax-answer-show-more': answerData.showMoreButtonVisible
77
+ }"
78
+ >
79
+ <div class="searchstax-answer-title">Smart Answers</div>
80
+ <div
81
+ class="searchstax-answer-error"
82
+ *ngIf="answerData.shouldShowAnswerError"
83
+ [innerHTML]="answerData.answerErrorMessage"
84
+ ></div>
85
+ <div
86
+ class="searchstax-answer-description"
87
+ [innerHTML]="answerData.fullAnswerFormatted"
88
+ ></div>
89
+ <div
90
+ *ngIf="answerData.answerLoading"
91
+ class="searchstax-answer-loading"
92
+ ></div>
93
+ </div>
94
+ <div
95
+ *ngIf="answerData.showMoreButtonVisible"
96
+ class="searchstax-answer-load-more-button-container"
97
+ >
98
+ <button
99
+ class="searchstax-answer-load-more-button"
100
+ (click)="showMore($event, context)"
101
+ >
102
+ Read More
103
+ </button>
104
+ </div>
105
+ </div>
106
+ <div class="searchstax-answer-footer">
107
+ <div id="feedbackWidgetContainer"></div>
108
+ <div class="searchstax-lightweight-widget-separator-inline"></div>
109
+ <p class="searchstax-disclaimer">Generative AI is Experimental</p>
110
+ </div>
111
+ </div>
112
+ </ng-template>
113
+ `,
114
+ }]
115
+ }], propDecorators: { answerTemplate: [{
116
+ type: ViewChild,
117
+ args: ["answerTemplate"]
118
+ }] } });
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoc3RheC1zZWFyY2gtYW5zd2VyLXRlbXBsYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2VhcmNoc3RheC1pbmMvc2VhcmNoc3R1ZGlvLXV4LWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3RlbXBsYXRlcy9zZWFyY2hzdGF4LXNlYXJjaC1hbnN3ZXItdGVtcGxhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUNBQWlDO0FBQ2pDLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFlLE1BQU0sZUFBZSxDQUFDOzs7QUF3RGxFLE1BQU0sT0FBTyx1QkFBdUI7K0dBQXZCLHVCQUF1QjttR0FBdkIsdUJBQXVCLDZLQXBEeEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0RUOzs0RkFFVSx1QkFBdUI7a0JBdERuQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrRFQ7aUJBQ0Y7OEJBRThCLGNBQWM7c0JBQTFDLFNBQVM7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gcmV1c2FibGUtdGVtcGxhdGUuY29tcG9uZW50LnRzXG5pbXBvcnQgeyBDb21wb25lbnQsIFZpZXdDaGlsZCwgVGVtcGxhdGVSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiYXBwLWFuc3dlci10ZW1wbGF0ZVwiLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgI2Fuc3dlclRlbXBsYXRlXG4gICAgICBsZXQtYW5zd2VyRGF0YT1cImFuc3dlckRhdGFcIlxuICAgICAgbGV0LXNob3dNb3JlPVwic2hvd01vcmVcIlxuICAgICAgbGV0LWNvbnRleHQ9XCJjb250ZXh0XCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoc3RheC1hbnN3ZXItd3JhcFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoc3RheC1hbnN3ZXItaWNvblwiPjwvZGl2PlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIFtjbGFzc109XCJ7XG4gICAgICAgICAgICAgICdzZWFyY2hzdGF4LWFuc3dlci1jb250YWluZXInOiB0cnVlLFxuICAgICAgICAgICAgICAnc2VhcmNoc3RheC1hbnN3ZXItc2hvdy1tb3JlJzogYW5zd2VyRGF0YS5zaG93TW9yZUJ1dHRvblZpc2libGVcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2hzdGF4LWFuc3dlci10aXRsZVwiPlNtYXJ0IEFuc3dlcnM8L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJzZWFyY2hzdGF4LWFuc3dlci1lcnJvclwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiYW5zd2VyRGF0YS5zaG91bGRTaG93QW5zd2VyRXJyb3JcIlxuICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cImFuc3dlckRhdGEuYW5zd2VyRXJyb3JNZXNzYWdlXCJcbiAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJzZWFyY2hzdGF4LWFuc3dlci1kZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiYW5zd2VyRGF0YS5mdWxsQW5zd2VyRm9ybWF0dGVkXCJcbiAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgKm5nSWY9XCJhbnN3ZXJEYXRhLmFuc3dlckxvYWRpbmdcIlxuICAgICAgICAgICAgICBjbGFzcz1cInNlYXJjaHN0YXgtYW5zd2VyLWxvYWRpbmdcIlxuICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwiYW5zd2VyRGF0YS5zaG93TW9yZUJ1dHRvblZpc2libGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJzZWFyY2hzdGF4LWFuc3dlci1sb2FkLW1vcmUtYnV0dG9uLWNvbnRhaW5lclwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cInNlYXJjaHN0YXgtYW5zd2VyLWxvYWQtbW9yZS1idXR0b25cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd01vcmUoJGV2ZW50LCBjb250ZXh0KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIFJlYWQgTW9yZVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoc3RheC1hbnN3ZXItZm9vdGVyXCI+XG4gICAgICAgICAgPGRpdiBpZD1cImZlZWRiYWNrV2lkZ2V0Q29udGFpbmVyXCI+PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaHN0YXgtbGlnaHR3ZWlnaHQtd2lkZ2V0LXNlcGFyYXRvci1pbmxpbmVcIj48L2Rpdj5cbiAgICAgICAgICA8cCBjbGFzcz1cInNlYXJjaHN0YXgtZGlzY2xhaW1lclwiPkdlbmVyYXRpdmUgQUkgaXMgRXhwZXJpbWVudGFsPC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIEFuc3dlclRlbXBsYXRlQ29tcG9uZW50IHtcbiAgQFZpZXdDaGlsZChcImFuc3dlclRlbXBsYXRlXCIpIGFuc3dlclRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55Pjtcbn1cbiJdfQ==
@@ -0,0 +1,107 @@
1
+ // reusable-template.component.ts
2
+ import { Component, ViewChild } from "@angular/core";
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ export class ExternalPromotionsTemplateComponent {
6
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ExternalPromotionsTemplateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ExternalPromotionsTemplateComponent, selector: "app-external-template", viewQueries: [{ propertyName: "externalPromotionsTemplate", first: true, predicate: ["externalPromotionsTemplate"], descendants: true }], ngImport: i0, template: `
8
+ <ng-template
9
+ #externalPromotionsTemplate
10
+ let-context="context"
11
+ let-externalPromotionsData="externalPromotionsData"
12
+ let-trackClick="trackClick"
13
+ >
14
+ <div
15
+ class="searchstax-external-promotions-container"
16
+ id="searchstax-external-promotions-container"
17
+ >
18
+ <div
19
+ class="searchstax-external-promotion searchstax-search-result"
20
+ *ngFor="
21
+ let externalPromotion of externalPromotionsData.externalPromotions
22
+ "
23
+ >
24
+ <div class="icon-elevated"></div>
25
+ <a
26
+ *ngIf="externalPromotion.url"
27
+ [href]="externalPromotion.url"
28
+ (click)="trackClick(externalPromotion, $event, context)"
29
+ class="searchstax-result-item-link"
30
+ ></a>
31
+ <div class="searchstax-search-result-title-container">
32
+ <span class="searchstax-search-result-title">{{
33
+ externalPromotion.name
34
+ }}</span>
35
+ </div>
36
+ <p
37
+ *ngIf="externalPromotion.description"
38
+ class="searchstax-search-result-description searchstax-search-result-common"
39
+ >
40
+ {{ externalPromotion.description }}
41
+ </p>
42
+ <p
43
+ *ngIf="externalPromotion.url"
44
+ class="searchstax-search-result-description searchstax-search-result-common"
45
+ >
46
+ {{ externalPromotion.url }}
47
+ </p>
48
+ </div>
49
+ </div>
50
+ </ng-template>
51
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
52
+ }
53
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ExternalPromotionsTemplateComponent, decorators: [{
54
+ type: Component,
55
+ args: [{
56
+ selector: "app-external-template",
57
+ template: `
58
+ <ng-template
59
+ #externalPromotionsTemplate
60
+ let-context="context"
61
+ let-externalPromotionsData="externalPromotionsData"
62
+ let-trackClick="trackClick"
63
+ >
64
+ <div
65
+ class="searchstax-external-promotions-container"
66
+ id="searchstax-external-promotions-container"
67
+ >
68
+ <div
69
+ class="searchstax-external-promotion searchstax-search-result"
70
+ *ngFor="
71
+ let externalPromotion of externalPromotionsData.externalPromotions
72
+ "
73
+ >
74
+ <div class="icon-elevated"></div>
75
+ <a
76
+ *ngIf="externalPromotion.url"
77
+ [href]="externalPromotion.url"
78
+ (click)="trackClick(externalPromotion, $event, context)"
79
+ class="searchstax-result-item-link"
80
+ ></a>
81
+ <div class="searchstax-search-result-title-container">
82
+ <span class="searchstax-search-result-title">{{
83
+ externalPromotion.name
84
+ }}</span>
85
+ </div>
86
+ <p
87
+ *ngIf="externalPromotion.description"
88
+ class="searchstax-search-result-description searchstax-search-result-common"
89
+ >
90
+ {{ externalPromotion.description }}
91
+ </p>
92
+ <p
93
+ *ngIf="externalPromotion.url"
94
+ class="searchstax-search-result-description searchstax-search-result-common"
95
+ >
96
+ {{ externalPromotion.url }}
97
+ </p>
98
+ </div>
99
+ </div>
100
+ </ng-template>
101
+ `,
102
+ }]
103
+ }], propDecorators: { externalPromotionsTemplate: [{
104
+ type: ViewChild,
105
+ args: ["externalPromotionsTemplate"]
106
+ }] } });
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoc3RheC1zZWFyY2gtZXh0ZXJuYWwtdGVtcGxhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zZWFyY2hzdGF4LWluYy9zZWFyY2hzdHVkaW8tdXgtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvdGVtcGxhdGVzL3NlYXJjaHN0YXgtc2VhcmNoLWV4dGVybmFsLXRlbXBsYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlDQUFpQztBQUNqQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBZSxNQUFNLGVBQWUsQ0FBQzs7O0FBa0RsRSxNQUFNLE9BQU8sbUNBQW1DOytHQUFuQyxtQ0FBbUM7bUdBQW5DLG1DQUFtQyx1TUE5Q3BDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTRDVDs7NEZBRVUsbUNBQW1DO2tCQWhEL0MsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNENUO2lCQUNGOzhCQUUwQywwQkFBMEI7c0JBQWxFLFNBQVM7dUJBQUMsNEJBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gcmV1c2FibGUtdGVtcGxhdGUuY29tcG9uZW50LnRzXG5pbXBvcnQgeyBDb21wb25lbnQsIFZpZXdDaGlsZCwgVGVtcGxhdGVSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiYXBwLWV4dGVybmFsLXRlbXBsYXRlXCIsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICAjZXh0ZXJuYWxQcm9tb3Rpb25zVGVtcGxhdGVcbiAgICAgIGxldC1jb250ZXh0PVwiY29udGV4dFwiXG4gICAgICBsZXQtZXh0ZXJuYWxQcm9tb3Rpb25zRGF0YT1cImV4dGVybmFsUHJvbW90aW9uc0RhdGFcIlxuICAgICAgbGV0LXRyYWNrQ2xpY2s9XCJ0cmFja0NsaWNrXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwic2VhcmNoc3RheC1leHRlcm5hbC1wcm9tb3Rpb25zLWNvbnRhaW5lclwiXG4gICAgICAgIGlkPVwic2VhcmNoc3RheC1leHRlcm5hbC1wcm9tb3Rpb25zLWNvbnRhaW5lclwiXG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInNlYXJjaHN0YXgtZXh0ZXJuYWwtcHJvbW90aW9uIHNlYXJjaHN0YXgtc2VhcmNoLXJlc3VsdFwiXG4gICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICBsZXQgZXh0ZXJuYWxQcm9tb3Rpb24gb2YgZXh0ZXJuYWxQcm9tb3Rpb25zRGF0YS5leHRlcm5hbFByb21vdGlvbnNcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImljb24tZWxldmF0ZWRcIj48L2Rpdj5cbiAgICAgICAgICA8YVxuICAgICAgICAgICAgKm5nSWY9XCJleHRlcm5hbFByb21vdGlvbi51cmxcIlxuICAgICAgICAgICAgW2hyZWZdPVwiZXh0ZXJuYWxQcm9tb3Rpb24udXJsXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0cmFja0NsaWNrKGV4dGVybmFsUHJvbW90aW9uLCAkZXZlbnQsIGNvbnRleHQpXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2VhcmNoc3RheC1yZXN1bHQtaXRlbS1saW5rXCJcbiAgICAgICAgICA+PC9hPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2hzdGF4LXNlYXJjaC1yZXN1bHQtdGl0bGUtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlYXJjaHN0YXgtc2VhcmNoLXJlc3VsdC10aXRsZVwiPnt7XG4gICAgICAgICAgICAgIGV4dGVybmFsUHJvbW90aW9uLm5hbWVcbiAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxwXG4gICAgICAgICAgICAqbmdJZj1cImV4dGVybmFsUHJvbW90aW9uLmRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2VhcmNoc3RheC1zZWFyY2gtcmVzdWx0LWRlc2NyaXB0aW9uIHNlYXJjaHN0YXgtc2VhcmNoLXJlc3VsdC1jb21tb25cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IGV4dGVybmFsUHJvbW90aW9uLmRlc2NyaXB0aW9uIH19XG4gICAgICAgICAgPC9wPlxuICAgICAgICAgIDxwXG4gICAgICAgICAgICAqbmdJZj1cImV4dGVybmFsUHJvbW90aW9uLnVybFwiXG4gICAgICAgICAgICBjbGFzcz1cInNlYXJjaHN0YXgtc2VhcmNoLXJlc3VsdC1kZXNjcmlwdGlvbiBzZWFyY2hzdGF4LXNlYXJjaC1yZXN1bHQtY29tbW9uXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBleHRlcm5hbFByb21vdGlvbi51cmwgfX1cbiAgICAgICAgICA8L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgRXh0ZXJuYWxQcm9tb3Rpb25zVGVtcGxhdGVDb21wb25lbnQge1xuICBAVmlld0NoaWxkKFwiZXh0ZXJuYWxQcm9tb3Rpb25zVGVtcGxhdGVcIikgZXh0ZXJuYWxQcm9tb3Rpb25zVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xufVxuIl19
@@ -0,0 +1,207 @@
1
+ // reusable-template.component.ts
2
+ import { Component, ViewChild } from "@angular/core";
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ export class FacetDesktopTemplateComponent {
6
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FacetDesktopTemplateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FacetDesktopTemplateComponent, selector: "app-facet-desktop-template", viewQueries: [{ propertyName: "templateOverrideDesktop", first: true, predicate: ["templateOverrideDesktop"], descendants: true }], ngImport: i0, template: `
8
+ <ng-template
9
+ #templateOverrideDesktop
10
+ let-facetsTemplateDataDesktop="facetsTemplateDataDesktop"
11
+ let-isNotDeactivated="isNotDeactivated"
12
+ let-context="context"
13
+ let-toggleFacetGroup="toggleFacetGroup"
14
+ let-facetValues="facetValues"
15
+ let-isChecked="isChecked"
16
+ let-selectFacet="selectFacet"
17
+ let-showMoreLessDesktop="showMoreLessDesktop"
18
+ >
19
+ <div class="searchstax-facets-container-desktop">
20
+ <div
21
+ class="searchstax-facet-container"
22
+ *ngFor="let facet of facetsTemplateDataDesktop?.facets"
23
+ [class]="{ active: isNotDeactivated(facet.name, context) }"
24
+ >
25
+ <div>
26
+ <div
27
+ class="searchstax-facet-title-container"
28
+ (click)="toggleFacetGroup(facet.name, context)"
29
+ >
30
+ <div class="searchstax-facet-title">
31
+ {{ facet.label }}
32
+ </div>
33
+ <div class="searchstax-facet-title-arrow active"></div>
34
+ </div>
35
+ <div class="searchstax-facet-values-container" aria-live="polite">
36
+ <div
37
+ *ngFor="let facetValue of facetValues(facet); index as key"
38
+ class="searchstax-facet-value-container"
39
+ [class]="{
40
+ 'searchstax-facet-value-disabled': facetValue.disabled
41
+ }"
42
+ #ref
43
+ >
44
+ <div class="searchstax-facet-input">
45
+ <input
46
+ type="checkbox"
47
+ class="searchstax-facet-input-checkbox"
48
+ [checked]="isChecked(facetValue, context)"
49
+ [attr.aria-label]="
50
+ facetValue.value + ' ' + facetValue.count
51
+ "
52
+ [disabled]="facetValue.disabled"
53
+ (click)="
54
+ selectFacet(ref, $event, facetValue, true, context)
55
+ "
56
+ />
57
+ </div>
58
+ <div
59
+ class="searchstax-facet-value-label"
60
+ (click)="selectFacet(ref, $event, facetValue, false, context)"
61
+ >
62
+ {{ facetValue.value }}
63
+ </div>
64
+ <div
65
+ class="searchstax-facet-value-count"
66
+ (click)="selectFacet(ref, $event, facetValue, false, context)"
67
+ >
68
+ ({{ facetValue.count }})
69
+ </div>
70
+ </div>
71
+ <div
72
+ class="searchstax-facet-show-more-container"
73
+ *ngIf="facet.hasMoreFacets"
74
+ >
75
+ <div
76
+ class="searchstax-facet-show-more-container"
77
+ (click)="showMoreLessDesktop($event, facet, context)"
78
+ (keyup.enter)="showMoreLessDesktop($event, facet, context)"
79
+ (keyup.space)="showMoreLessDesktop($event, facet, context)"
80
+ tabindex="0"
81
+ >
82
+ <div
83
+ *ngIf="facet.showingAllFacets"
84
+ class="searchstax-facet-show-less-button searchstax-facet-show-button"
85
+ >
86
+ less
87
+ </div>
88
+ <div
89
+ *ngIf="!facet.showingAllFacets"
90
+ class="searchstax-facet-show-more-button searchstax-facet-show-button"
91
+ >
92
+ more
93
+ </div>
94
+ </div>
95
+ </div>
96
+ </div>
97
+ </div>
98
+ </div>
99
+ </div>
100
+ </ng-template>
101
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
102
+ }
103
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FacetDesktopTemplateComponent, decorators: [{
104
+ type: Component,
105
+ args: [{
106
+ selector: "app-facet-desktop-template",
107
+ template: `
108
+ <ng-template
109
+ #templateOverrideDesktop
110
+ let-facetsTemplateDataDesktop="facetsTemplateDataDesktop"
111
+ let-isNotDeactivated="isNotDeactivated"
112
+ let-context="context"
113
+ let-toggleFacetGroup="toggleFacetGroup"
114
+ let-facetValues="facetValues"
115
+ let-isChecked="isChecked"
116
+ let-selectFacet="selectFacet"
117
+ let-showMoreLessDesktop="showMoreLessDesktop"
118
+ >
119
+ <div class="searchstax-facets-container-desktop">
120
+ <div
121
+ class="searchstax-facet-container"
122
+ *ngFor="let facet of facetsTemplateDataDesktop?.facets"
123
+ [class]="{ active: isNotDeactivated(facet.name, context) }"
124
+ >
125
+ <div>
126
+ <div
127
+ class="searchstax-facet-title-container"
128
+ (click)="toggleFacetGroup(facet.name, context)"
129
+ >
130
+ <div class="searchstax-facet-title">
131
+ {{ facet.label }}
132
+ </div>
133
+ <div class="searchstax-facet-title-arrow active"></div>
134
+ </div>
135
+ <div class="searchstax-facet-values-container" aria-live="polite">
136
+ <div
137
+ *ngFor="let facetValue of facetValues(facet); index as key"
138
+ class="searchstax-facet-value-container"
139
+ [class]="{
140
+ 'searchstax-facet-value-disabled': facetValue.disabled
141
+ }"
142
+ #ref
143
+ >
144
+ <div class="searchstax-facet-input">
145
+ <input
146
+ type="checkbox"
147
+ class="searchstax-facet-input-checkbox"
148
+ [checked]="isChecked(facetValue, context)"
149
+ [attr.aria-label]="
150
+ facetValue.value + ' ' + facetValue.count
151
+ "
152
+ [disabled]="facetValue.disabled"
153
+ (click)="
154
+ selectFacet(ref, $event, facetValue, true, context)
155
+ "
156
+ />
157
+ </div>
158
+ <div
159
+ class="searchstax-facet-value-label"
160
+ (click)="selectFacet(ref, $event, facetValue, false, context)"
161
+ >
162
+ {{ facetValue.value }}
163
+ </div>
164
+ <div
165
+ class="searchstax-facet-value-count"
166
+ (click)="selectFacet(ref, $event, facetValue, false, context)"
167
+ >
168
+ ({{ facetValue.count }})
169
+ </div>
170
+ </div>
171
+ <div
172
+ class="searchstax-facet-show-more-container"
173
+ *ngIf="facet.hasMoreFacets"
174
+ >
175
+ <div
176
+ class="searchstax-facet-show-more-container"
177
+ (click)="showMoreLessDesktop($event, facet, context)"
178
+ (keyup.enter)="showMoreLessDesktop($event, facet, context)"
179
+ (keyup.space)="showMoreLessDesktop($event, facet, context)"
180
+ tabindex="0"
181
+ >
182
+ <div
183
+ *ngIf="facet.showingAllFacets"
184
+ class="searchstax-facet-show-less-button searchstax-facet-show-button"
185
+ >
186
+ less
187
+ </div>
188
+ <div
189
+ *ngIf="!facet.showingAllFacets"
190
+ class="searchstax-facet-show-more-button searchstax-facet-show-button"
191
+ >
192
+ more
193
+ </div>
194
+ </div>
195
+ </div>
196
+ </div>
197
+ </div>
198
+ </div>
199
+ </div>
200
+ </ng-template>
201
+ `,
202
+ }]
203
+ }], propDecorators: { templateOverrideDesktop: [{
204
+ type: ViewChild,
205
+ args: ["templateOverrideDesktop"]
206
+ }] } });
207
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoc3RheC1zZWFyY2gtZmFjZXQtZGVza3RvcC10ZW1wbGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NlYXJjaHN0YXgtaW5jL3NlYXJjaHN0dWRpby11eC1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy90ZW1wbGF0ZXMvc2VhcmNoc3RheC1zZWFyY2gtZmFjZXQtZGVza3RvcC10ZW1wbGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQ0FBaUM7QUFDakMsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQWUsTUFBTSxlQUFlLENBQUM7OztBQW9HbEUsTUFBTSxPQUFPLDZCQUE2QjsrR0FBN0IsNkJBQTZCO21HQUE3Qiw2QkFBNkIsc01BaEc5Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThGVDs7NEZBRVUsNkJBQTZCO2tCQWxHekMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsNEJBQTRCO29CQUN0QyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4RlQ7aUJBQ0Y7OEJBR0MsdUJBQXVCO3NCQUR0QixTQUFTO3VCQUFDLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbIi8vIHJldXNhYmxlLXRlbXBsYXRlLmNvbXBvbmVudC50c1xuaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3Q2hpbGQsIFRlbXBsYXRlUmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImFwcC1mYWNldC1kZXNrdG9wLXRlbXBsYXRlXCIsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICAjdGVtcGxhdGVPdmVycmlkZURlc2t0b3BcbiAgICAgIGxldC1mYWNldHNUZW1wbGF0ZURhdGFEZXNrdG9wPVwiZmFjZXRzVGVtcGxhdGVEYXRhRGVza3RvcFwiXG4gICAgICBsZXQtaXNOb3REZWFjdGl2YXRlZD1cImlzTm90RGVhY3RpdmF0ZWRcIlxuICAgICAgbGV0LWNvbnRleHQ9XCJjb250ZXh0XCJcbiAgICAgIGxldC10b2dnbGVGYWNldEdyb3VwPVwidG9nZ2xlRmFjZXRHcm91cFwiXG4gICAgICBsZXQtZmFjZXRWYWx1ZXM9XCJmYWNldFZhbHVlc1wiXG4gICAgICBsZXQtaXNDaGVja2VkPVwiaXNDaGVja2VkXCJcbiAgICAgIGxldC1zZWxlY3RGYWNldD1cInNlbGVjdEZhY2V0XCJcbiAgICAgIGxldC1zaG93TW9yZUxlc3NEZXNrdG9wPVwic2hvd01vcmVMZXNzRGVza3RvcFwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaHN0YXgtZmFjZXRzLWNvbnRhaW5lci1kZXNrdG9wXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInNlYXJjaHN0YXgtZmFjZXQtY29udGFpbmVyXCJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgZmFjZXQgb2YgZmFjZXRzVGVtcGxhdGVEYXRhRGVza3RvcD8uZmFjZXRzXCJcbiAgICAgICAgICBbY2xhc3NdPVwieyBhY3RpdmU6IGlzTm90RGVhY3RpdmF0ZWQoZmFjZXQubmFtZSwgY29udGV4dCkgfVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInNlYXJjaHN0YXgtZmFjZXQtdGl0bGUtY29udGFpbmVyXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUZhY2V0R3JvdXAoZmFjZXQubmFtZSwgY29udGV4dClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoc3RheC1mYWNldC10aXRsZVwiPlxuICAgICAgICAgICAgICAgIHt7IGZhY2V0LmxhYmVsIH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoc3RheC1mYWNldC10aXRsZS1hcnJvdyBhY3RpdmVcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaHN0YXgtZmFjZXQtdmFsdWVzLWNvbnRhaW5lclwiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGZhY2V0VmFsdWUgb2YgZmFjZXRWYWx1ZXMoZmFjZXQpOyBpbmRleCBhcyBrZXlcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2VhcmNoc3RheC1mYWNldC12YWx1ZS1jb250YWluZXJcIlxuICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAnc2VhcmNoc3RheC1mYWNldC12YWx1ZS1kaXNhYmxlZCc6IGZhY2V0VmFsdWUuZGlzYWJsZWRcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAjcmVmXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoc3RheC1mYWNldC1pbnB1dFwiPlxuICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2VhcmNoc3RheC1mYWNldC1pbnB1dC1jaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImlzQ2hlY2tlZChmYWNldFZhbHVlLCBjb250ZXh0KVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgZmFjZXRWYWx1ZS52YWx1ZSArICcgJyArIGZhY2V0VmFsdWUuY291bnRcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZhY2V0VmFsdWUuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgICAgc2VsZWN0RmFjZXQocmVmLCAkZXZlbnQsIGZhY2V0VmFsdWUsIHRydWUsIGNvbnRleHQpXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2VhcmNoc3RheC1mYWNldC12YWx1ZS1sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0RmFjZXQocmVmLCAkZXZlbnQsIGZhY2V0VmFsdWUsIGZhbHNlLCBjb250ZXh0KVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgZmFjZXRWYWx1ZS52YWx1ZSB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2VhcmNoc3RheC1mYWNldC12YWx1ZS1jb3VudFwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0RmFjZXQocmVmLCAkZXZlbnQsIGZhY2V0VmFsdWUsIGZhbHNlLCBjb250ZXh0KVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgKHt7IGZhY2V0VmFsdWUuY291bnQgfX0pXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzZWFyY2hzdGF4LWZhY2V0LXNob3ctbW9yZS1jb250YWluZXJcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZmFjZXQuaGFzTW9yZUZhY2V0c1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInNlYXJjaHN0YXgtZmFjZXQtc2hvdy1tb3JlLWNvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd01vcmVMZXNzRGVza3RvcCgkZXZlbnQsIGZhY2V0LCBjb250ZXh0KVwiXG4gICAgICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwic2hvd01vcmVMZXNzRGVza3RvcCgkZXZlbnQsIGZhY2V0LCBjb250ZXh0KVwiXG4gICAgICAgICAgICAgICAgICAoa2V5dXAuc3BhY2UpPVwic2hvd01vcmVMZXNzRGVza3RvcCgkZXZlbnQsIGZhY2V0LCBjb250ZXh0KVwiXG4gICAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJmYWNldC5zaG93aW5nQWxsRmFjZXRzXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWFyY2hzdGF4LWZhY2V0LXNob3ctbGVzcy1idXR0b24gc2VhcmNoc3RheC1mYWNldC1zaG93LWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIGxlc3NcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFmYWNldC5zaG93aW5nQWxsRmFjZXRzXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWFyY2hzdGF4LWZhY2V0LXNob3ctbW9yZS1idXR0b24gc2VhcmNoc3RheC1mYWNldC1zaG93LWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIG1vcmVcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIEZhY2V0RGVza3RvcFRlbXBsYXRlQ29tcG9uZW50IHtcbiAgQFZpZXdDaGlsZChcInRlbXBsYXRlT3ZlcnJpZGVEZXNrdG9wXCIpXG4gIHRlbXBsYXRlT3ZlcnJpZGVEZXNrdG9wITogVGVtcGxhdGVSZWY8YW55Pjtcbn1cbiJdfQ==