@searchstax-inc/searchstudio-ux-angular 1.0.0 → 1.1.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 (39) hide show
  1. package/esm2022/lib/components/searchstax-input/searchstax-input.component.mjs +75 -0
  2. package/esm2022/lib/components/searchstax-results/searchstax-results.component.mjs +66 -0
  3. package/esm2022/lib/components/searchstax-search-external/searchstax-search-external.component.mjs +40 -0
  4. package/esm2022/lib/components/searchstax-search-facets/searchstax-search-facets.component.mjs +112 -0
  5. package/esm2022/lib/components/searchstax-search-overview/searchstax-search-overview.component.mjs +41 -0
  6. package/esm2022/lib/components/searchstax-search-pagination/searchstax-search-pagination.component.mjs +60 -0
  7. package/esm2022/lib/components/searchstax-search-related/searchstax-search-related.component.mjs +44 -0
  8. package/esm2022/lib/components/searchstax-search-sorting/searchstax-search-sorting.component.mjs +45 -0
  9. package/esm2022/lib/components/searchstax-wrapper.component.mjs +74 -0
  10. package/esm2022/lib/searchstudio-ux-angular.module.mjs +62 -0
  11. package/{esm2020 → esm2022}/lib/services/store-service.service.mjs +4 -4
  12. package/fesm2022/searchstax-inc-searchstudio-ux-angular.mjs +602 -0
  13. package/{fesm2020 → fesm2022}/searchstax-inc-searchstudio-ux-angular.mjs.map +1 -1
  14. package/lib/components/searchstax-input/searchstax-input.component.d.ts +1 -1
  15. package/lib/components/searchstax-results/searchstax-results.component.d.ts +1 -1
  16. package/lib/components/searchstax-search-external/searchstax-search-external.component.d.ts +1 -1
  17. package/lib/components/searchstax-search-facets/searchstax-search-facets.component.d.ts +1 -1
  18. package/lib/components/searchstax-search-overview/searchstax-search-overview.component.d.ts +1 -1
  19. package/lib/components/searchstax-search-pagination/searchstax-search-pagination.component.d.ts +1 -1
  20. package/lib/components/searchstax-search-related/searchstax-search-related.component.d.ts +1 -1
  21. package/lib/components/searchstax-search-sorting/searchstax-search-sorting.component.d.ts +1 -1
  22. package/lib/components/searchstax-wrapper.component.d.ts +1 -1
  23. package/package.json +9 -15
  24. package/esm2020/lib/components/searchstax-input/searchstax-input.component.mjs +0 -75
  25. package/esm2020/lib/components/searchstax-results/searchstax-results.component.mjs +0 -66
  26. package/esm2020/lib/components/searchstax-search-external/searchstax-search-external.component.mjs +0 -40
  27. package/esm2020/lib/components/searchstax-search-facets/searchstax-search-facets.component.mjs +0 -112
  28. package/esm2020/lib/components/searchstax-search-overview/searchstax-search-overview.component.mjs +0 -41
  29. package/esm2020/lib/components/searchstax-search-pagination/searchstax-search-pagination.component.mjs +0 -60
  30. package/esm2020/lib/components/searchstax-search-related/searchstax-search-related.component.mjs +0 -44
  31. package/esm2020/lib/components/searchstax-search-sorting/searchstax-search-sorting.component.mjs +0 -45
  32. package/esm2020/lib/components/searchstax-wrapper.component.mjs +0 -78
  33. package/esm2020/lib/searchstudio-ux-angular.module.mjs +0 -62
  34. package/fesm2015/searchstax-inc-searchstudio-ux-angular.mjs +0 -628
  35. package/fesm2015/searchstax-inc-searchstudio-ux-angular.mjs.map +0 -1
  36. package/fesm2020/searchstax-inc-searchstudio-ux-angular.mjs +0 -606
  37. /package/{esm2020 → esm2022}/public-api.mjs +0 -0
  38. /package/{esm2020 → esm2022}/searchstax-inc-searchstudio-ux-angular.mjs +0 -0
  39. /package/{searchstax-inc-searchstudio-ux-angular.d.ts → index.d.ts} +0 -0
