@searchstax-inc/searchstudio-ux-angular 4.1.0 → 4.1.5

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 (63) hide show
  1. package/CHANGELOG.md +30 -15
  2. package/README.md +6 -2
  3. package/esm2022/lib/components/searchstax-input/searchstax-input.component.mjs +81 -0
  4. package/esm2022/lib/components/searchstax-results/searchstax-results.component.mjs +88 -0
  5. package/esm2022/lib/components/searchstax-search-answer/searchstax-search-answer.component.mjs +47 -0
  6. package/esm2022/lib/components/searchstax-search-external/searchstax-search-external.component.mjs +41 -0
  7. package/esm2022/lib/components/searchstax-search-facets/searchstax-search-facets.component.mjs +114 -0
  8. package/esm2022/lib/components/searchstax-search-location/searchstax-search-location.component.mjs +92 -0
  9. package/esm2022/lib/components/searchstax-search-overview/searchstax-search-overview.component.mjs +42 -0
  10. package/esm2022/lib/components/searchstax-search-pagination/searchstax-search-pagination.component.mjs +64 -0
  11. package/esm2022/lib/components/searchstax-search-related/searchstax-search-related.component.mjs +45 -0
  12. package/esm2022/lib/components/searchstax-search-sorting/searchstax-search-sorting.component.mjs +46 -0
  13. package/esm2022/lib/components/searchstax-wrapper.component.mjs +93 -0
  14. package/esm2022/lib/components/templates/SearchstaxLocationWidgetTemplateConfig.mjs +91 -0
  15. package/esm2022/lib/components/templates/searchstax-search-answer-template.mjs +119 -0
  16. package/esm2022/lib/components/templates/searchstax-search-external-template.mjs +107 -0
  17. package/esm2022/lib/components/templates/searchstax-search-facet-desktop-template.mjs +207 -0
  18. package/esm2022/lib/components/templates/searchstax-search-facet-mobile-template.mjs +343 -0
  19. package/esm2022/lib/components/templates/searchstax-search-input-template.mjs +126 -0
  20. package/esm2022/lib/components/templates/searchstax-search-location-template.mjs +152 -0
  21. package/esm2022/lib/components/templates/searchstax-search-no-results-template.mjs +85 -0
  22. package/esm2022/lib/components/templates/searchstax-search-overview-template.mjs +87 -0
  23. package/esm2022/lib/components/templates/searchstax-search-pagination-infinite-template.mjs +60 -0
  24. package/esm2022/lib/components/templates/searchstax-search-pagination-template.mjs +96 -0
  25. package/esm2022/lib/components/templates/searchstax-search-related-template.mjs +81 -0
  26. package/esm2022/lib/components/templates/searchstax-search-results-template.mjs +175 -0
  27. package/esm2022/lib/components/templates/searchstax-search-sorting-template.mjs +76 -0
  28. package/esm2022/lib/searchstudio-ux-angular.module.mjs +138 -0
  29. package/esm2022/lib/services/store-service.service.mjs +17 -0
  30. package/esm2022/public-api.mjs +30 -0
  31. package/esm2022/searchstax-inc-searchstudio-ux-angular.mjs +5 -0
  32. package/fesm2022/searchstax-inc-searchstudio-ux-angular.mjs +2601 -0
  33. package/fesm2022/searchstax-inc-searchstudio-ux-angular.mjs.map +1 -0
  34. package/index.d.ts +5 -0
  35. package/lib/components/searchstax-input/searchstax-input.component.d.ts +37 -0
  36. package/lib/components/searchstax-results/searchstax-results.component.d.ts +27 -0
  37. package/lib/components/searchstax-search-answer/searchstax-search-answer.component.d.ts +19 -0
  38. package/lib/components/searchstax-search-external/searchstax-search-external.component.d.ts +17 -0
  39. package/lib/components/searchstax-search-facets/searchstax-search-facets.component.d.ts +37 -0
  40. package/lib/components/searchstax-search-location/searchstax-search-location.component.d.ts +33 -0
  41. package/lib/components/searchstax-search-overview/searchstax-search-overview.component.d.ts +17 -0
  42. package/lib/components/searchstax-search-pagination/searchstax-search-pagination.component.d.ts +21 -0
  43. package/lib/components/searchstax-search-related/searchstax-search-related.component.d.ts +19 -0
  44. package/lib/components/searchstax-search-sorting/searchstax-search-sorting.component.d.ts +18 -0
  45. package/lib/components/searchstax-wrapper.component.d.ts +31 -0
  46. package/lib/components/templates/SearchstaxLocationWidgetTemplateConfig.d.ts +13 -0
  47. package/lib/components/templates/searchstax-search-answer-template.d.ts +7 -0
  48. package/lib/components/templates/searchstax-search-external-template.d.ts +7 -0
  49. package/lib/components/templates/searchstax-search-facet-desktop-template.d.ts +7 -0
  50. package/lib/components/templates/searchstax-search-facet-mobile-template.d.ts +7 -0
  51. package/lib/components/templates/searchstax-search-input-template.d.ts +7 -0
  52. package/lib/components/templates/searchstax-search-location-template.d.ts +7 -0
  53. package/lib/components/templates/searchstax-search-no-results-template.d.ts +7 -0
  54. package/lib/components/templates/searchstax-search-overview-template.d.ts +7 -0
  55. package/lib/components/templates/searchstax-search-pagination-infinite-template.d.ts +7 -0
  56. package/lib/components/templates/searchstax-search-pagination-template.d.ts +7 -0
  57. package/lib/components/templates/searchstax-search-related-template.d.ts +7 -0
  58. package/lib/components/templates/searchstax-search-results-template.d.ts +7 -0
  59. package/lib/components/templates/searchstax-search-sorting-template.d.ts +7 -0
  60. package/lib/searchstudio-ux-angular.module.d.ts +32 -0
  61. package/lib/services/store-service.service.d.ts +8 -0
  62. package/package.json +2 -5
  63. package/public-api.d.ts +26 -0
