@searchstax-inc/searchstudio-ux-angular 1.2.53 → 4.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 (35) hide show
  1. package/CHANGELOG.md +16 -1
  2. package/README.md +1224 -687
  3. package/package.json +5 -2
  4. package/esm2022/lib/components/searchstax-input/searchstax-input.component.mjs +0 -115
  5. package/esm2022/lib/components/searchstax-results/searchstax-results.component.mjs +0 -83
  6. package/esm2022/lib/components/searchstax-search-answer/searchstax-search-answer.component.mjs +0 -46
  7. package/esm2022/lib/components/searchstax-search-external/searchstax-search-external.component.mjs +0 -40
  8. package/esm2022/lib/components/searchstax-search-facets/searchstax-search-facets.component.mjs +0 -112
  9. package/esm2022/lib/components/searchstax-search-location/searchstax-search-location.component.mjs +0 -92
  10. package/esm2022/lib/components/searchstax-search-overview/searchstax-search-overview.component.mjs +0 -41
  11. package/esm2022/lib/components/searchstax-search-pagination/searchstax-search-pagination.component.mjs +0 -62
  12. package/esm2022/lib/components/searchstax-search-related/searchstax-search-related.component.mjs +0 -44
  13. package/esm2022/lib/components/searchstax-search-sorting/searchstax-search-sorting.component.mjs +0 -46
  14. package/esm2022/lib/components/searchstax-wrapper.component.mjs +0 -93
  15. package/esm2022/lib/searchstudio-ux-angular.module.mjs +0 -73
  16. package/esm2022/lib/services/store-service.service.mjs +0 -17
  17. package/esm2022/public-api.mjs +0 -17
  18. package/esm2022/searchstax-inc-searchstudio-ux-angular.mjs +0 -5
  19. package/fesm2022/searchstax-inc-searchstudio-ux-angular.mjs +0 -818
  20. package/fesm2022/searchstax-inc-searchstudio-ux-angular.mjs.map +0 -1
  21. package/index.d.ts +0 -5
  22. package/lib/components/searchstax-input/searchstax-input.component.d.ts +0 -27
  23. package/lib/components/searchstax-results/searchstax-results.component.d.ts +0 -26
  24. package/lib/components/searchstax-search-answer/searchstax-search-answer.component.d.ts +0 -19
  25. package/lib/components/searchstax-search-external/searchstax-search-external.component.d.ts +0 -17
  26. package/lib/components/searchstax-search-facets/searchstax-search-facets.component.d.ts +0 -37
  27. package/lib/components/searchstax-search-location/searchstax-search-location.component.d.ts +0 -33
  28. package/lib/components/searchstax-search-overview/searchstax-search-overview.component.d.ts +0 -17
  29. package/lib/components/searchstax-search-pagination/searchstax-search-pagination.component.d.ts +0 -21
  30. package/lib/components/searchstax-search-related/searchstax-search-related.component.d.ts +0 -19
  31. package/lib/components/searchstax-search-sorting/searchstax-search-sorting.component.d.ts +0 -18
  32. package/lib/components/searchstax-wrapper.component.d.ts +0 -31
  33. package/lib/searchstudio-ux-angular.module.d.ts +0 -19
  34. package/lib/services/store-service.service.d.ts +0 -8
  35. package/public-api.d.ts +0 -13