@@ -0,0 +1,75 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../../services/store-service.service";
4
+ import * as i2 from "@angular/common";
5
+ export class SearchstaxInputWidget {
6
+ constructor(storeServiceService) {
7
+ this.storeServiceService = storeServiceService;
8
+ this.searchInputId = '';
9
+ this.suggestAfterMinChars = 3;
10
+ this.hooks = {};
11
+ this.suggestions = [];
12
+ this.context = this;
13
+ }
14
+ ngOnInit() {
15
+ console.log('this.templateOverride', this.templateOverride);
16
+ if (this.storeServiceService.searchstax) {
17
+ this.attachObservables();
18
+ // const hooks: { [key: string]: (prop: any) => any } = {}
19
+ if (this.afterAutosuggest) {
20
+ this.hooks['afterAutosuggest'] = this.afterAutosuggest;
21
+ }
22
+ if (this.beforeAutosuggest) {
23
+ this.hooks['beforeAutosuggest'] = this.beforeAutosuggest;
24
+ }
25
+ setTimeout(() => {
26
+ this.storeServiceService.searchstax.addSearchInputWidget('searchstax-input-container', {
27
+ suggestAfterMinChars: this.suggestAfterMinChars,
28
+ hooks: this.hooks,
29
+ templates: {
30
+ mainTemplate: {
31
+ template: ``,
32
+ searchInputId: this.searchInputId ?? 'searchstax-search-input'
33
+ }
34
+ }
35
+ });
36
+ }, 0);
37
+ }
38
+ else {
39
+ throw Error('Searchstax instance needs to be passed via props');
40
+ }
41
+ }
42
+ onMouseLeave(context) {
43
+ context.storeServiceService.searchstax.searchInputWidget?.resetAutosuggestSelection();
44
+ context.storeServiceService.searchstax.searchInputWidget?.markActiveAutosuggestItem();
45
+ }
46
+ onMouseOver(suggestion, context) {
47
+ context.storeServiceService.searchstax.searchInputWidget?.onSuggestionEnter(suggestion);
48
+ }
49
+ onMouseClick(e, context) {
50
+ e.stopImmediatePropagation();
51
+ context.storeServiceService.searchstax.searchInputWidget?.suggestionChosen();
52
+ }
53
+ attachObservables() {
54
+ this.storeServiceService.searchstax.dataLayer.$autosuggestResults.subscribe((suggestions) => {
55
+ this.suggestions = suggestions?.suggestions ?? [];
56
+ });
57
+ }
58
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: SearchstaxInputWidget, deps: [{ token: i1.StoreServiceService }], target: i0.ɵɵFactoryTarget.Component }); }
59
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.11", type: SearchstaxInputWidget, selector: "app-searchstax-input", inputs: { afterAutosuggest: "afterAutosuggest", beforeAutosuggest: "beforeAutosuggest", searchInputId: "searchInputId", suggestAfterMinChars: "suggestAfterMinChars", templateOverride: "templateOverride" }, ngImport: i0, template: "<div id=\"searchstax-input-container\">\n <div class=\"searchstax-search-input-container\">\n <div *ngIf=\"!templateOverride\" class=\"searchstax-search-input-wrapper\">\n <input\n type=\"text\"\n id=\"searchstax-search-input\"\n class=\"searchstax-search-input\"\n placeholder=\"SEARCH FOR...\"\n />\n <div\n class=\"searchstax-autosuggest-container\"\n [ngClass]=\"{ hidden: suggestions.length === 0 }\"\n (mouseleave)=\"(onMouseLeave)\"\n >\n <div\n class=\"searchstax-autosuggest-item\"\n *ngFor=\"let suggestion of suggestions\"\n >\n <div\n class=\"searchstax-autosuggest-item-term-container\"\n [innerHtml]=\"suggestion.term\"\n (mouseover)=\"onMouseOver(suggestion, context)\"\n (click)=\"onMouseClick($event, context)\"\n ></div>\n </div>\n </div>\n <button\n class=\"searchstax-spinner-icon\"\n id=\"searchstax-search-input-action-button\"\n ></button>\n </div>\n <div *ngIf=\"templateOverride\">\n <ng-container\n *ngTemplateOutlet=\"templateOverride; context: context\"\n ></ng-container>\n </div>\n\n <!-- <slot\n name=\"input\"\n :suggestions=\"suggestions\"\n :onMouseClick=\"onMouseClick\"\n :onMouseOver=\"onMouseOver\"\n :onMouseLeave=\"onMouseLeave\"\n ></slot> -->\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
60
+ }
61
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: SearchstaxInputWidget, decorators: [{
62
+ type: Component,
63
+ args: [{ selector: 'app-searchstax-input', template: "<div id=\"searchstax-input-container\">\n <div class=\"searchstax-search-input-container\">\n <div *ngIf=\"!templateOverride\" class=\"searchstax-search-input-wrapper\">\n <input\n type=\"text\"\n id=\"searchstax-search-input\"\n class=\"searchstax-search-input\"\n placeholder=\"SEARCH FOR...\"\n />\n <div\n class=\"searchstax-autosuggest-container\"\n [ngClass]=\"{ hidden: suggestions.length === 0 }\"\n (mouseleave)=\"(onMouseLeave)\"\n >\n <div\n class=\"searchstax-autosuggest-item\"\n *ngFor=\"let suggestion of suggestions\"\n >\n <div\n class=\"searchstax-autosuggest-item-term-container\"\n [innerHtml]=\"suggestion.term\"\n (mouseover)=\"onMouseOver(suggestion, context)\"\n (click)=\"onMouseClick($event, context)\"\n ></div>\n </div>\n </div>\n <button\n class=\"searchstax-spinner-icon\"\n id=\"searchstax-search-input-action-button\"\n ></button>\n </div>\n <div *ngIf=\"templateOverride\">\n <ng-container\n *ngTemplateOutlet=\"templateOverride; context: context\"\n ></ng-container>\n </div>\n\n <!-- <slot\n name=\"input\"\n :suggestions=\"suggestions\"\n :onMouseClick=\"onMouseClick\"\n :onMouseOver=\"onMouseOver\"\n :onMouseLeave=\"onMouseLeave\"\n ></slot> -->\n </div>\n</div>\n" }]
64
+ }], ctorParameters: function () { return [{ type: i1.StoreServiceService }]; }, propDecorators: { afterAutosuggest: [{
65
+ type: Input
66
+ }], beforeAutosuggest: [{
67
+ type: Input
68
+ }], searchInputId: [{
69
+ type: Input
70
+ }], suggestAfterMinChars: [{
71
+ type: Input
72
+ }], templateOverride: [{
73
+ type: Input
74
+ }] } });
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoc3RheC1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zZWFyY2hzdGF4LWluYy9zZWFyY2hzdHVkaW8tdXgtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvc2VhcmNoc3RheC1pbnB1dC9zZWFyY2hzdGF4LWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NlYXJjaHN0YXgtaW5jL3NlYXJjaHN0dWRpby11eC1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9zZWFyY2hzdGF4LWlucHV0L3NlYXJjaHN0YXgtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXVCLE1BQU0sZUFBZSxDQUFDOzs7O0FBU3RFLE1BQU0sT0FBTyxxQkFBcUI7SUFXaEMsWUFBb0IsbUJBQXdDO1FBQXhDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFSbkQsa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFDbkIseUJBQW9CLEdBQUcsQ0FBQyxDQUFDO1FBR2xDLFVBQUssR0FBeUMsRUFBRSxDQUFDO1FBQ2pELGdCQUFXLEdBQTZCLEVBQUUsQ0FBQTtRQUMxQyxZQUFPLEdBQUcsSUFBSSxDQUFDO0lBRWlELENBQUM7SUFFakUsUUFBUTtRQUNOLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDNUQsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3pCLDBEQUEwRDtZQUMxRCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDekIsSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQTthQUN2RDtZQUNELElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO2dCQUMxQixJQUFJLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFBO2FBQ3pEO1lBQ0QsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDLDRCQUE0QixFQUFFO29CQUNyRixvQkFBb0IsRUFBRSxJQUFJLENBQUMsb0JBQW9CO29CQUMvQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7b0JBQ2pCLFNBQVMsRUFBRTt3QkFDVCxZQUFZLEVBQUU7NEJBQ1osUUFBUSxFQUFFLEVBQUU7NEJBQ1osYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLElBQUkseUJBQXlCO3lCQUMvRDtxQkFDRjtpQkFDRixDQUFDLENBQUE7WUFDSixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDUDthQUFNO1lBQ0wsTUFBTSxLQUFLLENBQUMsa0RBQWtELENBQUMsQ0FBQTtTQUNoRTtJQUNILENBQUM7SUFFRCxZQUFZLENBQUMsT0FBYTtRQUN6QixPQUFPLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLGlCQUFpQixFQUFFLHlCQUF5QixFQUFFLENBQUM7UUFDdEYsT0FBTyxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRSx5QkFBeUIsRUFBRSxDQUFDO0lBQ3ZGLENBQUM7SUFFRCxXQUFXLENBQUMsVUFBaUMsRUFBRSxPQUFhO1FBQzNELE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLEVBQUUsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDeEYsQ0FBQztJQUVELFlBQVksQ0FBQyxDQUFRLEVBQUUsT0FBYTtRQUNsQyxDQUFDLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUM5QixPQUFPLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLENBQUE7SUFDN0UsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FDekUsQ0FBQyxXQUF5QyxFQUFFLEVBQUU7WUFDNUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLEVBQUUsV0FBVyxJQUFJLEVBQUUsQ0FBQztRQUNwRCxDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7K0dBN0RVLHFCQUFxQjttR0FBckIscUJBQXFCLDBRQ1RsQywwN0NBOENBOzs0RkRyQ2EscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNFLHNCQUFzQjswR0FLdkIsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJU2VhcmNoc3RheFNFQVJDSFRFUk0sIElTZWFyY2hzdGF4U3VnZ2VzdFByb3BzLCBJU2VhcmNoc3RheFN1Z2dlc3RSZXNwb25zZSwgSVNlYXJjaHN0YXhTdWdnZXN0aW9uIH0gZnJvbSAnQHNlYXJjaHN0YXgtaW5jL3NlYXJjaHN0dWRpby11eC1qcyc7XG5pbXBvcnQgeyBTdG9yZVNlcnZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3RvcmUtc2VydmljZS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXNlYXJjaHN0YXgtaW5wdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoc3RheC1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW11cbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoc3RheElucHV0V2lkZ2V0IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgYWZ0ZXJBdXRvc3VnZ2VzdD86IChyZXN1bHQ6IElTZWFyY2hzdGF4U3VnZ2VzdFJlc3BvbnNlKSA9PiBJU2VhcmNoc3RheFN1Z2dlc3RSZXNwb25zZTtcbiAgQElucHV0KCkgYmVmb3JlQXV0b3N1Z2dlc3Q/OiAocHJvcHM6IElTZWFyY2hzdGF4U3VnZ2VzdFByb3BzKSA9PiBJU2VhcmNoc3RheFN1Z2dlc3RQcm9wcyB8IG51bGxcbiAgQElucHV0KCkgc2VhcmNoSW5wdXRJZCA9ICcnO1xuICBASW5wdXQoKSBzdWdnZXN0QWZ0ZXJNaW5DaGFycyA9IDM7XG4gIEBJbnB1dCgpIHRlbXBsYXRlT3ZlcnJpZGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIGhvb2tzOiB7W2tleTogc3RyaW5nXTogKHByb3A6IGFueSkgPT4gYW55IH0gPSB7fTtcbiAgc3VnZ2VzdGlvbnM6IElTZWFyY2hzdGF4U3VnZ2VzdGlvbltdID0gIFtdXG4gIGNvbnRleHQgPSB0aGlzO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmVTZXJ2aWNlU2VydmljZTogU3RvcmVTZXJ2aWNlU2VydmljZSkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coJ3RoaXMudGVtcGxhdGVPdmVycmlkZScsIHRoaXMudGVtcGxhdGVPdmVycmlkZSk7XG4gICAgaWYgKHRoaXMuc3RvcmVTZXJ2aWNlU2VydmljZS5zZWFyY2hzdGF4KSB7XG4gICAgICB0aGlzLmF0dGFjaE9ic2VydmFibGVzKCk7XG4gICAgICAvLyBjb25zdCBob29rczogeyBba2V5OiBzdHJpbmddOiAocHJvcDogYW55KSA9PiBhbnkgfSA9IHt9XG4gICAgICBpZiAodGhpcy5hZnRlckF1dG9zdWdnZXN0KSB7XG4gICAgICAgIHRoaXMuaG9va3NbJ2FmdGVyQXV0b3N1Z2dlc3QnXSA9IHRoaXMuYWZ0ZXJBdXRvc3VnZ2VzdFxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuYmVmb3JlQXV0b3N1Z2dlc3QpIHtcbiAgICAgICAgdGhpcy5ob29rc1snYmVmb3JlQXV0b3N1Z2dlc3QnXSA9IHRoaXMuYmVmb3JlQXV0b3N1Z2dlc3RcbiAgICAgIH1cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnN0b3JlU2VydmljZVNlcnZpY2Uuc2VhcmNoc3RheC5hZGRTZWFyY2hJbnB1dFdpZGdldCgnc2VhcmNoc3RheC1pbnB1dC1jb250YWluZXInLCB7XG4gICAgICAgICAgc3VnZ2VzdEFmdGVyTWluQ2hhcnM6IHRoaXMuc3VnZ2VzdEFmdGVyTWluQ2hhcnMsXG4gICAgICAgICAgaG9va3M6IHRoaXMuaG9va3MsXG4gICAgICAgICAgdGVtcGxhdGVzOiB7XG4gICAgICAgICAgICBtYWluVGVtcGxhdGU6IHtcbiAgICAgICAgICAgICAgdGVtcGxhdGU6IGBgLFxuICAgICAgICAgICAgICBzZWFyY2hJbnB1dElkOiB0aGlzLnNlYXJjaElucHV0SWQgPz8gJ3NlYXJjaHN0YXgtc2VhcmNoLWlucHV0J1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH0sIDApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBFcnJvcignU2VhcmNoc3RheCBpbnN0YW5jZSBuZWVkcyB0byBiZSBwYXNzZWQgdmlhIHByb3BzJylcbiAgICB9XG4gIH1cblxuICBvbk1vdXNlTGVhdmUoY29udGV4dDogdGhpcykge1xuICAgY29udGV4dC5zdG9yZVNlcnZpY2VTZXJ2aWNlLnNlYXJjaHN0YXguc2VhcmNoSW5wdXRXaWRnZXQ/LnJlc2V0QXV0b3N1Z2dlc3RTZWxlY3Rpb24oKTtcbiAgIGNvbnRleHQuc3RvcmVTZXJ2aWNlU2VydmljZS5zZWFyY2hzdGF4LnNlYXJjaElucHV0V2lkZ2V0Py5tYXJrQWN0aXZlQXV0b3N1Z2dlc3RJdGVtKCk7XG4gIH1cblxuICBvbk1vdXNlT3ZlcihzdWdnZXN0aW9uOiBJU2VhcmNoc3RheFN1Z2dlc3Rpb24sIGNvbnRleHQ6IHRoaXMpIHtcbiAgIGNvbnRleHQuc3RvcmVTZXJ2aWNlU2VydmljZS5zZWFyY2hzdGF4LnNlYXJjaElucHV0V2lkZ2V0Py5vblN1Z2dlc3Rpb25FbnRlcihzdWdnZXN0aW9uKVxuICB9XG5cbiAgb25Nb3VzZUNsaWNrKGU6IEV2ZW50LCBjb250ZXh0OiB0aGlzKSB7XG4gICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgIGNvbnRleHQuc3RvcmVTZXJ2aWNlU2VydmljZS5zZWFyY2hzdGF4LnNlYXJjaElucHV0V2lkZ2V0Py5zdWdnZXN0aW9uQ2hvc2VuKClcbiAgfVxuXG4gIGF0dGFjaE9ic2VydmFibGVzKCkge1xuICAgIHRoaXMuc3RvcmVTZXJ2aWNlU2VydmljZS5zZWFyY2hzdGF4LmRhdGFMYXllci4kYXV0b3N1Z2dlc3RSZXN1bHRzLnN1YnNjcmliZShcbiAgICAgIChzdWdnZXN0aW9uczogbnVsbCB8IElTZWFyY2hzdGF4U0VBUkNIVEVSTSkgPT4ge1xuICAgICAgICB0aGlzLnN1Z2dlc3Rpb25zID0gc3VnZ2VzdGlvbnM/LnN1Z2dlc3Rpb25zID8/IFtdO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxufVxuIiwiPGRpdiBpZD1cInNlYXJjaHN0YXgtaW5wdXQtY29udGFpbmVyXCI+XG4gIDxkaXYgY2xhc3M9XCJzZWFyY2hzdGF4LXNlYXJjaC1pbnB1dC1jb250YWluZXJcIj5cbiAgICA8ZGl2ICpuZ0lmPVwiIXRlbXBsYXRlT3ZlcnJpZGVcIiBjbGFzcz1cInNlYXJjaHN0YXgtc2VhcmNoLWlucHV0LXdyYXBwZXJcIj5cbiAgICAgIDxpbnB1dFxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIGlkPVwic2VhcmNoc3RheC1zZWFyY2gtaW5wdXRcIlxuICAgICAgICBjbGFzcz1cInNlYXJjaHN0YXgtc2VhcmNoLWlucHV0XCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJTRUFSQ0ggRk9SLi4uXCJcbiAgICAgIC8+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwic2VhcmNoc3RheC1hdXRvc3VnZ2VzdC1jb250YWluZXJcIlxuICAgICAgICBbbmdDbGFzc109XCJ7IGhpZGRlbjogc3VnZ2VzdGlvbnMubGVuZ3RoID09PSAwIH1cIlxuICAgICAgICAobW91c2VsZWF2ZSk9XCIob25Nb3VzZUxlYXZlKVwiXG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInNlYXJjaHN0YXgtYXV0b3N1Z2dlc3QtaXRlbVwiXG4gICAgICAgICAgKm5nRm9yPVwibGV0IHN1Z2dlc3Rpb24gb2Ygc3VnZ2VzdGlvbnNcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJzZWFyY2hzdGF4LWF1dG9zdWdnZXN0LWl0ZW0tdGVybS1jb250YWluZXJcIlxuICAgICAgICAgICAgW2lubmVySHRtbF09XCJzdWdnZXN0aW9uLnRlcm1cIlxuICAgICAgICAgICAgKG1vdXNlb3Zlcik9XCJvbk1vdXNlT3ZlcihzdWdnZXN0aW9uLCBjb250ZXh0KVwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25Nb3VzZUNsaWNrKCRldmVudCwgY29udGV4dClcIlxuICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJzZWFyY2hzdGF4LXNwaW5uZXItaWNvblwiXG4gICAgICAgIGlkPVwic2VhcmNoc3RheC1zZWFyY2gtaW5wdXQtYWN0aW9uLWJ1dHRvblwiXG4gICAgICA+PC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cInRlbXBsYXRlT3ZlcnJpZGVcIj5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZU92ZXJyaWRlOyBjb250ZXh0OiBjb250ZXh0XCJcbiAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gPHNsb3RcbiAgICAgIG5hbWU9XCJpbnB1dFwiXG4gICAgICA6c3VnZ2VzdGlvbnM9XCJzdWdnZXN0aW9uc1wiXG4gICAgICA6b25Nb3VzZUNsaWNrPVwib25Nb3VzZUNsaWNrXCJcbiAgICAgIDpvbk1vdXNlT3Zlcj1cIm9uTW91c2VPdmVyXCJcbiAgICAgIDpvbk1vdXNlTGVhdmU9XCJvbk1vdXNlTGVhdmVcIlxuICAgID48L3Nsb3Q+IC0tPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -0,0 +1,66 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../../services/store-service.service";
4
+ import * as i2 from "@angular/common";
5
+ export class SearchstaxResultsWidget {
6
+ get hooks() {
7
+ const hooks = {};
8
+ if (this.afterLinkClick) {
9
+ hooks['afterLinkClick'] = this.afterLinkClick;
10
+ }
11
+ return hooks;
12
+ }
13
+ constructor(storeServiceService) {
14
+ this.storeServiceService = storeServiceService;
15
+ this.searchResults = null;
16
+ this.metadata = null;
17
+ this.searchTerm = '';
18
+ this.context = this;
19
+ }
20
+ ngOnInit() {
21
+ if (this.storeServiceService.searchstax) {
22
+ this.attachObservables();
23
+ setTimeout(() => {
24
+ this.storeServiceService.searchstax.addSearchResultsWidget('searchstax-results-container', {
25
+ templates: {},
26
+ hooks: this.hooks,
27
+ });
28
+ }, 0);
29
+ }
30
+ else {
31
+ throw Error('Searchstax instance needs to be passed via props');
32
+ }
33
+ }
34
+ attachObservables() {
35
+ this.storeServiceService.searchstax.dataLayer.$searchResults.subscribe((results) => {
36
+ this.searchResults = results;
37
+ });
38
+ this.storeServiceService.searchstax.dataLayer.$searchTermChange.subscribe((result) => {
39
+ this.searchTerm = result;
40
+ });
41
+ this.storeServiceService.searchstax.dataLayer.$searchResultsMetadata.subscribe((value) => {
42
+ this.metadata = value;
43
+ });
44
+ }
45
+ resultClicked(result, event, context) {
46
+ event.preventDefault();
47
+ event.stopPropagation();
48
+ context.storeServiceService.searchstax.executeLinkClick(result.uniqueId);
49
+ }
50
+ isImage(field) {
51
+ return field.isImage && typeof field.value === 'string';
52
+ }
53
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: SearchstaxResultsWidget, deps: [{ token: i1.StoreServiceService }], target: i0.ɵɵFactoryTarget.Component }); }
54
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.11", type: SearchstaxResultsWidget, selector: "app-searchstax-results", inputs: { afterLinkClick: "afterLinkClick", noResultsTemplate: "noResultsTemplate", resultsTemplate: "resultsTemplate" }, ngImport: i0, template: "<div id=\"searchstax-results-container\">\n <div class=\"searchstax-search-results-container\">\n <div id=\"searchstax-result-container\">\n <div\n *ngIf=\"\n searchResults && searchResults.length === 0 && !noResultsTemplate\n \"\n >\n <div class=\"searchstax-no-results\">\n Showing <strong>no results</strong> for\n <strong>\"{{ searchTerm }}\"</strong>\n <br />\n <span *ngIf=\"metadata?.spellingSuggestion\"\n >&nbsp;Did you mean\n <a href=\"#\" class=\"searchstax-suggestion-term\">{{\n metadata?.spellingSuggestion\n }}</a\n >?</span\n >\n </div>\n <div>\n <p>\n Try searching for search related terms or topics. We offer a wide\n variety of content to help you get the information you need.\n </p>\n <p>Lost? Click on the \u2018X\u201D in the Search Box to reset your search.</p>\n </div>\n </div>\n <div\n *ngIf=\"searchResults && searchResults.length === 0 && noResultsTemplate\"\n >\n <ng-container\n *ngTemplateOutlet=\"noResultsTemplate; context: context\"\n ></ng-container>\n </div>\n\n <div\n class=\"searchstax-search-results\"\n *ngIf=\"searchResults && searchResults.length && !resultsTemplate\"\n >\n <div\n class=\"searchstax-search-result\"\n [ngClass]=\"{ 'has-thumbnail': searchResult.thumbnail }\"\n *ngFor=\"let searchResult of searchResults\"\n >\n <div\n *ngIf=\"searchResult.promoted\"\n class=\"searchstax-search-result-promoted\"\n ></div>\n <a\n *ngIf=\"searchResult.url\"\n [href]=\"searchResult.url\"\n [attr.data-searchstax-unique-result-id]=\"searchResult.uniqueId\"\n (click)=\"resultClicked(searchResult, $event, context)\"\n class=\"searchstax-result-item-link\"\n ></a>\n <div\n *ngIf=\"searchResult.ribbon\"\n class=\"searchstax-search-result-ribbon\"\n >\n {{ searchResult.ribbon }}\n </div>\n <img\n *ngIf=\"searchResult.thumbnail\"\n [src]=\"searchResult.thumbnail\"\n class=\"searchstax-thumbnail\"\n />\n <div class=\"searchstax-search-result-title-container\">\n <span class=\"searchstax-search-result-title\">{{\n searchResult.title\n }}</span>\n </div>\n <p *ngIf=\"searchResult.paths\" class=\"searchstax-search-result-common\">\n {{ searchResult.paths }}\n </p>\n <p\n *ngIf=\"searchResult.description\"\n class=\"searchstax-search-result-description searchstax-search-result-common\"\n >\n {{ searchResult.description }}\n </p>\n <div *ngFor=\"let unmappedField of searchResult.unmappedFields\">\n <div\n *ngIf=\"isImage(unmappedField)\"\n class=\"searchstax-search-result-image-container\"\n >\n <img\n [src]=\"unmappedField.value\"\n class=\"searchstax-result-image\"\n />\n </div>\n <div *ngIf=\"!isImage(unmappedField)\">\n <p class=\"searchstax-search-result-common\">\n {{ unmappedField.value }}\n </p>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"searchResults && searchResults.length && resultsTemplate\">\n <ng-container\n *ngTemplateOutlet=\"resultsTemplate; context: context\"\n ></ng-container>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
55
+ }
56
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: SearchstaxResultsWidget, decorators: [{
57
+ type: Component,
58
+ args: [{ selector: 'app-searchstax-results', template: "<div id=\"searchstax-results-container\">\n <div class=\"searchstax-search-results-container\">\n <div id=\"searchstax-result-container\">\n <div\n *ngIf=\"\n searchResults && searchResults.length === 0 && !noResultsTemplate\n \"\n >\n <div class=\"searchstax-no-results\">\n Showing <strong>no results</strong> for\n <strong>\"{{ searchTerm }}\"</strong>\n <br />\n <span *ngIf=\"metadata?.spellingSuggestion\"\n >&nbsp;Did you mean\n <a href=\"#\" class=\"searchstax-suggestion-term\">{{\n metadata?.spellingSuggestion\n }}</a\n >?</span\n >\n </div>\n <div>\n <p>\n Try searching for search related terms or topics. We offer a wide\n variety of content to help you get the information you need.\n </p>\n <p>Lost? Click on the \u2018X\u201D in the Search Box to reset your search.</p>\n </div>\n </div>\n <div\n *ngIf=\"searchResults && searchResults.length === 0 && noResultsTemplate\"\n >\n <ng-container\n *ngTemplateOutlet=\"noResultsTemplate; context: context\"\n ></ng-container>\n </div>\n\n <div\n class=\"searchstax-search-results\"\n *ngIf=\"searchResults && searchResults.length && !resultsTemplate\"\n >\n <div\n class=\"searchstax-search-result\"\n [ngClass]=\"{ 'has-thumbnail': searchResult.thumbnail }\"\n *ngFor=\"let searchResult of searchResults\"\n >\n <div\n *ngIf=\"searchResult.promoted\"\n class=\"searchstax-search-result-promoted\"\n ></div>\n <a\n *ngIf=\"searchResult.url\"\n [href]=\"searchResult.url\"\n [attr.data-searchstax-unique-result-id]=\"searchResult.uniqueId\"\n (click)=\"resultClicked(searchResult, $event, context)\"\n class=\"searchstax-result-item-link\"\n ></a>\n <div\n *ngIf=\"searchResult.ribbon\"\n class=\"searchstax-search-result-ribbon\"\n >\n {{ searchResult.ribbon }}\n </div>\n <img\n *ngIf=\"searchResult.thumbnail\"\n [src]=\"searchResult.thumbnail\"\n class=\"searchstax-thumbnail\"\n />\n <div class=\"searchstax-search-result-title-container\">\n <span class=\"searchstax-search-result-title\">{{\n searchResult.title\n }}</span>\n </div>\n <p *ngIf=\"searchResult.paths\" class=\"searchstax-search-result-common\">\n {{ searchResult.paths }}\n </p>\n <p\n *ngIf=\"searchResult.description\"\n class=\"searchstax-search-result-description searchstax-search-result-common\"\n >\n {{ searchResult.description }}\n </p>\n <div *ngFor=\"let unmappedField of searchResult.unmappedFields\">\n <div\n *ngIf=\"isImage(unmappedField)\"\n class=\"searchstax-search-result-image-container\"\n >\n <img\n [src]=\"unmappedField.value\"\n class=\"searchstax-result-image\"\n />\n </div>\n <div *ngIf=\"!isImage(unmappedField)\">\n <p class=\"searchstax-search-result-common\">\n {{ unmappedField.value }}\n </p>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"searchResults && searchResults.length && resultsTemplate\">\n <ng-container\n *ngTemplateOutlet=\"resultsTemplate; context: context\"\n ></ng-container>\n </div>\n </div>\n </div>\n</div>\n" }]
59
+ }], ctorParameters: function () { return [{ type: i1.StoreServiceService }]; }, propDecorators: { afterLinkClick: [{
60
+ type: Input
61
+ }], noResultsTemplate: [{
62
+ type: Input
63
+ }], resultsTemplate: [{
64
+ type: Input
65
+ }] } });
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoc3RheC1yZXN1bHRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NlYXJjaHN0YXgtaW5jL3NlYXJjaHN0dWRpby11eC1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9zZWFyY2hzdGF4LXJlc3VsdHMvc2VhcmNoc3RheC1yZXN1bHRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NlYXJjaHN0YXgtaW5jL3NlYXJjaHN0dWRpby11eC1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9zZWFyY2hzdGF4LXJlc3VsdHMvc2VhcmNoc3RheC1yZXN1bHRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUF1QixNQUFNLGVBQWUsQ0FBQzs7OztBQVl0RSxNQUFNLE9BQU8sdUJBQXVCO0lBYWxDLElBQUksS0FBSztRQUNQLE1BQU0sS0FBSyxHQUEwQyxFQUFFLENBQUM7UUFDeEQsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3ZCLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7U0FDL0M7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxZQUFvQixtQkFBd0M7UUFBeEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQWI1RCxrQkFBYSxHQUFxQyxJQUFJLENBQUM7UUFDdkQsYUFBUSxHQUFxQyxJQUFJLENBQUM7UUFDbEQsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixZQUFPLEdBQUcsSUFBSSxDQUFDO0lBVWdELENBQUM7SUFFaEUsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsRUFBRTtZQUN2QyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUV6QixVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsc0JBQXNCLENBQ3hELDhCQUE4QixFQUM5QjtvQkFDRSxTQUFTLEVBQUUsRUFBRTtvQkFDYixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7aUJBQ2xCLENBQ0YsQ0FBQztZQUNKLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNQO2FBQU07WUFDTCxNQUFNLEtBQUssQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO1NBQ2pFO0lBQ0gsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQ3BFLENBQUMsT0FBeUMsRUFBRSxFQUFFO1lBQzVDLElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDO1FBQy9CLENBQUMsQ0FDRixDQUFDO1FBQ0YsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUN2RSxDQUFDLE1BQWMsRUFBRSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDO1FBQzNCLENBQUMsQ0FDRixDQUFDO1FBRUYsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUM1RSxDQUFDLEtBQWdDLEVBQUUsRUFBRTtZQUNuQyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN4QixDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxhQUFhLENBQUMsTUFBK0IsRUFBRSxLQUFZLEVBQUUsT0FBYTtRQUN4RSxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRCxPQUFPLENBQUMsS0FBVTtRQUNoQixPQUFPLEtBQUssQ0FBQyxPQUFPLElBQUksT0FBTyxLQUFLLENBQUMsS0FBSyxLQUFLLFFBQVEsQ0FBQTtJQUN6RCxDQUFDOytHQXBFVSx1QkFBdUI7bUdBQXZCLHVCQUF1Qix3TENacEMsc3dIQTRHQTs7NEZEaEdhLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSx3QkFBd0I7MEdBS3pCLGNBQWM7c0JBQXRCLEtBQUs7Z0JBSUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yZVNlcnZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3RvcmUtc2VydmljZS5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIElTZWFyY2hzdGF4UGFyc2VkUmVzdWx0LFxuICBJU2VhcmNoc3RheFNlYXJjaE1ldGFkYXRhLFxufSBmcm9tICdAc2VhcmNoc3RheC1pbmMvc2VhcmNoc3R1ZGlvLXV4LWpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXNlYXJjaHN0YXgtcmVzdWx0cycsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWFyY2hzdGF4LXJlc3VsdHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZXM6IFtdLFxufSlcbmV4cG9ydCBjbGFzcyBTZWFyY2hzdGF4UmVzdWx0c1dpZGdldCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGFmdGVyTGlua0NsaWNrPzogKFxuICAgIHJlc3VsdHM6IElTZWFyY2hzdGF4UGFyc2VkUmVzdWx0XG4gICkgPT4gSVNlYXJjaHN0YXhQYXJzZWRSZXN1bHQ7XG5cbiAgQElucHV0KCkgbm9SZXN1bHRzVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBASW5wdXQoKSByZXN1bHRzVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIHNlYXJjaFJlc3VsdHM6IElTZWFyY2hzdGF4UGFyc2VkUmVzdWx0W10gfCBudWxsID0gbnVsbDtcbiAgbWV0YWRhdGE6IElTZWFyY2hzdGF4U2VhcmNoTWV0YWRhdGEgfCBudWxsID0gbnVsbDtcbiAgc2VhcmNoVGVybSA9ICcnO1xuICBjb250ZXh0ID0gdGhpcztcblxuICBnZXQgaG9va3MoKTogeyBba2V5OiBzdHJpbmddOiAocHJvcDogYW55KSA9PiBhbnkgfSB7XG4gICAgY29uc3QgaG9va3M6IHsgW2tleTogc3RyaW5nXTogKHByb3A6IGFueSkgPT4gYW55IH0gPSB7fTtcbiAgICBpZiAodGhpcy5hZnRlckxpbmtDbGljaykge1xuICAgICAgaG9va3NbJ2FmdGVyTGlua0NsaWNrJ10gPSB0aGlzLmFmdGVyTGlua0NsaWNrO1xuICAgIH1cbiAgICByZXR1cm4gaG9va3M7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN0b3JlU2VydmljZVNlcnZpY2U6IFN0b3JlU2VydmljZVNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RvcmVTZXJ2aWNlU2VydmljZS5zZWFyY2hzdGF4KSB7XG4gICAgICB0aGlzLmF0dGFjaE9ic2VydmFibGVzKCk7XG5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnN0b3JlU2VydmljZVNlcnZpY2Uuc2VhcmNoc3RheC5hZGRTZWFyY2hSZXN1bHRzV2lkZ2V0KFxuICAgICAgICAgICdzZWFyY2hzdGF4LXJlc3VsdHMtY29udGFpbmVyJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0ZW1wbGF0ZXM6IHt9LFxuICAgICAgICAgICAgaG9va3M6IHRoaXMuaG9va3MsXG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfSwgMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IEVycm9yKCdTZWFyY2hzdGF4IGluc3RhbmNlIG5lZWRzIHRvIGJlIHBhc3NlZCB2aWEgcHJvcHMnKTtcbiAgICB9XG4gIH1cblxuICBhdHRhY2hPYnNlcnZhYmxlcygpIHtcbiAgICB0aGlzLnN0b3JlU2VydmljZVNlcnZpY2Uuc2VhcmNoc3RheC5kYXRhTGF5ZXIuJHNlYXJjaFJlc3VsdHMuc3Vic2NyaWJlKFxuICAgICAgKHJlc3VsdHM6IElTZWFyY2hzdGF4UGFyc2VkUmVzdWx0W10gfCBudWxsKSA9PiB7XG4gICAgICAgIHRoaXMuc2VhcmNoUmVzdWx0cyA9IHJlc3VsdHM7XG4gICAgICB9XG4gICAgKTtcbiAgICB0aGlzLnN0b3JlU2VydmljZVNlcnZpY2Uuc2VhcmNoc3RheC5kYXRhTGF5ZXIuJHNlYXJjaFRlcm1DaGFuZ2Uuc3Vic2NyaWJlKFxuICAgICAgKHJlc3VsdDogc3RyaW5nKSA9PiB7XG4gICAgICAgIHRoaXMuc2VhcmNoVGVybSA9IHJlc3VsdDtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgdGhpcy5zdG9yZVNlcnZpY2VTZXJ2aWNlLnNlYXJjaHN0YXguZGF0YUxheWVyLiRzZWFyY2hSZXN1bHRzTWV0YWRhdGEuc3Vic2NyaWJlKFxuICAgICAgKHZhbHVlOiBJU2VhcmNoc3RheFNlYXJjaE1ldGFkYXRhKSA9PiB7XG4gICAgICAgIHRoaXMubWV0YWRhdGEgPSB2YWx1ZTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcmVzdWx0Q2xpY2tlZChyZXN1bHQ6IElTZWFyY2hzdGF4UGFyc2VkUmVzdWx0LCBldmVudDogRXZlbnQsIGNvbnRleHQ6IHRoaXMpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGNvbnRleHQuc3RvcmVTZXJ2aWNlU2VydmljZS5zZWFyY2hzdGF4LmV4ZWN1dGVMaW5rQ2xpY2socmVzdWx0LnVuaXF1ZUlkKTtcbiAgfVxuXG4gIGlzSW1hZ2UoZmllbGQ6IGFueSl7XG4gICAgcmV0dXJuIGZpZWxkLmlzSW1hZ2UgJiYgdHlwZW9mIGZpZWxkLnZhbHVlID09PSAnc3RyaW5nJ1xuICB9XG59XG4iLCI8ZGl2IGlkPVwic2VhcmNoc3RheC1yZXN1bHRzLWNvbnRhaW5lclwiPlxuICA8ZGl2IGNsYXNzPVwic2VhcmNoc3RheC1zZWFyY2gtcmVzdWx0cy1jb250YWluZXJcIj5cbiAgICA8ZGl2IGlkPVwic2VhcmNoc3RheC1yZXN1bHQtY29udGFpbmVyXCI+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgc2VhcmNoUmVzdWx0cyAmJiBzZWFyY2hSZXN1bHRzLmxlbmd0aCA9PT0gMCAmJiAhbm9SZXN1bHRzVGVtcGxhdGVcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaHN0YXgtbm8tcmVzdWx0c1wiPlxuICAgICAgICAgIFNob3dpbmcgPHN0cm9uZz5ubyByZXN1bHRzPC9zdHJvbmc+IGZvclxuICAgICAgICAgIDxzdHJvbmc+XCJ7eyBzZWFyY2hUZXJtIH19XCI8L3N0cm9uZz5cbiAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cIm1ldGFkYXRhPy5zcGVsbGluZ1N1Z2dlc3Rpb25cIlxuICAgICAgICAgICAgPiZuYnNwO0RpZCB5b3UgbWVhblxuICAgICAgICAgICAgPGEgaHJlZj1cIiNcIiBjbGFzcz1cInNlYXJjaHN0YXgtc3VnZ2VzdGlvbi10ZXJtXCI+e3tcbiAgICAgICAgICAgICAgbWV0YWRhdGE/LnNwZWxsaW5nU3VnZ2VzdGlvblxuICAgICAgICAgICAgfX08L2FcbiAgICAgICAgICAgID4/PC9zcGFuXG4gICAgICAgICAgPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8cD5cbiAgICAgICAgICAgIFRyeSBzZWFyY2hpbmcgZm9yIHNlYXJjaCByZWxhdGVkIHRlcm1zIG9yIHRvcGljcy4gV2Ugb2ZmZXIgYSB3aWRlXG4gICAgICAgICAgICB2YXJpZXR5IG9mIGNvbnRlbnQgdG8gaGVscCB5b3UgZ2V0IHRoZSBpbmZvcm1hdGlvbiB5b3UgbmVlZC5cbiAgICAgICAgICA8L3A+XG4gICAgICAgICAgPHA+TG9zdD8gQ2xpY2sgb24gdGhlIOKAmFjigJ0gaW4gdGhlIFNlYXJjaCBCb3ggdG8gcmVzZXQgeW91ciBzZWFyY2guPC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cInNlYXJjaFJlc3VsdHMgJiYgc2VhcmNoUmVzdWx0cy5sZW5ndGggPT09IDAgJiYgbm9SZXN1bHRzVGVtcGxhdGVcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJub1Jlc3VsdHNUZW1wbGF0ZTsgY29udGV4dDogY29udGV4dFwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwic2VhcmNoc3RheC1zZWFyY2gtcmVzdWx0c1wiXG4gICAgICAgICpuZ0lmPVwic2VhcmNoUmVzdWx0cyAmJiBzZWFyY2hSZXN1bHRzLmxlbmd0aCAmJiAhcmVzdWx0c1RlbXBsYXRlXCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwic2VhcmNoc3RheC1zZWFyY2gtcmVzdWx0XCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7ICdoYXMtdGh1bWJuYWlsJzogc2VhcmNoUmVzdWx0LnRodW1ibmFpbCB9XCJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgc2VhcmNoUmVzdWx0IG9mIHNlYXJjaFJlc3VsdHNcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJzZWFyY2hSZXN1bHQucHJvbW90ZWRcIlxuICAgICAgICAgICAgY2xhc3M9XCJzZWFyY2hzdGF4LXNlYXJjaC1yZXN1bHQtcHJvbW90ZWRcIlxuICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICA8YVxuICAgICAgICAgICAgKm5nSWY9XCJzZWFyY2hSZXN1bHQudXJsXCJcbiAgICAgICAgICAgIFtocmVmXT1cInNlYXJjaFJlc3VsdC51cmxcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1zZWFyY2hzdGF4LXVuaXF1ZS1yZXN1bHQtaWRdPVwic2VhcmNoUmVzdWx0LnVuaXF1ZUlkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJyZXN1bHRDbGlja2VkKHNlYXJjaFJlc3VsdCwgJGV2ZW50LCBjb250ZXh0KVwiXG4gICAgICAgICAgICBjbGFzcz1cInNlYXJjaHN0YXgtcmVzdWx0LWl0ZW0tbGlua1wiXG4gICAgICAgICAgPjwvYT5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cInNlYXJjaFJlc3VsdC5yaWJib25cIlxuICAgICAgICAgICAgY2xhc3M9XCJzZWFyY2hzdGF4LXNlYXJjaC1yZXN1bHQtcmliYm9uXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBzZWFyY2hSZXN1bHQucmliYm9uIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGltZ1xuICAgICAgICAgICAgKm5nSWY9XCJzZWFyY2hSZXN1bHQudGh1bWJuYWlsXCJcbiAgICAgICAgICAgIFtzcmNdPVwic2VhcmNoUmVzdWx0LnRodW1ibmFpbFwiXG4gICAgICAgICAgICBjbGFzcz1cInNlYXJjaHN0YXgtdGh1bWJuYWlsXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2hzdGF4LXNlYXJjaC1yZXN1bHQtdGl0bGUtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlYXJjaHN0YXgtc2VhcmNoLXJlc3VsdC10aXRsZVwiPnt7XG4gICAgICAgICAgICAgIHNlYXJjaFJlc3VsdC50aXRsZVxuICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHAgKm5nSWY9XCJzZWFyY2hSZXN1bHQucGF0aHNcIiBjbGFzcz1cInNlYXJjaHN0YXgtc2VhcmNoLXJlc3VsdC1jb21tb25cIj5cbiAgICAgICAgICAgIHt7IHNlYXJjaFJlc3VsdC5wYXRocyB9fVxuICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8cFxuICAgICAgICAgICAgKm5nSWY9XCJzZWFyY2hSZXN1bHQuZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgY2xhc3M9XCJzZWFyY2hzdGF4LXNlYXJjaC1yZXN1bHQtZGVzY3JpcHRpb24gc2VhcmNoc3RheC1zZWFyY2gtcmVzdWx0LWNvbW1vblwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgc2VhcmNoUmVzdWx0LmRlc2NyaXB0aW9uIH19XG4gICAgICAgICAgPC9wPlxuICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHVubWFwcGVkRmllbGQgb2Ygc2VhcmNoUmVzdWx0LnVubWFwcGVkRmllbGRzXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICpuZ0lmPVwiaXNJbWFnZSh1bm1hcHBlZEZpZWxkKVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwic2VhcmNoc3RheC1zZWFyY2gtcmVzdWx0LWltYWdlLWNvbnRhaW5lclwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICBbc3JjXT1cInVubWFwcGVkRmllbGQudmFsdWVcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2VhcmNoc3RheC1yZXN1bHQtaW1hZ2VcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWlzSW1hZ2UodW5tYXBwZWRGaWVsZClcIj5cbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJzZWFyY2hzdGF4LXNlYXJjaC1yZXN1bHQtY29tbW9uXCI+XG4gICAgICAgICAgICAgICAge3sgdW5tYXBwZWRGaWVsZC52YWx1ZSB9fVxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiAqbmdJZj1cInNlYXJjaFJlc3VsdHMgJiYgc2VhcmNoUmVzdWx0cy5sZW5ndGggJiYgcmVzdWx0c1RlbXBsYXRlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInJlc3VsdHNUZW1wbGF0ZTsgY29udGV4dDogY29udGV4dFwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -0,0 +1,40 @@
1
+ import { Component, Input } from "@angular/core";
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../../services/store-service.service";
4
+ import * as i2 from "@angular/common";
5
+ export class SearchstaxSearchExternalPromotionsWidget {
6
+ constructor(storeServiceService) {
7
+ this.storeServiceService = storeServiceService;
8
+ this.externalPromotionsData = null;
9
+ this.rand = Math.random();
10
+ this.context = this;
11
+ }
12
+ ngOnInit() {
13
+ if (this.storeServiceService.searchstax) {
14
+ this.attachObservables();
15
+ setTimeout(() => {
16
+ this.storeServiceService.searchstax.addExternalPromotionsWidget("searchstax-external-promotions-layout-container" + this.rand, {});
17
+ }, 0);
18
+ }
19
+ else {
20
+ throw Error("Searchstax instance needs to be passed via props");
21
+ }
22
+ }
23
+ trackClick(externalPromotion, event, context) {
24
+ context.storeServiceService.searchstax.externalPromotionsWidget?.trackClick(externalPromotion, event);
25
+ }
26
+ attachObservables() {
27
+ this.storeServiceService.searchstax.dataLayer.$searchExternalPromotionsData.subscribe((externalPromotionsData) => {
28
+ this.externalPromotionsData = externalPromotionsData;
29
+ });
30
+ }
31
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: SearchstaxSearchExternalPromotionsWidget, deps: [{ token: i1.StoreServiceService }], target: i0.ɵɵFactoryTarget.Component }); }
32
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.11", type: SearchstaxSearchExternalPromotionsWidget, selector: "app-searchstax-external-promotions", inputs: { templateOverride: "templateOverride" }, ngImport: i0, template: "<div [id]=\"'searchstax-external-promotions-layout-container' + rand\">\n <div\n class=\"searchstax-external-promotions-container\"\n id=\"searchstax-external-promotions-container\"\n *ngIf=\"\n externalPromotionsData &&\n externalPromotionsData?.searchExecuted &&\n externalPromotionsData?.hasExternalPromotions &&\n !templateOverride\n \"\n >\n <div\n class=\"searchstax-external-promotion searchstax-search-result\"\n *ngFor=\"let externalPromotion of externalPromotionsData.externalPromotions\"\n >\n <div class=\"icon-elevated\"></div>\n <a\n *ngIf=\"externalPromotion.url\"\n [href]=\"externalPromotion.url\"\n (click)=\"trackClick(externalPromotion, $event, context)\"\n class=\"searchstax-result-item-link\"\n ></a>\n <div class=\"searchstax-search-result-title-container\">\n <span class=\"searchstax-search-result-title\">{{ externalPromotion.name }}</span>\n </div>\n <p\n *ngIf=\"externalPromotion.description\"\n class=\"searchstax-search-result-description searchstax-search-result-common\"\n >\n {{ externalPromotion.description }}\n </p>\n <p *ngIf=\"externalPromotion.url\" class=\"searchstax-search-result-description searchstax-search-result-common\">\n {{ externalPromotion.url }}\n </p>\n </div>\n </div>\n <div\n *ngIf=\"\n externalPromotionsData &&\n externalPromotionsData?.searchExecuted &&\n externalPromotionsData?.hasExternalPromotions &&\n templateOverride\n \"\n >\n <ng-container *ngTemplateOutlet=\"templateOverride; context: context\"></ng-container>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
33
+ }
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: SearchstaxSearchExternalPromotionsWidget, decorators: [{
35
+ type: Component,
36
+ args: [{ selector: "app-searchstax-external-promotions", template: "<div [id]=\"'searchstax-external-promotions-layout-container' + rand\">\n <div\n class=\"searchstax-external-promotions-container\"\n id=\"searchstax-external-promotions-container\"\n *ngIf=\"\n externalPromotionsData &&\n externalPromotionsData?.searchExecuted &&\n externalPromotionsData?.hasExternalPromotions &&\n !templateOverride\n \"\n >\n <div\n class=\"searchstax-external-promotion searchstax-search-result\"\n *ngFor=\"let externalPromotion of externalPromotionsData.externalPromotions\"\n >\n <div class=\"icon-elevated\"></div>\n <a\n *ngIf=\"externalPromotion.url\"\n [href]=\"externalPromotion.url\"\n (click)=\"trackClick(externalPromotion, $event, context)\"\n class=\"searchstax-result-item-link\"\n ></a>\n <div class=\"searchstax-search-result-title-container\">\n <span class=\"searchstax-search-result-title\">{{ externalPromotion.name }}</span>\n </div>\n <p\n *ngIf=\"externalPromotion.description\"\n class=\"searchstax-search-result-description searchstax-search-result-common\"\n >\n {{ externalPromotion.description }}\n </p>\n <p *ngIf=\"externalPromotion.url\" class=\"searchstax-search-result-description searchstax-search-result-common\">\n {{ externalPromotion.url }}\n </p>\n </div>\n </div>\n <div\n *ngIf=\"\n externalPromotionsData &&\n externalPromotionsData?.searchExecuted &&\n externalPromotionsData?.hasExternalPromotions &&\n templateOverride\n \"\n >\n <ng-container *ngTemplateOutlet=\"templateOverride; context: context\"></ng-container>\n </div>\n</div>\n" }]
37
+ }], ctorParameters: function () { return [{ type: i1.StoreServiceService }]; }, propDecorators: { templateOverride: [{
38
+ type: Input
39
+ }] } });
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoc3RheC1zZWFyY2gtZXh0ZXJuYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2VhcmNoc3RheC1pbmMvc2VhcmNoc3R1ZGlvLXV4LWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3NlYXJjaHN0YXgtc2VhcmNoLWV4dGVybmFsL3NlYXJjaHN0YXgtc2VhcmNoLWV4dGVybmFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NlYXJjaHN0YXgtaW5jL3NlYXJjaHN0dWRpby11eC1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9zZWFyY2hzdGF4LXNlYXJjaC1leHRlcm5hbC9zZWFyY2hzdGF4LXNlYXJjaC1leHRlcm5hbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBdUIsTUFBTSxlQUFlLENBQUM7Ozs7QUFTdEUsTUFBTSxPQUFPLHdDQUF3QztJQU1uRCxZQUFvQixtQkFBd0M7UUFBeEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUg1RCwyQkFBc0IsR0FBNkMsSUFBSSxDQUFDO1FBQ3hFLFNBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDckIsWUFBTyxHQUFHLElBQUksQ0FBQztJQUNnRCxDQUFDO0lBRWhFLFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLEVBQUU7WUFDdkMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDekIsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLDJCQUEyQixDQUM3RCxpREFBaUQsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUM3RCxFQUFFLENBQ0gsQ0FBQztZQUNKLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNQO2FBQU07WUFDTCxNQUFNLEtBQUssQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO1NBQ2pFO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxpQkFBcUMsRUFBRSxLQUFZLEVBQUUsT0FBYTtRQUMzRSxPQUFPLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLHdCQUF3QixFQUFFLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN4RyxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsNkJBQTZCLENBQUMsU0FBUyxDQUNuRixDQUFDLHNCQUFnRSxFQUFFLEVBQUU7WUFDbkUsSUFBSSxDQUFDLHNCQUFzQixHQUFHLHNCQUFzQixDQUFDO1FBQ3ZELENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQzsrR0FoQ1Usd0NBQXdDO21HQUF4Qyx3Q0FBd0MsNEhDVHJELHVxREErQ0E7OzRGRHRDYSx3Q0FBd0M7a0JBTHBELFNBQVM7K0JBQ0Usb0NBQW9DOzBHQUtyQyxnQkFBZ0I7c0JBQXhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIFRlbXBsYXRlUmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IElFeHRlcm5hbFByb21vdGlvbiwgSVNlYXJjaHN0YXhFeHRlcm5hbFByb21vdGlvbnNEYXRhIH0gZnJvbSBcIkBzZWFyY2hzdGF4LWluYy9zZWFyY2hzdHVkaW8tdXgtanNcIjtcbmltcG9ydCB7IFN0b3JlU2VydmljZVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvc3RvcmUtc2VydmljZS5zZXJ2aWNlXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJhcHAtc2VhcmNoc3RheC1leHRlcm5hbC1wcm9tb3Rpb25zXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vc2VhcmNoc3RheC1zZWFyY2gtZXh0ZXJuYWwuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoc3RheFNlYXJjaEV4dGVybmFsUHJvbW90aW9uc1dpZGdldCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHRlbXBsYXRlT3ZlcnJpZGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIGV4dGVybmFsUHJvbW90aW9uc0RhdGE6IG51bGwgfCBJU2VhcmNoc3RheEV4dGVybmFsUHJvbW90aW9uc0RhdGEgPSBudWxsO1xuICByYW5kID0gTWF0aC5yYW5kb20oKTtcbiAgY29udGV4dCA9IHRoaXM7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmVTZXJ2aWNlU2VydmljZTogU3RvcmVTZXJ2aWNlU2VydmljZSkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdG9yZVNlcnZpY2VTZXJ2aWNlLnNlYXJjaHN0YXgpIHtcbiAgICAgIHRoaXMuYXR0YWNoT2JzZXJ2YWJsZXMoKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnN0b3JlU2VydmljZVNlcnZpY2Uuc2VhcmNoc3RheC5hZGRFeHRlcm5hbFByb21vdGlvbnNXaWRnZXQoXG4gICAgICAgICAgXCJzZWFyY2hzdGF4LWV4dGVybmFsLXByb21vdGlvbnMtbGF5b3V0LWNvbnRhaW5lclwiICsgdGhpcy5yYW5kLFxuICAgICAgICAgIHt9XG4gICAgICAgICk7XG4gICAgICB9LCAwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgRXJyb3IoXCJTZWFyY2hzdGF4IGluc3RhbmNlIG5lZWRzIHRvIGJlIHBhc3NlZCB2aWEgcHJvcHNcIik7XG4gICAgfVxuICB9XG5cbiAgdHJhY2tDbGljayhleHRlcm5hbFByb21vdGlvbjogSUV4dGVybmFsUHJvbW90aW9uLCBldmVudDogRXZlbnQsIGNvbnRleHQ6IHRoaXMpIHtcbiAgICBjb250ZXh0LnN0b3JlU2VydmljZVNlcnZpY2Uuc2VhcmNoc3RheC5leHRlcm5hbFByb21vdGlvbnNXaWRnZXQ/LnRyYWNrQ2xpY2soZXh0ZXJuYWxQcm9tb3Rpb24sIGV2ZW50KTtcbiAgfVxuXG4gIGF0dGFjaE9ic2VydmFibGVzKCkge1xuICAgIHRoaXMuc3RvcmVTZXJ2aWNlU2VydmljZS5zZWFyY2hzdGF4LmRhdGFMYXllci4kc2VhcmNoRXh0ZXJuYWxQcm9tb3Rpb25zRGF0YS5zdWJzY3JpYmUoXG4gICAgICAoZXh0ZXJuYWxQcm9tb3Rpb25zRGF0YTogbnVsbCB8IElTZWFyY2hzdGF4RXh0ZXJuYWxQcm9tb3Rpb25zRGF0YSkgPT4ge1xuICAgICAgICB0aGlzLmV4dGVybmFsUHJvbW90aW9uc0RhdGEgPSBleHRlcm5hbFByb21vdGlvbnNEYXRhO1xuICAgICAgfVxuICAgICk7XG4gIH1cbn1cbiIsIjxkaXYgW2lkXT1cIidzZWFyY2hzdGF4LWV4dGVybmFsLXByb21vdGlvbnMtbGF5b3V0LWNvbnRhaW5lcicgKyByYW5kXCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cInNlYXJjaHN0YXgtZXh0ZXJuYWwtcHJvbW90aW9ucy1jb250YWluZXJcIlxuICAgIGlkPVwic2VhcmNoc3RheC1leHRlcm5hbC1wcm9tb3Rpb25zLWNvbnRhaW5lclwiXG4gICAgKm5nSWY9XCJcbiAgICAgIGV4dGVybmFsUHJvbW90aW9uc0RhdGEgJiZcbiAgICAgIGV4dGVybmFsUHJvbW90aW9uc0RhdGE/LnNlYXJjaEV4ZWN1dGVkICYmXG4gICAgICBleHRlcm5hbFByb21vdGlvbnNEYXRhPy5oYXNFeHRlcm5hbFByb21vdGlvbnMgJiZcbiAgICAgICF0ZW1wbGF0ZU92ZXJyaWRlXG4gICAgXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwic2VhcmNoc3RheC1leHRlcm5hbC1wcm9tb3Rpb24gc2VhcmNoc3RheC1zZWFyY2gtcmVzdWx0XCJcbiAgICAgICpuZ0Zvcj1cImxldCBleHRlcm5hbFByb21vdGlvbiBvZiBleHRlcm5hbFByb21vdGlvbnNEYXRhLmV4dGVybmFsUHJvbW90aW9uc1wiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cImljb24tZWxldmF0ZWRcIj48L2Rpdj5cbiAgICAgIDxhXG4gICAgICAgICpuZ0lmPVwiZXh0ZXJuYWxQcm9tb3Rpb24udXJsXCJcbiAgICAgICAgW2hyZWZdPVwiZXh0ZXJuYWxQcm9tb3Rpb24udXJsXCJcbiAgICAgICAgKGNsaWNrKT1cInRyYWNrQ2xpY2soZXh0ZXJuYWxQcm9tb3Rpb24sICRldmVudCwgY29udGV4dClcIlxuICAgICAgICBjbGFzcz1cInNlYXJjaHN0YXgtcmVzdWx0LWl0ZW0tbGlua1wiXG4gICAgICA+PC9hPlxuICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaHN0YXgtc2VhcmNoLXJlc3VsdC10aXRsZS1jb250YWluZXJcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWFyY2hzdGF4LXNlYXJjaC1yZXN1bHQtdGl0bGVcIj57eyBleHRlcm5hbFByb21vdGlvbi5uYW1lIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8cFxuICAgICAgICAqbmdJZj1cImV4dGVybmFsUHJvbW90aW9uLmRlc2NyaXB0aW9uXCJcbiAgICAgICAgY2xhc3M9XCJzZWFyY2hzdGF4LXNlYXJjaC1yZXN1bHQtZGVzY3JpcHRpb24gc2VhcmNoc3RheC1zZWFyY2gtcmVzdWx0LWNvbW1vblwiXG4gICAgICA+XG4gICAgICAgIHt7IGV4dGVybmFsUHJvbW90aW9uLmRlc2NyaXB0aW9uIH19XG4gICAgICA8L3A+XG4gICAgICA8cCAqbmdJZj1cImV4dGVybmFsUHJvbW90aW9uLnVybFwiIGNsYXNzPVwic2VhcmNoc3RheC1zZWFyY2gtcmVzdWx0LWRlc2NyaXB0aW9uIHNlYXJjaHN0YXgtc2VhcmNoLXJlc3VsdC1jb21tb25cIj5cbiAgICAgICAge3sgZXh0ZXJuYWxQcm9tb3Rpb24udXJsIH19XG4gICAgICA8L3A+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2XG4gICAgKm5nSWY9XCJcbiAgICAgIGV4dGVybmFsUHJvbW90aW9uc0RhdGEgJiZcbiAgICAgIGV4dGVybmFsUHJvbW90aW9uc0RhdGE/LnNlYXJjaEV4ZWN1dGVkICYmXG4gICAgICBleHRlcm5hbFByb21vdGlvbnNEYXRhPy5oYXNFeHRlcm5hbFByb21vdGlvbnMgJiZcbiAgICAgIHRlbXBsYXRlT3ZlcnJpZGVcbiAgICBcIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlT3ZlcnJpZGU7IGNvbnRleHQ6IGNvbnRleHRcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,112 @@
1
+ import { Component, Input } from "@angular/core";
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../../services/store-service.service";
4
+ import * as i2 from "@angular/common";
5
+ export class SearchstaxSearchFacetsWidget {
6
+ // @ViewChildren("facetContainers") facetContainers: QueryList<ElementRef>;
7
+ constructor(storeServiceService) {
8
+ this.storeServiceService = storeServiceService;
9
+ this.facetsTemplateDataDesktop = null;
10
+ this.facetsTemplateDataMobile = null;
11
+ this.context = this;
12
+ this.selectedFacetsCheckboxes = [];
13
+ this.selectedFacetsRange = [];
14
+ this.rand = Math.random();
15
+ }
16
+ ngOnInit() {
17
+ if (this.storeServiceService.searchstax) {
18
+ this.attachObservables();
19
+ setTimeout(() => {
20
+ this.addWidget();
21
+ }, 0);
22
+ }
23
+ else {
24
+ throw Error("Searchstax instance needs to be passed via props");
25
+ }
26
+ }
27
+ addWidget() {
28
+ this.storeServiceService.searchstax.addFacetsWidget('searchstax-facets-container' + this.rand, {
29
+ facetingType: this.facetingType,
30
+ specificFacets: this.specificFacets,
31
+ itemsPerPageDesktop: this.itemsPerPageDesktop,
32
+ itemsPerPageMobile: this.itemsPerPageMobile
33
+ });
34
+ }
35
+ attachObservables() {
36
+ this.storeServiceService.searchstax.dataLayer.$facetsTemplateData.subscribe((data) => {
37
+ if (data?.isMobile) {
38
+ this.facetsTemplateDataMobile = data;
39
+ }
40
+ else {
41
+ this.facetsTemplateDataDesktop = data;
42
+ }
43
+ });
44
+ this.storeServiceService.searchstax.dataLayer.$selectedFacetsTemplateData.subscribe((data) => {
45
+ const da = data ?? [];
46
+ this.selectedFacetsCheckboxes = da.filter((d) => d.type === 'checkbox');
47
+ });
48
+ }
49
+ unselectFacet(facet, context) {
50
+ context.storeServiceService.searchstax.searchFacetsWidget?.unselectFacet(facet);
51
+ }
52
+ unselectAll(context) {
53
+ context.storeServiceService.searchstax.searchFacetsWidget?.removeSelectedFacets();
54
+ }
55
+ isNotDeactivated(name, context) {
56
+ return !context.storeServiceService.searchstax.searchFacetsWidget?.deactivatedFacets[name];
57
+ }
58
+ toggleFacetGroup(name, context) {
59
+ if (context.storeServiceService.searchstax.searchFacetsWidget)
60
+ if (this.isNotDeactivated(name, context)) {
61
+ context.storeServiceService.searchstax.searchFacetsWidget.deactivatedFacets[name] = true;
62
+ }
63
+ else {
64
+ context.storeServiceService.searchstax.searchFacetsWidget.deactivatedFacets[name] = false;
65
+ }
66
+ }
67
+ isChecked(facetValue, context) {
68
+ return context.storeServiceService.searchstax.searchFacetsWidget?.isChecked(facetValue);
69
+ }
70
+ selectFacet(el, event, data, isInput, context) {
71
+ const wrapperDiv = document.createElement('div');
72
+ wrapperDiv.innerHTML = el.outerHTML;
73
+ context.storeServiceService.searchstax.searchFacetsWidget?.onFacetSelect(event, data, el, isInput);
74
+ }
75
+ showMoreLessDesktop(e, data, context) {
76
+ context.storeServiceService.searchstax.searchFacetsWidget?.onShowMoreLessClick(e, data, false);
77
+ }
78
+ showMoreLessMobile(e, data, context) {
79
+ context.storeServiceService.searchstax.searchFacetsWidget?.onShowMoreLessClick(e, data, true);
80
+ }
81
+ openOverlay(context) {
82
+ context.storeServiceService.searchstax.searchFacetsWidget?.openOverlay();
83
+ }
84
+ closeOverlay(context) {
85
+ context.storeServiceService.searchstax.searchFacetsWidget?.closeOverlay();
86
+ }
87
+ facetValues(facet) {
88
+ return facet.values;
89
+ }
90
+ facetMobileData(facet) {
91
+ return facet;
92
+ }
93
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: SearchstaxSearchFacetsWidget, deps: [{ token: i1.StoreServiceService }], target: i0.ɵɵFactoryTarget.Component }); }
94
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.11", type: SearchstaxSearchFacetsWidget, selector: "app-searchstax-search-facets", inputs: { templateOverrideMobile: "templateOverrideMobile", templateOverrideDesktop: "templateOverrideDesktop", facetingType: "facetingType", itemsPerPageDesktop: "itemsPerPageDesktop", itemsPerPageMobile: "itemsPerPageMobile", specificFacets: "specificFacets" }, ngImport: i0, template: "<div [id]=\"'searchstax-facets-container' + rand\">\n <div\n *ngIf=\"facetsTemplateDataDesktop?.hasResultsOrExternalPromotions && !templateOverrideDesktop\"\n class=\"searchstax-facets-container-desktop\"\n >\n <div\n class=\"searchstax-facet-container\"\n *ngFor=\"let facet of facetsTemplateDataDesktop?.facets\"\n [class]=\"{ active: isNotDeactivated(facet.name, context) }\"\n >\n <div>\n <div class=\"searchstax-facet-title-container\" (click)=\"toggleFacetGroup(facet.name, context)\">\n <div class=\"searchstax-facet-title\">{{ facet.label }}</div>\n <div class=\"searchstax-facet-title-arrow active\"></div>\n </div>\n <div class=\"searchstax-facet-values-container\">\n <div\n *ngFor=\"let facetValue of facetValues(facet); index as key\"\n class=\"searchstax-facet-value-container\"\n [class]=\"{ 'searchstax-facet-value-disabled': facetValue.disabled }\"\n #ref\n >\n <div class=\"searchstax-facet-input\">\n <input\n type=\"checkbox\"\n class=\"searchstax-facet-input-checkbox\"\n [checked]=\"isChecked(facetValue, context)\"\n [disabled]=\"facetValue.disabled\"\n (click)=\"selectFacet(ref, $event, facetValue, true, context)\"\n />\n </div>\n <div class=\"searchstax-facet-value-label\" (click)=\"selectFacet(ref, $event, facetValue, false, context)\">\n {{ facetValue.value }}\n </div>\n <div class=\"searchstax-facet-value-count\" (click)=\"selectFacet(ref, $event, facetValue, false, context)\">\n ({{ facetValue.count }})\n </div>\n </div>\n <div class=\"searchstax-facet-show-more-container\" *ngIf=\"facet.hasMoreFacets\">\n <div class=\"searchstax-facet-show-more-container\" (click)=\"showMoreLessDesktop($event, facet, context)\">\n <div\n *ngIf=\"facet.showingAllFacets\"\n class=\"searchstax-facet-show-less-button searchstax-facet-show-button\"\n >\n less\n </div>\n <div\n *ngIf=\"!facet.showingAllFacets\"\n class=\"searchstax-facet-show-more-button searchstax-facet-show-button\"\n >\n more\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"facetsTemplateDataDesktop?.hasResultsOrExternalPromotions && templateOverrideDesktop\">\n <ng-container *ngTemplateOutlet=\"templateOverrideDesktop; context: context\"></ng-container>\n </div>\n\n <div\n class=\"searchstax-facets-container-mobile\"\n *ngIf=\"facetsTemplateDataMobile?.hasResultsOrExternalPromotions && !templateOverrideMobile\"\n >\n <div class=\"searchstax-facets-pills-container\">\n <div class=\"searchstax-facets-pill searchstax-facets-pill-filter-by\" (click)=\"openOverlay(context)\">\n <div class=\"searchstax-facets-pill-label\">Filter By</div>\n </div>\n <div class=\"searchstax-facets-pills-selected\">\n <div\n class=\"searchstax-facets-pill searchstax-facets-pill-facets\"\n *ngFor=\"let facet of selectedFacetsCheckboxes\"\n (click)=\"unselectFacet(facet, context)\"\n >\n <div class=\"searchstax-facets-pill-label\">{{ facet.value }} ({{ facet.count }})</div>\n <div class=\"searchstax-facets-pill-icon-close\"></div>\n </div>\n </div>\n <div\n class=\"searchstax-facets-pill searchstax-clear-filters searchstax-facets-pill-clear-all\"\n *ngIf=\"selectedFacetsCheckboxes.length\"\n (click)=\"unselectAll(context)\"\n >\n <div class=\"searchstax-facets-pill-label\">Clear Filters</div>\n </div>\n </div>\n <div\n class=\"searchstax-facets-mobile-overlay\"\n [class]=\"{ 'searchstax-show': facetMobileData(facetsTemplateDataMobile)?.overlayOpened }\"\n >\n <div class=\"searchstax-facets-mobile-overlay-header\">\n <div class=\"searchstax-facets-mobile-overlay-header-title\">Filter By</div>\n <div class=\"searchstax-search-close\" (click)=\"closeOverlay(context)\"></div>\n </div>\n <div class=\"searchstax-facets-container-mobile\">\n <div\n *ngFor=\"let facet of facetsTemplateDataMobile?.facets\"\n class=\"searchstax-facet-container\"\n [class]=\"{ active: isNotDeactivated(facet.name, context) }\"\n >\n <div>\n <div class=\"searchstax-facet-title-container\" (click)=\"toggleFacetGroup(facet.name, context)\">\n <div class=\"searchstax-facet-title\">{{ facet.label }}</div>\n <div class=\"searchstax-facet-title-arrow active\"></div>\n </div>\n <div class=\"searchstax-facet-values-container\">\n <div\n *ngFor=\"let facetValue of facetValues(facet); index as key\"\n class=\"searchstax-facet-value-container\"\n [class]=\"{ 'searchstax-facet-value-disabled': facetValue.disabled }\"\n #ref\n >\n <div class=\"searchstax-facet-input\">\n <input\n type=\"checkbox\"\n class=\"searchstax-facet-input-checkbox\"\n [checked]=\"isChecked(facetValue, context)\"\n [disabled]=\"facetValue.disabled\"\n (click)=\"selectFacet(ref, $event, facetValue, true, context)\"\n />\n </div>\n <div\n class=\"searchstax-facet-value-label\"\n (click)=\"selectFacet(ref, $event, facetValue, false, context)\"\n >\n {{ facetValue.value }}\n </div>\n <div\n class=\"searchstax-facet-value-count\"\n (click)=\"selectFacet(ref, $event, facetValue, false, context)\"\n >\n ({{ facetValue.count }})\n </div>\n </div>\n <div class=\"searchstax-facet-show-more-container\" *ngIf=\"facet.hasMoreFacets\">\n <div class=\"searchstax-facet-show-more-container\" (click)=\"showMoreLessDesktop($event, facet, context)\">\n <div\n *ngIf=\"facet.showingAllFacets\"\n class=\"searchstax-facet-show-less-button searchstax-facet-show-button\"\n >\n less\n </div>\n <div\n *ngIf=\"!facet.showingAllFacets\"\n class=\"searchstax-facet-show-more-button searchstax-facet-show-button\"\n >\n more\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <button class=\"searchstax-facets-mobile-overlay-done\" (click)=\"closeOverlay(context)\">Done</button>\n </div>\n </div>\n <div *ngIf=\"facetsTemplateDataMobile?.hasResultsOrExternalPromotions && templateOverrideMobile\">\n <ng-container *ngTemplateOutlet=\"templateOverrideMobile; context: context\"></ng-container>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
95
+ }
96
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: SearchstaxSearchFacetsWidget, decorators: [{
97
+ type: Component,
98
+ args: [{ selector: "app-searchstax-search-facets", template: "<div [id]=\"'searchstax-facets-container' + rand\">\n <div\n *ngIf=\"facetsTemplateDataDesktop?.hasResultsOrExternalPromotions && !templateOverrideDesktop\"\n class=\"searchstax-facets-container-desktop\"\n >\n <div\n class=\"searchstax-facet-container\"\n *ngFor=\"let facet of facetsTemplateDataDesktop?.facets\"\n [class]=\"{ active: isNotDeactivated(facet.name, context) }\"\n >\n <div>\n <div class=\"searchstax-facet-title-container\" (click)=\"toggleFacetGroup(facet.name, context)\">\n <div class=\"searchstax-facet-title\">{{ facet.label }}</div>\n <div class=\"searchstax-facet-title-arrow active\"></div>\n </div>\n <div class=\"searchstax-facet-values-container\">\n <div\n *ngFor=\"let facetValue of facetValues(facet); index as key\"\n class=\"searchstax-facet-value-container\"\n [class]=\"{ 'searchstax-facet-value-disabled': facetValue.disabled }\"\n #ref\n >\n <div class=\"searchstax-facet-input\">\n <input\n type=\"checkbox\"\n class=\"searchstax-facet-input-checkbox\"\n [checked]=\"isChecked(facetValue, context)\"\n [disabled]=\"facetValue.disabled\"\n (click)=\"selectFacet(ref, $event, facetValue, true, context)\"\n />\n </div>\n <div class=\"searchstax-facet-value-label\" (click)=\"selectFacet(ref, $event, facetValue, false, context)\">\n {{ facetValue.value }}\n </div>\n <div class=\"searchstax-facet-value-count\" (click)=\"selectFacet(ref, $event, facetValue, false, context)\">\n ({{ facetValue.count }})\n </div>\n </div>\n <div class=\"searchstax-facet-show-more-container\" *ngIf=\"facet.hasMoreFacets\">\n <div class=\"searchstax-facet-show-more-container\" (click)=\"showMoreLessDesktop($event, facet, context)\">\n <div\n *ngIf=\"facet.showingAllFacets\"\n class=\"searchstax-facet-show-less-button searchstax-facet-show-button\"\n >\n less\n </div>\n <div\n *ngIf=\"!facet.showingAllFacets\"\n class=\"searchstax-facet-show-more-button searchstax-facet-show-button\"\n >\n more\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"facetsTemplateDataDesktop?.hasResultsOrExternalPromotions && templateOverrideDesktop\">\n <ng-container *ngTemplateOutlet=\"templateOverrideDesktop; context: context\"></ng-container>\n </div>\n\n <div\n class=\"searchstax-facets-container-mobile\"\n *ngIf=\"facetsTemplateDataMobile?.hasResultsOrExternalPromotions && !templateOverrideMobile\"\n >\n <div class=\"searchstax-facets-pills-container\">\n <div class=\"searchstax-facets-pill searchstax-facets-pill-filter-by\" (click)=\"openOverlay(context)\">\n <div class=\"searchstax-facets-pill-label\">Filter By</div>\n </div>\n <div class=\"searchstax-facets-pills-selected\">\n <div\n class=\"searchstax-facets-pill searchstax-facets-pill-facets\"\n *ngFor=\"let facet of selectedFacetsCheckboxes\"\n (click)=\"unselectFacet(facet, context)\"\n >\n <div class=\"searchstax-facets-pill-label\">{{ facet.value }} ({{ facet.count }})</div>\n <div class=\"searchstax-facets-pill-icon-close\"></div>\n </div>\n </div>\n <div\n class=\"searchstax-facets-pill searchstax-clear-filters searchstax-facets-pill-clear-all\"\n *ngIf=\"selectedFacetsCheckboxes.length\"\n (click)=\"unselectAll(context)\"\n >\n <div class=\"searchstax-facets-pill-label\">Clear Filters</div>\n </div>\n </div>\n <div\n class=\"searchstax-facets-mobile-overlay\"\n [class]=\"{ 'searchstax-show': facetMobileData(facetsTemplateDataMobile)?.overlayOpened }\"\n >\n <div class=\"searchstax-facets-mobile-overlay-header\">\n <div class=\"searchstax-facets-mobile-overlay-header-title\">Filter By</div>\n <div class=\"searchstax-search-close\" (click)=\"closeOverlay(context)\"></div>\n </div>\n <div class=\"searchstax-facets-container-mobile\">\n <div\n *ngFor=\"let facet of facetsTemplateDataMobile?.facets\"\n class=\"searchstax-facet-container\"\n [class]=\"{ active: isNotDeactivated(facet.name, context) }\"\n >\n <div>\n <div class=\"searchstax-facet-title-container\" (click)=\"toggleFacetGroup(facet.name, context)\">\n <div class=\"searchstax-facet-title\">{{ facet.label }}</div>\n <div class=\"searchstax-facet-title-arrow active\"></div>\n </div>\n <div class=\"searchstax-facet-values-container\">\n <div\n *ngFor=\"let facetValue of facetValues(facet); index as key\"\n class=\"searchstax-facet-value-container\"\n [class]=\"{ 'searchstax-facet-value-disabled': facetValue.disabled }\"\n #ref\n >\n <div class=\"searchstax-facet-input\">\n <input\n type=\"checkbox\"\n class=\"searchstax-facet-input-checkbox\"\n [checked]=\"isChecked(facetValue, context)\"\n [disabled]=\"facetValue.disabled\"\n (click)=\"selectFacet(ref, $event, facetValue, true, context)\"\n />\n </div>\n <div\n class=\"searchstax-facet-value-label\"\n (click)=\"selectFacet(ref, $event, facetValue, false, context)\"\n >\n {{ facetValue.value }}\n </div>\n <div\n class=\"searchstax-facet-value-count\"\n (click)=\"selectFacet(ref, $event, facetValue, false, context)\"\n >\n ({{ facetValue.count }})\n </div>\n </div>\n <div class=\"searchstax-facet-show-more-container\" *ngIf=\"facet.hasMoreFacets\">\n <div class=\"searchstax-facet-show-more-container\" (click)=\"showMoreLessDesktop($event, facet, context)\">\n <div\n *ngIf=\"facet.showingAllFacets\"\n class=\"searchstax-facet-show-less-button searchstax-facet-show-button\"\n >\n less\n </div>\n <div\n *ngIf=\"!facet.showingAllFacets\"\n class=\"searchstax-facet-show-more-button searchstax-facet-show-button\"\n >\n more\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <button class=\"searchstax-facets-mobile-overlay-done\" (click)=\"closeOverlay(context)\">Done</button>\n </div>\n </div>\n <div *ngIf=\"facetsTemplateDataMobile?.hasResultsOrExternalPromotions && templateOverrideMobile\">\n <ng-container *ngTemplateOutlet=\"templateOverrideMobile; context: context\"></ng-container>\n </div>\n</div>\n" }]
99
+ }], ctorParameters: function () { return [{ type: i1.StoreServiceService }]; }, propDecorators: { templateOverrideMobile: [{
100
+ type: Input
101
+ }], templateOverrideDesktop: [{
102
+ type: Input
103
+ }], facetingType: [{
104
+ type: Input
105
+ }], itemsPerPageDesktop: [{
106
+ type: Input
107
+ }], itemsPerPageMobile: [{
108
+ type: Input
109
+ }], specificFacets: [{
110
+ type: Input
111
+ }] } });
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoc3RheC1zZWFyY2gtZmFjZXRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NlYXJjaHN0YXgtaW5jL3NlYXJjaHN0dWRpby11eC1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9zZWFyY2hzdGF4LXNlYXJjaC1mYWNldHMvc2VhcmNoc3RheC1zZWFyY2gtZmFjZXRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NlYXJjaHN0YXgtaW5jL3NlYXJjaHN0dWRpby11eC1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9zZWFyY2hzdGF4LXNlYXJjaC1mYWNldHMvc2VhcmNoc3RheC1zZWFyY2gtZmFjZXRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUEyRCxNQUFNLGVBQWUsQ0FBQzs7OztBQVN0SCxNQUFNLE9BQU8sNEJBQTRCO0lBZXZDLDJFQUEyRTtJQUMzRSxZQUFvQixtQkFBd0M7UUFBeEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQVI1RCw4QkFBeUIsR0FBK0IsSUFBSSxDQUFDO1FBQzdELDZCQUF3QixHQUErQixJQUFJLENBQUM7UUFDNUQsWUFBTyxHQUFHLElBQUksQ0FBQztRQUNmLDZCQUF3QixHQUFrQixFQUFFLENBQUM7UUFDN0Msd0JBQW1CLEdBQXVCLEVBQUUsQ0FBQztRQUM3QyxTQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBRzBDLENBQUM7SUFFaEUsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsRUFBRTtZQUN2QyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUN6QixVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDUDthQUFNO1lBQ0wsTUFBTSxLQUFLLENBQUMsa0RBQWtELENBQUMsQ0FBQztTQUNqRTtJQUNILENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsNkJBQTZCLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRTtZQUM3RixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDL0IsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjO1lBQ25DLG1CQUFtQixFQUFFLElBQUksQ0FBQyxtQkFBbUI7WUFDN0Msa0JBQWtCLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtTQUM1QyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUN6RSxDQUFDLElBQWdDLEVBQUUsRUFBRTtZQUNuQyxJQUFJLElBQUksRUFBRSxRQUFRLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUM7YUFFdEM7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQzthQUN2QztRQUNILENBQUMsQ0FDRixDQUFDO1FBRUYsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsMkJBQTJCLENBQUMsU0FBUyxDQUNqRixDQUFDLElBQStDLEVBQUUsRUFBRTtZQUNsRCxNQUFNLEVBQUUsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FBa0IsQ0FBQztRQUMzRixDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFHRCxhQUFhLENBQUMsS0FBa0IsRUFBRSxPQUFhO1FBQzdDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsa0JBQWtCLEVBQUUsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ2pGLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBYTtRQUN2QixPQUFPLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLGtCQUFrQixFQUFFLG9CQUFvQixFQUFFLENBQUE7SUFDbkYsQ0FBQztJQUVELGdCQUFnQixDQUFDLElBQVksRUFBRSxPQUFhO1FBQzFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLGtCQUFrQixFQUFFLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFBO0lBQzVGLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxJQUFZLEVBQUUsT0FBYTtRQUMxQyxJQUFHLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsa0JBQWtCO1lBQzVELElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsRUFBRTtnQkFDeEMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUE7YUFDekY7aUJBQU07Z0JBQ0wsT0FBTyxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUE7YUFDMUY7SUFDSCxDQUFDO0lBRUQsU0FBUyxDQUFDLFVBQTJCLEVBQUUsT0FBYTtRQUNsRCxPQUFPLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsa0JBQWtCLEVBQUUsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBQ3pGLENBQUM7SUFFRCxXQUFXLENBQUMsRUFBa0IsRUFBRSxLQUFZLEVBQUUsSUFBcUIsRUFBRSxPQUFnQixFQUFFLE9BQWE7UUFDbEcsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRCxVQUFVLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUM7UUFDcEMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsRUFBRSxhQUFhLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFFcEcsQ0FBQztJQUVELG1CQUFtQixDQUFDLENBQVEsRUFBRSxJQUFnQixFQUFFLE9BQWE7UUFDM0QsT0FBTyxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFBO0lBQ2hHLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxDQUFRLEVBQUUsSUFBZ0IsRUFBRSxPQUFhO1FBQzFELE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsa0JBQWtCLEVBQUUsbUJBQW1CLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUMvRixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQWE7UUFDdkIsT0FBTyxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUMzRSxDQUFDO0lBRUQsWUFBWSxDQUFDLE9BQWE7UUFDeEIsT0FBTyxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsQ0FBQztJQUM1RSxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWlCO1FBQzNCLE9BQU8sS0FBSyxDQUFDLE1BQTJCLENBQUM7SUFDM0MsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFpQztRQUMvQyxPQUFPLEtBQVksQ0FBQTtJQUNyQixDQUFDOytHQWpIVSw0QkFBNEI7bUdBQTVCLDRCQUE0Qiw0VUNUekMsb3dPQW1LQTs7NEZEMUphLDRCQUE0QjtrQkFMeEMsU0FBUzsrQkFDRSw4QkFBOEI7MEdBSy9CLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFDRyx1QkFBdUI7c0JBQS9CLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkluaXQsIFF1ZXJ5TGlzdCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgVmlld0NoaWxkcmVuIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IElGYWNldERhdGEsIElGYWNldFZhbHVlLCBJRmFjZXRWYWx1ZURhdGEsIElGYWNldFZhbHVlUmFuZ2UsIElGYWNldHNUZW1wbGF0ZURhdGEsIElQYWdpbmF0aW9uRGF0YSwgSVNlYXJjaE9iamVjdCB9IGZyb20gXCJAc2VhcmNoc3RheC1pbmMvc2VhcmNoc3R1ZGlvLXV4LWpzXCI7XG5pbXBvcnQgeyBTdG9yZVNlcnZpY2VTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3N0b3JlLXNlcnZpY2Uuc2VydmljZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiYXBwLXNlYXJjaHN0YXgtc2VhcmNoLWZhY2V0c1wiLFxuICB0ZW1wbGF0ZVVybDogXCIuL3NlYXJjaHN0YXgtc2VhcmNoLWZhY2V0cy5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZXM6IFtdLFxufSlcbmV4cG9ydCBjbGFzcyBTZWFyY2hzdGF4U2VhcmNoRmFjZXRzV2lkZ2V0IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgdGVtcGxhdGVPdmVycmlkZU1vYmlsZT86IFRlbXBsYXRlUmVmPGFueT47XG4gIEBJbnB1dCgpIHRlbXBsYXRlT3ZlcnJpZGVEZXNrdG9wPzogVGVtcGxhdGVSZWY8YW55PjtcbiAgQElucHV0KCkgZmFjZXRpbmdUeXBlITogXCJhbmRcIiB8IFwib3JcIiB8IFwic2hvd1VuYXZhaWxhYmxlXCIgfCBcInRhYnNcIjtcbiAgQElucHV0KCkgaXRlbXNQZXJQYWdlRGVza3RvcCE6IG51bWJlcjtcbiAgQElucHV0KCkgaXRlbXNQZXJQYWdlTW9iaWxlITogbnVtYmVyO1xuICBASW5wdXQoKSBzcGVjaWZpY0ZhY2V0cyE6IHN0cmluZ1tdO1xuXG4gIGZhY2V0c1RlbXBsYXRlRGF0YURlc2t0b3A6IG51bGwgfCBJRmFjZXRzVGVtcGxhdGVEYXRhID0gbnVsbDtcbiAgZmFjZXRzVGVtcGxhdGVEYXRhTW9iaWxlOiBudWxsIHwgSUZhY2V0c1RlbXBsYXRlRGF0YSA9IG51bGw7XG4gIGNvbnRleHQgPSB0aGlzO1xuICBzZWxlY3RlZEZhY2V0c0NoZWNrYm94ZXM6IElGYWNldFZhbHVlW10gPSBbXTtcbiAgc2VsZWN0ZWRGYWNldHNSYW5nZTogSUZhY2V0VmFsdWVSYW5nZVtdID0gW107XG4gIHJhbmQgPSBNYXRoLnJhbmRvbSgpO1xuXG4gIC8vIEBWaWV3Q2hpbGRyZW4oXCJmYWNldENvbnRhaW5lcnNcIikgZmFjZXRDb250YWluZXJzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmVTZXJ2aWNlU2VydmljZTogU3RvcmVTZXJ2aWNlU2VydmljZSkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdG9yZVNlcnZpY2VTZXJ2aWNlLnNlYXJjaHN0YXgpIHtcbiAgICAgIHRoaXMuYXR0YWNoT2JzZXJ2YWJsZXMoKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmFkZFdpZGdldCgpO1xuICAgICAgfSwgMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IEVycm9yKFwiU2VhcmNoc3RheCBpbnN0YW5jZSBuZWVkcyB0byBiZSBwYXNzZWQgdmlhIHByb3BzXCIpO1xuICAgIH1cbiAgfVxuXG4gIGFkZFdpZGdldCgpIHtcbiAgICB0aGlzLnN0b3JlU2VydmljZVNlcnZpY2Uuc2VhcmNoc3RheC5hZGRGYWNldHNXaWRnZXQoJ3NlYXJjaHN0YXgtZmFjZXRzLWNvbnRhaW5lcicgKyB0aGlzLnJhbmQsIHtcbiAgICAgIGZhY2V0aW5nVHlwZTogdGhpcy5mYWNldGluZ1R5cGUsXG4gICAgICBzcGVjaWZpY0ZhY2V0czogdGhpcy5zcGVjaWZpY0ZhY2V0cyxcbiAgICAgIGl0ZW1zUGVyUGFnZURlc2t0b3A6IHRoaXMuaXRlbXNQZXJQYWdlRGVza3RvcCxcbiAgICAgIGl0ZW1zUGVyUGFnZU1vYmlsZTogdGhpcy5pdGVtc1BlclBhZ2VNb2JpbGVcbiAgICB9KVxuICB9XG5cbiAgYXR0YWNoT2JzZXJ2YWJsZXMoKSB7XG4gICAgdGhpcy5zdG9yZVNlcnZpY2VTZXJ2aWNlLnNlYXJjaHN0YXguZGF0YUxheWVyLiRmYWNldHNUZW1wbGF0ZURhdGEuc3Vic2NyaWJlKFxuICAgICAgKGRhdGE6IG51bGwgfCBJRmFjZXRzVGVtcGxhdGVEYXRhKSA9PiB7XG4gICAgICAgIGlmIChkYXRhPy5pc01vYmlsZSkge1xuICAgICAgICAgIHRoaXMuZmFjZXRzVGVtcGxhdGVEYXRhTW9iaWxlID0gZGF0YTtcblxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZmFjZXRzVGVtcGxhdGVEYXRhRGVza3RvcCA9IGRhdGE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuXG4gICAgdGhpcy5zdG9yZVNlcnZpY2VTZXJ2aWNlLnNlYXJjaHN0YXguZGF0YUxheWVyLiRzZWxlY3RlZEZhY2V0c1RlbXBsYXRlRGF0YS5zdWJzY3JpYmUoXG4gICAgICAoZGF0YTogbnVsbCB8IChJRmFjZXRWYWx1ZSB8IElGYWNldFZhbHVlUmFuZ2UpW10pID0+IHtcbiAgICAgICAgY29uc3QgZGEgPSBkYXRhID8/IFtdO1xuICAgICAgICB0aGlzLnNlbGVjdGVkRmFjZXRzQ2hlY2tib3hlcyA9IGRhLmZpbHRlcigoZCkgPT4gZC50eXBlID09PSAnY2hlY2tib3gnKSBhcyBJRmFjZXRWYWx1ZVtdO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuXG4gIHVuc2VsZWN0RmFjZXQoZmFjZXQ6IElGYWNldFZhbHVlLCBjb250ZXh0OiB0aGlzKSB7XG4gICAgY29udGV4dC5zdG9yZVNlcnZpY2VTZXJ2aWNlLnNlYXJjaHN0YXguc2VhcmNoRmFjZXRzV2lkZ2V0Py51bnNlbGVjdEZhY2V0KGZhY2V0KVxuICB9XG5cbiAgdW5zZWxlY3RBbGwoY29udGV4dDogdGhpcykge1xuICAgIGNvbnRleHQuc3RvcmVTZXJ2aWNlU2VydmljZS5zZWFyY2hzdGF4LnNlYXJjaEZhY2V0c1dpZGdldD8ucmVtb3ZlU2VsZWN0ZWRGYWNldHMoKVxuICB9XG5cbiAgaXNOb3REZWFjdGl2YXRlZChuYW1lOiBzdHJpbmcsIGNvbnRleHQ6IHRoaXMpIHtcbiAgICByZXR1cm4gIWNvbnRleHQuc3RvcmVTZXJ2aWNlU2VydmljZS5zZWFyY2hzdGF4LnNlYXJjaEZhY2V0c1dpZGdldD8uZGVhY3RpdmF0ZWRGYWNldHNbbmFtZV1cbiAgfVxuXG4gIHRvZ2dsZUZhY2V0R3JvdXAobmFtZTogc3RyaW5nLCBjb250ZXh0OiB0aGlzKSB7XG4gICAgaWYoY29udGV4dC5zdG9yZVNlcnZpY2VTZXJ2aWNlLnNlYXJjaHN0YXguc2VhcmNoRmFjZXRzV2lkZ2V0KVxuICAgIGlmICh0aGlzLmlzTm90RGVhY3RpdmF0ZWQobmFtZSwgY29udGV4dCkpIHtcbiAgICAgIGNvbnRleHQuc3RvcmVTZXJ2aWNlU2VydmljZS5zZWFyY2hzdGF4LnNlYXJjaEZhY2V0c1dpZGdldC5kZWFjdGl2YXRlZEZhY2V0c1tuYW1lXSA9IHRydWVcbiAgICB9IGVsc2Uge1xuICAgICAgY29udGV4dC5zdG9yZVNlcnZpY2VTZXJ2aWNlLnNlYXJjaHN0YXguc2VhcmNoRmFjZXRzV2lkZ2V0LmRlYWN0aXZhdGVkRmFjZXRzW25hbWVdID0gZmFsc2VcbiAgICB9XG4gIH1cblxuICBpc0NoZWNrZWQoZmFjZXRWYWx1ZTogSUZhY2V0VmFsdWVEYXRhLCBjb250ZXh0OiB0aGlzKSB7XG4gICAgcmV0dXJuIGNvbnRleHQuc3RvcmVTZXJ2aWNlU2VydmljZS5zZWFyY2hzdGF4LnNlYXJjaEZhY2V0c1dpZGdldD8uaXNDaGVja2VkKGZhY2V0VmFsdWUpXG4gIH1cblxuICBzZWxlY3RGYWNldChlbDogSFRNTERpdkVsZW1lbnQsIGV2ZW50OiBFdmVudCwgZGF0YTogSUZhY2V0VmFsdWVEYXRhLCBpc0lucHV0OiBib29sZWFuLCBjb250ZXh0OiB0aGlzKSB7XG4gICAgY29uc3Qgd3JhcHBlckRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHdyYXBwZXJEaXYuaW5uZXJIVE1MID0gZWwub3V0ZXJIVE1MO1xuICAgIGNvbnRleHQuc3RvcmVTZXJ2aWNlU2VydmljZS5zZWFyY2hzdGF4LnNlYXJjaEZhY2V0c1dpZGdldD8ub25GYWNldFNlbGVjdChldmVudCwgZGF0YSwgZWwsIGlzSW5wdXQpXG5cbiAgfVxuXG4gIHNob3dNb3JlTGVzc0Rlc2t0b3AoZTogRXZlbnQsIGRhdGE6IElGYWNldERhdGEsIGNvbnRleHQ6IHRoaXMpIHtcbiAgICBjb250ZXh0LnN0b3JlU2VydmljZVNlcnZpY2Uuc2VhcmNoc3RheC5zZWFyY2hGYWNldHNXaWRnZXQ/Lm9uU2hvd01vcmVMZXNzQ2xpY2soZSwgZGF0YSwgZmFsc2UpXG4gIH1cblxuICBzaG93TW9yZUxlc3NNb2JpbGUoZTogRXZlbnQsIGRhdGE6IElGYWNldERhdGEsIGNvbnRleHQ6IHRoaXMpIHtcbiAgICBjb250ZXh0LnN0b3JlU2VydmljZVNlcnZpY2Uuc2VhcmNoc3RheC5zZWFyY2hGYWNldHNXaWRnZXQ/Lm9uU2hvd01vcmVMZXNzQ2xpY2soZSwgZGF0YSwgdHJ1ZSlcbiAgfVxuXG4gIG9wZW5PdmVybGF5KGNvbnRleHQ6IHRoaXMpIHtcbiAgICBjb250ZXh0LnN0b3JlU2VydmljZVNlcnZpY2Uuc2VhcmNoc3RheC5zZWFyY2hGYWNldHNXaWRnZXQ/Lm9wZW5PdmVybGF5KCk7XG4gIH1cblxuICBjbG9zZU92ZXJsYXkoY29udGV4dDogdGhpcykge1xuICAgIGNvbnRleHQuc3RvcmVTZXJ2aWNlU2VydmljZS5zZWFyY2hzdGF4LnNlYXJjaEZhY2V0c1dpZGdldD8uY2xvc2VPdmVybGF5KCk7XG4gIH1cblxuICBmYWNldFZhbHVlcyhmYWNldDogSUZhY2V0RGF0YSkgOiBJRmFjZXRWYWx1ZURhdGFbXSB7XG4gICAgcmV0dXJuIGZhY2V0LnZhbHVlcyBhcyBJRmFjZXRWYWx1ZURhdGFbXTtcbiAgfVxuXG4gIGZhY2V0TW9iaWxlRGF0YShmYWNldDogSUZhY2V0c1RlbXBsYXRlRGF0YSB8IG51bGwpIDogYW55IHtcbiAgICByZXR1cm4gZmFjZXQgYXMgYW55XG4gIH1cbn1cbiIsIjxkaXYgW2lkXT1cIidzZWFyY2hzdGF4LWZhY2V0cy1jb250YWluZXInICsgcmFuZFwiPlxuICA8ZGl2XG4gICAgKm5nSWY9XCJmYWNldHNUZW1wbGF0ZURhdGFEZXNrdG9wPy5oYXNSZXN1bHRzT3JFeHRlcm5hbFByb21vdGlvbnMgJiYgIXRlbXBsYXRlT3ZlcnJpZGVEZXNrdG9wXCJcbiAgICBjbGFzcz1cInNlYXJjaHN0YXgtZmFjZXRzLWNvbnRhaW5lci1kZXNrdG9wXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwic2VhcmNoc3RheC1mYWNldC1jb250YWluZXJcIlxuICAgICAgKm5nRm9yPVwibGV0IGZhY2V0IG9mIGZhY2V0c1RlbXBsYXRlRGF0YURlc2t0b3A/LmZhY2V0c1wiXG4gICAgICBbY2xhc3NdPVwieyBhY3RpdmU6IGlzTm90RGVhY3RpdmF0ZWQoZmFjZXQubmFtZSwgY29udGV4dCkgfVwiXG4gICAgPlxuICAgICAgPGRpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaHN0YXgtZmFjZXQtdGl0bGUtY29udGFpbmVyXCIgKGNsaWNrKT1cInRvZ2dsZUZhY2V0R3JvdXAoZmFjZXQubmFtZSwgY29udGV4dClcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoc3RheC1mYWNldC10aXRsZVwiPnt7IGZhY2V0LmxhYmVsIH19PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaHN0YXgtZmFjZXQtdGl0bGUtYXJyb3cgYWN0aXZlXCI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoc3RheC1mYWNldC12YWx1ZXMtY29udGFpbmVyXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGZhY2V0VmFsdWUgb2YgZmFjZXRWYWx1ZXMoZmFjZXQpOyBpbmRleCBhcyBrZXlcIlxuICAgICAgICAgICAgY2xhc3M9XCJzZWFyY2hzdGF4LWZhY2V0LXZhbHVlLWNvbnRhaW5lclwiXG4gICAgICAgICAgICBbY2xhc3NdPVwieyAnc2VhcmNoc3RheC1mYWNldC12YWx1ZS1kaXNhYmxlZCc6IGZhY2V0VmFsdWUuZGlzYWJsZWQgfVwiXG4gICAgICAgICAgICAjcmVmXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaHN0YXgtZmFjZXQtaW5wdXRcIj5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNlYXJjaHN0YXgtZmFjZXQtaW5wdXQtY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImlzQ2hlY2tlZChmYWNldFZhbHVlLCBjb250ZXh0KVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZhY2V0VmFsdWUuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RGYWNldChyZWYsICRldmVudCwgZmFjZXRWYWx1ZSwgdHJ1ZSwgY29udGV4dClcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoc3RheC1mYWNldC12YWx1ZS1sYWJlbFwiIChjbGljayk9XCJzZWxlY3RGYWNldChyZWYsICRldmVudCwgZmFjZXRWYWx1ZSwgZmFsc2UsIGNvbnRleHQpXCI+XG4gICAgICAgICAgICAgIHt7IGZhY2V0VmFsdWUudmFsdWUgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaHN0YXgtZmFjZXQtdmFsdWUtY291bnRcIiAoY2xpY2spPVwic2VsZWN0RmFjZXQocmVmLCAkZXZlbnQsIGZhY2V0VmFsdWUsIGZhbHNlLCBjb250ZXh0KVwiPlxuICAgICAgICAgICAgICAoe3sgZmFjZXRWYWx1ZS5jb3VudCB9fSlcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2hzdGF4LWZhY2V0LXNob3ctbW9yZS1jb250YWluZXJcIiAqbmdJZj1cImZhY2V0Lmhhc01vcmVGYWNldHNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2hzdGF4LWZhY2V0LXNob3ctbW9yZS1jb250YWluZXJcIiAoY2xpY2spPVwic2hvd01vcmVMZXNzRGVza3RvcCgkZXZlbnQsIGZhY2V0LCBjb250ZXh0KVwiPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgKm5nSWY9XCJmYWNldC5zaG93aW5nQWxsRmFjZXRzXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNlYXJjaHN0YXgtZmFjZXQtc2hvdy1sZXNzLWJ1dHRvbiBzZWFyY2hzdGF4LWZhY2V0LXNob3ctYnV0dG9uXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIGxlc3NcbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFmYWNldC5zaG93aW5nQWxsRmFjZXRzXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNlYXJjaHN0YXgtZmFjZXQtc2hvdy1tb3JlLWJ1dHRvbiBzZWFyY2hzdGF4LWZhY2V0LXNob3ctYnV0dG9uXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIG1vcmVcbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCJmYWNldHNUZW1wbGF0ZURhdGFEZXNrdG9wPy5oYXNSZXN1bHRzT3JFeHRlcm5hbFByb21vdGlvbnMgJiYgdGVtcGxhdGVPdmVycmlkZURlc2t0b3BcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVtcGxhdGVPdmVycmlkZURlc2t0b3A7IGNvbnRleHQ6IGNvbnRleHRcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG5cbiAgPGRpdlxuICAgIGNsYXNzPVwic2VhcmNoc3RheC1mYWNldHMtY29udGFpbmVyLW1vYmlsZVwiXG4gICAgKm5nSWY9XCJmYWNldHNUZW1wbGF0ZURhdGFNb2JpbGU/Lmhhc1Jlc3VsdHNPckV4dGVybmFsUHJvbW90aW9ucyAmJiAhdGVtcGxhdGVPdmVycmlkZU1vYmlsZVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwic2VhcmNoc3RheC1mYWNldHMtcGlsbHMtY29udGFpbmVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoc3RheC1mYWNldHMtcGlsbCBzZWFyY2hzdGF4LWZhY2V0cy1waWxsLWZpbHRlci1ieVwiIChjbGljayk9XCJvcGVuT3ZlcmxheShjb250ZXh0KVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoc3RheC1mYWNldHMtcGlsbC1sYWJlbFwiPkZpbHRlciBCeTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoc3RheC1mYWNldHMtcGlsbHMtc2VsZWN0ZWRcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwic2VhcmNoc3RheC1mYWNldHMtcGlsbCBzZWFyY2hzdGF4LWZhY2V0cy1waWxsLWZhY2V0c1wiXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGZhY2V0IG9mIHNlbGVjdGVkRmFjZXRzQ2hlY2tib3hlc1wiXG4gICAgICAgICAgKGNsaWNrKT1cInVuc2VsZWN0RmFjZXQoZmFjZXQsIGNvbnRleHQpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2hzdGF4LWZhY2V0cy1waWxsLWxhYmVsXCI+e3sgZmFjZXQudmFsdWUgfX0gKHt7IGZhY2V0LmNvdW50IH19KTwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2hzdGF4LWZhY2V0cy1waWxsLWljb24tY2xvc2VcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJzZWFyY2hzdGF4LWZhY2V0cy1waWxsIHNlYXJjaHN0YXgtY2xlYXItZmlsdGVycyBzZWFyY2hzdGF4LWZhY2V0cy1waWxsLWNsZWFyLWFsbFwiXG4gICAgICAgICpuZ0lmPVwic2VsZWN0ZWRGYWNldHNDaGVja2JveGVzLmxlbmd0aFwiXG4gICAgICAgIChjbGljayk9XCJ1bnNlbGVjdEFsbChjb250ZXh0KVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2hzdGF4LWZhY2V0cy1waWxsLWxhYmVsXCI+Q2xlYXIgRmlsdGVyczwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJzZWFyY2hzdGF4LWZhY2V0cy1tb2JpbGUtb3ZlcmxheVwiXG4gICAgICBbY2xhc3NdPVwieyAnc2VhcmNoc3RheC1zaG93JzogZmFjZXRNb2JpbGVEYXRhKGZhY2V0c1RlbXBsYXRlRGF0YU1vYmlsZSk/Lm92ZXJsYXlPcGVuZWQgfVwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaHN0YXgtZmFjZXRzLW1vYmlsZS1vdmVybGF5LWhlYWRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoc3RheC1mYWNldHMtbW9iaWxlLW92ZXJsYXktaGVhZGVyLXRpdGxlXCI+RmlsdGVyIEJ5PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2hzdGF4LXNlYXJjaC1jbG9zZVwiIChjbGljayk9XCJjbG9zZU92ZXJsYXkoY29udGV4dClcIj48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaHN0YXgtZmFjZXRzLWNvbnRhaW5lci1tb2JpbGVcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0Zvcj1cImxldCBmYWNldCBvZiBmYWNldHNUZW1wbGF0ZURhdGFNb2JpbGU/LmZhY2V0c1wiXG4gICAgICAgICAgY2xhc3M9XCJzZWFyY2hzdGF4LWZhY2V0LWNvbnRhaW5lclwiXG4gICAgICAgICAgW2NsYXNzXT1cInsgYWN0aXZlOiBpc05vdERlYWN0aXZhdGVkKGZhY2V0Lm5hbWUsIGNvbnRleHQpIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2hzdGF4LWZhY2V0LXRpdGxlLWNvbnRhaW5lclwiIChjbGljayk9XCJ0b2dnbGVGYWNldEdyb3VwKGZhY2V0Lm5hbWUsIGNvbnRleHQpXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2hzdGF4LWZhY2V0LXRpdGxlXCI+e3sgZmFjZXQubGFiZWwgfX08L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaHN0YXgtZmFjZXQtdGl0bGUtYXJyb3cgYWN0aXZlXCI+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2hzdGF4LWZhY2V0LXZhbHVlcy1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBmYWNldFZhbHVlIG9mIGZhY2V0VmFsdWVzKGZhY2V0KTsgaW5kZXggYXMga2V5XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNlYXJjaHN0YXgtZmFjZXQtdmFsdWUtY29udGFpbmVyXCJcbiAgICAgICAgICAgICAgICBbY2xhc3NdPVwieyAnc2VhcmNoc3RheC1mYWNldC12YWx1ZS1kaXNhYmxlZCc6IGZhY2V0VmFsdWUuZGlzYWJsZWQgfVwiXG4gICAgICAgICAgICAgICAgI3JlZlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaHN0YXgtZmFjZXQtaW5wdXRcIj5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNlYXJjaHN0YXgtZmFjZXQtaW5wdXQtY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc0NoZWNrZWQoZmFjZXRWYWx1ZSwgY29udGV4dClcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmFjZXRWYWx1ZS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RGYWNldChyZWYsICRldmVudCwgZmFjZXRWYWx1ZSwgdHJ1ZSwgY29udGV4dClcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInNlYXJjaHN0YXgtZmFjZXQtdmFsdWUtbGFiZWxcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEZhY2V0KHJlZiwgJGV2ZW50LCBmYWNldFZhbHVlLCBmYWxzZSwgY29udGV4dClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt7IGZhY2V0VmFsdWUudmFsdWUgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInNlYXJjaHN0YXgtZmFjZXQtdmFsdWUtY291bnRcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEZhY2V0KHJlZiwgJGV2ZW50LCBmYWNldFZhbHVlLCBmYWxzZSwgY29udGV4dClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICh7eyBmYWNldFZhbHVlLmNvdW50IH19KVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaHN0YXgtZmFjZXQtc2hvdy1tb3JlLWNvbnRhaW5lclwiICpuZ0lmPVwiZmFjZXQuaGFzTW9yZUZhY2V0c1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2hzdGF4LWZhY2V0LXNob3ctbW9yZS1jb250YWluZXJcIiAoY2xpY2spPVwic2hvd01vcmVMZXNzRGVza3RvcCgkZXZlbnQsIGZhY2V0LCBjb250ZXh0KVwiPlxuICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImZhY2V0LnNob3dpbmdBbGxGYWNldHNcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNlYXJjaHN0YXgtZmFjZXQtc2hvdy1sZXNzLWJ1dHRvbiBzZWFyY2hzdGF4LWZhY2V0LXNob3ctYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgbGVzc1xuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWZhY2V0LnNob3dpbmdBbGxGYWNldHNcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNlYXJjaHN0YXgtZmFjZXQtc2hvdy1tb3JlLWJ1dHRvbiBzZWFyY2hzdGF4LWZhY2V0LXNob3ctYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgbW9yZVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwic2VhcmNoc3RheC1mYWNldHMtbW9iaWxlLW92ZXJsYXktZG9uZVwiIChjbGljayk9XCJjbG9zZU92ZXJsYXkoY29udGV4dClcIj5Eb25lPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiZmFjZXRzVGVtcGxhdGVEYXRhTW9iaWxlPy5oYXNSZXN1bHRzT3JFeHRlcm5hbFByb21vdGlvbnMgJiYgdGVtcGxhdGVPdmVycmlkZU1vYmlsZVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZU92ZXJyaWRlTW9iaWxlOyBjb250ZXh0OiBjb250ZXh0XCI+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -0,0 +1,41 @@
1
+ import { Component, Input } from "@angular/core";
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../../services/store-service.service";
4
+ import * as i2 from "@angular/common";
5
+ export class SearchstaxSearchFeedbackWidget {
6
+ constructor(storeServiceService) {
7
+ this.storeServiceService = storeServiceService;
8
+ this.searchFeedbackData = null;
9
+ this.rand = Math.random();
10
+ this.context = this;
11
+ }
12
+ ngOnInit() {
13
+ if (this.storeServiceService.searchstax) {
14
+ this.attachObservables();
15
+ setTimeout(() => {
16
+ this.storeServiceService.searchstax.addSearchFeedbackWidget("search-feedback-container" + this.rand, {});
17
+ }, 0);
18
+ }
19
+ else {
20
+ throw Error("Searchstax instance needs to be passed via props");
21
+ }
22
+ }
23
+ onOriginalQueryClick(e, context) {
24
+ e.stopImmediatePropagation();
25
+ context.storeServiceService.searchstax.searchFeedbackWidget?.onOriginalQueryClick(e);
26
+ }
27
+ attachObservables() {
28
+ this.storeServiceService.searchstax.dataLayer.$searchFeedbackData.subscribe((searchFeedbackData) => {
29
+ this.searchFeedbackData = searchFeedbackData;
30
+ });
31
+ }
32
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: SearchstaxSearchFeedbackWidget, deps: [{ token: i1.StoreServiceService }], target: i0.ɵɵFactoryTarget.Component }); }
33
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.11", type: SearchstaxSearchFeedbackWidget, selector: "app-searchstax-search-feedback", inputs: { templateOverride: "templateOverride" }, ngImport: i0, template: "<div\n class=\"search-feedback-container\"\n [id]=\"'search-feedback-container' + rand\"\n>\n <div\n class=\"searchstax-feedback-container\"\n *ngIf=\"\n searchFeedbackData &&\n searchFeedbackData?.searchExecuted &&\n !templateOverride &&\n searchFeedbackData?.totalResults\n \"\n >\n Showing\n <b\n >{{ searchFeedbackData!.startResultIndex }} -\n {{ searchFeedbackData!.endResultIndex }}</b\n >\n of <b>{{ searchFeedbackData!.totalResults }}</b> results\n <span *ngIf=\"searchFeedbackData.searchTerm\"\n >for \"<b>{{ searchFeedbackData!.searchTerm }}</b\n >\"\n </span>\n <div class=\"searchstax-feedback-container-suggested\">\n <div *ngIf=\"searchFeedbackData.autoCorrectedQuery\">\n Search instead for\n <a\n href=\"#\"\n (click)=\"onOriginalQueryClick($event, context)\"\n class=\"searchstax-feedback-original-query\"\n >{{ searchFeedbackData!.originalQuery }}</a\n >\n </div>\n </div>\n </div>\n\n <div\n *ngIf=\"\n searchFeedbackData &&\n searchFeedbackData?.searchExecuted &&\n templateOverride &&\n searchFeedbackData?.totalResults\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"templateOverride; context: context\"\n ></ng-container>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
34
+ }
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: SearchstaxSearchFeedbackWidget, decorators: [{
36
+ type: Component,
37
+ args: [{ selector: "app-searchstax-search-feedback", template: "<div\n class=\"search-feedback-container\"\n [id]=\"'search-feedback-container' + rand\"\n>\n <div\n class=\"searchstax-feedback-container\"\n *ngIf=\"\n searchFeedbackData &&\n searchFeedbackData?.searchExecuted &&\n !templateOverride &&\n searchFeedbackData?.totalResults\n \"\n >\n Showing\n <b\n >{{ searchFeedbackData!.startResultIndex }} -\n {{ searchFeedbackData!.endResultIndex }}</b\n >\n of <b>{{ searchFeedbackData!.totalResults }}</b> results\n <span *ngIf=\"searchFeedbackData.searchTerm\"\n >for \"<b>{{ searchFeedbackData!.searchTerm }}</b\n >\"\n </span>\n <div class=\"searchstax-feedback-container-suggested\">\n <div *ngIf=\"searchFeedbackData.autoCorrectedQuery\">\n Search instead for\n <a\n href=\"#\"\n (click)=\"onOriginalQueryClick($event, context)\"\n class=\"searchstax-feedback-original-query\"\n >{{ searchFeedbackData!.originalQuery }}</a\n >\n </div>\n </div>\n </div>\n\n <div\n *ngIf=\"\n searchFeedbackData &&\n searchFeedbackData?.searchExecuted &&\n templateOverride &&\n searchFeedbackData?.totalResults\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"templateOverride; context: context\"\n ></ng-container>\n </div>\n</div>\n" }]
38
+ }], ctorParameters: function () { return [{ type: i1.StoreServiceService }]; }, propDecorators: { templateOverride: [{
39
+ type: Input
40
+ }] } });
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoc3RheC1zZWFyY2gtb3ZlcnZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2VhcmNoc3RheC1pbmMvc2VhcmNoc3R1ZGlvLXV4LWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3NlYXJjaHN0YXgtc2VhcmNoLW92ZXJ2aWV3L3NlYXJjaHN0YXgtc2VhcmNoLW92ZXJ2aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NlYXJjaHN0YXgtaW5jL3NlYXJjaHN0dWRpby11eC1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9zZWFyY2hzdGF4LXNlYXJjaC1vdmVydmlldy9zZWFyY2hzdGF4LXNlYXJjaC1vdmVydmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBdUIsTUFBTSxlQUFlLENBQUM7Ozs7QUFTdEUsTUFBTSxPQUFPLDhCQUE4QjtJQU16QyxZQUFvQixtQkFBd0M7UUFBeEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUg1RCx1QkFBa0IsR0FBeUMsSUFBSSxDQUFDO1FBQ2hFLFNBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDckIsWUFBTyxHQUFHLElBQUksQ0FBQztJQUNnRCxDQUFDO0lBRWhFLFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLEVBQUU7WUFDdkMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDekIsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLHVCQUF1QixDQUFDLDJCQUEyQixHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDM0csQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ1A7YUFBTTtZQUNMLE1BQU0sS0FBSyxDQUFDLGtEQUFrRCxDQUFDLENBQUM7U0FDakU7SUFDSCxDQUFDO0lBRUQsb0JBQW9CLENBQUMsQ0FBUSxFQUFFLE9BQWE7UUFDMUMsQ0FBQyxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDN0IsT0FBTyxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUN6RSxDQUFDLGtCQUF3RCxFQUFFLEVBQUU7WUFDM0QsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGtCQUFrQixDQUFDO1FBQy9DLENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQzsrR0E5QlUsOEJBQThCO21HQUE5Qiw4QkFBOEIsd0hDVDNDLHEwQ0FpREE7OzRGRHhDYSw4QkFBOEI7a0JBTDFDLFNBQVM7K0JBQ0UsZ0NBQWdDOzBHQUtqQyxnQkFBZ0I7c0JBQXhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIFRlbXBsYXRlUmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IElTZWFyY2hzdGF4U2VhcmNoRmVlZGJhY2tEYXRhIH0gZnJvbSBcIkBzZWFyY2hzdGF4LWluYy9zZWFyY2hzdHVkaW8tdXgtanNcIjtcbmltcG9ydCB7IFN0b3JlU2VydmljZVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvc3RvcmUtc2VydmljZS5zZXJ2aWNlXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJhcHAtc2VhcmNoc3RheC1zZWFyY2gtZmVlZGJhY2tcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9zZWFyY2hzdGF4LXNlYXJjaC1vdmVydmlldy5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZXM6IFtdLFxufSlcbmV4cG9ydCBjbGFzcyBTZWFyY2hzdGF4U2VhcmNoRmVlZGJhY2tXaWRnZXQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSB0ZW1wbGF0ZU92ZXJyaWRlPzogVGVtcGxhdGVSZWY8YW55PjtcblxuICBzZWFyY2hGZWVkYmFja0RhdGE6IG51bGwgfCBJU2VhcmNoc3RheFNlYXJjaEZlZWRiYWNrRGF0YSA9IG51bGw7XG4gIHJhbmQgPSBNYXRoLnJhbmRvbSgpO1xuICBjb250ZXh0ID0gdGhpcztcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yZVNlcnZpY2VTZXJ2aWNlOiBTdG9yZVNlcnZpY2VTZXJ2aWNlKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0b3JlU2VydmljZVNlcnZpY2Uuc2VhcmNoc3RheCkge1xuICAgICAgdGhpcy5hdHRhY2hPYnNlcnZhYmxlcygpO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuc3RvcmVTZXJ2aWNlU2VydmljZS5zZWFyY2hzdGF4LmFkZFNlYXJjaEZlZWRiYWNrV2lkZ2V0KFwic2VhcmNoLWZlZWRiYWNrLWNvbnRhaW5lclwiICsgdGhpcy5yYW5kLCB7fSk7XG4gICAgICB9LCAwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgRXJyb3IoXCJTZWFyY2hzdGF4IGluc3RhbmNlIG5lZWRzIHRvIGJlIHBhc3NlZCB2aWEgcHJvcHNcIik7XG4gICAgfVxuICB9XG5cbiAgb25PcmlnaW5hbFF1ZXJ5Q2xpY2soZTogRXZlbnQsIGNvbnRleHQ6IHRoaXMpIHtcbiAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgIGNvbnRleHQuc3RvcmVTZXJ2aWNlU2VydmljZS5zZWFyY2hzdGF4LnNlYXJjaEZlZWRiYWNrV2lkZ2V0Py5vbk9yaWdpbmFsUXVlcnlDbGljayhlKTtcbiAgfVxuXG4gIGF0dGFjaE9ic2VydmFibGVzKCkge1xuICAgIHRoaXMuc3RvcmVTZXJ2aWNlU2VydmljZS5zZWFyY2hzdGF4LmRhdGFMYXllci4kc2VhcmNoRmVlZGJhY2tEYXRhLnN1YnNjcmliZShcbiAgICAgIChzZWFyY2hGZWVkYmFja0RhdGE6IG51bGwgfCBJU2VhcmNoc3RheFNlYXJjaEZlZWRiYWNrRGF0YSkgPT4ge1xuICAgICAgICB0aGlzLnNlYXJjaEZlZWRiYWNrRGF0YSA9IHNlYXJjaEZlZWRiYWNrRGF0YTtcbiAgICAgIH1cbiAgICApO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwic2VhcmNoLWZlZWRiYWNrLWNvbnRhaW5lclwiXG4gIFtpZF09XCInc2VhcmNoLWZlZWRiYWNrLWNvbnRhaW5lcicgKyByYW5kXCJcbj5cbiAgPGRpdlxuICAgIGNsYXNzPVwic2VhcmNoc3RheC1mZWVkYmFjay1jb250YWluZXJcIlxuICAgICpuZ0lmPVwiXG4gICAgICBzZWFyY2hGZWVkYmFja0RhdGEgJiZcbiAgICAgIHNlYXJjaEZlZWRiYWNrRGF0YT8uc2VhcmNoRXhlY3V0ZWQgJiZcbiAgICAgICF0ZW1wbGF0ZU92ZXJyaWRlICYmXG4gICAgICBzZWFyY2hGZWVkYmFja0RhdGE/LnRvdGFsUmVzdWx0c1xuICAgIFwiXG4gID5cbiAgICBTaG93aW5nXG4gICAgPGJcbiAgICAgID57eyBzZWFyY2hGZWVkYmFja0RhdGEhLnN0YXJ0UmVzdWx0SW5kZXggfX0gLVxuICAgICAge3sgc2VhcmNoRmVlZGJhY2tEYXRhIS5lbmRSZXN1bHRJbmRleCB9fTwvYlxuICAgID5cbiAgICBvZiA8Yj57eyBzZWFyY2hGZWVkYmFja0RhdGEhLnRvdGFsUmVzdWx0cyB9fTwvYj4gcmVzdWx0c1xuICAgIDxzcGFuICpuZ0lmPVwic2VhcmNoRmVlZGJhY2tEYXRhLnNlYXJjaFRlcm1cIlxuICAgICAgPmZvciBcIjxiPnt7IHNlYXJjaEZlZWRiYWNrRGF0YSEuc2VhcmNoVGVybSB9fTwvYlxuICAgICAgPlwiXG4gICAgPC9zcGFuPlxuICAgIDxkaXYgY2xhc3M9XCJzZWFyY2hzdGF4LWZlZWRiYWNrLWNvbnRhaW5lci1zdWdnZXN0ZWRcIj5cbiAgICAgIDxkaXYgKm5nSWY9XCJzZWFyY2hGZWVkYmFja0RhdGEuYXV0b0NvcnJlY3RlZFF1ZXJ5XCI+XG4gICAgICAgIFNlYXJjaCBpbnN0ZWFkIGZvclxuICAgICAgICA8YVxuICAgICAgICAgIGhyZWY9XCIjXCJcbiAgICAgICAgICAoY2xpY2spPVwib25PcmlnaW5hbFF1ZXJ5Q2xpY2soJGV2ZW50LCBjb250ZXh0KVwiXG4gICAgICAgICAgY2xhc3M9XCJzZWFyY2hzdGF4LWZlZWRiYWNrLW9yaWdpbmFsLXF1ZXJ5XCJcbiAgICAgICAgICA+e3sgc2VhcmNoRmVlZGJhY2tEYXRhIS5vcmlnaW5hbFF1ZXJ5IH19PC9hXG4gICAgICAgID5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2XG4gICAgKm5nSWY9XCJcbiAgICAgIHNlYXJjaEZlZWRiYWNrRGF0YSAmJlxuICAgICAgc2VhcmNoRmVlZGJhY2tEYXRhPy5zZWFyY2hFeGVjdXRlZCAmJlxuICAgICAgdGVtcGxhdGVPdmVycmlkZSAmJlxuICAgICAgc2VhcmNoRmVlZGJhY2tEYXRhPy50b3RhbFJlc3VsdHNcbiAgICBcIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZU92ZXJyaWRlOyBjb250ZXh0OiBjb250ZXh0XCJcbiAgICA+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=