@@ -0,0 +1,85 @@
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 NoResultsTemplateComponent {
6
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NoResultsTemplateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: NoResultsTemplateComponent, selector: "app-no-results-template", viewQueries: [{ propertyName: "noResultsTemplate", first: true, predicate: ["noResultsTemplate"], descendants: true }], ngImport: i0, template: `
8
+ <ng-template
9
+ #noResultsTemplate
10
+ let-metadata="metadata"
11
+ let-searchTerm="searchTerm"
12
+ let-executeSearch="executeSearch"
13
+ let-context="context"
14
+ >
15
+ <div class="searchstax-no-results">
16
+ Showing <strong>no results</strong> for
17
+ <strong>"{{ searchTerm }}"</strong>
18
+ <br />
19
+ <span *ngIf="metadata?.spellingSuggestion"
20
+ >&nbsp;Did you mean
21
+ <a
22
+ href="#"
23
+ [attr.aria-label]="'did you mean: ' + metadata?.spellingSuggestion"
24
+ class="searchstax-suggestion-term"
25
+ (click)="
26
+ executeSearch(metadata?.spellingSuggestion ?? '', $event, context)
27
+ "
28
+ >{{ metadata?.spellingSuggestion }}</a
29
+ >?</span
30
+ >
31
+ </div>
32
+ <ul>
33
+ <li>
34
+ Try searching for search related terms or topics. We offer a wide
35
+ variety of content to help you get the information you need.
36
+ </li>
37
+ <li>Lost? Click on the ‘X” in the Search Box to reset your search.</li>
38
+ </ul>
39
+ </ng-template>
40
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
41
+ }
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NoResultsTemplateComponent, decorators: [{
43
+ type: Component,
44
+ args: [{
45
+ selector: "app-no-results-template",
46
+ template: `
47
+ <ng-template
48
+ #noResultsTemplate
49
+ let-metadata="metadata"
50
+ let-searchTerm="searchTerm"
51
+ let-executeSearch="executeSearch"
52
+ let-context="context"
53
+ >
54
+ <div class="searchstax-no-results">
55
+ Showing <strong>no results</strong> for
56
+ <strong>"{{ searchTerm }}"</strong>
57
+ <br />
58
+ <span *ngIf="metadata?.spellingSuggestion"
59
+ >&nbsp;Did you mean
60
+ <a
61
+ href="#"
62
+ [attr.aria-label]="'did you mean: ' + metadata?.spellingSuggestion"
63
+ class="searchstax-suggestion-term"
64
+ (click)="
65
+ executeSearch(metadata?.spellingSuggestion ?? '', $event, context)
66
+ "
67
+ >{{ metadata?.spellingSuggestion }}</a
68
+ >?</span
69
+ >
70
+ </div>
71
+ <ul>
72
+ <li>
73
+ Try searching for search related terms or topics. We offer a wide
74
+ variety of content to help you get the information you need.
75
+ </li>
76
+ <li>Lost? Click on the ‘X” in the Search Box to reset your search.</li>
77
+ </ul>
78
+ </ng-template>
79
+ `,
80
+ }]
81
+ }], propDecorators: { noResultsTemplate: [{
82
+ type: ViewChild,
83
+ args: ["noResultsTemplate"]
84
+ }] } });
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoc3RheC1zZWFyY2gtbm8tcmVzdWx0cy10ZW1wbGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NlYXJjaHN0YXgtaW5jL3NlYXJjaHN0dWRpby11eC1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy90ZW1wbGF0ZXMvc2VhcmNoc3RheC1zZWFyY2gtbm8tcmVzdWx0cy10ZW1wbGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQ0FBaUM7QUFDakMsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQWUsTUFBTSxlQUFlLENBQUM7OztBQXVDbEUsTUFBTSxPQUFPLDBCQUEwQjsrR0FBMUIsMEJBQTBCO21HQUExQiwwQkFBMEIsdUxBbkMzQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUNUOzs0RkFFVSwwQkFBMEI7a0JBckN0QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx5QkFBeUI7b0JBQ25DLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUNUO2lCQUNGOzhCQUVpQyxpQkFBaUI7c0JBQWhELFNBQVM7dUJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiLy8gcmV1c2FibGUtdGVtcGxhdGUuY29tcG9uZW50LnRzXG5pbXBvcnQgeyBDb21wb25lbnQsIFZpZXdDaGlsZCwgVGVtcGxhdGVSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiYXBwLW5vLXJlc3VsdHMtdGVtcGxhdGVcIixcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctdGVtcGxhdGVcbiAgICAgICNub1Jlc3VsdHNUZW1wbGF0ZVxuICAgICAgbGV0LW1ldGFkYXRhPVwibWV0YWRhdGFcIlxuICAgICAgbGV0LXNlYXJjaFRlcm09XCJzZWFyY2hUZXJtXCJcbiAgICAgIGxldC1leGVjdXRlU2VhcmNoPVwiZXhlY3V0ZVNlYXJjaFwiXG4gICAgICBsZXQtY29udGV4dD1cImNvbnRleHRcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2hzdGF4LW5vLXJlc3VsdHNcIj5cbiAgICAgICAgU2hvd2luZyA8c3Ryb25nPm5vIHJlc3VsdHM8L3N0cm9uZz4gZm9yXG4gICAgICAgIDxzdHJvbmc+XCJ7eyBzZWFyY2hUZXJtIH19XCI8L3N0cm9uZz5cbiAgICAgICAgPGJyIC8+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwibWV0YWRhdGE/LnNwZWxsaW5nU3VnZ2VzdGlvblwiXG4gICAgICAgICAgPiZuYnNwO0RpZCB5b3UgbWVhblxuICAgICAgICAgIDxhXG4gICAgICAgICAgICBocmVmPVwiI1wiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidkaWQgeW91IG1lYW46ICcgKyBtZXRhZGF0YT8uc3BlbGxpbmdTdWdnZXN0aW9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2VhcmNoc3RheC1zdWdnZXN0aW9uLXRlcm1cIlxuICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICBleGVjdXRlU2VhcmNoKG1ldGFkYXRhPy5zcGVsbGluZ1N1Z2dlc3Rpb24gPz8gJycsICRldmVudCwgY29udGV4dClcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+e3sgbWV0YWRhdGE/LnNwZWxsaW5nU3VnZ2VzdGlvbiB9fTwvYVxuICAgICAgICAgID4/PC9zcGFuXG4gICAgICAgID5cbiAgICAgIDwvZGl2PlxuICAgICAgPHVsPlxuICAgICAgICA8bGk+XG4gICAgICAgICAgVHJ5IHNlYXJjaGluZyBmb3Igc2VhcmNoIHJlbGF0ZWQgdGVybXMgb3IgdG9waWNzLiBXZSBvZmZlciBhIHdpZGVcbiAgICAgICAgICB2YXJpZXR5IG9mIGNvbnRlbnQgdG8gaGVscCB5b3UgZ2V0IHRoZSBpbmZvcm1hdGlvbiB5b3UgbmVlZC5cbiAgICAgICAgPC9saT5cbiAgICAgICAgPGxpPkxvc3Q/IENsaWNrIG9uIHRoZSDigJhY4oCdIGluIHRoZSBTZWFyY2ggQm94IHRvIHJlc2V0IHlvdXIgc2VhcmNoLjwvbGk+XG4gICAgICA8L3VsPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIE5vUmVzdWx0c1RlbXBsYXRlQ29tcG9uZW50IHtcbiAgQFZpZXdDaGlsZChcIm5vUmVzdWx0c1RlbXBsYXRlXCIpIG5vUmVzdWx0c1RlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55Pjtcbn1cbiJdfQ==
@@ -0,0 +1,87 @@
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 OverviewTemplateComponent {
6
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: OverviewTemplateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: OverviewTemplateComponent, selector: "app-overview-template", viewQueries: [{ propertyName: "overviewTemplate", first: true, predicate: ["feedbackTemplate"], descendants: true }], ngImport: i0, template: `
8
+ <ng-template
9
+ #feedbackTemplate
10
+ let-searchFeedbackData="searchFeedbackData"
11
+ let-onOriginalQueryClick="onOriginalQueryClick"
12
+ let-context="context"
13
+ >
14
+ <h2 class="searchstax-feedback-container">
15
+ Showing
16
+ <b
17
+ >{{ searchFeedbackData!.startResultIndex }} -
18
+ {{ searchFeedbackData!.endResultIndex }}</b
19
+ >
20
+ of <b>{{ searchFeedbackData!.totalResults }}</b> results
21
+ <span *ngIf="searchFeedbackData.searchTerm"
22
+ >for "<b>{{ searchFeedbackData!.searchTerm }}</b
23
+ >"
24
+ </span>
25
+ <div class="searchstax-feedback-container-suggested">
26
+ <div *ngIf="searchFeedbackData.autoCorrectedQuery">
27
+ Search instead for
28
+ <a
29
+ href="#"
30
+ (click)="onOriginalQueryClick($event, context)"
31
+ class="searchstax-feedback-original-query"
32
+ [attr.aria-label]="
33
+ 'Search instead for: ' + searchFeedbackData!.originalQuery
34
+ "
35
+ >{{ searchFeedbackData!.originalQuery }}</a
36
+ >
37
+ </div>
38
+ </div>
39
+ </h2>
40
+ </ng-template>
41
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
42
+ }
43
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: OverviewTemplateComponent, decorators: [{
44
+ type: Component,
45
+ args: [{
46
+ selector: "app-overview-template",
47
+ template: `
48
+ <ng-template
49
+ #feedbackTemplate
50
+ let-searchFeedbackData="searchFeedbackData"
51
+ let-onOriginalQueryClick="onOriginalQueryClick"
52
+ let-context="context"
53
+ >
54
+ <h2 class="searchstax-feedback-container">
55
+ Showing
56
+ <b
57
+ >{{ searchFeedbackData!.startResultIndex }} -
58
+ {{ searchFeedbackData!.endResultIndex }}</b
59
+ >
60
+ of <b>{{ searchFeedbackData!.totalResults }}</b> results
61
+ <span *ngIf="searchFeedbackData.searchTerm"
62
+ >for "<b>{{ searchFeedbackData!.searchTerm }}</b
63
+ >"
64
+ </span>
65
+ <div class="searchstax-feedback-container-suggested">
66
+ <div *ngIf="searchFeedbackData.autoCorrectedQuery">
67
+ Search instead for
68
+ <a
69
+ href="#"
70
+ (click)="onOriginalQueryClick($event, context)"
71
+ class="searchstax-feedback-original-query"
72
+ [attr.aria-label]="
73
+ 'Search instead for: ' + searchFeedbackData!.originalQuery
74
+ "
75
+ >{{ searchFeedbackData!.originalQuery }}</a
76
+ >
77
+ </div>
78
+ </div>
79
+ </h2>
80
+ </ng-template>
81
+ `,
82
+ }]
83
+ }], propDecorators: { overviewTemplate: [{
84
+ type: ViewChild,
85
+ args: ["feedbackTemplate"]
86
+ }] } });
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoc3RheC1zZWFyY2gtb3ZlcnZpZXctdGVtcGxhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zZWFyY2hzdGF4LWluYy9zZWFyY2hzdHVkaW8tdXgtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvdGVtcGxhdGVzL3NlYXJjaHN0YXgtc2VhcmNoLW92ZXJ2aWV3LXRlbXBsYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlDQUFpQztBQUNqQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBZSxNQUFNLGVBQWUsQ0FBQzs7O0FBd0NsRSxNQUFNLE9BQU8seUJBQXlCOytHQUF6Qix5QkFBeUI7bUdBQXpCLHlCQUF5QixtTEFwQzFCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0NUOzs0RkFFVSx5QkFBeUI7a0JBdENyQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtDVDtpQkFDRjs4QkFFZ0MsZ0JBQWdCO3NCQUE5QyxTQUFTO3VCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIHJldXNhYmxlLXRlbXBsYXRlLmNvbXBvbmVudC50c1xuaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3Q2hpbGQsIFRlbXBsYXRlUmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImFwcC1vdmVydmlldy10ZW1wbGF0ZVwiLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgI2ZlZWRiYWNrVGVtcGxhdGVcbiAgICAgIGxldC1zZWFyY2hGZWVkYmFja0RhdGE9XCJzZWFyY2hGZWVkYmFja0RhdGFcIlxuICAgICAgbGV0LW9uT3JpZ2luYWxRdWVyeUNsaWNrPVwib25PcmlnaW5hbFF1ZXJ5Q2xpY2tcIlxuICAgICAgbGV0LWNvbnRleHQ9XCJjb250ZXh0XCJcbiAgICA+XG4gICAgICA8aDIgY2xhc3M9XCJzZWFyY2hzdGF4LWZlZWRiYWNrLWNvbnRhaW5lclwiPlxuICAgICAgICBTaG93aW5nXG4gICAgICAgIDxiXG4gICAgICAgICAgPnt7IHNlYXJjaEZlZWRiYWNrRGF0YSEuc3RhcnRSZXN1bHRJbmRleCB9fSAtXG4gICAgICAgICAge3sgc2VhcmNoRmVlZGJhY2tEYXRhIS5lbmRSZXN1bHRJbmRleCB9fTwvYlxuICAgICAgICA+XG4gICAgICAgIG9mIDxiPnt7IHNlYXJjaEZlZWRiYWNrRGF0YSEudG90YWxSZXN1bHRzIH19PC9iPiByZXN1bHRzXG4gICAgICAgIDxzcGFuICpuZ0lmPVwic2VhcmNoRmVlZGJhY2tEYXRhLnNlYXJjaFRlcm1cIlxuICAgICAgICAgID5mb3IgXCI8Yj57eyBzZWFyY2hGZWVkYmFja0RhdGEhLnNlYXJjaFRlcm0gfX08L2JcbiAgICAgICAgICA+XCJcbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoc3RheC1mZWVkYmFjay1jb250YWluZXItc3VnZ2VzdGVkXCI+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cInNlYXJjaEZlZWRiYWNrRGF0YS5hdXRvQ29ycmVjdGVkUXVlcnlcIj5cbiAgICAgICAgICAgIFNlYXJjaCBpbnN0ZWFkIGZvclxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgaHJlZj1cIiNcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwib25PcmlnaW5hbFF1ZXJ5Q2xpY2soJGV2ZW50LCBjb250ZXh0KVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwic2VhcmNoc3RheC1mZWVkYmFjay1vcmlnaW5hbC1xdWVyeVwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgJ1NlYXJjaCBpbnN0ZWFkIGZvcjogJyArIHNlYXJjaEZlZWRiYWNrRGF0YSEub3JpZ2luYWxRdWVyeVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+e3sgc2VhcmNoRmVlZGJhY2tEYXRhIS5vcmlnaW5hbFF1ZXJ5IH19PC9hXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9oMj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBPdmVydmlld1RlbXBsYXRlQ29tcG9uZW50IHtcbiAgQFZpZXdDaGlsZChcImZlZWRiYWNrVGVtcGxhdGVcIikgb3ZlcnZpZXdUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG59XG4iXX0=
@@ -0,0 +1,60 @@
1
+ // reusable-template.component.ts
2
+ import { Component, ViewChild } from "@angular/core";
3
+ import * as i0 from "@angular/core";
4
+ export class PaginationInfiniteTemplateComponent {
5
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PaginationInfiniteTemplateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: PaginationInfiniteTemplateComponent, selector: "app-pagination-infinite-template", viewQueries: [{ propertyName: "infiniteScrollTemplate", first: true, predicate: ["infiniteScrollTemplate"], descendants: true }], ngImport: i0, template: `
7
+ <ng-template
8
+ #infiniteScrollTemplate
9
+ let-paginationData="paginationData"
10
+ let-nextPage="nextPage"
11
+ let-context="context"
12
+ >
13
+ <div class="searchstax-pagination-container">
14
+ <div class="searchstax-pagination-content">
15
+ <a
16
+ class="searchstax-pagination-load-more"
17
+ (click)="nextPage($event, context)"
18
+ (keyup.enter)="nextPage($event, context)"
19
+ (keyup.space)="nextPage($event, context)"
20
+ tabindex="0"
21
+ >
22
+ Load More
23
+ </a>
24
+ </div>
25
+ </div>
26
+ </ng-template>
27
+ `, isInline: true }); }
28
+ }
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PaginationInfiniteTemplateComponent, decorators: [{
30
+ type: Component,
31
+ args: [{
32
+ selector: "app-pagination-infinite-template",
33
+ template: `
34
+ <ng-template
35
+ #infiniteScrollTemplate
36
+ let-paginationData="paginationData"
37
+ let-nextPage="nextPage"
38
+ let-context="context"
39
+ >
40
+ <div class="searchstax-pagination-container">
41
+ <div class="searchstax-pagination-content">
42
+ <a
43
+ class="searchstax-pagination-load-more"
44
+ (click)="nextPage($event, context)"
45
+ (keyup.enter)="nextPage($event, context)"
46
+ (keyup.space)="nextPage($event, context)"
47
+ tabindex="0"
48
+ >
49
+ Load More
50
+ </a>
51
+ </div>
52
+ </div>
53
+ </ng-template>
54
+ `,
55
+ }]
56
+ }], propDecorators: { infiniteScrollTemplate: [{
57
+ type: ViewChild,
58
+ args: ["infiniteScrollTemplate"]
59
+ }] } });
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoc3RheC1zZWFyY2gtcGFnaW5hdGlvbi1pbmZpbml0ZS10ZW1wbGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NlYXJjaHN0YXgtaW5jL3NlYXJjaHN0dWRpby11eC1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy90ZW1wbGF0ZXMvc2VhcmNoc3RheC1zZWFyY2gtcGFnaW5hdGlvbi1pbmZpbml0ZS10ZW1wbGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQ0FBaUM7QUFDakMsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQWUsTUFBTSxlQUFlLENBQUM7O0FBMkJsRSxNQUFNLE9BQU8sbUNBQW1DOytHQUFuQyxtQ0FBbUM7bUdBQW5DLG1DQUFtQywwTUF2QnBDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQlQ7OzRGQUVVLG1DQUFtQztrQkF6Qi9DLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGtDQUFrQztvQkFDNUMsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQlQ7aUJBQ0Y7OEJBRXNDLHNCQUFzQjtzQkFBMUQsU0FBUzt1QkFBQyx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyIvLyByZXVzYWJsZS10ZW1wbGF0ZS5jb21wb25lbnQudHNcbmltcG9ydCB7IENvbXBvbmVudCwgVmlld0NoaWxkLCBUZW1wbGF0ZVJlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJhcHAtcGFnaW5hdGlvbi1pbmZpbml0ZS10ZW1wbGF0ZVwiLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgI2luZmluaXRlU2Nyb2xsVGVtcGxhdGVcbiAgICAgIGxldC1wYWdpbmF0aW9uRGF0YT1cInBhZ2luYXRpb25EYXRhXCJcbiAgICAgIGxldC1uZXh0UGFnZT1cIm5leHRQYWdlXCJcbiAgICAgIGxldC1jb250ZXh0PVwiY29udGV4dFwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaHN0YXgtcGFnaW5hdGlvbi1jb250YWluZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaHN0YXgtcGFnaW5hdGlvbi1jb250ZW50XCI+XG4gICAgICAgICAgPGFcbiAgICAgICAgICAgIGNsYXNzPVwic2VhcmNoc3RheC1wYWdpbmF0aW9uLWxvYWQtbW9yZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwibmV4dFBhZ2UoJGV2ZW50LCBjb250ZXh0KVwiXG4gICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwibmV4dFBhZ2UoJGV2ZW50LCBjb250ZXh0KVwiXG4gICAgICAgICAgICAoa2V5dXAuc3BhY2UpPVwibmV4dFBhZ2UoJGV2ZW50LCBjb250ZXh0KVwiXG4gICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIExvYWQgTW9yZVxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdpbmF0aW9uSW5maW5pdGVUZW1wbGF0ZUNvbXBvbmVudCB7XG4gIEBWaWV3Q2hpbGQoXCJpbmZpbml0ZVNjcm9sbFRlbXBsYXRlXCIpIGluZmluaXRlU2Nyb2xsVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xufVxuIl19
@@ -0,0 +1,96 @@
1
+ // reusable-template.component.ts
2
+ import { Component, ViewChild } from "@angular/core";
3
+ import * as i0 from "@angular/core";
4
+ export class PaginationTemplateComponent {
5
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PaginationTemplateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: PaginationTemplateComponent, selector: "app-pagination-template", viewQueries: [{ propertyName: "paginationTemplate", first: true, predicate: ["paginationTemplate"], descendants: true }], ngImport: i0, template: `
7
+ <ng-template
8
+ #paginationTemplate
9
+ let-paginationData="paginationData"
10
+ let-previousPage="previousPage"
11
+ let-nextPage="nextPage"
12
+ let-context="context"
13
+ >
14
+ <div class="searchstax-pagination-container">
15
+ <div class="searchstax-pagination-content">
16
+ <a
17
+ class="searchstax-pagination-previous"
18
+ [class]="paginationData.isFirstPage ? 'disabled' : ''"
19
+ (click)="previousPage($event, context)"
20
+ (keyup.enter)="previousPage($event, context)"
21
+ (keyup.space)="previousPage($event, context)"
22
+ tabindex="0"
23
+ id="searchstax-pagination-previous"
24
+ >
25
+ &lt; Previous
26
+ </a>
27
+ <div class="searchstax-pagination-details">
28
+ {{ paginationData?.startResultIndex }} -
29
+ {{ paginationData?.endResultIndex }} of
30
+ {{ paginationData?.totalResults }}
31
+ </div>
32
+ <a
33
+ class="searchstax-pagination-next"
34
+ [class]="paginationData.isLastPage ? 'disabled' : ''"
35
+ (click)="nextPage($event, context)"
36
+ (keyup.enter)="nextPage($event, context)"
37
+ (keyup.space)="nextPage($event, context)"
38
+ tabindex="0"
39
+ id="searchstax-pagination-next"
40
+ >Next ></a
41
+ >
42
+ </div>
43
+ </div>
44
+ </ng-template>
45
+ `, isInline: true }); }
46
+ }
47
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PaginationTemplateComponent, decorators: [{
48
+ type: Component,
49
+ args: [{
50
+ selector: "app-pagination-template",
51
+ template: `
52
+ <ng-template
53
+ #paginationTemplate
54
+ let-paginationData="paginationData"
55
+ let-previousPage="previousPage"
56
+ let-nextPage="nextPage"
57
+ let-context="context"
58
+ >
59
+ <div class="searchstax-pagination-container">
60
+ <div class="searchstax-pagination-content">
61
+ <a
62
+ class="searchstax-pagination-previous"
63
+ [class]="paginationData.isFirstPage ? 'disabled' : ''"
64
+ (click)="previousPage($event, context)"
65
+ (keyup.enter)="previousPage($event, context)"
66
+ (keyup.space)="previousPage($event, context)"
67
+ tabindex="0"
68
+ id="searchstax-pagination-previous"
69
+ >
70
+ &lt; Previous
71
+ </a>
72
+ <div class="searchstax-pagination-details">
73
+ {{ paginationData?.startResultIndex }} -
74
+ {{ paginationData?.endResultIndex }} of
75
+ {{ paginationData?.totalResults }}
76
+ </div>
77
+ <a
78
+ class="searchstax-pagination-next"
79
+ [class]="paginationData.isLastPage ? 'disabled' : ''"
80
+ (click)="nextPage($event, context)"
81
+ (keyup.enter)="nextPage($event, context)"
82
+ (keyup.space)="nextPage($event, context)"
83
+ tabindex="0"
84
+ id="searchstax-pagination-next"
85
+ >Next ></a
86
+ >
87
+ </div>
88
+ </div>
89
+ </ng-template>
90
+ `,
91
+ }]
92
+ }], propDecorators: { paginationTemplate: [{
93
+ type: ViewChild,
94
+ args: ["paginationTemplate"]
95
+ }] } });
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoc3RheC1zZWFyY2gtcGFnaW5hdGlvbi10ZW1wbGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NlYXJjaHN0YXgtaW5jL3NlYXJjaHN0dWRpby11eC1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy90ZW1wbGF0ZXMvc2VhcmNoc3RheC1zZWFyY2gtcGFnaW5hdGlvbi10ZW1wbGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQ0FBaUM7QUFDakMsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQWUsTUFBTSxlQUFlLENBQUM7O0FBNkNsRSxNQUFNLE9BQU8sMkJBQTJCOytHQUEzQiwyQkFBMkI7bUdBQTNCLDJCQUEyQix5TEF6QzVCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Q1Q7OzRGQUVVLDJCQUEyQjtrQkEzQ3ZDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHlCQUF5QjtvQkFDbkMsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Q1Q7aUJBQ0Y7OEJBRWtDLGtCQUFrQjtzQkFBbEQsU0FBUzt1QkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyIvLyByZXVzYWJsZS10ZW1wbGF0ZS5jb21wb25lbnQudHNcbmltcG9ydCB7IENvbXBvbmVudCwgVmlld0NoaWxkLCBUZW1wbGF0ZVJlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJhcHAtcGFnaW5hdGlvbi10ZW1wbGF0ZVwiLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgI3BhZ2luYXRpb25UZW1wbGF0ZVxuICAgICAgbGV0LXBhZ2luYXRpb25EYXRhPVwicGFnaW5hdGlvbkRhdGFcIlxuICAgICAgbGV0LXByZXZpb3VzUGFnZT1cInByZXZpb3VzUGFnZVwiXG4gICAgICBsZXQtbmV4dFBhZ2U9XCJuZXh0UGFnZVwiXG4gICAgICBsZXQtY29udGV4dD1cImNvbnRleHRcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2hzdGF4LXBhZ2luYXRpb24tY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2hzdGF4LXBhZ2luYXRpb24tY29udGVudFwiPlxuICAgICAgICAgIDxhXG4gICAgICAgICAgICBjbGFzcz1cInNlYXJjaHN0YXgtcGFnaW5hdGlvbi1wcmV2aW91c1wiXG4gICAgICAgICAgICBbY2xhc3NdPVwicGFnaW5hdGlvbkRhdGEuaXNGaXJzdFBhZ2UgPyAnZGlzYWJsZWQnIDogJydcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInByZXZpb3VzUGFnZSgkZXZlbnQsIGNvbnRleHQpXCJcbiAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJwcmV2aW91c1BhZ2UoJGV2ZW50LCBjb250ZXh0KVwiXG4gICAgICAgICAgICAoa2V5dXAuc3BhY2UpPVwicHJldmlvdXNQYWdlKCRldmVudCwgY29udGV4dClcIlxuICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgIGlkPVwic2VhcmNoc3RheC1wYWdpbmF0aW9uLXByZXZpb3VzXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICAmbHQ7IFByZXZpb3VzXG4gICAgICAgICAgPC9hPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2hzdGF4LXBhZ2luYXRpb24tZGV0YWlsc1wiPlxuICAgICAgICAgICAge3sgcGFnaW5hdGlvbkRhdGE/LnN0YXJ0UmVzdWx0SW5kZXggfX0gLVxuICAgICAgICAgICAge3sgcGFnaW5hdGlvbkRhdGE/LmVuZFJlc3VsdEluZGV4IH19IG9mXG4gICAgICAgICAgICB7eyBwYWdpbmF0aW9uRGF0YT8udG90YWxSZXN1bHRzIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGFcbiAgICAgICAgICAgIGNsYXNzPVwic2VhcmNoc3RheC1wYWdpbmF0aW9uLW5leHRcIlxuICAgICAgICAgICAgW2NsYXNzXT1cInBhZ2luYXRpb25EYXRhLmlzTGFzdFBhZ2UgPyAnZGlzYWJsZWQnIDogJydcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm5leHRQYWdlKCRldmVudCwgY29udGV4dClcIlxuICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cIm5leHRQYWdlKCRldmVudCwgY29udGV4dClcIlxuICAgICAgICAgICAgKGtleXVwLnNwYWNlKT1cIm5leHRQYWdlKCRldmVudCwgY29udGV4dClcIlxuICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgIGlkPVwic2VhcmNoc3RheC1wYWdpbmF0aW9uLW5leHRcIlxuICAgICAgICAgICAgPk5leHQgPjwvYVxuICAgICAgICAgID5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdpbmF0aW9uVGVtcGxhdGVDb21wb25lbnQge1xuICBAVmlld0NoaWxkKFwicGFnaW5hdGlvblRlbXBsYXRlXCIpIHBhZ2luYXRpb25UZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG59XG4iXX0=
@@ -0,0 +1,81 @@
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 RelatedTemplateComponent {
6
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: RelatedTemplateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: RelatedTemplateComponent, selector: "app-related-template", viewQueries: [{ propertyName: "relatedTemplate", first: true, predicate: ["relatedTemplate"], descendants: true }], ngImport: i0, template: `
8
+ <ng-template
9
+ #relatedTemplate
10
+ let-rand="rand"
11
+ let-relatedData="relatedData"
12
+ let-executeSearch="executeSearch"
13
+ let-context="context"
14
+ >
15
+ <div
16
+ class="searchstax-related-searches-container"
17
+ [id]="'searchstax-related-searches-container' + rand"
18
+ >
19
+ Related searches: <span id="searchstax-related-searches"></span>
20
+ <span
21
+ class="searchstax-related-search"
22
+ *ngIf="relatedData.relatedSearches"
23
+ >
24
+ <span
25
+ *ngFor="let related of relatedData.relatedSearches"
26
+ (click)="executeSearch(related, context)"
27
+ (keyup.enter)="executeSearch(related, context)"
28
+ (keyup.space)="executeSearch(related, context)"
29
+ tabindex="0"
30
+ class="searchstax-related-search searchstax-related-search-item"
31
+ [attr.aria-label]="'Related search: ' + related.related_search"
32
+ >
33
+ {{ related.related_search }}<span *ngIf="!related.last">,</span>
34
+ </span>
35
+ </span>
36
+ </div>
37
+ </ng-template>
38
+ `, 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"] }] }); }
39
+ }
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: RelatedTemplateComponent, decorators: [{
41
+ type: Component,
42
+ args: [{
43
+ selector: "app-related-template",
44
+ template: `
45
+ <ng-template
46
+ #relatedTemplate
47
+ let-rand="rand"
48
+ let-relatedData="relatedData"
49
+ let-executeSearch="executeSearch"
50
+ let-context="context"
51
+ >
52
+ <div
53
+ class="searchstax-related-searches-container"
54
+ [id]="'searchstax-related-searches-container' + rand"
55
+ >
56
+ Related searches: <span id="searchstax-related-searches"></span>
57
+ <span
58
+ class="searchstax-related-search"
59
+ *ngIf="relatedData.relatedSearches"
60
+ >
61
+ <span
62
+ *ngFor="let related of relatedData.relatedSearches"
63
+ (click)="executeSearch(related, context)"
64
+ (keyup.enter)="executeSearch(related, context)"
65
+ (keyup.space)="executeSearch(related, context)"
66
+ tabindex="0"
67
+ class="searchstax-related-search searchstax-related-search-item"
68
+ [attr.aria-label]="'Related search: ' + related.related_search"
69
+ >
70
+ {{ related.related_search }}<span *ngIf="!related.last">,</span>
71
+ </span>
72
+ </span>
73
+ </div>
74
+ </ng-template>
75
+ `,
76
+ }]
77
+ }], propDecorators: { relatedTemplate: [{
78
+ type: ViewChild,
79
+ args: ["relatedTemplate"]
80
+ }] } });
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoc3RheC1zZWFyY2gtcmVsYXRlZC10ZW1wbGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NlYXJjaHN0YXgtaW5jL3NlYXJjaHN0dWRpby11eC1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy90ZW1wbGF0ZXMvc2VhcmNoc3RheC1zZWFyY2gtcmVsYXRlZC10ZW1wbGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQ0FBaUM7QUFDakMsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQWUsTUFBTSxlQUFlLENBQUM7OztBQXFDbEUsTUFBTSxPQUFPLHdCQUF3QjsrR0FBeEIsd0JBQXdCO21HQUF4Qix3QkFBd0IsZ0xBakN6Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStCVDs7NEZBRVUsd0JBQXdCO2tCQW5DcEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0ErQlQ7aUJBQ0Y7OEJBRStCLGVBQWU7c0JBQTVDLFNBQVM7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gcmV1c2FibGUtdGVtcGxhdGUuY29tcG9uZW50LnRzXG5pbXBvcnQgeyBDb21wb25lbnQsIFZpZXdDaGlsZCwgVGVtcGxhdGVSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiYXBwLXJlbGF0ZWQtdGVtcGxhdGVcIixcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctdGVtcGxhdGVcbiAgICAgICNyZWxhdGVkVGVtcGxhdGVcbiAgICAgIGxldC1yYW5kPVwicmFuZFwiXG4gICAgICBsZXQtcmVsYXRlZERhdGE9XCJyZWxhdGVkRGF0YVwiXG4gICAgICBsZXQtZXhlY3V0ZVNlYXJjaD1cImV4ZWN1dGVTZWFyY2hcIlxuICAgICAgbGV0LWNvbnRleHQ9XCJjb250ZXh0XCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwic2VhcmNoc3RheC1yZWxhdGVkLXNlYXJjaGVzLWNvbnRhaW5lclwiXG4gICAgICAgIFtpZF09XCInc2VhcmNoc3RheC1yZWxhdGVkLXNlYXJjaGVzLWNvbnRhaW5lcicgKyByYW5kXCJcbiAgICAgID5cbiAgICAgICAgUmVsYXRlZCBzZWFyY2hlczogPHNwYW4gaWQ9XCJzZWFyY2hzdGF4LXJlbGF0ZWQtc2VhcmNoZXNcIj48L3NwYW4+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3M9XCJzZWFyY2hzdGF4LXJlbGF0ZWQtc2VhcmNoXCJcbiAgICAgICAgICAqbmdJZj1cInJlbGF0ZWREYXRhLnJlbGF0ZWRTZWFyY2hlc1wiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHJlbGF0ZWQgb2YgcmVsYXRlZERhdGEucmVsYXRlZFNlYXJjaGVzXCJcbiAgICAgICAgICAgIChjbGljayk9XCJleGVjdXRlU2VhcmNoKHJlbGF0ZWQsIGNvbnRleHQpXCJcbiAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJleGVjdXRlU2VhcmNoKHJlbGF0ZWQsIGNvbnRleHQpXCJcbiAgICAgICAgICAgIChrZXl1cC5zcGFjZSk9XCJleGVjdXRlU2VhcmNoKHJlbGF0ZWQsIGNvbnRleHQpXCJcbiAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICBjbGFzcz1cInNlYXJjaHN0YXgtcmVsYXRlZC1zZWFyY2ggc2VhcmNoc3RheC1yZWxhdGVkLXNlYXJjaC1pdGVtXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1JlbGF0ZWQgc2VhcmNoOiAnICsgcmVsYXRlZC5yZWxhdGVkX3NlYXJjaFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgcmVsYXRlZC5yZWxhdGVkX3NlYXJjaCB9fTxzcGFuICpuZ0lmPVwiIXJlbGF0ZWQubGFzdFwiPiw8L3NwYW4+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBSZWxhdGVkVGVtcGxhdGVDb21wb25lbnQge1xuICBAVmlld0NoaWxkKFwicmVsYXRlZFRlbXBsYXRlXCIpIHJlbGF0ZWRUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG59XG4iXX0=
@@ -0,0 +1,175 @@
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 ResultsTemplateComponent {
6
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ResultsTemplateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ResultsTemplateComponent, selector: "app-results-template", viewQueries: [{ propertyName: "resultsTemplate", first: true, predicate: ["resultsTemplate"], descendants: true }], ngImport: i0, template: `
8
+ <ng-template
9
+ #resultsTemplate
10
+ let-searchResults="searchResults"
11
+ let-resultClicked="resultClicked"
12
+ let-isImage="isImage"
13
+ let-context="context"
14
+ >
15
+ <div class="searchstax-search-results">
16
+ <a
17
+ *ngFor="let searchResult of searchResults"
18
+ [href]="searchResult.url"
19
+ [attr.data-searchstax-unique-result-id]="searchResult.uniqueId"
20
+ (click)="resultClicked(searchResult, $event, context)"
21
+ (keyup.enter)="resultClicked(searchResult, $event, context)"
22
+ (keyup.space)="resultClicked(searchResult, $event, context)"
23
+ [attr.aria-labelledby]="'title-' + searchResult.uniqueId"
24
+ tabindex="0"
25
+ class="searchstax-result-item-link searchstax-result-item-link-wrapping"
26
+ >
27
+ <div
28
+ class="searchstax-search-result"
29
+ [ngClass]="{ 'has-thumbnail': searchResult.thumbnail }"
30
+ >
31
+ <div
32
+ *ngIf="searchResult.promoted"
33
+ class="searchstax-search-result-promoted"
34
+ ></div>
35
+ <div
36
+ *ngIf="searchResult.ribbon"
37
+ [innerHTML]="searchResult.ribbon"
38
+ class="searchstax-search-result-ribbon"
39
+ ></div>
40
+ <img
41
+ alt=""
42
+ *ngIf="searchResult.thumbnail"
43
+ [src]="searchResult.thumbnail"
44
+ class="searchstax-thumbnail"
45
+ />
46
+ <div class="searchstax-search-result-title-container">
47
+ <span
48
+ class="searchstax-search-result-title"
49
+ [id]="'title-' + searchResult.uniqueId"
50
+ [innerHTML]="searchResult.title"
51
+ ></span>
52
+ </div>
53
+ <p
54
+ *ngIf="searchResult.paths"
55
+ class="searchstax-search-result-common"
56
+ [innerHTML]="searchResult.paths"
57
+ ></p>
58
+ <p
59
+ *ngIf="searchResult.description"
60
+ [innerHTML]="searchResult.description"
61
+ class="searchstax-search-result-description searchstax-search-result-common"
62
+ ></p>
63
+ <div *ngFor="let unmappedField of searchResult.unmappedFields">
64
+ <div
65
+ *ngIf="isImage(unmappedField)"
66
+ class="searchstax-search-result-image-container"
67
+ >
68
+ <img
69
+ alt=""
70
+ [src]="unmappedField.value"
71
+ class="searchstax-result-image"
72
+ />
73
+ </div>
74
+ <div *ngIf="!isImage(unmappedField)">
75
+ <p
76
+ class="searchstax-search-result-common"
77
+ [innerHTML]="unmappedField.value"
78
+ ></p>
79
+ </div>
80
+ </div>
81
+ </div>
82
+ </a>
83
+ </div>
84
+ </ng-template>
85
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
86
+ }
87
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ResultsTemplateComponent, decorators: [{
88
+ type: Component,
89
+ args: [{
90
+ selector: "app-results-template",
91
+ template: `
92
+ <ng-template
93
+ #resultsTemplate
94
+ let-searchResults="searchResults"
95
+ let-resultClicked="resultClicked"
96
+ let-isImage="isImage"
97
+ let-context="context"
98
+ >
99
+ <div class="searchstax-search-results">
100
+ <a
101
+ *ngFor="let searchResult of searchResults"
102
+ [href]="searchResult.url"
103
+ [attr.data-searchstax-unique-result-id]="searchResult.uniqueId"
104
+ (click)="resultClicked(searchResult, $event, context)"
105
+ (keyup.enter)="resultClicked(searchResult, $event, context)"
106
+ (keyup.space)="resultClicked(searchResult, $event, context)"
107
+ [attr.aria-labelledby]="'title-' + searchResult.uniqueId"
108
+ tabindex="0"
109
+ class="searchstax-result-item-link searchstax-result-item-link-wrapping"
110
+ >
111
+ <div
112
+ class="searchstax-search-result"
113
+ [ngClass]="{ 'has-thumbnail': searchResult.thumbnail }"
114
+ >
115
+ <div
116
+ *ngIf="searchResult.promoted"
117
+ class="searchstax-search-result-promoted"
118
+ ></div>
119
+ <div
120
+ *ngIf="searchResult.ribbon"
121
+ [innerHTML]="searchResult.ribbon"
122
+ class="searchstax-search-result-ribbon"
123
+ ></div>
124
+ <img
125
+ alt=""
126
+ *ngIf="searchResult.thumbnail"
127
+ [src]="searchResult.thumbnail"
128
+ class="searchstax-thumbnail"
129
+ />
130
+ <div class="searchstax-search-result-title-container">
131
+ <span
132
+ class="searchstax-search-result-title"
133
+ [id]="'title-' + searchResult.uniqueId"
134
+ [innerHTML]="searchResult.title"
135
+ ></span>
136
+ </div>
137
+ <p
138
+ *ngIf="searchResult.paths"
139
+ class="searchstax-search-result-common"
140
+ [innerHTML]="searchResult.paths"
141
+ ></p>
142
+ <p
143
+ *ngIf="searchResult.description"
144
+ [innerHTML]="searchResult.description"
145
+ class="searchstax-search-result-description searchstax-search-result-common"
146
+ ></p>
147
+ <div *ngFor="let unmappedField of searchResult.unmappedFields">
148
+ <div
149
+ *ngIf="isImage(unmappedField)"
150
+ class="searchstax-search-result-image-container"
151
+ >
152
+ <img
153
+ alt=""
154
+ [src]="unmappedField.value"
155
+ class="searchstax-result-image"
156
+ />
157
+ </div>
158
+ <div *ngIf="!isImage(unmappedField)">
159
+ <p
160
+ class="searchstax-search-result-common"
161
+ [innerHTML]="unmappedField.value"
162
+ ></p>
163
+ </div>
164
+ </div>
165
+ </div>
166
+ </a>
167
+ </div>
168
+ </ng-template>
169
+ `,
170
+ }]
171
+ }], propDecorators: { resultsTemplate: [{
172
+ type: ViewChild,
173
+ args: ["resultsTemplate"]
174
+ }] } });
175
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoc3RheC1zZWFyY2gtcmVzdWx0cy10ZW1wbGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NlYXJjaHN0YXgtaW5jL3NlYXJjaHN0dWRpby11eC1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy90ZW1wbGF0ZXMvc2VhcmNoc3RheC1zZWFyY2gtcmVzdWx0cy10ZW1wbGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQ0FBaUM7QUFDakMsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQWUsTUFBTSxlQUFlLENBQUM7OztBQW9GbEUsTUFBTSxPQUFPLHdCQUF3QjsrR0FBeEIsd0JBQXdCO21HQUF4Qix3QkFBd0IsZ0xBaEZ6Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBOEVUOzs0RkFFVSx3QkFBd0I7a0JBbEZwQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBOEVUO2lCQUNGOzhCQUUrQixlQUFlO3NCQUE1QyxTQUFTO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIHJldXNhYmxlLXRlbXBsYXRlLmNvbXBvbmVudC50c1xuaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3Q2hpbGQsIFRlbXBsYXRlUmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImFwcC1yZXN1bHRzLXRlbXBsYXRlXCIsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICAjcmVzdWx0c1RlbXBsYXRlXG4gICAgICBsZXQtc2VhcmNoUmVzdWx0cz1cInNlYXJjaFJlc3VsdHNcIlxuICAgICAgbGV0LXJlc3VsdENsaWNrZWQ9XCJyZXN1bHRDbGlja2VkXCJcbiAgICAgIGxldC1pc0ltYWdlPVwiaXNJbWFnZVwiXG4gICAgICBsZXQtY29udGV4dD1cImNvbnRleHRcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2hzdGF4LXNlYXJjaC1yZXN1bHRzXCI+XG4gICAgICAgIDxhXG4gICAgICAgICAgKm5nRm9yPVwibGV0IHNlYXJjaFJlc3VsdCBvZiBzZWFyY2hSZXN1bHRzXCJcbiAgICAgICAgICBbaHJlZl09XCJzZWFyY2hSZXN1bHQudXJsXCJcbiAgICAgICAgICBbYXR0ci5kYXRhLXNlYXJjaHN0YXgtdW5pcXVlLXJlc3VsdC1pZF09XCJzZWFyY2hSZXN1bHQudW5pcXVlSWRcIlxuICAgICAgICAgIChjbGljayk9XCJyZXN1bHRDbGlja2VkKHNlYXJjaFJlc3VsdCwgJGV2ZW50LCBjb250ZXh0KVwiXG4gICAgICAgICAgKGtleXVwLmVudGVyKT1cInJlc3VsdENsaWNrZWQoc2VhcmNoUmVzdWx0LCAkZXZlbnQsIGNvbnRleHQpXCJcbiAgICAgICAgICAoa2V5dXAuc3BhY2UpPVwicmVzdWx0Q2xpY2tlZChzZWFyY2hSZXN1bHQsICRldmVudCwgY29udGV4dClcIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCIndGl0bGUtJyArIHNlYXJjaFJlc3VsdC51bmlxdWVJZFwiXG4gICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICBjbGFzcz1cInNlYXJjaHN0YXgtcmVzdWx0LWl0ZW0tbGluayBzZWFyY2hzdGF4LXJlc3VsdC1pdGVtLWxpbmstd3JhcHBpbmdcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJzZWFyY2hzdGF4LXNlYXJjaC1yZXN1bHRcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaGFzLXRodW1ibmFpbCc6IHNlYXJjaFJlc3VsdC50aHVtYm5haWwgfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAqbmdJZj1cInNlYXJjaFJlc3VsdC5wcm9tb3RlZFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwic2VhcmNoc3RheC1zZWFyY2gtcmVzdWx0LXByb21vdGVkXCJcbiAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgKm5nSWY9XCJzZWFyY2hSZXN1bHQucmliYm9uXCJcbiAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJzZWFyY2hSZXN1bHQucmliYm9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzZWFyY2hzdGF4LXNlYXJjaC1yZXN1bHQtcmliYm9uXCJcbiAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJzZWFyY2hSZXN1bHQudGh1bWJuYWlsXCJcbiAgICAgICAgICAgICAgW3NyY109XCJzZWFyY2hSZXN1bHQudGh1bWJuYWlsXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzZWFyY2hzdGF4LXRodW1ibmFpbFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaHN0YXgtc2VhcmNoLXJlc3VsdC10aXRsZS1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cInNlYXJjaHN0YXgtc2VhcmNoLXJlc3VsdC10aXRsZVwiXG4gICAgICAgICAgICAgICAgW2lkXT1cIid0aXRsZS0nICsgc2VhcmNoUmVzdWx0LnVuaXF1ZUlkXCJcbiAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cInNlYXJjaFJlc3VsdC50aXRsZVwiXG4gICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxwXG4gICAgICAgICAgICAgICpuZ0lmPVwic2VhcmNoUmVzdWx0LnBhdGhzXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzZWFyY2hzdGF4LXNlYXJjaC1yZXN1bHQtY29tbW9uXCJcbiAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJzZWFyY2hSZXN1bHQucGF0aHNcIlxuICAgICAgICAgICAgPjwvcD5cbiAgICAgICAgICAgIDxwXG4gICAgICAgICAgICAgICpuZ0lmPVwic2VhcmNoUmVzdWx0LmRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJzZWFyY2hSZXN1bHQuZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICBjbGFzcz1cInNlYXJjaHN0YXgtc2VhcmNoLXJlc3VsdC1kZXNjcmlwdGlvbiBzZWFyY2hzdGF4LXNlYXJjaC1yZXN1bHQtY29tbW9uXCJcbiAgICAgICAgICAgID48L3A+XG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCB1bm1hcHBlZEZpZWxkIG9mIHNlYXJjaFJlc3VsdC51bm1hcHBlZEZpZWxkc1wiPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgKm5nSWY9XCJpc0ltYWdlKHVubWFwcGVkRmllbGQpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNlYXJjaHN0YXgtc2VhcmNoLXJlc3VsdC1pbWFnZS1jb250YWluZXJcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgICAgICAgICAgIFtzcmNdPVwidW5tYXBwZWRGaWVsZC52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInNlYXJjaHN0YXgtcmVzdWx0LWltYWdlXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFpc0ltYWdlKHVubWFwcGVkRmllbGQpXCI+XG4gICAgICAgICAgICAgICAgPHBcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2VhcmNoc3RheC1zZWFyY2gtcmVzdWx0LWNvbW1vblwiXG4gICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cInVubWFwcGVkRmllbGQudmFsdWVcIlxuICAgICAgICAgICAgICAgID48L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYT5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIFJlc3VsdHNUZW1wbGF0ZUNvbXBvbmVudCB7XG4gIEBWaWV3Q2hpbGQoXCJyZXN1bHRzVGVtcGxhdGVcIikgcmVzdWx0c1RlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55Pjtcbn1cbiJdfQ==