@@ -1,112 +0,0 @@
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 (context.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: "17.3.12", ngImport: i0, type: SearchstaxSearchFacetsWidget, deps: [{ token: i1.StoreServiceService }], target: i0.ɵɵFactoryTarget.Component }); }
94
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", 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 [attr.aria-label]=\"facetValue.value + ' ' + facetValue.count\"\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)\" (keyup.enter)=\"showMoreLessDesktop($event, facet, context)\" (keyup.space)=\"showMoreLessDesktop($event, facet, context)\" tabindex=\"0\">\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 [attr.aria-label]=\"facetValue.value + ' ' + facetValue.count\"\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)=\"showMoreLessMobile($event, facet, context)\" (keyup.enter)=\"showMoreLessMobile($event, facet, context)\" (keyup.space)=\"showMoreLessMobile($event, facet, context)\" tabindex=\"0\">\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: "17.3.12", 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 [attr.aria-label]=\"facetValue.value + ' ' + facetValue.count\"\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)\" (keyup.enter)=\"showMoreLessDesktop($event, facet, context)\" (keyup.space)=\"showMoreLessDesktop($event, facet, context)\" tabindex=\"0\">\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 [attr.aria-label]=\"facetValue.value + ' ' + facetValue.count\"\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)=\"showMoreLessMobile($event, facet, context)\" (keyup.enter)=\"showMoreLessMobile($event, facet, context)\" (keyup.space)=\"showMoreLessMobile($event, facet, context)\" tabindex=\"0\">\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: () => [{ 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoc3RheC1zZWFyY2gtZmFjZXRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NlYXJjaHN0YXgtaW5jL3NlYXJjaHN0dWRpby11eC1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9zZWFyY2hzdGF4LXNlYXJjaC1mYWNldHMvc2VhcmNoc3RheC1zZWFyY2gtZmFjZXRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NlYXJjaHN0YXgtaW5jL3NlYXJjaHN0dWRpby11eC1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9zZWFyY2hzdGF4LXNlYXJjaC1mYWNldHMvc2VhcmNoc3RheC1zZWFyY2gtZmFjZXRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUEyRCxNQUFNLGVBQWUsQ0FBQzs7OztBQVN0SCxNQUFNLE9BQU8sNEJBQTRCO0lBZXZDLDJFQUEyRTtJQUMzRSxZQUFvQixtQkFBd0M7UUFBeEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQVI1RCw4QkFBeUIsR0FBK0IsSUFBSSxDQUFDO1FBQzdELDZCQUF3QixHQUErQixJQUFJLENBQUM7UUFDNUQsWUFBTyxHQUFHLElBQUksQ0FBQztRQUNmLDZCQUF3QixHQUFrQixFQUFFLENBQUM7UUFDN0Msd0JBQW1CLEdBQXVCLEVBQUUsQ0FBQztRQUM3QyxTQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBRzBDLENBQUM7SUFFaEUsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsRUFBRTtZQUN2QyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUN6QixVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNu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WUFBWTtzQkFBcEIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkluaXQsIFF1ZXJ5TGlzdCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgVmlld0NoaWxkcmVuIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IElGYWNldERhdGEsIElGYWNldFZhbHVlLCBJRmFjZXRWYWx1ZURhdGEsIElGYWNldFZhbHVlUmFuZ2UsIElGYWNldHNUZW1wbGF0ZURhdGEsIElQYWdpbmF0aW9uRGF0YSwgSVNlYXJjaE9iamVjdCB9IGZyb20gXCJAc2VhcmNoc3RheC1pbmMvc2VhcmNoc3R1ZGlvLXV4LWpzXCI7XG5pbXBvcnQgeyBTdG9yZVNlcnZpY2VTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3N0b3JlLXNlcnZpY2Uuc2VydmljZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiYXBwLXNlYXJjaHN0YXgtc2VhcmNoLWZhY2V0c1wiLFxuICB0ZW1wbGF0ZVVybDogXCIuL3NlYXJjaHN0YXgtc2VhcmNoLWZhY2V0cy5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZXM6IFtdLFxufSlcbmV4cG9ydCBjbGFzcyBTZWFyY2hzdGF4U2VhcmNoRmFjZXRzV2lkZ2V0IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgdGVtcGxhdGVPdmVycmlkZU1vYmlsZT86IFRlbXBsYXRlUmVmPGFueT47XG4gIEBJbnB1dCgpIHRlbXBsYXRlT3ZlcnJpZGVEZXNrdG9wPzogVGVtcGxhdGVSZWY8YW55PjtcbiAgQElucHV0KCkgZmFjZXRpbmdUeXBlITogXCJhbmRcIiB8IFwib3JcIiB8IFwic2hvd1VuYXZhaWxhYmxlXCIgfCBcInRhYnNcIjtcbiAgQElucHV0KCkgaXRlbXNQZXJQYWdlRGVza3RvcCE6IG51bWJlcjtcbiAgQElucHV0KCkgaXRlbXNQZXJQYWdlTW9iaWxlITogbnVtYmVyO1xuICBASW5wdXQoKSBzcGVjaWZpY0ZhY2V0cyE6IHN0cmluZ1tdO1xuXG4gIGZhY2V0c1RlbXBsYXRlRGF0YURlc2t0b3A6IG51bGwgfCBJRmFjZXRzVGVtcGxhdGVEYXRhID0gbnVsbDtcbiAgZmFjZXRzVGVtcGxhdGVEYXRhTW9iaWxlOiBudWxsIHwgSUZhY2V0c1RlbXBsYXRlRGF0YSA9IG51bGw7XG4gIGNvbnRleHQgPSB0aGlzO1xuICBzZWxlY3RlZEZhY2V0c0NoZWNrYm94ZXM6IElGYWNldFZhbHVlW10gPSBbXTtcbiAgc2VsZWN0ZWRGYWNldHNSYW5nZTogSUZhY2V0VmFsdWVSYW5nZVtdID0gW107XG4gIHJhbmQgPSBNYXRoLnJhbmRvbSgpO1xuXG4gIC8vIEBWaWV3Q2hpbGRyZW4oXCJmYWNldENvbnRhaW5lcnNcIikgZmFjZXRDb250YWluZXJzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmVTZXJ2aWNlU2VydmljZTogU3RvcmVTZXJ2aWNlU2VydmljZSkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdG9yZVNlcnZpY2VTZXJ2aWNlLnNlYXJjaHN0YXgpIHtcbiAgICAgIHRoaXMuYXR0YWNoT2JzZXJ2YWJsZXMoKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmFkZFdpZGdldCgpO1xuICAgICAgfSwgMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IEVycm9yKFwiU2VhcmNoc3RheCBpbnN0YW5jZSBuZWVkcyB0byBiZSBwYXNzZWQgdmlhIHByb3BzXCIpO1xuICAgIH1cbiAgfVxuXG4gIGFkZFdpZGdldCgpIHtcbiAgICB0aGlzLnN0b3JlU2VydmljZVNlcnZpY2Uuc2VhcmNoc3RheC5hZGRGYWNldHNXaWRnZXQoJ3NlYXJjaHN0YXgtZmFjZXRzLWNvbnRhaW5lcicgKyB0aGlzLnJhbmQsIHtcbiAgICAgIGZhY2V0aW5nVHlwZTogdGhpcy5mYWNldGluZ1R5cGUsXG4gICAgICBzcGVjaWZpY0ZhY2V0czogdGhpcy5zcGVjaWZpY0ZhY2V0cyxcbiAgICAgIGl0ZW1zUGVyUGFnZURlc2t0b3A6IHRoaXMuaXRlbXNQZXJQYWdlRGVza3RvcCxcbiAgICAgIGl0ZW1zUGVyUGFnZU1vYmlsZTogdGhpcy5pdGVtc1BlclBhZ2VNb2JpbGVcbiAgICB9KVxuICB9XG5cbiAgYXR0YWNoT2JzZXJ2YWJsZXMoKSB7XG4gICAgdGhpcy5zdG9yZVNlcnZpY2VTZXJ2aWNlLnNlYXJjaHN0YXguZGF0YUxheWVyLiRmYWNldHNUZW1wbGF0ZURhdGEuc3Vic2NyaWJlKFxuICAgICAgKGRhdGE6IG51bGwgfCBJRmFjZXRzVGVtcGxhdGVEYXRhKSA9PiB7XG4gICAgICAgIGlmIChkYXRhPy5pc01vYmlsZSkge1xuICAgICAgICAgIHRoaXMuZmFjZXRzVGVtcGxhdGVEYXRhTW9iaWxlID0gZGF0YTtcblxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZmFjZXRzVGVtcGxhdGVEYXRhRGVza3RvcCA9IGRhdGE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuXG4gICAgdGhpcy5zdG9yZVNlcnZpY2VTZXJ2aWNlLnNlYXJjaHN0YXguZGF0YUxheWVyLiRzZWxlY3RlZEZhY2V0c1RlbXBsYXRlRGF0YS5zdWJzY3JpYmUoXG4gICAgICAoZGF0YTogbnVsbCB8IChJRmFjZXRWYWx1ZSB8IElGYWNldFZhbHVlUmFuZ2UpW10pID0+IHtcbiAgICAgICAgY29uc3QgZGEgPSBkYXRhID8/IFtdO1xuICAgICAgICB0aGlzLnNlbGVjdGVkRmFjZXRzQ2hlY2tib3hlcyA9IGRhLmZpbHRlcigoZCkgPT4gZC50eXBlID09PSAnY2hlY2tib3gnKSBhcyBJRmFjZXRWYWx1ZVtdO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuXG4gIHVuc2VsZWN0RmFjZXQoZmFjZXQ6IElGYWNldFZhbHVlLCBjb250ZXh0OiB0aGlzKSB7XG4gICAgY29udGV4dC5zdG9yZVNlcnZpY2VTZXJ2aWNlLnNlYXJjaHN0YXguc2VhcmNoRmFjZXRzV2lkZ2V0Py51bnNlbGVjdEZhY2V0KGZhY2V0KVxuICB9XG5cbiAgdW5zZWxlY3RBbGwoY29udGV4dDogdGhpcykge1xuICAgIGNvbnRleHQuc3RvcmVTZXJ2aWNlU2VydmljZS5zZWFyY2hzdGF4LnNlYXJjaEZhY2V0c1dpZGdldD8ucmVtb3ZlU2VsZWN0ZWRGYWNldHMoKVxuICB9XG5cbiAgaXNOb3REZWFjdGl2YXRlZChuYW1lOiBzdHJpbmcsIGNvbnRleHQ6IHRoaXMpIHtcbiAgICByZXR1cm4gIWNvbnRleHQuc3RvcmVTZXJ2aWNlU2VydmljZS5zZWFyY2hzdGF4LnNlYXJjaEZhY2V0c1dpZGdldD8uZGVhY3RpdmF0ZWRGYWNldHNbbmFtZV1cbiAgfVxuXG4gIHRvZ2dsZUZhY2V0R3JvdXAobmFtZTogc3RyaW5nLCBjb250ZXh0OiB0aGlzKSB7XG4gICAgaWYoY29udGV4dC5zdG9yZVNlcnZpY2VTZXJ2aWNlLnNlYXJjaHN0YXguc2VhcmNoRmFjZXRzV2lkZ2V0KVxuICAgIGlmIChjb250ZXh0LmlzTm90RGVhY3RpdmF0ZWQobmFtZSwgY29udGV4dCkpIHtcbiAgICAgIGNvbnRleHQuc3RvcmVTZXJ2aWNlU2VydmljZS5zZWFyY2hzdGF4LnNlYXJjaEZhY2V0c1dpZGdldC5kZWFjdGl2YXRlZEZhY2V0c1tuYW1lXSA9IHRydWVcbiAgICB9IGVsc2Uge1xuICAgICAgY29udGV4dC5zdG9yZVNlcnZpY2VTZXJ2aWNlLnNlYXJjaHN0YXguc2VhcmNoRmFjZXRzV2lkZ2V0LmRlYWN0aXZhdGVkRmFjZXRzW25hbWVdID0gZmFsc2VcbiAgICB9XG4gIH1cblxuICBpc0NoZWNrZWQoZmFjZXRWYWx1ZTogSUZhY2V0VmFsdWVEYXRhLCBjb250ZXh0OiB0aGlzKSB7XG4gICAgcmV0dXJuIGNvbnRleHQuc3RvcmVTZXJ2aWNlU2VydmljZS5zZWFyY2hzdGF4LnNlYXJjaEZhY2V0c1dpZGdldD8uaXNDaGVja2VkKGZhY2V0VmFsdWUpXG4gIH1cblxuICBzZWxlY3RGYWNldChlbDogSFRNTERpdkVsZW1lbnQsIGV2ZW50OiBFdmVudCwgZGF0YTogSUZhY2V0VmFsdWVEYXRhLCBpc0lucHV0OiBib29sZWFuLCBjb250ZXh0OiB0aGlzKSB7XG4gICAgY29uc3Qgd3JhcHBlckRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHdyYXBwZXJEaXYuaW5uZXJIVE1MID0gZWwub3V0ZXJIVE1MO1xuICAgIGNvbnRleHQuc3RvcmVTZXJ2aWNlU2VydmljZS5zZWFyY2hzdGF4LnNlYXJjaEZhY2V0c1dpZGdldD8ub25GYWNldFNlbGVjdChldmVudCwgZGF0YSwgZWwsIGlzSW5wdXQpXG5cbiAgfVxuXG4gIHNob3dNb3JlTGVzc0Rlc2t0b3AoZTogRXZlbnQsIGRhdGE6IElGYWNldERhdGEsIGNvbnRleHQ6IHRoaXMpIHtcbiAgICBjb250ZXh0LnN0b3JlU2VydmljZVNlcnZpY2Uuc2VhcmNoc3RheC5zZWFyY2hGYWNldHNXaWRnZXQ/Lm9uU2hvd01vcmVMZXNzQ2xpY2soZSwgZGF0YSwgZmFsc2UpXG4gIH1cblxuICBzaG93TW9yZUxlc3NNb2JpbGUoZTogRXZlbnQsIGRhdGE6IElGYWNldERhdGEsIGNvbnRleHQ6IHRoaXMpIHtcbiAgICBjb250ZXh0LnN0b3JlU2VydmljZVNlcnZpY2Uuc2VhcmNoc3RheC5zZWFyY2hGYWNldHNXaWRnZXQ/Lm9uU2hvd01vcmVMZXNzQ2xpY2soZSwgZGF0YSwgdHJ1ZSlcbiAgfVxuXG4gIG9wZW5PdmVybGF5KGNvbnRleHQ6IHRoaXMpIHtcbiAgICBjb250ZXh0LnN0b3JlU2VydmljZVNlcnZpY2Uuc2VhcmNoc3RheC5zZWFyY2hGYWNldHNXaWRnZXQ/Lm9wZW5PdmVybGF5KCk7XG4gIH1cblxuICBjbG9zZU92ZXJsYXkoY29udGV4dDogdGhpcykge1xuICAgIGNvbnRleHQuc3RvcmVTZXJ2aWNlU2VydmljZS5zZWFyY2hzdGF4LnNlYXJjaEZhY2V0c1dpZGdldD8uY2xvc2VPdmVybGF5KCk7XG4gIH1cblxuICBmYWNldFZhbHVlcyhmYWNldDogSUZhY2V0RGF0YSkgOiBJRmFjZXRWYWx1ZURhdGFbXSB7XG4gICAgcmV0dXJuIGZhY2V0LnZhbHVlcyBhcyBJRmFjZXRWYWx1ZURhdGFbXTtcbiAgfVxuXG4gIGZhY2V0TW9iaWxlRGF0YShmYWNldDogSUZhY2V0c1RlbXBsYXRlRGF0YSB8IG51bGwpIDogYW55IHtcbiAgICByZXR1cm4gZmFjZXQgYXMgYW55XG4gIH1cbn1cbiIsIjxkaXYgW2lkXT1cIidzZWFyY2hzdGF4LWZhY2V0cy1jb250YWluZXInICsgcmFuZFwiPlxuICA8ZGl2XG4gICAgKm5nSWY9XCJmYWNldHNUZW1wbGF0ZURhdGFEZXNrdG9wPy5oYXNSZXN1bHRzT3JFeHRlcm5hbFByb21vdGlvbnMgJiYgIXRlbXBsYXRlT3ZlcnJpZGVEZXNrdG9wXCJcbiAgICBjbGFzcz1cInNlYXJjaHN0YXgtZmFjZXRzLWNvbnRhaW5lci1kZXNrdG9wXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwic2VhcmNoc3RheC1mYWNldC1jb250YWluZXJcIlxuICAgICAgKm5nRm9yPVwibGV0IGZhY2V0IG9mIGZhY2V0c1RlbXBsYXRlRGF0YURlc2t0b3A/LmZhY2V0c1wiXG4gICAgICBbY2xhc3NdPVwieyBhY3RpdmU6IGlzTm90RGVhY3RpdmF0ZWQoZmFjZXQubmFtZSwgY29udGV4dCkgfVwiXG4gICAgPlxuICAgICAgPGRpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaHN0YXgtZmFjZXQtdGl0bGUtY29udGFpbmVyXCIgKGNsaWNrKT1cInRvZ2dsZUZhY2V0R3JvdXAoZmFjZXQubmFtZSwgY29udGV4dClcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoc3RheC1mYWNldC10aXRsZVwiPnt7IGZhY2V0LmxhYmVsIH19PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaHN0YXgtZmFjZXQtdGl0bGUtYXJyb3cgYWN0aXZlXCI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoc3RheC1mYWNldC12YWx1ZXMtY29udGFpbmVyXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGZhY2V0VmFsdWUgb2YgZmFjZXRWYWx1ZXMoZmFjZXQpOyBpbmRleCBhcyBrZXlcIlxuICAgICAgICAgICAgY2xhc3M9XCJzZWFyY2hzdGF4LWZhY2V0LXZhbHVlLWNvbnRhaW5lclwiXG4gICAgICAgICAgICBbY2xhc3NdPVwieyAnc2VhcmNoc3RheC1mYWNldC12YWx1ZS1kaXNhYmxlZCc6IGZhY2V0VmFsdWUuZGlzYWJsZWQgfVwiXG4gICAgICAgICAgICAjcmVmXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaHN0YXgtZmFjZXQtaW5wdXRcIj5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNlYXJjaHN0YXgtZmFjZXQtaW5wdXQtY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZmFjZXRWYWx1ZS52YWx1ZSArICcgJyArIGZhY2V0VmFsdWUuY291bnRcIlxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImlzQ2hlY2tlZChmYWNldFZhbHVlLCBjb250ZXh0KVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZhY2V0VmFsdWUuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RGYWNldChyZWYsICRldmVudCwgZmFjZXRWYWx1ZSwgdHJ1ZSwgY29udGV4dClcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoc3RheC1mYWNldC12YWx1ZS1sYWJlbFwiIChjbGljayk9XCJzZWxlY3RGYWNldChyZWYsICRldmVudCwgZmFjZXRWYWx1ZSwgZmFsc2UsIGNvbnRleHQpXCI+XG4gICAgICAgICAgICAgIHt7IGZhY2V0VmFsdWUudmFsdWUgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaHN0YXgtZmFjZXQtdmFsdWUtY291bnRcIiAoY2xpY2spPVwic2VsZWN0RmFjZXQocmVmLCAkZXZlbnQsIGZhY2V0VmFsdWUsIGZhbHNlLCBjb250ZXh0KVwiPlxuICAgICAgICAgICAgICAoe3sgZmFjZXRWYWx1ZS5jb3VudCB9fSlcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2hzdGF4LWZhY2V0LXNob3ctbW9yZS1jb250YWluZXJcIiAqbmdJZj1cImZhY2V0Lmhhc01vcmVGYWNldHNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2hzdGF4LWZhY2V0LXNob3ctbW9yZS1jb250YWluZXJcIiAoY2xpY2spPVwic2hvd01vcmVMZXNzRGVza3RvcCgkZXZlbnQsIGZhY2V0LCBjb250ZXh0KVwiIChrZXl1cC5lbnRlcik9XCJzaG93TW9yZUxlc3NEZXNrdG9wKCRldmVudCwgZmFjZXQsIGNvbnRleHQpXCIgKGtleXVwLnNwYWNlKT1cInNob3dNb3JlTGVzc0Rlc2t0b3AoJGV2ZW50LCBmYWNldCwgY29udGV4dClcIiB0YWJpbmRleD1cIjBcIj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZmFjZXQuc2hvd2luZ0FsbEZhY2V0c1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzZWFyY2hzdGF4LWZhY2V0LXNob3ctbGVzcy1idXR0b24gc2VhcmNoc3RheC1mYWNldC1zaG93LWJ1dHRvblwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBsZXNzXG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhZmFjZXQuc2hvd2luZ0FsbEZhY2V0c1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzZWFyY2hzdGF4LWZhY2V0LXNob3ctbW9yZS1idXR0b24gc2VhcmNoc3RheC1mYWNldC1zaG93LWJ1dHRvblwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBtb3JlXG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiZmFjZXRzVGVtcGxhdGVEYXRhRGVza3RvcD8uaGFzUmVzdWx0c09yRXh0ZXJuYWxQcm9tb3Rpb25zICYmIHRlbXBsYXRlT3ZlcnJpZGVEZXNrdG9wXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlT3ZlcnJpZGVEZXNrdG9wOyBjb250ZXh0OiBjb250ZXh0XCI+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuXG4gIDxkaXZcbiAgICBjbGFzcz1cInNlYXJjaHN0YXgtZmFjZXRzLWNvbnRhaW5lci1tb2JpbGVcIlxuICAgICpuZ0lmPVwiZmFjZXRzVGVtcGxhdGVEYXRhTW9iaWxlPy5oYXNSZXN1bHRzT3JFeHRlcm5hbFByb21vdGlvbnMgJiYgIXRlbXBsYXRlT3ZlcnJpZGVNb2JpbGVcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cInNlYXJjaHN0YXgtZmFjZXRzLXBpbGxzLWNvbnRhaW5lclwiPlxuICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaHN0YXgtZmFjZXRzLXBpbGwgc2VhcmNoc3RheC1mYWNldHMtcGlsbC1maWx0ZXItYnlcIiAoY2xpY2spPVwib3Blbk92ZXJsYXkoY29udGV4dClcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaHN0YXgtZmFjZXRzLXBpbGwtbGFiZWxcIj5GaWx0ZXIgQnk8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaHN0YXgtZmFjZXRzLXBpbGxzLXNlbGVjdGVkXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInNlYXJjaHN0YXgtZmFjZXRzLXBpbGwgc2VhcmNoc3RheC1mYWNldHMtcGlsbC1mYWNldHNcIlxuICAgICAgICAgICpuZ0Zvcj1cImxldCBmYWNldCBvZiBzZWxlY3RlZEZhY2V0c0NoZWNrYm94ZXNcIlxuICAgICAgICAgIChjbGljayk9XCJ1bnNlbGVjdEZhY2V0KGZhY2V0LCBjb250ZXh0KVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoc3RheC1mYWNldHMtcGlsbC1sYWJlbFwiPnt7IGZhY2V0LnZhbHVlIH19ICh7eyBmYWNldC5jb3VudCB9fSk8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoc3RheC1mYWNldHMtcGlsbC1pY29uLWNsb3NlXCI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwic2VhcmNoc3RheC1mYWNldHMtcGlsbCBzZWFyY2hzdGF4LWNsZWFyLWZpbHRlcnMgc2VhcmNoc3RheC1mYWNldHMtcGlsbC1jbGVhci1hbGxcIlxuICAgICAgICAqbmdJZj1cInNlbGVjdGVkRmFjZXRzQ2hlY2tib3hlcy5sZW5ndGhcIlxuICAgICAgICAoY2xpY2spPVwidW5zZWxlY3RBbGwoY29udGV4dClcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoc3RheC1mYWNldHMtcGlsbC1sYWJlbFwiPkNsZWFyIEZpbHRlcnM8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwic2VhcmNoc3RheC1mYWNldHMtbW9iaWxlLW92ZXJsYXlcIlxuICAgICAgW2NsYXNzXT1cInsgJ3NlYXJjaHN0YXgtc2hvdyc6IGZhY2V0TW9iaWxlRGF0YShmYWNldHNUZW1wbGF0ZURhdGFNb2JpbGUpPy5vdmVybGF5T3BlbmVkIH1cIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2hzdGF4LWZhY2V0cy1tb2JpbGUtb3ZlcmxheS1oZWFkZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaHN0YXgtZmFjZXRzLW1vYmlsZS1vdmVybGF5LWhlYWRlci10aXRsZVwiPkZpbHRlciBCeTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoc3RheC1zZWFyY2gtY2xvc2VcIiAoY2xpY2spPVwiY2xvc2VPdmVybGF5KGNvbnRleHQpXCI+PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2hzdGF4LWZhY2V0cy1jb250YWluZXItbW9iaWxlXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgZmFjZXQgb2YgZmFjZXRzVGVtcGxhdGVEYXRhTW9iaWxlPy5mYWNldHNcIlxuICAgICAgICAgIGNsYXNzPVwic2VhcmNoc3RheC1mYWNldC1jb250YWluZXJcIlxuICAgICAgICAgIFtjbGFzc109XCJ7IGFjdGl2ZTogaXNOb3REZWFjdGl2YXRlZChmYWNldC5uYW1lLCBjb250ZXh0KSB9XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoc3RheC1mYWNldC10aXRsZS1jb250YWluZXJcIiAoY2xpY2spPVwidG9nZ2xlRmFjZXRHcm91cChmYWNldC5uYW1lLCBjb250ZXh0KVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoc3RheC1mYWNldC10aXRsZVwiPnt7IGZhY2V0LmxhYmVsIH19PC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2hzdGF4LWZhY2V0LXRpdGxlLWFycm93IGFjdGl2ZVwiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoc3RheC1mYWNldC12YWx1ZXMtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZmFjZXRWYWx1ZSBvZiBmYWNldFZhbHVlcyhmYWNldCk7IGluZGV4IGFzIGtleVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzZWFyY2hzdGF4LWZhY2V0LXZhbHVlLWNvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgW2NsYXNzXT1cInsgJ3NlYXJjaHN0YXgtZmFjZXQtdmFsdWUtZGlzYWJsZWQnOiBmYWNldFZhbHVlLmRpc2FibGVkIH1cIlxuICAgICAgICAgICAgICAgICNyZWZcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2hzdGF4LWZhY2V0LWlucHV0XCI+XG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWFyY2hzdGF4LWZhY2V0LWlucHV0LWNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJmYWNldFZhbHVlLnZhbHVlICsgJyAnICsgZmFjZXRWYWx1ZS5jb3VudFwiXG4gICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImlzQ2hlY2tlZChmYWNldFZhbHVlLCBjb250ZXh0KVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmYWNldFZhbHVlLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEZhY2V0KHJlZiwgJGV2ZW50LCBmYWNldFZhbHVlLCB0cnVlLCBjb250ZXh0KVwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2VhcmNoc3RheC1mYWNldC12YWx1ZS1sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0RmFjZXQocmVmLCAkZXZlbnQsIGZhY2V0VmFsdWUsIGZhbHNlLCBjb250ZXh0KVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgZmFjZXRWYWx1ZS52YWx1ZSB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2VhcmNoc3RheC1mYWNldC12YWx1ZS1jb3VudFwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0RmFjZXQocmVmLCAkZXZlbnQsIGZhY2V0VmFsdWUsIGZhbHNlLCBjb250ZXh0KVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgKHt7IGZhY2V0VmFsdWUuY291bnQgfX0pXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoc3RheC1mYWNldC1zaG93LW1vcmUtY29udGFpbmVyXCIgKm5nSWY9XCJmYWNldC5oYXNNb3JlRmFjZXRzXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaHN0YXgtZmFjZXQtc2hvdy1tb3JlLWNvbnRhaW5lclwiIChjbGljayk9XCJzaG93TW9yZUxlc3NNb2JpbGUoJGV2ZW50LCBmYWNldCwgY29udGV4dClcIiAoa2V5dXAuZW50ZXIpPVwic2hvd01vcmVMZXNzTW9iaWxlKCRldmVudCwgZmFjZXQsIGNvbnRleHQpXCIgKGtleXVwLnNwYWNlKT1cInNob3dNb3JlTGVzc01vYmlsZSgkZXZlbnQsIGZhY2V0LCBjb250ZXh0KVwiIHRhYmluZGV4PVwiMFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImZhY2V0LnNob3dpbmdBbGxGYWNldHNcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNlYXJjaHN0YXgtZmFjZXQtc2hvdy1sZXNzLWJ1dHRvbiBzZWFyY2hzdGF4LWZhY2V0LXNob3ctYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgbGVzc1xuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWZhY2V0LnNob3dpbmdBbGxGYWNldHNcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNlYXJjaHN0YXgtZmFjZXQtc2hvdy1tb3JlLWJ1dHRvbiBzZWFyY2hzdGF4LWZhY2V0LXNob3ctYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgbW9yZVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwic2VhcmNoc3RheC1mYWNldHMtbW9iaWxlLW92ZXJsYXktZG9uZVwiIChjbGljayk9XCJjbG9zZU92ZXJsYXkoY29udGV4dClcIj5Eb25lPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiZmFjZXRzVGVtcGxhdGVEYXRhTW9iaWxlPy5oYXNSZXN1bHRzT3JFeHRlcm5hbFByb21vdGlvbnMgJiYgdGVtcGxhdGVPdmVycmlkZU1vYmlsZVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZU92ZXJyaWRlTW9iaWxlOyBjb250ZXh0OiBjb250ZXh0XCI+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -1,92 +0,0 @@
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
- import * as i3 from "@angular/forms";
6
- export class SearchstaxSearchLocationWidget {
7
- constructor(storeServiceService) {
8
- this.storeServiceService = storeServiceService;
9
- this.locationData = null;
10
- this.inputValue = "";
11
- this.selectValue = "";
12
- this.locationAdded = false;
13
- this.locationError = false;
14
- this.rand = Math.random();
15
- this.context = this;
16
- }
17
- ngOnInit() {
18
- if (this.storeServiceService.searchstax) {
19
- this.attachObservables();
20
- setTimeout(() => {
21
- this.addWidget();
22
- }, 100);
23
- }
24
- else {
25
- throw Error("Searchstax instance needs to be passed via props");
26
- }
27
- }
28
- locationBlur(context) {
29
- context.storeServiceService.searchstax.searchLocationWidget?.triggerGeocoder(context.inputValue);
30
- }
31
- radiusChange(e, context) {
32
- const target = e.target;
33
- context.selectValue = target.value;
34
- context.storeServiceService.searchstax.searchLocationWidget?.setRadiusValue(context.selectValue);
35
- }
36
- inputChange(e, context) {
37
- const target = e.target;
38
- context.inputValue = target.value;
39
- }
40
- getCurrentLocation(context) {
41
- context.storeServiceService.searchstax.searchLocationWidget?.getCurrentLocation();
42
- }
43
- addWidget() {
44
- if (!this.locationAdded &&
45
- this.storeServiceService.searchstax.routerHelper) {
46
- this.locationAdded = true;
47
- this.storeServiceService.searchstax.addSearchLocationWidget("searchstax-location-container" + this.rand, {
48
- hooks: {
49
- locationDecode: this.locationDecode,
50
- locationDecodeCoordinatesToAddress: this.locationDecodeCoordinatesToAddress,
51
- },
52
- locationSearchEnabled: this.locationSearchEnabled,
53
- locationValuesOverride: this.locationValuesOverride,
54
- });
55
- }
56
- }
57
- attachObservables() {
58
- this.storeServiceService.searchstax.dataLayer.$locationWidgetTemplateData.subscribe((sortingData) => {
59
- this.locationData = sortingData;
60
- });
61
- this.storeServiceService.searchstax.dataLayer.$searchObject.subscribe((result) => {
62
- this.inputValue = result.location.address ?? "";
63
- this.selectValue = result.location.radius || "";
64
- });
65
- this.storeServiceService.searchstax.dataLayer.$locationError.subscribe((locationError) => {
66
- this.locationError = locationError;
67
- });
68
- this.storeServiceService.searchstax.dataLayer.$searchLocationChange.subscribe((location) => {
69
- this.inputValue = location;
70
- });
71
- this.storeServiceService.searchstax.dataLayer.$searchRadiusChange.subscribe((radius) => {
72
- this.selectValue = radius;
73
- });
74
- }
75
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SearchstaxSearchLocationWidget, deps: [{ token: i1.StoreServiceService }], target: i0.ɵɵFactoryTarget.Component }); }
76
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SearchstaxSearchLocationWidget, selector: "app-searchstax-search-location", inputs: { templateOverride: "templateOverride", locationSearchEnabled: "locationSearchEnabled", locationValuesOverride: "locationValuesOverride", locationDecode: "locationDecode", locationDecodeCoordinatesToAddress: "locationDecodeCoordinatesToAddress" }, ngImport: i0, template: "<div\n [id]=\"'searchstax-location-container' + rand\"\n class=\"searchstax-location-container\"\n>\n <div\n class=\"searchstax-location-input-container\"\n data-test-id=\"searchstax-location-input-container\"\n *ngIf=\"locationData && !templateOverride\"\n >\n <div class=\"searchstax-location-input-wrapper\">\n <span class=\"searchstax-location-input-label\">NEAR</span>\n <div class=\"searchstax-location-input-wrapper-inner\">\n <input\n type=\"text\"\n id=\"searchstax-location-input\"\n class=\"searchstax-location-input\"\n [ngClass]=\"{\n 'searchstax-input-location-error': locationError\n }\"\n placeholder=\"Zip, Postal Code or City...\"\n aria-label=\"Search Location Input\"\n data-test-id=\"searchstax-location-input\"\n [(ngModel)]=\"inputValue\"\n (blur)=\"locationBlur(context)\"\n />\n <button\n (click)=\"getCurrentLocation(context)\"\n class=\"searchstax-get-current-location-button\"\n >\n Use my current location\n </button>\n </div>\n <span\n *ngIf=\"locationData.shouldShowLocationDistanceDropdown\"\n class=\"searchstax-location-input-label\"\n >WITHIN</span\n >\n <select\n *ngIf=\"locationData.shouldShowLocationDistanceDropdown\"\n id=\"searchstax-location-radius-select\"\n class=\"searchstax-location-radius-select\"\n aria-label=\"Search Location Radius Select\"\n data-test-id=\"searchstax-location-radius-select\"\n (change)=\"radiusChange($event, context)\"\n [(ngModel)]=\"selectValue\"\n >\n <option\n *ngFor=\"let value of locationData.locationSearchDistanceValues\"\n [value]=\"value.value\"\n >\n {{ value.label }}\n </option>\n </select>\n </div>\n </div>\n\n <div *ngIf=\"locationData && templateOverride\">\n <ng-container\n *ngTemplateOutlet=\"templateOverride; context: context\"\n ></ng-container>\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"] }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
77
- }
78
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SearchstaxSearchLocationWidget, decorators: [{
79
- type: Component,
80
- args: [{ selector: "app-searchstax-search-location", template: "<div\n [id]=\"'searchstax-location-container' + rand\"\n class=\"searchstax-location-container\"\n>\n <div\n class=\"searchstax-location-input-container\"\n data-test-id=\"searchstax-location-input-container\"\n *ngIf=\"locationData && !templateOverride\"\n >\n <div class=\"searchstax-location-input-wrapper\">\n <span class=\"searchstax-location-input-label\">NEAR</span>\n <div class=\"searchstax-location-input-wrapper-inner\">\n <input\n type=\"text\"\n id=\"searchstax-location-input\"\n class=\"searchstax-location-input\"\n [ngClass]=\"{\n 'searchstax-input-location-error': locationError\n }\"\n placeholder=\"Zip, Postal Code or City...\"\n aria-label=\"Search Location Input\"\n data-test-id=\"searchstax-location-input\"\n [(ngModel)]=\"inputValue\"\n (blur)=\"locationBlur(context)\"\n />\n <button\n (click)=\"getCurrentLocation(context)\"\n class=\"searchstax-get-current-location-button\"\n >\n Use my current location\n </button>\n </div>\n <span\n *ngIf=\"locationData.shouldShowLocationDistanceDropdown\"\n class=\"searchstax-location-input-label\"\n >WITHIN</span\n >\n <select\n *ngIf=\"locationData.shouldShowLocationDistanceDropdown\"\n id=\"searchstax-location-radius-select\"\n class=\"searchstax-location-radius-select\"\n aria-label=\"Search Location Radius Select\"\n data-test-id=\"searchstax-location-radius-select\"\n (change)=\"radiusChange($event, context)\"\n [(ngModel)]=\"selectValue\"\n >\n <option\n *ngFor=\"let value of locationData.locationSearchDistanceValues\"\n [value]=\"value.value\"\n >\n {{ value.label }}\n </option>\n </select>\n </div>\n </div>\n\n <div *ngIf=\"locationData && templateOverride\">\n <ng-container\n *ngTemplateOutlet=\"templateOverride; context: context\"\n ></ng-container>\n </div>\n</div>\n" }]
81
- }], ctorParameters: () => [{ type: i1.StoreServiceService }], propDecorators: { templateOverride: [{
82
- type: Input
83
- }], locationSearchEnabled: [{
84
- type: Input
85
- }], locationValuesOverride: [{
86
- type: Input
87
- }], locationDecode: [{
88
- type: Input
89
- }], locationDecodeCoordinatesToAddress: [{
90
- type: Input
91
- }] } });
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoc3RheC1zZWFyY2gtbG9jYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2VhcmNoc3RheC1pbmMvc2VhcmNoc3R1ZGlvLXV4LWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3NlYXJjaHN0YXgtc2VhcmNoLWxvY2F0aW9uL3NlYXJjaHN0YXgtc2VhcmNoLWxvY2F0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NlYXJjaHN0YXgtaW5jL3NlYXJjaHN0dWRpby11eC1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9zZWFyY2hzdGF4LXNlYXJjaC1sb2NhdGlvbi9zZWFyY2hzdGF4LXNlYXJjaC1sb2NhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBdUIsTUFBTSxlQUFlLENBQUM7Ozs7O0FBWXRFLE1BQU0sT0FBTyw4QkFBOEI7SUF3QnpDLFlBQW9CLG1CQUF3QztRQUF4Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBUjVELGlCQUFZLEdBQXlDLElBQUksQ0FBQztRQUMxRCxlQUFVLEdBQVcsRUFBRSxDQUFDO1FBQ3hCLGdCQUFXLEdBQW9CLEVBQUUsQ0FBQztRQUNsQyxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixTQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBRXJCLFlBQU8sR0FBRyxJQUFJLENBQUM7SUFDZ0QsQ0FBQztJQUVoRSxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3pCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ25CLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUNUO2FBQU07WUFDTCxNQUFNLEtBQUssQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO1NBQ2pFO0lBQ0gsQ0FBQztJQUVELFlBQVksQ0FBQyxPQUFhO1FBQ3hCLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsb0JBQW9CLEVBQUUsZUFBZSxDQUMxRSxPQUFPLENBQUMsVUFBVSxDQUNuQixDQUFDO0lBQ0osQ0FBQztJQUNELFlBQVksQ0FBQyxDQUFRLEVBQUUsT0FBYTtRQUNsQyxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsTUFBMkIsQ0FBQztRQUM3QyxPQUFPLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDbkMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsRUFBRSxjQUFjLENBQ3pFLE9BQU8sQ0FBQyxXQUFXLENBQ3BCLENBQUM7SUFDSixDQUFDO0lBQ0QsV0FBVyxDQUFDLENBQVEsRUFBRSxPQUFhO1FBQ2pDLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUEwQixDQUFDO1FBQzVDLE9BQU8sQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztJQUNwQyxDQUFDO0lBRUQsa0JBQWtCLENBQUMsT0FBYTtRQUM5QixPQUFPLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLG9CQUFvQixFQUFFLGtCQUFrQixFQUFFLENBQUM7SUFDcEYsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUNFLENBQUMsSUFBSSxDQUFDLGFBQWE7WUFDbkIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQ2hEO1lBQ0EsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7WUFDMUIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyx1QkFBdUIsQ0FDekQsK0JBQStCLEdBQUcsSUFBSSxDQUFDLElBQUksRUFDM0M7Z0JBQ0UsS0FBSyxFQUFFO29CQUNMLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYztvQkFDbkMsa0NBQWtDLEVBQ2hDLElBQUksQ0FBQyxrQ0FBa0M7aUJBQzFDO2dCQUNELHFCQUFxQixFQUFFLElBQUksQ0FBQyxxQkFBcUI7Z0JBQ2pELHNCQUFzQixFQUFFLElBQUksQ0FBQyxzQkFBc0I7YUFDcEQsQ0FDRixDQUFDO1NBQ0g7SUFDSCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsMkJBQTJCLENBQUMsU0FBUyxDQUNqRixDQUFDLFdBQWlELEVBQUUsRUFBRTtZQUNwRCxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQztRQUNsQyxDQUFDLENBQ0YsQ0FBQztRQUVGLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQ25FLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDVCxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztZQUNoRCxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztRQUNsRCxDQUFDLENBQ0YsQ0FBQztRQUVGLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQ2xFLENBQUMsYUFBc0IsRUFBRSxFQUFFO1lBQ3pCLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1FBQ3JDLENBQUMsQ0FDRixDQUFDO1FBRUosSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUMzRSxDQUFDLFFBQWdCLEVBQUUsRUFBRTtZQUNuQixJQUFJLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQztRQUM3QixDQUFDLENBQ0YsQ0FBQztRQUVGLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FDekUsQ0FBQyxNQUF1QixFQUFFLEVBQUU7WUFDMUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUM7UUFDNUIsQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDOytHQTlHVSw4QkFBOEI7bUdBQTlCLDhCQUE4QixzVUNaM0MscWtFQThEQTs7NEZEbERhLDhCQUE4QjtrQkFMMUMsU0FBUzsrQkFDRSxnQ0FBZ0M7d0ZBS2pDLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUtHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBR0csa0NBQWtDO3NCQUExQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBUZW1wbGF0ZVJlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge1xuICBJU2VhcmNoc3RheExvY2F0aW9uLFxuICBJU2VhcmNoc3RheExvY2F0aW9uUmVuZGVyRGF0YSxcbn0gZnJvbSBcIkBzZWFyY2hzdGF4LWluYy9zZWFyY2hzdHVkaW8tdXgtanNcIjtcbmltcG9ydCB7IFN0b3JlU2VydmljZVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvc3RvcmUtc2VydmljZS5zZXJ2aWNlXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJhcHAtc2VhcmNoc3RheC1zZWFyY2gtbG9jYXRpb25cIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9zZWFyY2hzdGF4LXNlYXJjaC1sb2NhdGlvbi5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZXM6IFtdLFxufSlcbmV4cG9ydCBjbGFzcyBTZWFyY2hzdGF4U2VhcmNoTG9jYXRpb25XaWRnZXQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSB0ZW1wbGF0ZU92ZXJyaWRlPzogVGVtcGxhdGVSZWY8YW55PjtcbiAgQElucHV0KCkgbG9jYXRpb25TZWFyY2hFbmFibGVkPzogYm9vbGVhbjtcbiAgQElucHV0KCkgbG9jYXRpb25WYWx1ZXNPdmVycmlkZT86IHtcbiAgICBsb2NhdGlvbkRpc3RhbmNlRW5hYmxlZDogYm9vbGVhbjsgLy8gaWYgc2V0IHRvIHRydWUgbG9jYXRpb24gZGlzdGFuY2UgZHJvcGRvd24gd2lsbCBiZSBzaG93blxuICAgIGZpbHRlclZhbHVlczogc3RyaW5nW107IC8vIGFycmF5IG9mIGxvY2F0aW9uIGZpbHRlciB2YWx1ZXMgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgb25lc1xuICAgIGZpbHRlclVuaXQ6IHN0cmluZzsgLy8gdW5pdCBvZiB0aGUgbG9jYXRpb24gZmlsdGVyIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IG9uZVxuICB9XG4gIEBJbnB1dCgpIGxvY2F0aW9uRGVjb2RlITogKFxuICAgIGxvY2F0aW9uTmFtZTogc3RyaW5nXG4gICkgPT4gUHJvbWlzZTxJU2VhcmNoc3RheExvY2F0aW9uPjtcbiAgQElucHV0KCkgbG9jYXRpb25EZWNvZGVDb29yZGluYXRlc1RvQWRkcmVzcyE6IChcbiAgICBsYXQ6IHN0cmluZyxcbiAgICBsb246IHN0cmluZ1xuICApID0+IFByb21pc2U8SVNlYXJjaHN0YXhMb2NhdGlvbj47XG5cbiAgbG9jYXRpb25EYXRhOiBudWxsIHwgSVNlYXJjaHN0YXhMb2NhdGlvblJlbmRlckRhdGEgPSBudWxsO1xuICBpbnB1dFZhbHVlOiBzdHJpbmcgPSBcIlwiO1xuICBzZWxlY3RWYWx1ZTogc3RyaW5nIHwgbnVtYmVyID0gXCJcIjtcbiAgbG9jYXRpb25BZGRlZCA9IGZhbHNlO1xuICBsb2NhdGlvbkVycm9yID0gZmFsc2U7XG4gIHJhbmQgPSBNYXRoLnJhbmRvbSgpO1xuXG4gIGNvbnRleHQgPSB0aGlzO1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN0b3JlU2VydmljZVNlcnZpY2U6IFN0b3JlU2VydmljZVNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RvcmVTZXJ2aWNlU2VydmljZS5zZWFyY2hzdGF4KSB7XG4gICAgICB0aGlzLmF0dGFjaE9ic2VydmFibGVzKCk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5hZGRXaWRnZXQoKTtcbiAgICAgIH0sIDEwMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IEVycm9yKFwiU2VhcmNoc3RheCBpbnN0YW5jZSBuZWVkcyB0byBiZSBwYXNzZWQgdmlhIHByb3BzXCIpO1xuICAgIH1cbiAgfVxuXG4gIGxvY2F0aW9uQmx1cihjb250ZXh0OiB0aGlzKSB7XG4gICAgY29udGV4dC5zdG9yZVNlcnZpY2VTZXJ2aWNlLnNlYXJjaHN0YXguc2VhcmNoTG9jYXRpb25XaWRnZXQ/LnRyaWdnZXJHZW9jb2RlcihcbiAgICAgIGNvbnRleHQuaW5wdXRWYWx1ZVxuICAgICk7XG4gIH1cbiAgcmFkaXVzQ2hhbmdlKGU6IEV2ZW50LCBjb250ZXh0OiB0aGlzKSB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZS50YXJnZXQgYXMgSFRNTFNlbGVjdEVsZW1lbnQ7XG4gICAgY29udGV4dC5zZWxlY3RWYWx1ZSA9IHRhcmdldC52YWx1ZTtcbiAgICBjb250ZXh0LnN0b3JlU2VydmljZVNlcnZpY2Uuc2VhcmNoc3RheC5zZWFyY2hMb2NhdGlvbldpZGdldD8uc2V0UmFkaXVzVmFsdWUoXG4gICAgICBjb250ZXh0LnNlbGVjdFZhbHVlXG4gICAgKTtcbiAgfVxuICBpbnB1dENoYW5nZShlOiBFdmVudCwgY29udGV4dDogdGhpcykge1xuICAgIGNvbnN0IHRhcmdldCA9IGUudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgY29udGV4dC5pbnB1dFZhbHVlID0gdGFyZ2V0LnZhbHVlO1xuICB9XG5cbiAgZ2V0Q3VycmVudExvY2F0aW9uKGNvbnRleHQ6IHRoaXMpe1xuICAgIGNvbnRleHQuc3RvcmVTZXJ2aWNlU2VydmljZS5zZWFyY2hzdGF4LnNlYXJjaExvY2F0aW9uV2lkZ2V0Py5nZXRDdXJyZW50TG9jYXRpb24oKTtcbiAgfVxuXG4gIGFkZFdpZGdldCgpIHtcbiAgICBpZiAoXG4gICAgICAhdGhpcy5sb2NhdGlvbkFkZGVkICYmXG4gICAgICB0aGlzLnN0b3JlU2VydmljZVNlcnZpY2Uuc2VhcmNoc3RheC5yb3V0ZXJIZWxwZXJcbiAgICApIHtcbiAgICAgIHRoaXMubG9jYXRpb25BZGRlZCA9IHRydWU7XG4gICAgICB0aGlzLnN0b3JlU2VydmljZVNlcnZpY2Uuc2VhcmNoc3RheC5hZGRTZWFyY2hMb2NhdGlvbldpZGdldChcbiAgICAgICAgXCJzZWFyY2hzdGF4LWxvY2F0aW9uLWNvbnRhaW5lclwiICsgdGhpcy5yYW5kLFxuICAgICAgICB7XG4gICAgICAgICAgaG9va3M6IHtcbiAgICAgICAgICAgIGxvY2F0aW9uRGVjb2RlOiB0aGlzLmxvY2F0aW9uRGVjb2RlLFxuICAgICAgICAgICAgbG9jYXRpb25EZWNvZGVDb29yZGluYXRlc1RvQWRkcmVzczpcbiAgICAgICAgICAgICAgdGhpcy5sb2NhdGlvbkRlY29kZUNvb3JkaW5hdGVzVG9BZGRyZXNzLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbG9jYXRpb25TZWFyY2hFbmFibGVkOiB0aGlzLmxvY2F0aW9uU2VhcmNoRW5hYmxlZCxcbiAgICAgICAgICBsb2NhdGlvblZhbHVlc092ZXJyaWRlOiB0aGlzLmxvY2F0aW9uVmFsdWVzT3ZlcnJpZGUsXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgYXR0YWNoT2JzZXJ2YWJsZXMoKSB7XG4gICAgdGhpcy5zdG9yZVNlcnZpY2VTZXJ2aWNlLnNlYXJjaHN0YXguZGF0YUxheWVyLiRsb2NhdGlvbldpZGdldFRlbXBsYXRlRGF0YS5zdWJzY3JpYmUoXG4gICAgICAoc29ydGluZ0RhdGE6IG51bGwgfCBJU2VhcmNoc3RheExvY2F0aW9uUmVuZGVyRGF0YSkgPT4ge1xuICAgICAgICB0aGlzLmxvY2F0aW9uRGF0YSA9IHNvcnRpbmdEYXRhO1xuICAgICAgfVxuICAgICk7XG5cbiAgICB0aGlzLnN0b3JlU2VydmljZVNlcnZpY2Uuc2VhcmNoc3RheC5kYXRhTGF5ZXIuJHNlYXJjaE9iamVjdC5zdWJzY3JpYmUoXG4gICAgICAocmVzdWx0KSA9PiB7XG4gICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IHJlc3VsdC5sb2NhdGlvbi5hZGRyZXNzID8/IFwiXCI7XG4gICAgICAgIHRoaXMuc2VsZWN0VmFsdWUgPSByZXN1bHQubG9jYXRpb24ucmFkaXVzIHx8IFwiXCI7XG4gICAgICB9XG4gICAgKTtcblxuICAgIHRoaXMuc3RvcmVTZXJ2aWNlU2VydmljZS5zZWFyY2hzdGF4LmRhdGFMYXllci4kbG9jYXRpb25FcnJvci5zdWJzY3JpYmUoXG4gICAgICAgIChsb2NhdGlvbkVycm9yOiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2NhdGlvbkVycm9yID0gbG9jYXRpb25FcnJvcjtcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgIHRoaXMuc3RvcmVTZXJ2aWNlU2VydmljZS5zZWFyY2hzdGF4LmRhdGFMYXllci4kc2VhcmNoTG9jYXRpb25DaGFuZ2Uuc3Vic2NyaWJlKFxuICAgICAgKGxvY2F0aW9uOiBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy5pbnB1dFZhbHVlID0gbG9jYXRpb247XG4gICAgICB9XG4gICAgKTtcblxuICAgIHRoaXMuc3RvcmVTZXJ2aWNlU2VydmljZS5zZWFyY2hzdGF4LmRhdGFMYXllci4kc2VhcmNoUmFkaXVzQ2hhbmdlLnN1YnNjcmliZShcbiAgICAgIChyYWRpdXM6IHN0cmluZyB8IG51bWJlcikgPT4ge1xuICAgICAgICB0aGlzLnNlbGVjdFZhbHVlID0gcmFkaXVzO1xuICAgICAgfVxuICAgICk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgW2lkXT1cIidzZWFyY2hzdGF4LWxvY2F0aW9uLWNvbnRhaW5lcicgKyByYW5kXCJcbiAgY2xhc3M9XCJzZWFyY2hzdGF4LWxvY2F0aW9uLWNvbnRhaW5lclwiXG4+XG4gIDxkaXZcbiAgICBjbGFzcz1cInNlYXJjaHN0YXgtbG9jYXRpb24taW5wdXQtY29udGFpbmVyXCJcbiAgICBkYXRhLXRlc3QtaWQ9XCJzZWFyY2hzdGF4LWxvY2F0aW9uLWlucHV0LWNvbnRhaW5lclwiXG4gICAgKm5nSWY9XCJsb2NhdGlvbkRhdGEgJiYgIXRlbXBsYXRlT3ZlcnJpZGVcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cInNlYXJjaHN0YXgtbG9jYXRpb24taW5wdXQtd3JhcHBlclwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJzZWFyY2hzdGF4LWxvY2F0aW9uLWlucHV0LWxhYmVsXCI+TkVBUjwvc3Bhbj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2hzdGF4LWxvY2F0aW9uLWlucHV0LXdyYXBwZXItaW5uZXJcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIGlkPVwic2VhcmNoc3RheC1sb2NhdGlvbi1pbnB1dFwiXG4gICAgICAgICAgY2xhc3M9XCJzZWFyY2hzdGF4LWxvY2F0aW9uLWlucHV0XCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnc2VhcmNoc3RheC1pbnB1dC1sb2NhdGlvbi1lcnJvcic6IGxvY2F0aW9uRXJyb3JcbiAgICAgICAgICB9XCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIlppcCwgUG9zdGFsIENvZGUgb3IgQ2l0eS4uLlwiXG4gICAgICAgICAgYXJpYS1sYWJlbD1cIlNlYXJjaCBMb2NhdGlvbiBJbnB1dFwiXG4gICAgICAgICAgZGF0YS10ZXN0LWlkPVwic2VhcmNoc3RheC1sb2NhdGlvbi1pbnB1dFwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJpbnB1dFZhbHVlXCJcbiAgICAgICAgICAoYmx1cik9XCJsb2NhdGlvbkJsdXIoY29udGV4dClcIlxuICAgICAgICAvPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgKGNsaWNrKT1cImdldEN1cnJlbnRMb2NhdGlvbihjb250ZXh0KVwiXG4gICAgICAgICAgY2xhc3M9XCJzZWFyY2hzdGF4LWdldC1jdXJyZW50LWxvY2F0aW9uLWJ1dHRvblwiXG4gICAgICAgID5cbiAgICAgICAgICBVc2UgbXkgY3VycmVudCBsb2NhdGlvblxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHNwYW5cbiAgICAgICAgKm5nSWY9XCJsb2NhdGlvbkRhdGEuc2hvdWxkU2hvd0xvY2F0aW9uRGlzdGFuY2VEcm9wZG93blwiXG4gICAgICAgIGNsYXNzPVwic2VhcmNoc3RheC1sb2NhdGlvbi1pbnB1dC1sYWJlbFwiXG4gICAgICAgID5XSVRISU48L3NwYW5cbiAgICAgID5cbiAgICAgIDxzZWxlY3RcbiAgICAgICAgKm5nSWY9XCJsb2NhdGlvbkRhdGEuc2hvdWxkU2hvd0xvY2F0aW9uRGlzdGFuY2VEcm9wZG93blwiXG4gICAgICAgIGlkPVwic2VhcmNoc3RheC1sb2NhdGlvbi1yYWRpdXMtc2VsZWN0XCJcbiAgICAgICAgY2xhc3M9XCJzZWFyY2hzdGF4LWxvY2F0aW9uLXJhZGl1cy1zZWxlY3RcIlxuICAgICAgICBhcmlhLWxhYmVsPVwiU2VhcmNoIExvY2F0aW9uIFJhZGl1cyBTZWxlY3RcIlxuICAgICAgICBkYXRhLXRlc3QtaWQ9XCJzZWFyY2hzdGF4LWxvY2F0aW9uLXJhZGl1cy1zZWxlY3RcIlxuICAgICAgICAoY2hhbmdlKT1cInJhZGl1c0NoYW5nZSgkZXZlbnQsIGNvbnRleHQpXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RWYWx1ZVwiXG4gICAgICA+XG4gICAgICAgIDxvcHRpb25cbiAgICAgICAgICAqbmdGb3I9XCJsZXQgdmFsdWUgb2YgbG9jYXRpb25EYXRhLmxvY2F0aW9uU2VhcmNoRGlzdGFuY2VWYWx1ZXNcIlxuICAgICAgICAgIFt2YWx1ZV09XCJ2YWx1ZS52YWx1ZVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyB2YWx1ZS5sYWJlbCB9fVxuICAgICAgICA8L29wdGlvbj5cbiAgICAgIDwvc2VsZWN0PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2ICpuZ0lmPVwibG9jYXRpb25EYXRhICYmIHRlbXBsYXRlT3ZlcnJpZGVcIj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlT3ZlcnJpZGU7IGNvbnRleHQ6IGNvbnRleHRcIlxuICAgID48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -1,41 +0,0 @@
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: "17.3.12", ngImport: i0, type: SearchstaxSearchFeedbackWidget, deps: [{ token: i1.StoreServiceService }], target: i0.ɵɵFactoryTarget.Component }); }
33
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", 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: "17.3.12", 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: () => [{ type: i1.StoreServiceService }], propDecorators: { templateOverride: [{
39
- type: Input
40
- }] } });
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoc3RheC1zZWFyY2gtb3ZlcnZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2VhcmNoc3RheC1pbmMvc2VhcmNoc3R1ZGlvLXV4LWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3NlYXJjaHN0YXgtc2VhcmNoLW92ZXJ2aWV3L3NlYXJjaHN0YXgtc2VhcmNoLW92ZXJ2aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NlYXJjaHN0YXgtaW5jL3NlYXJjaHN0dWRpby11eC1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9zZWFyY2hzdGF4LXNlYXJjaC1vdmVydmlldy9zZWFyY2hzdGF4LXNlYXJjaC1vdmVydmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBdUIsTUFBTSxlQUFlLENBQUM7Ozs7QUFTdEUsTUFBTSxPQUFPLDhCQUE4QjtJQU16QyxZQUFvQixtQkFBd0M7UUFBeEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUg1RCx1QkFBa0IsR0FBeUMsSUFBSSxDQUFDO1FBQ2hFLFNBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDckIsWUFBTyxHQUFHLElBQUksQ0FBQztJQUNnRCxDQUFDO0lBRWhFLFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLEVBQUU7WUFDdkMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDekIsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLHVCQUF1QixDQUFDLDJCQUEyQixHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDM0csQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ1A7YUFBTTtZQUNMLE1BQU0sS0FBSyxDQUFDLGtEQUFrRCxDQUFDLENBQUM7U0FDakU7SUFDSCxDQUFDO0lBRUQsb0JBQW9CLENBQUMsQ0FBUSxFQUFFLE9BQWE7UUFDMUMsQ0FBQyxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDN0IsT0FBTyxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUN6RSxDQUFDLGtCQUF3RCxFQUFFLEVBQUU7WUFDM0QsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGtCQUFrQixDQUFDO1FBQy9DLENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQzsrR0E5QlUsOEJBQThCO21HQUE5Qiw4QkFBOEIsd0hDVDNDLHEwQ0FpREE7OzRGRHhDYSw4QkFBOEI7a0JBTDFDLFNBQVM7K0JBQ0UsZ0NBQWdDO3dGQUtqQyxnQkFBZ0I7c0JBQXhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIFRlbXBsYXRlUmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IElTZWFyY2hzdGF4U2VhcmNoRmVlZGJhY2tEYXRhIH0gZnJvbSBcIkBzZWFyY2hzdGF4LWluYy9zZWFyY2hzdHVkaW8tdXgtanNcIjtcbmltcG9ydCB7IFN0b3JlU2VydmljZVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvc3RvcmUtc2VydmljZS5zZXJ2aWNlXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJhcHAtc2VhcmNoc3RheC1zZWFyY2gtZmVlZGJhY2tcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9zZWFyY2hzdGF4LXNlYXJjaC1vdmVydmlldy5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZXM6IFtdLFxufSlcbmV4cG9ydCBjbGFzcyBTZWFyY2hzdGF4U2VhcmNoRmVlZGJhY2tXaWRnZXQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSB0ZW1wbGF0ZU92ZXJyaWRlPzogVGVtcGxhdGVSZWY8YW55PjtcblxuICBzZWFyY2hGZWVkYmFja0RhdGE6IG51bGwgfCBJU2VhcmNoc3RheFNlYXJjaEZlZWRiYWNrRGF0YSA9IG51bGw7XG4gIHJhbmQgPSBNYXRoLnJhbmRvbSgpO1xuICBjb250ZXh0ID0gdGhpcztcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yZVNlcnZpY2VTZXJ2aWNlOiBTdG9yZVNlcnZpY2VTZXJ2aWNlKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0b3JlU2VydmljZVNlcnZpY2Uuc2VhcmNoc3RheCkge1xuICAgICAgdGhpcy5hdHRhY2hPYnNlcnZhYmxlcygpO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuc3RvcmVTZXJ2aWNlU2VydmljZS5zZWFyY2hzdGF4LmFkZFNlYXJjaEZlZWRiYWNrV2lkZ2V0KFwic2VhcmNoLWZlZWRiYWNrLWNvbnRhaW5lclwiICsgdGhpcy5yYW5kLCB7fSk7XG4gICAgICB9LCAwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgRXJyb3IoXCJTZWFyY2hzdGF4IGluc3RhbmNlIG5lZWRzIHRvIGJlIHBhc3NlZCB2aWEgcHJvcHNcIik7XG4gICAgfVxuICB9XG5cbiAgb25PcmlnaW5hbFF1ZXJ5Q2xpY2soZTogRXZlbnQsIGNvbnRleHQ6IHRoaXMpIHtcbiAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgIGNvbnRleHQuc3RvcmVTZXJ2aWNlU2VydmljZS5zZWFyY2hzdGF4LnNlYXJjaEZlZWRiYWNrV2lkZ2V0Py5vbk9yaWdpbmFsUXVlcnlDbGljayhlKTtcbiAgfVxuXG4gIGF0dGFjaE9ic2VydmFibGVzKCkge1xuICAgIHRoaXMuc3RvcmVTZXJ2aWNlU2VydmljZS5zZWFyY2hzdGF4LmRhdGFMYXllci4kc2VhcmNoRmVlZGJhY2tEYXRhLnN1YnNjcmliZShcbiAgICAgIChzZWFyY2hGZWVkYmFja0RhdGE6IG51bGwgfCBJU2VhcmNoc3RheFNlYXJjaEZlZWRiYWNrRGF0YSkgPT4ge1xuICAgICAgICB0aGlzLnNlYXJjaEZlZWRiYWNrRGF0YSA9IHNlYXJjaEZlZWRiYWNrRGF0YTtcbiAgICAgIH1cbiAgICApO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwic2VhcmNoLWZlZWRiYWNrLWNvbnRhaW5lclwiXG4gIFtpZF09XCInc2VhcmNoLWZlZWRiYWNrLWNvbnRhaW5lcicgKyByYW5kXCJcbj5cbiAgPGRpdlxuICAgIGNsYXNzPVwic2VhcmNoc3RheC1mZWVkYmFjay1jb250YWluZXJcIlxuICAgICpuZ0lmPVwiXG4gICAgICBzZWFyY2hGZWVkYmFja0RhdGEgJiZcbiAgICAgIHNlYXJjaEZlZWRiYWNrRGF0YT8uc2VhcmNoRXhlY3V0ZWQgJiZcbiAgICAgICF0ZW1wbGF0ZU92ZXJyaWRlICYmXG4gICAgICBzZWFyY2hGZWVkYmFja0RhdGE/LnRvdGFsUmVzdWx0c1xuICAgIFwiXG4gID5cbiAgICBTaG93aW5nXG4gICAgPGJcbiAgICAgID57eyBzZWFyY2hGZWVkYmFja0RhdGEhLnN0YXJ0UmVzdWx0SW5kZXggfX0gLVxuICAgICAge3sgc2VhcmNoRmVlZGJhY2tEYXRhIS5lbmRSZXN1bHRJbmRleCB9fTwvYlxuICAgID5cbiAgICBvZiA8Yj57eyBzZWFyY2hGZWVkYmFja0RhdGEhLnRvdGFsUmVzdWx0cyB9fTwvYj4gcmVzdWx0c1xuICAgIDxzcGFuICpuZ0lmPVwic2VhcmNoRmVlZGJhY2tEYXRhLnNlYXJjaFRlcm1cIlxuICAgICAgPmZvciBcIjxiPnt7IHNlYXJjaEZlZWRiYWNrRGF0YSEuc2VhcmNoVGVybSB9fTwvYlxuICAgICAgPlwiXG4gICAgPC9zcGFuPlxuICAgIDxkaXYgY2xhc3M9XCJzZWFyY2hzdGF4LWZlZWRiYWNrLWNvbnRhaW5lci1zdWdnZXN0ZWRcIj5cbiAgICAgIDxkaXYgKm5nSWY9XCJzZWFyY2hGZWVkYmFja0RhdGEuYXV0b0NvcnJlY3RlZFF1ZXJ5XCI+XG4gICAgICAgIFNlYXJjaCBpbnN0ZWFkIGZvclxuICAgICAgICA8YVxuICAgICAgICAgIGhyZWY9XCIjXCJcbiAgICAgICAgICAoY2xpY2spPVwib25PcmlnaW5hbFF1ZXJ5Q2xpY2soJGV2ZW50LCBjb250ZXh0KVwiXG4gICAgICAgICAgY2xhc3M9XCJzZWFyY2hzdGF4LWZlZWRiYWNrLW9yaWdpbmFsLXF1ZXJ5XCJcbiAgICAgICAgICA+e3sgc2VhcmNoRmVlZGJhY2tEYXRhIS5vcmlnaW5hbFF1ZXJ5IH19PC9hXG4gICAgICAgID5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2XG4gICAgKm5nSWY9XCJcbiAgICAgIHNlYXJjaEZlZWRiYWNrRGF0YSAmJlxuICAgICAgc2VhcmNoRmVlZGJhY2tEYXRhPy5zZWFyY2hFeGVjdXRlZCAmJlxuICAgICAgdGVtcGxhdGVPdmVycmlkZSAmJlxuICAgICAgc2VhcmNoRmVlZGJhY2tEYXRhPy50b3RhbFJlc3VsdHNcbiAgICBcIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZU92ZXJyaWRlOyBjb250ZXh0OiBjb250ZXh0XCJcbiAgICA+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -1,62 +0,0 @@
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 SearchstaxSearchPaginationWidget {
6
- constructor(storeServiceService) {
7
- this.storeServiceService = storeServiceService;
8
- this.paginationData = null;
9
- this.rand = Math.random();
10
- this.context = this;
11
- this.paginationAdded = false;
12
- }
13
- ngOnInit() {
14
- if (this.storeServiceService.searchstax) {
15
- this.attachObservables();
16
- setTimeout(() => {
17
- this.addWidget();
18
- }, 0);
19
- }
20
- else {
21
- throw Error("Searchstax instance needs to be passed via props");
22
- }
23
- }
24
- nextPage(event, context) {
25
- event.stopImmediatePropagation();
26
- if (!context.paginationData?.isLastPage) {
27
- context.storeServiceService.searchstax.searchPaginationWidget?.nextPage(event);
28
- }
29
- }
30
- previousPage(event, context) {
31
- event.stopImmediatePropagation();
32
- if (!context.paginationData?.isFirstPage) {
33
- context.storeServiceService.searchstax.searchPaginationWidget?.previousPage(event);
34
- }
35
- }
36
- addWidget() {
37
- if (!this.paginationAdded &&
38
- this.storeServiceService.searchstax.routerHelper) {
39
- this.paginationAdded = true;
40
- this.storeServiceService.searchstax.addPaginationWidget("searchstax-pagination-container" + this.rand, {});
41
- }
42
- }
43
- attachObservables() {
44
- this.storeServiceService.searchstax.dataLayer.$searchObject.subscribe((pagination) => {
45
- this.addWidget();
46
- });
47
- this.storeServiceService.searchstax.dataLayer.$paginationData.subscribe((pagination) => {
48
- this.paginationData = pagination;
49
- });
50
- }
51
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SearchstaxSearchPaginationWidget, deps: [{ token: i1.StoreServiceService }], target: i0.ɵɵFactoryTarget.Component }); }
52
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SearchstaxSearchPaginationWidget, selector: "app-searchstax-search-pagination", inputs: { templateOverride: "templateOverride", infiniteScrollTemplateOverride: "infiniteScrollTemplateOverride" }, ngImport: i0, template: "<div [id]=\"'searchstax-pagination-container' + rand\">\n <div\n class=\"searchstax-pagination-container\"\n *ngIf=\"\n paginationData?.totalResults &&\n !templateOverride &&\n !paginationData?.isInfiniteScroll\n \"\n >\n <div class=\"searchstax-pagination-content\">\n <a\n class=\"searchstax-pagination-previous\"\n [class]=\"paginationData?.isFirstPage ? 'disabled' : ''\"\n (click)=\"previousPage($event, context)\"\n (keyup.enter)=\"previousPage($event, context)\"\n (keyup.space)=\"previousPage($event, context)\"\n tabindex=\"0\"\n id=\"searchstax-pagination-previous\"\n >\n &lt; Previous\n </a>\n <div class=\"searchstax-pagination-details\">\n {{ paginationData?.startResultIndex }} -\n {{ paginationData?.endResultIndex }} of\n {{ paginationData?.totalResults }}\n </div>\n <a\n class=\"searchstax-pagination-next\"\n [class]=\"paginationData?.isLastPage ? 'disabled' : ''\"\n (click)=\"nextPage($event, context)\"\n (keyup.enter)=\"nextPage($event, context)\"\n (keyup.space)=\"nextPage($event, context)\"\n tabindex=\"0\"\n id=\"searchstax-pagination-next\"\n >Next ></a\n >\n </div>\n </div>\n\n <div\n *ngIf=\"\n paginationData?.totalResults &&\n templateOverride &&\n !paginationData?.isInfiniteScroll\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"templateOverride; context: context\"\n ></ng-container>\n </div>\n\n <div\n class=\"searchstax-pagination-container\"\n *ngIf=\"\n paginationData?.totalResults &&\n !infiniteScrollTemplateOverride &&\n paginationData?.totalResults !== 0 &&\n !paginationData?.isLastPage &&\n paginationData?.isInfiniteScroll\n \"\n >\n <a\n class=\"searchstax-pagination-load-more\"\n (click)=\"nextPage($event, context)\"\n (keyup.enter)=\"nextPage($event, context)\"\n (keyup.space)=\"nextPage($event, context)\"\n tabindex=\"0\"\n >\n Load More\n </a>\n </div>\n\n <div\n *ngIf=\"\n paginationData?.totalResults &&\n infiniteScrollTemplateOverride &&\n paginationData?.totalResults !== 0 &&\n !paginationData?.isLastPage &&\n paginationData?.isInfiniteScroll\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"infiniteScrollTemplateOverride; 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"] }] }); }
53
- }
54
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SearchstaxSearchPaginationWidget, decorators: [{
55
- type: Component,
56
- args: [{ selector: "app-searchstax-search-pagination", template: "<div [id]=\"'searchstax-pagination-container' + rand\">\n <div\n class=\"searchstax-pagination-container\"\n *ngIf=\"\n paginationData?.totalResults &&\n !templateOverride &&\n !paginationData?.isInfiniteScroll\n \"\n >\n <div class=\"searchstax-pagination-content\">\n <a\n class=\"searchstax-pagination-previous\"\n [class]=\"paginationData?.isFirstPage ? 'disabled' : ''\"\n (click)=\"previousPage($event, context)\"\n (keyup.enter)=\"previousPage($event, context)\"\n (keyup.space)=\"previousPage($event, context)\"\n tabindex=\"0\"\n id=\"searchstax-pagination-previous\"\n >\n &lt; Previous\n </a>\n <div class=\"searchstax-pagination-details\">\n {{ paginationData?.startResultIndex }} -\n {{ paginationData?.endResultIndex }} of\n {{ paginationData?.totalResults }}\n </div>\n <a\n class=\"searchstax-pagination-next\"\n [class]=\"paginationData?.isLastPage ? 'disabled' : ''\"\n (click)=\"nextPage($event, context)\"\n (keyup.enter)=\"nextPage($event, context)\"\n (keyup.space)=\"nextPage($event, context)\"\n tabindex=\"0\"\n id=\"searchstax-pagination-next\"\n >Next ></a\n >\n </div>\n </div>\n\n <div\n *ngIf=\"\n paginationData?.totalResults &&\n templateOverride &&\n !paginationData?.isInfiniteScroll\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"templateOverride; context: context\"\n ></ng-container>\n </div>\n\n <div\n class=\"searchstax-pagination-container\"\n *ngIf=\"\n paginationData?.totalResults &&\n !infiniteScrollTemplateOverride &&\n paginationData?.totalResults !== 0 &&\n !paginationData?.isLastPage &&\n paginationData?.isInfiniteScroll\n \"\n >\n <a\n class=\"searchstax-pagination-load-more\"\n (click)=\"nextPage($event, context)\"\n (keyup.enter)=\"nextPage($event, context)\"\n (keyup.space)=\"nextPage($event, context)\"\n tabindex=\"0\"\n >\n Load More\n </a>\n </div>\n\n <div\n *ngIf=\"\n paginationData?.totalResults &&\n infiniteScrollTemplateOverride &&\n paginationData?.totalResults !== 0 &&\n !paginationData?.isLastPage &&\n paginationData?.isInfiniteScroll\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"infiniteScrollTemplateOverride; context: context\"\n ></ng-container>\n </div>\n</div>\n" }]
57
- }], ctorParameters: () => [{ type: i1.StoreServiceService }], propDecorators: { templateOverride: [{
58
- type: Input
59
- }], infiniteScrollTemplateOverride: [{
60
- type: Input
61
- }] } });
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoc3RheC1zZWFyY2gtcGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zZWFyY2hzdGF4LWluYy9zZWFyY2hzdHVkaW8tdXgtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvc2VhcmNoc3RheC1zZWFyY2gtcGFnaW5hdGlvbi9zZWFyY2hzdGF4LXNlYXJjaC1wYWdpbmF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NlYXJjaHN0YXgtaW5jL3NlYXJjaHN0dWRpby11eC1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9zZWFyY2hzdGF4LXNlYXJjaC1wYWdpbmF0aW9uL3NlYXJjaHN0YXgtc2VhcmNoLXBhZ2luYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXVCLE1BQU0sZUFBZSxDQUFDOzs7O0FBWXRFLE1BQU0sT0FBTyxnQ0FBZ0M7SUFRM0MsWUFBb0IsbUJBQXdDO1FBQXhDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFKNUQsbUJBQWMsR0FBMkIsSUFBSSxDQUFDO1FBQzlDLFNBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDckIsWUFBTyxHQUFHLElBQUksQ0FBQztRQUNmLG9CQUFlLEdBQUcsS0FBSyxDQUFDO0lBQ3VDLENBQUM7SUFFaEUsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsRUFBRTtZQUN2QyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUN6QixVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDUDthQUFNO1lBQ0wsTUFBTSxLQUFLLENBQUMsa0RBQWtELENBQUMsQ0FBQztTQUNqRTtJQUNILENBQUM7SUFFRCxRQUFRLENBQUMsS0FBWSxFQUFFLE9BQWE7UUFDbEMsS0FBSyxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsVUFBVSxFQUFFO1lBQ3ZDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsc0JBQXNCLEVBQUUsUUFBUSxDQUNyRSxLQUFLLENBQ04sQ0FBQztTQUNIO0lBQ0gsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFZLEVBQUUsT0FBYTtRQUN0QyxLQUFLLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUNqQyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxXQUFXLEVBQUU7WUFDeEMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsRUFBRSxZQUFZLENBQ3pFLEtBQUssQ0FDTixDQUFDO1NBQ0g7SUFDSCxDQUFDO0lBRUQsU0FBUztRQUNQLElBQ0UsQ0FBQyxJQUFJLENBQUMsZUFBZTtZQUNyQixJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLFlBQVksRUFDaEQ7WUFDQSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztZQUM1QixJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUNyRCxpQ0FBaUMsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUM3QyxFQUFFLENBQ0gsQ0FBQztTQUNIO0lBQ0gsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQ25FLENBQUMsVUFBZ0MsRUFBRSxFQUFFO1lBQ25DLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNuQixDQUFDLENBQ0YsQ0FBQztRQUVGLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQ3JFLENBQUMsVUFBa0MsRUFBRSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxjQUFjLEdBQUcsVUFBVSxDQUFDO1FBQ25DLENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQzsrR0FoRVUsZ0NBQWdDO21HQUFoQyxnQ0FBZ0MsNExDWjdDLHM4RUFzRkE7OzRGRDFFYSxnQ0FBZ0M7a0JBTDVDLFNBQVM7K0JBQ0Usa0NBQWtDO3dGQUtuQyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csOEJBQThCO3NCQUF0QyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBUZW1wbGF0ZVJlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge1xuICBJUGFnaW5hdGlvbkRhdGEsXG4gIElTZWFyY2hPYmplY3QsXG59IGZyb20gXCJAc2VhcmNoc3RheC1pbmMvc2VhcmNoc3R1ZGlvLXV4LWpzXCI7XG5pbXBvcnQgeyBTdG9yZVNlcnZpY2VTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3N0b3JlLXNlcnZpY2Uuc2VydmljZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiYXBwLXNlYXJjaHN0YXgtc2VhcmNoLXBhZ2luYXRpb25cIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9zZWFyY2hzdGF4LXNlYXJjaC1wYWdpbmF0aW9uLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlczogW10sXG59KVxuZXhwb3J0IGNsYXNzIFNlYXJjaHN0YXhTZWFyY2hQYWdpbmF0aW9uV2lkZ2V0IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgdGVtcGxhdGVPdmVycmlkZT86IFRlbXBsYXRlUmVmPGFueT47XG4gIEBJbnB1dCgpIGluZmluaXRlU2Nyb2xsVGVtcGxhdGVPdmVycmlkZT86IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgcGFnaW5hdGlvbkRhdGE6IG51bGwgfCBJUGFnaW5hdGlvbkRhdGEgPSBudWxsO1xuICByYW5kID0gTWF0aC5yYW5kb20oKTtcbiAgY29udGV4dCA9IHRoaXM7XG4gIHBhZ2luYXRpb25BZGRlZCA9IGZhbHNlO1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN0b3JlU2VydmljZVNlcnZpY2U6IFN0b3JlU2VydmljZVNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RvcmVTZXJ2aWNlU2VydmljZS5zZWFyY2hzdGF4KSB7XG4gICAgICB0aGlzLmF0dGFjaE9ic2VydmFibGVzKCk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5hZGRXaWRnZXQoKTtcbiAgICAgIH0sIDApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBFcnJvcihcIlNlYXJjaHN0YXggaW5zdGFuY2UgbmVlZHMgdG8gYmUgcGFzc2VkIHZpYSBwcm9wc1wiKTtcbiAgICB9XG4gIH1cblxuICBuZXh0UGFnZShldmVudDogRXZlbnQsIGNvbnRleHQ6IHRoaXMpIHtcbiAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICBpZiAoIWNvbnRleHQucGFnaW5hdGlvbkRhdGE/LmlzTGFzdFBhZ2UpIHtcbiAgICAgIGNvbnRleHQuc3RvcmVTZXJ2aWNlU2VydmljZS5zZWFyY2hzdGF4LnNlYXJjaFBhZ2luYXRpb25XaWRnZXQ/Lm5leHRQYWdlKFxuICAgICAgICBldmVudFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcmV2aW91c1BhZ2UoZXZlbnQ6IEV2ZW50LCBjb250ZXh0OiB0aGlzKSB7XG4gICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgaWYgKCFjb250ZXh0LnBhZ2luYXRpb25EYXRhPy5pc0ZpcnN0UGFnZSkge1xuICAgICAgY29udGV4dC5zdG9yZVNlcnZpY2VTZXJ2aWNlLnNlYXJjaHN0YXguc2VhcmNoUGFnaW5hdGlvbldpZGdldD8ucHJldmlvdXNQYWdlKFxuICAgICAgICBldmVudFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBhZGRXaWRnZXQoKSB7XG4gICAgaWYgKFxuICAgICAgIXRoaXMucGFnaW5hdGlvbkFkZGVkICYmXG4gICAgICB0aGlzLnN0b3JlU2VydmljZVNlcnZpY2Uuc2VhcmNoc3RheC5yb3V0ZXJIZWxwZXJcbiAgICApIHtcbiAgICAgIHRoaXMucGFnaW5hdGlvbkFkZGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuc3RvcmVTZXJ2aWNlU2VydmljZS5zZWFyY2hzdGF4LmFkZFBhZ2luYXRpb25XaWRnZXQoXG4gICAgICAgIFwic2VhcmNoc3RheC1wYWdpbmF0aW9uLWNvbnRhaW5lclwiICsgdGhpcy5yYW5kLFxuICAgICAgICB7fVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBhdHRhY2hPYnNlcnZhYmxlcygpIHtcbiAgICB0aGlzLnN0b3JlU2VydmljZVNlcnZpY2Uuc2VhcmNoc3RheC5kYXRhTGF5ZXIuJHNlYXJjaE9iamVjdC5zdWJzY3JpYmUoXG4gICAgICAocGFnaW5hdGlvbjogSVNlYXJjaE9iamVjdCB8IG51bGwpID0+IHtcbiAgICAgICAgdGhpcy5hZGRXaWRnZXQoKTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgdGhpcy5zdG9yZVNlcnZpY2VTZXJ2aWNlLnNlYXJjaHN0YXguZGF0YUxheWVyLiRwYWdpbmF0aW9uRGF0YS5zdWJzY3JpYmUoXG4gICAgICAocGFnaW5hdGlvbjogSVBhZ2luYXRpb25EYXRhIHwgbnVsbCkgPT4ge1xuICAgICAgICB0aGlzLnBhZ2luYXRpb25EYXRhID0gcGFnaW5hdGlvbjtcbiAgICAgIH1cbiAgICApO1xuICB9XG59XG4iLCI8ZGl2IFtpZF09XCInc2VhcmNoc3RheC1wYWdpbmF0aW9uLWNvbnRhaW5lcicgKyByYW5kXCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cInNlYXJjaHN0YXgtcGFnaW5hdGlvbi1jb250YWluZXJcIlxuICAgICpuZ0lmPVwiXG4gICAgICBwYWdpbmF0aW9uRGF0YT8udG90YWxSZXN1bHRzICYmXG4gICAgICAhdGVtcGxhdGVPdmVycmlkZSAmJlxuICAgICAgIXBhZ2luYXRpb25EYXRhPy5pc0luZmluaXRlU2Nyb2xsXG4gICAgXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJzZWFyY2hzdGF4LXBhZ2luYXRpb24tY29udGVudFwiPlxuICAgICAgPGFcbiAgICAgICAgY2xhc3M9XCJzZWFyY2hzdGF4LXBhZ2luYXRpb24tcHJldmlvdXNcIlxuICAgICAgICBbY2xhc3NdPVwicGFnaW5hdGlvbkRhdGE/LmlzRmlyc3RQYWdlID8gJ2Rpc2FibGVkJyA6ICcnXCJcbiAgICAgICAgKGNsaWNrKT1cInByZXZpb3VzUGFnZSgkZXZlbnQsIGNvbnRleHQpXCJcbiAgICAgICAgKGtleXVwLmVudGVyKT1cInByZXZpb3VzUGFnZSgkZXZlbnQsIGNvbnRleHQpXCJcbiAgICAgICAgKGtleXVwLnNwYWNlKT1cInByZXZpb3VzUGFnZSgkZXZlbnQsIGNvbnRleHQpXCJcbiAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgaWQ9XCJzZWFyY2hzdGF4LXBhZ2luYXRpb24tcHJldmlvdXNcIlxuICAgICAgPlxuICAgICAgICAmbHQ7IFByZXZpb3VzXG4gICAgICA8L2E+XG4gICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoc3RheC1wYWdpbmF0aW9uLWRldGFpbHNcIj5cbiAgICAgICAge3sgcGFnaW5hdGlvbkRhdGE/LnN0YXJ0UmVzdWx0SW5kZXggfX0gLVxuICAgICAgICB7eyBwYWdpbmF0aW9uRGF0YT8uZW5kUmVzdWx0SW5kZXggfX0gb2ZcbiAgICAgICAge3sgcGFnaW5hdGlvbkRhdGE/LnRvdGFsUmVzdWx0cyB9fVxuICAgICAgPC9kaXY+XG4gICAgICA8YVxuICAgICAgICBjbGFzcz1cInNlYXJjaHN0YXgtcGFnaW5hdGlvbi1uZXh0XCJcbiAgICAgICAgW2NsYXNzXT1cInBhZ2luYXRpb25EYXRhPy5pc0xhc3RQYWdlID8gJ2Rpc2FibGVkJyA6ICcnXCJcbiAgICAgICAgKGNsaWNrKT1cIm5leHRQYWdlKCRldmVudCwgY29udGV4dClcIlxuICAgICAgICAoa2V5dXAuZW50ZXIpPVwibmV4dFBhZ2UoJGV2ZW50LCBjb250ZXh0KVwiXG4gICAgICAgIChrZXl1cC5zcGFjZSk9XCJuZXh0UGFnZSgkZXZlbnQsIGNvbnRleHQpXCJcbiAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgaWQ9XCJzZWFyY2hzdGF4LXBhZ2luYXRpb24tbmV4dFwiXG4gICAgICAgID5OZXh0ID48L2FcbiAgICAgID5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdlxuICAgICpuZ0lmPVwiXG4gICAgICBwYWdpbmF0aW9uRGF0YT8udG90YWxSZXN1bHRzICYmXG4gICAgICB0ZW1wbGF0ZU92ZXJyaWRlICYmXG4gICAgICAhcGFnaW5hdGlvbkRhdGE/LmlzSW5maW5pdGVTY3JvbGxcbiAgICBcIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZU92ZXJyaWRlOyBjb250ZXh0OiBjb250ZXh0XCJcbiAgICA+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuXG4gIDxkaXZcbiAgICBjbGFzcz1cInNlYXJjaHN0YXgtcGFnaW5hdGlvbi1jb250YWluZXJcIlxuICAgICpuZ0lmPVwiXG4gICAgICBwYWdpbmF0aW9uRGF0YT8udG90YWxSZXN1bHRzICYmXG4gICAgICAhaW5maW5pdGVTY3JvbGxUZW1wbGF0ZU92ZXJyaWRlICYmXG4gICAgICBwYWdpbmF0aW9uRGF0YT8udG90YWxSZXN1bHRzICE9PSAwICYmXG4gICAgICAhcGFnaW5hdGlvbkRhdGE/LmlzTGFzdFBhZ2UgJiZcbiAgICAgIHBhZ2luYXRpb25EYXRhPy5pc0luZmluaXRlU2Nyb2xsXG4gICAgXCJcbiAgPlxuICAgIDxhXG4gICAgICBjbGFzcz1cInNlYXJjaHN0YXgtcGFnaW5hdGlvbi1sb2FkLW1vcmVcIlxuICAgICAgKGNsaWNrKT1cIm5leHRQYWdlKCRldmVudCwgY29udGV4dClcIlxuICAgICAgKGtleXVwLmVudGVyKT1cIm5leHRQYWdlKCRldmVudCwgY29udGV4dClcIlxuICAgICAgKGtleXVwLnNwYWNlKT1cIm5leHRQYWdlKCRldmVudCwgY29udGV4dClcIlxuICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICA+XG4gICAgTG9hZCBNb3JlXG4gICAgPC9hPlxuICA8L2Rpdj5cblxuICA8ZGl2XG4gICAgKm5nSWY9XCJcbiAgICAgIHBhZ2luYXRpb25EYXRhPy50b3RhbFJlc3VsdHMgJiZcbiAgICAgIGluZmluaXRlU2Nyb2xsVGVtcGxhdGVPdmVycmlkZSAmJlxuICAgICAgcGFnaW5hdGlvbkRhdGE/LnRvdGFsUmVzdWx0cyAhPT0gMCAmJlxuICAgICAgIXBhZ2luYXRpb25EYXRhPy5pc0xhc3RQYWdlICYmXG4gICAgICBwYWdpbmF0aW9uRGF0YT8uaXNJbmZpbml0ZVNjcm9sbFxuICAgIFwiXG4gID5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImluZmluaXRlU2Nyb2xsVGVtcGxhdGVPdmVycmlkZTsgY29udGV4dDogY29udGV4dFwiXG4gICAgPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -1,44 +0,0 @@
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 SearchstaxSearchRelatedSearchesWidget {
6
- constructor(storeServiceService) {
7
- this.storeServiceService = storeServiceService;
8
- this.relatedData = 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.addRelatedSearchesWidget("searchstax-related-searches-container" + this.rand, { relatedSearchesURL: this.relatedSearchesURL ?? "", relatedSearchesAPIKey: this.relatedSearchesAPIKey ?? "" });
17
- }, 0);
18
- }
19
- else {
20
- throw Error("Searchstax instance needs to be passed via props");
21
- }
22
- }
23
- executeSearch(result, context) {
24
- context.storeServiceService.searchstax.relatedSearchesWidget?.executeSearch(result);
25
- }
26
- attachObservables() {
27
- this.storeServiceService.searchstax.dataLayer.$searchRelatedSearchesData.subscribe((relatedData) => {
28
- this.relatedData = relatedData;
29
- });
30
- }
31
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SearchstaxSearchRelatedSearchesWidget, deps: [{ token: i1.StoreServiceService }], target: i0.ɵɵFactoryTarget.Component }); }
32
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SearchstaxSearchRelatedSearchesWidget, selector: "app-searchstax-related-searches", inputs: { relatedSearchesURL: "relatedSearchesURL", relatedSearchesAPIKey: "relatedSearchesAPIKey", templateOverride: "templateOverride" }, ngImport: i0, template: "<div\n class=\"searchstax-related-searches-container\"\n [id]=\"'searchstax-related-searches-container' + rand\"\n *ngIf=\"relatedData && relatedData?.searchExecuted && relatedData?.hasRelatedSearches && !templateOverride\"\n>\n Related searches: <span id=\"searchstax-related-searches\"></span>\n <span class=\"searchstax-related-search\" *ngIf=\"relatedData.relatedSearches\">\n <span\n *ngFor=\"let related of relatedData.relatedSearches\"\n tabindex=\"0\"\n (click)=\"executeSearch(related, context)\"\n (keyup.enter)=\"executeSearch(related, context)\"\n (keyup.space)=\"executeSearch(related, context)\"\n class=\"searchstax-related-search searchstax-related-search-item\"\n >\n {{ related.related_search }}<span *ngIf=\"!related.last\">,</span>\n </span>\n </span>\n</div>\n\n<div *ngIf=\"relatedData && relatedData?.searchExecuted && relatedData?.hasRelatedSearches && templateOverride\">\n <ng-container *ngTemplateOutlet=\"templateOverride; context: context\"></ng-container>\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: "17.3.12", ngImport: i0, type: SearchstaxSearchRelatedSearchesWidget, decorators: [{
35
- type: Component,
36
- args: [{ selector: "app-searchstax-related-searches", template: "<div\n class=\"searchstax-related-searches-container\"\n [id]=\"'searchstax-related-searches-container' + rand\"\n *ngIf=\"relatedData && relatedData?.searchExecuted && relatedData?.hasRelatedSearches && !templateOverride\"\n>\n Related searches: <span id=\"searchstax-related-searches\"></span>\n <span class=\"searchstax-related-search\" *ngIf=\"relatedData.relatedSearches\">\n <span\n *ngFor=\"let related of relatedData.relatedSearches\"\n tabindex=\"0\"\n (click)=\"executeSearch(related, context)\"\n (keyup.enter)=\"executeSearch(related, context)\"\n (keyup.space)=\"executeSearch(related, context)\"\n class=\"searchstax-related-search searchstax-related-search-item\"\n >\n {{ related.related_search }}<span *ngIf=\"!related.last\">,</span>\n </span>\n </span>\n</div>\n\n<div *ngIf=\"relatedData && relatedData?.searchExecuted && relatedData?.hasRelatedSearches && templateOverride\">\n <ng-container *ngTemplateOutlet=\"templateOverride; context: context\"></ng-container>\n</div>\n" }]
37
- }], ctorParameters: () => [{ type: i1.StoreServiceService }], propDecorators: { relatedSearchesURL: [{
38
- type: Input
39
- }], relatedSearchesAPIKey: [{
40
- type: Input
41
- }], templateOverride: [{
42
- type: Input
43
- }] } });
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoc3RheC1zZWFyY2gtcmVsYXRlZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zZWFyY2hzdGF4LWluYy9zZWFyY2hzdHVkaW8tdXgtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvc2VhcmNoc3RheC1zZWFyY2gtcmVsYXRlZC9zZWFyY2hzdGF4LXNlYXJjaC1yZWxhdGVkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NlYXJjaHN0YXgtaW5jL3NlYXJjaHN0dWRpby11eC1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9zZWFyY2hzdGF4LXNlYXJjaC1yZWxhdGVkL3NlYXJjaHN0YXgtc2VhcmNoLXJlbGF0ZWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXVCLE1BQU0sZUFBZSxDQUFDOzs7O0FBU3RFLE1BQU0sT0FBTyxxQ0FBcUM7SUFRaEQsWUFBb0IsbUJBQXdDO1FBQXhDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFINUQsZ0JBQVcsR0FBMEMsSUFBSSxDQUFDO1FBQzFELFNBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDckIsWUFBTyxHQUFHLElBQUksQ0FBQztJQUNnRCxDQUFDO0lBRWhFLFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLEVBQUU7WUFDdkMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDekIsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLHdCQUF3QixDQUMxRCx1Q0FBdUMsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUNuRCxFQUFFLGtCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxFQUFFLEVBQUUscUJBQXFCLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixJQUFJLEVBQUUsRUFBRSxDQUMvRyxDQUFDO1lBQ0osQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ1A7YUFBTTtZQUNMLE1BQU0sS0FBSyxDQUFDLGtEQUFrRCxDQUFDLENBQUM7U0FDakU7SUFDSCxDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQXNDLEVBQUUsT0FBYTtRQUNqRSxPQUFPLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLHFCQUFxQixFQUFFLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsMEJBQTBCLENBQUMsU0FBUyxDQUNoRixDQUFDLFdBQWtELEVBQUUsRUFBRTtZQUNyRCxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUNqQyxDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7K0dBbENVLHFDQUFxQzttR0FBckMscUNBQXFDLG1OQ1RsRCx3aENBdUJBOzs0RkRkYSxxQ0FBcUM7a0JBTGpELFNBQVM7K0JBQ0UsaUNBQWlDO3dGQUtsQyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgVGVtcGxhdGVSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgSVNlYXJjaHN0YXhSZWxhdGVkU2VhcmNoUmVzdWx0LCBJU2VhcmNoc3RheFJlbGF0ZWRTZWFyY2hlc0RhdGEgfSBmcm9tIFwiQHNlYXJjaHN0YXgtaW5jL3NlYXJjaHN0dWRpby11eC1qc1wiO1xuaW1wb3J0IHsgU3RvcmVTZXJ2aWNlU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9zdG9yZS1zZXJ2aWNlLnNlcnZpY2VcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImFwcC1zZWFyY2hzdGF4LXJlbGF0ZWQtc2VhcmNoZXNcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9zZWFyY2hzdGF4LXNlYXJjaC1yZWxhdGVkLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlczogW10sXG59KVxuZXhwb3J0IGNsYXNzIFNlYXJjaHN0YXhTZWFyY2hSZWxhdGVkU2VhcmNoZXNXaWRnZXQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSByZWxhdGVkU2VhcmNoZXNVUkw/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHJlbGF0ZWRTZWFyY2hlc0FQSUtleT86IHN0cmluZztcbiAgQElucHV0KCkgdGVtcGxhdGVPdmVycmlkZT86IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgcmVsYXRlZERhdGE6IG51bGwgfCBJU2VhcmNoc3RheFJlbGF0ZWRTZWFyY2hlc0RhdGEgPSBudWxsO1xuICByYW5kID0gTWF0aC5yYW5kb20oKTtcbiAgY29udGV4dCA9IHRoaXM7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmVTZXJ2aWNlU2VydmljZTogU3RvcmVTZXJ2aWNlU2VydmljZSkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdG9yZVNlcnZpY2VTZXJ2aWNlLnNlYXJjaHN0YXgpIHtcbiAgICAgIHRoaXMuYXR0YWNoT2JzZXJ2YWJsZXMoKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnN0b3JlU2VydmljZVNlcnZpY2Uuc2VhcmNoc3RheC5hZGRSZWxhdGVkU2VhcmNoZXNXaWRnZXQoXG4gICAgICAgICAgXCJzZWFyY2hzdGF4LXJlbGF0ZWQtc2VhcmNoZXMtY29udGFpbmVyXCIgKyB0aGlzLnJhbmQsXG4gICAgICAgICAgeyByZWxhdGVkU2VhcmNoZXNVUkw6IHRoaXMucmVsYXRlZFNlYXJjaGVzVVJMID8/IFwiXCIsIHJlbGF0ZWRTZWFyY2hlc0FQSUtleTogdGhpcy5yZWxhdGVkU2VhcmNoZXNBUElLZXkgPz8gXCJcIiB9XG4gICAgICAgICk7XG4gICAgICB9LCAwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgRXJyb3IoXCJTZWFyY2hzdGF4IGluc3RhbmNlIG5lZWRzIHRvIGJlIHBhc3NlZCB2aWEgcHJvcHNcIik7XG4gICAgfVxuICB9XG5cbiAgZXhlY3V0ZVNlYXJjaChyZXN1bHQ6IElTZWFyY2hzdGF4UmVsYXRlZFNlYXJjaFJlc3VsdCwgY29udGV4dDogdGhpcykge1xuICAgIGNvbnRleHQuc3RvcmVTZXJ2aWNlU2VydmljZS5zZWFyY2hzdGF4LnJlbGF0ZWRTZWFyY2hlc1dpZGdldD8uZXhlY3V0ZVNlYXJjaChyZXN1bHQpO1xuICB9XG5cbiAgYXR0YWNoT2JzZXJ2YWJsZXMoKSB7XG4gICAgdGhpcy5zdG9yZVNlcnZpY2VTZXJ2aWNlLnNlYXJjaHN0YXguZGF0YUxheWVyLiRzZWFyY2hSZWxhdGVkU2VhcmNoZXNEYXRhLnN1YnNjcmliZShcbiAgICAgIChyZWxhdGVkRGF0YTogbnVsbCB8IElTZWFyY2hzdGF4UmVsYXRlZFNlYXJjaGVzRGF0YSkgPT4ge1xuICAgICAgICB0aGlzLnJlbGF0ZWREYXRhID0gcmVsYXRlZERhdGE7XG4gICAgICB9XG4gICAgKTtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cInNlYXJjaHN0YXgtcmVsYXRlZC1zZWFyY2hlcy1jb250YWluZXJcIlxuICBbaWRdPVwiJ3NlYXJjaHN0YXgtcmVsYXRlZC1zZWFyY2hlcy1jb250YWluZXInICsgcmFuZFwiXG4gICpuZ0lmPVwicmVsYXRlZERhdGEgJiYgcmVsYXRlZERhdGE/LnNlYXJjaEV4ZWN1dGVkICYmIHJlbGF0ZWREYXRhPy5oYXNSZWxhdGVkU2VhcmNoZXMgJiYgIXRlbXBsYXRlT3ZlcnJpZGVcIlxuPlxuICBSZWxhdGVkIHNlYXJjaGVzOiA8c3BhbiBpZD1cInNlYXJjaHN0YXgtcmVsYXRlZC1zZWFyY2hlc1wiPjwvc3Bhbj5cbiAgPHNwYW4gY2xhc3M9XCJzZWFyY2hzdGF4LXJlbGF0ZWQtc2VhcmNoXCIgKm5nSWY9XCJyZWxhdGVkRGF0YS5yZWxhdGVkU2VhcmNoZXNcIj5cbiAgICA8c3BhblxuICAgICAgKm5nRm9yPVwibGV0IHJlbGF0ZWQgb2YgcmVsYXRlZERhdGEucmVsYXRlZFNlYXJjaGVzXCJcbiAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAoY2xpY2spPVwiZXhlY3V0ZVNlYXJjaChyZWxhdGVkLCBjb250ZXh0KVwiXG4gICAgICAoa2V5dXAuZW50ZXIpPVwiZXhlY3V0ZVNlYXJjaChyZWxhdGVkLCBjb250ZXh0KVwiXG4gICAgICAoa2V5dXAuc3BhY2UpPVwiZXhlY3V0ZVNlYXJjaChyZWxhdGVkLCBjb250ZXh0KVwiXG4gICAgICBjbGFzcz1cInNlYXJjaHN0YXgtcmVsYXRlZC1zZWFyY2ggc2VhcmNoc3RheC1yZWxhdGVkLXNlYXJjaC1pdGVtXCJcbiAgICA+XG4gICAgICB7eyByZWxhdGVkLnJlbGF0ZWRfc2VhcmNoIH19PHNwYW4gKm5nSWY9XCIhcmVsYXRlZC5sYXN0XCI+LDwvc3Bhbj5cbiAgICA8L3NwYW4+XG4gIDwvc3Bhbj5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwicmVsYXRlZERhdGEgJiYgcmVsYXRlZERhdGE/LnNlYXJjaEV4ZWN1dGVkICYmIHJlbGF0ZWREYXRhPy5oYXNSZWxhdGVkU2VhcmNoZXMgJiYgdGVtcGxhdGVPdmVycmlkZVwiPlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVtcGxhdGVPdmVycmlkZTsgY29udGV4dDogY29udGV4dFwiPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG4iXX0=