@searchstax-inc/searchstudio-ux-angular 4.2.2 → 4.2.10

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.
@@ -1 +1 @@
1
- {"version":3,"file":"searchstax-inc-searchstudio-ux-angular.mjs","sources":["../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/services/store-service.service.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/searchstax-wrapper.component.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/utils/subscribe-in-ng-zone.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/templates/SearchstaxLocationWidgetTemplateConfig.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/templates/searchstax-search-location-template.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/searchstax-search-location/searchstax-search-location.component.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/searchstax-search-location/searchstax-search-location.component.html","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/templates/searchstax-search-input-template.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/searchstax-input/searchstax-input.component.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/searchstax-input/searchstax-input.component.html","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/templates/searchstax-search-results-template.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/templates/searchstax-search-no-results-template.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/searchstax-results/searchstax-results.component.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/searchstax-results/searchstax-results.component.html","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/templates/searchstax-search-overview-template.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/searchstax-search-overview/searchstax-search-overview.component.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/searchstax-search-overview/searchstax-search-overview.component.html","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/templates/searchstax-search-pagination-template.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/templates/searchstax-search-pagination-infinite-template.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/searchstax-search-pagination/searchstax-search-pagination.component.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/searchstax-search-pagination/searchstax-search-pagination.component.html","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/templates/searchstax-search-facet-desktop-template.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/templates/searchstax-search-facet-mobile-template.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/searchstax-search-facets/searchstax-search-facets.component.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/searchstax-search-facets/searchstax-search-facets.component.html","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/templates/searchstax-search-sorting-template.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/searchstax-search-sorting/searchstax-search-sorting.component.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/searchstax-search-sorting/searchstax-search-sorting.component.html","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/templates/searchstax-search-answer-template.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/searchstax-search-answer/searchstax-search-answer.component.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/searchstax-search-answer/searchstax-search-answer.component.html","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/templates/searchstax-search-related-template.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/searchstax-search-related/searchstax-search-related.component.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/searchstax-search-related/searchstax-search-related.component.html","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/templates/searchstax-search-external-template.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/searchstax-search-external/searchstax-search-external.component.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/searchstax-search-external/searchstax-search-external.component.html","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/searchstudio-ux-angular.module.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/public-api.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/searchstax-inc-searchstudio-ux-angular.ts"],"sourcesContent":["import { Injectable } from \"@angular/core\";\nimport {\n ISearchstaxRenderEngine,\n Searchstax,\n} from \"@searchstax-inc/searchstudio-ux-js\";\nimport { ReplaySubject } from \"rxjs\";\nimport { take } from \"rxjs/operators\";\n\n@Injectable({\n providedIn: \"root\",\n})\nexport class StoreServiceService {\n searchstax = new Searchstax(ISearchstaxRenderEngine.angular);\n\n /**\n * `Searchstax.initialize()` assigns a fresh `dataLayer`. Widgets must not\n * subscribe before that runs, or they listen to stale observables and never\n * see search results (projection order can run child `ngOnInit` first).\n */\n private readonly dataLayerReady$ = new ReplaySubject<void>(1);\n\n constructor() {}\n\n /** Called from `SearchstaxWrapper` immediately after `initialize()`. */\n notifyDataLayerReady(): void {\n this.dataLayerReady$.next();\n }\n\n whenDataLayerReady(callback: () => void): void {\n this.dataLayerReady$.pipe(take(1)).subscribe(() => callback());\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { IRouterConfig, ISearchObject, ISearchstaxParsedResult, ISearchstaxSearchResponse, Searchstax } from '@searchstax-inc/searchstudio-ux-js';\nimport { StoreServiceService } from '../services/store-service.service';\n\n@Component({\n standalone: false,\n selector: 'app-searchstax-wrapper',\n template: `\n <div>\n <ng-content></ng-content>\n </div>\n `,\n styles: [\n ]\n})\nexport class SearchstaxWrapper implements OnInit {\n @Input() language = 'en';\n @Input() model = '';\n @Input() searchURL: string = '';\n @Input() suggesterURL: string = '';\n @Input() trackApiKey: string = '';\n @Input() searchAuth: string = '';\n @Input() sessionId?: string;\n @Input() analyticsBaseUrl: string = '';\n @Input() analyticsSrc: string = '';\n @Input() questionURL: string = '';\n @Input() authType: 'basic' | 'token' = 'basic';\n @Input() autoCorrect = true;\n @Input() router?: IRouterConfig;\n @Input() beforeSearch?: (props: ISearchObject) => ISearchObject | null ;\n @Input() afterSearch?: (results: ISearchstaxParsedResult[], unparsedResponse?: ISearchstaxSearchResponse) => ISearchstaxParsedResult[];\n @Output() initialized = new EventEmitter<Searchstax>();\n hooks: { beforeSearch?: (props: ISearchObject) => ISearchObject | null, afterSearch?: (results: ISearchstaxParsedResult[]) => ISearchstaxParsedResult[] } = {};\n constructor(private storeServiceService: StoreServiceService) {\n }\n\n ngOnInit(): void {\n if (this.beforeSearch) {\n this.hooks.beforeSearch = this.beforeSearch;\n }\n if (this.afterSearch) {\n this.hooks.afterSearch = this.afterSearch;\n }\n this.storeServiceService.searchstax.initialize({\n language: this.language,\n model: this.model,\n searchURL: this.searchURL,\n suggesterURL: this.suggesterURL,\n trackApiKey: this.trackApiKey,\n searchAuth: this.searchAuth,\n authType: this.authType,\n autoCorrect: this.autoCorrect,\n router: this.router,\n hooks: this.hooks,\n analyticsBaseUrl: this.analyticsBaseUrl,\n analyticsSrc: this.analyticsSrc,\n sessionId: this.sessionId,\n questionURL: this.questionURL\n })\n\n this.initialized.emit(this.storeServiceService.searchstax);\n this.storeServiceService.notifyDataLayerReady();\n }\n\n}\n","import { ChangeDetectorRef, NgZone } from \"@angular/core\";\n\n/**\n * Shape of `@searchstax-inc/searchstudio-ux-js` data-layer streams (custom class, not RxJS).\n */\nexport type SearchstaxDataLayerObservableLike = {\n subscribe(observer: (data: unknown) => void, key?: string): string;\n};\n\n/**\n * Studio JS often emits on dataLayer streams outside Angular's zone (fetch/XHR).\n * `NgZone.run()` alone does not always schedule a tick for library components, so\n * pass the host `ChangeDetectorRef` to refresh the widget after each emission.\n */\nexport function subscribeInNgZone<T = unknown>(\n ngZone: NgZone,\n source: SearchstaxDataLayerObservableLike,\n next: (value: T) => void,\n cdr: ChangeDetectorRef\n): string {\n return source.subscribe((value) => {\n ngZone.run(() => {\n next(value as T);\n cdr.detectChanges();\n });\n });\n}\n","import { ISearchstaxLocation } from \"@searchstax-inc/searchstudio-ux-js\";\n\n//CUT START\n\n\nconst config = {\n appId: \"APP_ID\",\n relatedSearchesAPIKey: \"KEY\"\n}\n\nconst locationWidgetConfig = {\n locationDecode: (term: string): Promise<ISearchstaxLocation> => {\n return new Promise((resolve) => {\n // make a request to google geocoding API to retrieve lat, lon and address\n\n const geocodingAPIKey = \"GEOCODING_API_KEY\";\n const geocodingURL = `https://maps.googleapis.com/maps/api/geocode/json?address=${encodeURIComponent(\n term\n )}&key=${geocodingAPIKey}`;\n fetch(geocodingURL)\n .then((response) => response.json())\n .then((data) => {\n if (data.status === \"OK\" && data.results.length > 0) {\n const result = data.results[0];\n const location = {\n lat: result.geometry.location.lat,\n lon: result.geometry.location.lng,\n address: result.formatted_address,\n };\n resolve(location);\n } else {\n resolve({\n address: undefined,\n lat: undefined,\n lon: undefined,\n error: true,\n });\n }\n })\n .catch(() => {\n resolve({\n address: undefined,\n lat: undefined,\n lon: undefined,\n error: true,\n });\n });\n });\n },\n locationDecodeCoordinatesToAddress: (lat: string, lon: string): Promise<ISearchstaxLocation> => {\n return new Promise((resolve) => {\n fetch(\n `https://geocoding-staging.searchstax.co/reverse?location=${lat},${lon}&components=country:US&app_id=${config.appId}`,\n {\n method: \"GET\",\n headers: {\n Authorization: `Token ${config.relatedSearchesAPIKey}`,\n },\n }\n )\n .then((response) => response.json())\n .then((data) => {\n if (data.status === \"OK\" && data.results.length > 0) {\n const result = data.results[0];\n resolve({\n address: result.formatted_address,\n lat: lat,\n lon: lon,\n error: false,\n });\n } else {\n resolve({\n address: undefined,\n lat: lat,\n lon: lon,\n error: true,\n });\n }\n })\n .catch(() => {\n resolve({\n address: undefined,\n lat: lat,\n lon: lon,\n error: true,\n });\n });\n });\n },\n locationSearchEnabled: false,\n locationValuesOverride: {\n locationDistanceEnabled: true,\n filterValues: [\"any\", \"1000\"],\n filterUnit: \"miles\",\n locationFilterDefaultValue: \"any\"\n },\n }\n//CUT END\n export {locationWidgetConfig}","// reusable-template.component.ts\nimport { Component, ViewChild, TemplateRef } from \"@angular/core\";\n\n@Component({\n standalone: false,\n selector: \"app-location-template\",\n template: `\n <ng-template\n #locationTemplate\n let-context=\"context\"\n let-locationData=\"locationData\"\n let-inputValue=\"inputValue\"\n let-selectValue=\"selectValue\"\n let-radiusChange=\"radiusChange\"\n let-inputChange=\"inputChange\"\n let-locationBlur=\"locationBlur\"\n let-locationError=\"locationError\"\n let-getCurrentLocation=\"getCurrentLocation\"\n >\n @if (locationData) {\n <div\n class=\"searchstax-location-input-container\"\n data-test-id=\"searchstax-location-input-container\"\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 [value]=\"inputValue\"\n (change)=\"inputChange($event, context)\"\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 @if (locationData.shouldShowLocationDistanceDropdown) {\n <span\n class=\"searchstax-location-input-label\"\n >WITHIN</span\n >\n }\n @if (locationData.shouldShowLocationDistanceDropdown) {\n <select\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)]=\"context.selectValue\"\n >\n @for (\n value of locationData.locationSearchDistanceValues;\n track value.value\n ) {\n <option [value]=\"value.value\">\n {{ value.label }}\n </option>\n }\n </select>\n }\n </div>\n </div>\n }\n </ng-template>\n `,\n})\nexport class LocationTemplateComponent {\n @ViewChild(\"locationTemplate\", { static: true }) locationTemplate!: TemplateRef<any>;\n}\n","import {\n ChangeDetectorRef,\n Component,\n Input,\n NgZone,\n OnInit,\n TemplateRef,\n} from \"@angular/core\";\nimport {\n ISearchObject,\n ISearchstaxLocation,\n ISearchstaxLocationRenderData,\n} from \"@searchstax-inc/searchstudio-ux-js\";\nimport { StoreServiceService } from \"../../services/store-service.service\";\nimport { subscribeInNgZone } from \"../../utils/subscribe-in-ng-zone\";\n\n@Component({\n standalone: false,\n selector: \"app-searchstax-search-location\",\n templateUrl: \"./searchstax-search-location.component.html\",\n styles: [],\n})\nexport class SearchstaxSearchLocationWidget implements OnInit {\n @Input() templateOverride?: TemplateRef<any>;\n @Input() locationSearchEnabled?: boolean;\n @Input() locationValuesOverride?: {\n locationDistanceEnabled: boolean; // if set to true location distance dropdown will be shown\n filterValues: string[]; // array of location filter values to override the default ones\n filterUnit: string; // unit of the location filter to override the default one\n }\n @Input() locationDecode!: (\n locationName: string\n ) => Promise<ISearchstaxLocation>;\n @Input() locationDecodeCoordinatesToAddress!: (\n lat: string,\n lon: string\n ) => Promise<ISearchstaxLocation>;\n\n locationData: null | ISearchstaxLocationRenderData = null;\n inputValue: string = \"\";\n selectValue: string | number = \"\";\n locationAdded = false;\n locationError = false;\n rand = Math.random();\n\n context = this;\n constructor(\n private storeServiceService: StoreServiceService,\n private ngZone: NgZone,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngOnInit(): void {\n if (this.storeServiceService.searchstax) {\n this.storeServiceService.whenDataLayerReady(() => {\n this.attachObservables();\n });\n setTimeout(() => {\n this.addWidget();\n }, 100);\n } else {\n throw Error(\"Searchstax instance needs to be passed via props\");\n }\n }\n\n locationBlur(context: this) {\n context.storeServiceService.searchstax.searchLocationWidget?.triggerGeocoder(\n context.inputValue\n );\n }\n radiusChange(e: Event, context: this) {\n const target = e.target as HTMLSelectElement;\n context.selectValue = target.value;\n context.storeServiceService.searchstax.searchLocationWidget?.setRadiusValue(\n context.selectValue\n );\n }\n inputChange(e: Event, context: this) {\n const target = e.target as HTMLInputElement;\n context.inputValue = target.value;\n }\n\n getCurrentLocation(context: this){\n context.storeServiceService.searchstax.searchLocationWidget?.getCurrentLocation();\n }\n\n addWidget() {\n if (\n !this.locationAdded &&\n this.storeServiceService.searchstax.routerHelper\n ) {\n this.locationAdded = true;\n this.storeServiceService.searchstax.addSearchLocationWidget(\n \"searchstax-location-container\" + this.rand,\n {\n hooks: {\n locationDecode: this.locationDecode,\n locationDecodeCoordinatesToAddress:\n this.locationDecodeCoordinatesToAddress,\n },\n locationSearchEnabled: this.locationSearchEnabled,\n locationValuesOverride: this.locationValuesOverride,\n }\n );\n }\n }\n\n attachObservables() {\n subscribeInNgZone(\n this.ngZone,\n this.storeServiceService.searchstax.dataLayer.$locationWidgetTemplateData,\n (sortingData: null | ISearchstaxLocationRenderData) => {\n this.locationData = sortingData;\n },\n this.cdr\n );\n\n subscribeInNgZone(\n this.ngZone,\n this.storeServiceService.searchstax.dataLayer.$searchObject,\n (result: null | ISearchObject) => {\n this.inputValue = result?.location?.address ?? \"\";\n this.selectValue = result?.location?.radius || \"\";\n },\n this.cdr\n );\n\n subscribeInNgZone(\n this.ngZone,\n this.storeServiceService.searchstax.dataLayer.$locationError,\n (locationError: boolean) => {\n this.locationError = locationError;\n },\n this.cdr\n );\n\n subscribeInNgZone(\n this.ngZone,\n this.storeServiceService.searchstax.dataLayer.$searchLocationChange,\n (location: string) => {\n this.inputValue = location;\n },\n this.cdr\n );\n\n subscribeInNgZone(\n this.ngZone,\n this.storeServiceService.searchstax.dataLayer.$searchRadiusChange,\n (radius: string | number) => {\n this.selectValue = radius;\n },\n this.cdr\n );\n }\n}\n","<div\n [id]=\"'searchstax-location-container' + rand\"\n class=\"searchstax-location-container\"\n>\n @if (!!locationData && !templateOverride) {\n <div>\n <app-location-template #ref></app-location-template>\n <ng-container\n [ngTemplateOutlet]=\"ref.locationTemplate\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-container>\n </div>\n }\n\n @if (!!locationData && templateOverride) {\n <div>\n <ng-container\n [ngTemplateOutlet]=\"templateOverride\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-container>\n </div>\n }\n</div>\n","// reusable-template.component.ts\nimport { Component, ViewChild, TemplateRef } from \"@angular/core\";\n\n@Component({\n standalone: false,\n selector: \"app-input-template\",\n template: `\n <ng-template\n #inputTemplate\n let-suggestions=\"suggestions\"\n let-onMouseLeave=\"onMouseLeave\"\n let-onMouseOver=\"onMouseOver\"\n let-onMouseClick=\"onMouseClick\"\n let-context=\"context\"\n let-locationWidgetConfig=\"locationWidgetConfig\"\n >\n <div class=\"searchstax-search-input-wrapper\">\n <input\n type=\"text\"\n id=\"searchstax-search-input\"\n class=\"searchstax-search-input\"\n placeholder=\"SEARCH FOR...\"\n aria-label=\"search\"\n />\n <div\n class=\"searchstax-autosuggest-container\"\n [ngClass]=\"{ hidden: suggestions.length === 0 }\"\n (mouseleave)=\"onMouseLeave(context)\"\n >\n @for (suggestion of suggestions; track $index) {\n <div\n class=\"searchstax-autosuggest-item\"\n >\n <div\n class=\"searchstax-autosuggest-item-term-container\"\n [innerHtml]=\"suggestion.term\"\n (mouseover)=\"onMouseOver(suggestion, context)\"\n tabindex=\"0\"\n (click)=\"onMouseClick($event, context)\"\n ></div>\n </div>\n }\n </div>\n </div>\n <app-searchstax-search-location\n [locationDecode]=\"locationWidgetConfig.locationDecode\"\n [locationDecodeCoordinatesToAddress]=\"\n locationWidgetConfig.locationDecodeCoordinatesToAddress\n \"\n [locationSearchEnabled]=\"locationWidgetConfig.locationSearchEnabled\"\n [locationValuesOverride]=\"locationWidgetConfig.locationValuesOverride\"\n >\n </app-searchstax-search-location>\n <button\n class=\"searchstax-spinner-icon\"\n id=\"searchstax-search-input-action-button\"\n role=\"button\"\n aria-label=\"search\"\n ></button>\n </ng-template>\n `,\n})\nexport class InputTemplateComponent {\n @ViewChild(\"inputTemplate\", { static: true }) inputTemplate!: TemplateRef<any>;\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n Input,\n NgZone,\n OnInit,\n TemplateRef,\n} from \"@angular/core\";\nimport {\n ISearchstaxLocation,\n ISearchstaxSEARCHTERM,\n ISearchstaxSearchInputRenderData,\n ISearchstaxSuggestProps,\n ISearchstaxSuggestResponse,\n ISearchstaxSuggestion,\n} from \"@searchstax-inc/searchstudio-ux-js\";\nimport { StoreServiceService } from \"../../services/store-service.service\";\nimport { subscribeInNgZone } from \"../../utils/subscribe-in-ng-zone\";\nimport { locationWidgetConfig } from \"../templates/SearchstaxLocationWidgetTemplateConfig\";\n\n@Component({\n standalone: false,\n selector: \"app-searchstax-input\",\n templateUrl: \"./searchstax-input.component.html\",\n styles: [],\n})\nexport class SearchstaxInputWidget implements OnInit, AfterViewInit {\n @Input() afterAutosuggest?: (\n result: ISearchstaxSuggestResponse\n ) => ISearchstaxSuggestResponse;\n @Input() beforeAutosuggest?: (\n props: ISearchstaxSuggestProps\n ) => ISearchstaxSuggestProps | null;\n @Input() searchInputId = \"\";\n @Input() suggestAfterMinChars?: number;\n @Input() templateOverride?: TemplateRef<any>;\n\n hooks: { [key: string]: (prop: any) => any } = {};\n suggestions: ISearchstaxSuggestion[] = [];\n context = this;\n templateData: null | ISearchstaxSearchInputRenderData = null;\n locationWidgetConfig = locationWidgetConfig;\n\n private searchInputWidgetAttached = false;\n\n constructor(\n private storeServiceService: StoreServiceService,\n private ngZone: NgZone,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngOnInit(): void {\n if (this.storeServiceService.searchstax) {\n this.storeServiceService.whenDataLayerReady(() => {\n this.attachObservables();\n });\n if (this.afterAutosuggest) {\n this.hooks[\"afterAutosuggest\"] = this.afterAutosuggest;\n }\n if (this.beforeAutosuggest) {\n this.hooks[\"beforeAutosuggest\"] = this.beforeAutosuggest;\n }\n } else {\n throw Error(\"Searchstax instance needs to be passed via props\");\n }\n }\n\n /**\n * Studio JS looks up `#searchInputId` as soon as `addSearchInputWidget` runs.\n * The real input is stamped by `ngTemplateOutlet` after child views exist, so\n * `ngOnInit` + a fixed delay can run too early (especially with control flow).\n */\n ngAfterViewInit(): void {\n this.tryAttachSearchInputWidget(0);\n }\n\n private tryAttachSearchInputWidget(attempt: number): void {\n const searchstax = this.storeServiceService.searchstax;\n if (!searchstax || this.searchInputWidgetAttached) {\n return;\n }\n if (typeof document === \"undefined\") {\n return;\n }\n const inputId = this.searchInputId || \"searchstax-search-input\";\n if (document.getElementById(inputId)) {\n searchstax.addSearchInputWidget(\"searchstax-input-container\", {\n suggestAfterMinChars: this.suggestAfterMinChars,\n hooks: this.hooks,\n templates: {\n mainTemplate: {\n template: ``,\n searchInputId: inputId,\n },\n },\n });\n searchstax.dataLayer.setInputTemplateRendered(true);\n this.searchInputWidgetAttached = true;\n return;\n }\n const maxAttempts = 60;\n if (attempt < maxAttempts) {\n requestAnimationFrame(() =>\n this.tryAttachSearchInputWidget(attempt + 1)\n );\n } else {\n console.warn(\n `[Searchstax] Input #${inputId} not found after view init; search input widget was not attached. ` +\n `With a custom templateOverride, set the input id to match [searchInputId] (default \"${inputId}\").`\n );\n }\n }\n\n\n onMouseLeave(context: this) {\n context.storeServiceService.searchstax.searchInputWidget?.resetAutosuggestSelection();\n context.storeServiceService.searchstax.searchInputWidget?.markActiveAutosuggestItem();\n }\n\n onMouseOver(suggestion: ISearchstaxSuggestion, context: this) {\n context.storeServiceService.searchstax.searchInputWidget?.onSuggestionEnter(\n suggestion\n );\n }\n\n onMouseClick(e: Event, context: this) {\n e.stopImmediatePropagation();\n context.storeServiceService.searchstax.searchInputWidget?.suggestionChosen();\n }\n\n attachObservables() {\n subscribeInNgZone(\n this.ngZone,\n this.storeServiceService.searchstax.dataLayer.$autosuggestResults,\n (suggestions: null | ISearchstaxSEARCHTERM) => {\n this.suggestions = suggestions?.suggestions ?? [];\n },\n this.cdr\n );\n\n subscribeInNgZone(\n this.ngZone,\n this.storeServiceService.searchstax.dataLayer.$inputWidgetTemplateData,\n (data: null | ISearchstaxSearchInputRenderData) => {\n this.templateData = data;\n },\n this.cdr\n );\n }\n}\n","<div id=\"searchstax-input-container\">\n <div\n class=\"searchstax-search-input-container searchstax-search-input-container-new\"\n [class]=\"{\n 'searchstax-alternative-render': !!templateData?.locationEnabled\n }\"\n >\n @if (!templateOverride) {\n <app-input-template #ref></app-input-template>\n <ng-container\n [ngTemplateOutlet]=\"ref.inputTemplate\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-container>\n } @else {\n <ng-container\n [ngTemplateOutlet]=\"templateOverride\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-container>\n }\n </div>\n</div>\n","// reusable-template.component.ts\nimport { Component, ViewChild, TemplateRef } from \"@angular/core\";\n\n@Component({\n standalone: false,\n selector: \"app-results-template\",\n template: `\n <ng-template\n #resultsTemplate\n let-searchResults=\"searchResults\"\n let-resultClicked=\"resultClicked\"\n let-isImage=\"isImage\"\n let-context=\"context\"\n >\n <div class=\"searchstax-search-results\" id=\"searchstax-search-results\">\n @for (\n searchResult of searchResults ?? [];\n track searchResult.uniqueId\n ) {\n <a\n [href]=\"searchResult.url\"\n [attr.data-searchstax-unique-result-id]=\"searchResult.uniqueId\"\n (click)=\"resultClicked(searchResult, $event, context)\"\n (keyup.enter)=\"resultClicked(searchResult, $event, context)\"\n (keyup.space)=\"resultClicked(searchResult, $event, context)\"\n [attr.aria-labelledby]=\"'title-' + searchResult.uniqueId\"\n tabindex=\"0\"\n class=\"searchstax-result-item-link searchstax-result-item-link-wrapping\"\n >\n <div\n class=\"searchstax-search-result\"\n [ngClass]=\"{ 'has-thumbnail': searchResult.thumbnail }\"\n >\n @if (searchResult.promoted) {\n <div class=\"searchstax-search-result-promoted\"></div>\n }\n @if (searchResult.ribbon) {\n <div\n [innerHTML]=\"searchResult.ribbon\"\n class=\"searchstax-search-result-ribbon\"\n ></div>\n }\n @if (searchResult.thumbnail) {\n <img\n alt=\"\"\n [src]=\"searchResult.thumbnail\"\n class=\"searchstax-thumbnail\"\n />\n }\n <div class=\"searchstax-search-result-title-container\">\n <span\n class=\"searchstax-search-result-title\"\n [id]=\"'title-' + searchResult.uniqueId\"\n [innerHTML]=\"searchResult.title\"\n ></span>\n </div>\n @if (searchResult.paths) {\n <p\n tabindex=\"0\"\n class=\"searchstax-search-result-common\"\n [innerHTML]=\"searchResult.paths\"\n ></p>\n }\n @if (searchResult.description) {\n <p\n tabindex=\"0\"\n [innerHTML]=\"searchResult.description\"\n class=\"searchstax-search-result-description searchstax-search-result-common\"\n ></p>\n }\n @for (\n unmappedField of searchResult.unmappedFields ?? [];\n track $index\n ) {\n @if (isImage(unmappedField)) {\n <div class=\"searchstax-search-result-image-container\">\n <img\n alt=\"\"\n [src]=\"unmappedField.value\"\n class=\"searchstax-result-image\"\n />\n </div>\n } @else {\n <div>\n <p\n tabindex=\"0\"\n class=\"searchstax-search-result-common\"\n [innerHTML]=\"unmappedField.value\"\n ></p>\n </div>\n }\n }\n </div>\n </a>\n }\n </div>\n </ng-template>\n `,\n})\nexport class ResultsTemplateComponent {\n @ViewChild(\"resultsTemplate\", { static: true }) resultsTemplate!: TemplateRef<any>;\n}\n","// reusable-template.component.ts\nimport { Component, ViewChild, TemplateRef } from \"@angular/core\";\n\n@Component({\n standalone: false,\n selector: \"app-no-results-template\",\n template: `\n <ng-template\n #noResultsTemplate\n let-metadata=\"metadata\"\n let-searchTerm=\"searchTerm\"\n let-executeSearch=\"executeSearch\"\n let-context=\"context\"\n >\n <div class=\"searchstax-no-results\">\n Showing <strong>no results</strong> for\n <strong>\"{{ searchTerm }}\"</strong>\n <br />\n @if (metadata?.spellingSuggestion) {\n <span\n >&nbsp;Did you mean\n <a\n href=\"#\"\n [attr.aria-label]=\"'did you mean: ' + metadata?.spellingSuggestion\"\n class=\"searchstax-suggestion-term\"\n (click)=\"\n executeSearch(metadata?.spellingSuggestion ?? '', $event, context)\n \"\n >{{ metadata?.spellingSuggestion }}</a\n >?</span\n >\n }\n </div>\n <ul>\n <li>\n Try searching for search related terms or topics. We offer a wide\n variety of content to help you get the information you need.\n </li>\n </ul>\n </ng-template>\n `,\n})\nexport class NoResultsTemplateComponent {\n @ViewChild(\"noResultsTemplate\", { static: true }) noResultsTemplate!: TemplateRef<any>;\n}\n","import {\n ChangeDetectorRef,\n Component,\n Input,\n NgZone,\n OnInit,\n TemplateRef,\n} from '@angular/core';\nimport { StoreServiceService } from '../../services/store-service.service';\nimport { subscribeInNgZone } from '../../utils/subscribe-in-ng-zone';\nimport {\n ISearchstaxParsedResult,\n ISearchstaxSearchMetadata,\n} from '@searchstax-inc/searchstudio-ux-js';\n\n@Component({\n standalone: false,\n selector: 'app-searchstax-results',\n templateUrl: './searchstax-results.component.html',\n styles: [],\n})\nexport class SearchstaxResultsWidget implements OnInit {\n @Input() afterLinkClick?: (\n results: ISearchstaxParsedResult\n ) => ISearchstaxParsedResult;\n\n @Input() noResultsTemplate?: TemplateRef<any>;\n @Input() resultsTemplate?: TemplateRef<any>;\n @Input() renderMethod?: \"infiniteScroll\" | \"pagination\";\n @Input() resultsPerPage?: number;\n\n searchResults: ISearchstaxParsedResult[] | null = null;\n metadata: ISearchstaxSearchMetadata | null = null;\n searchTerm = '';\n context = this;\n\n get hooks(): { [key: string]: (prop: any) => any } {\n const hooks: { [key: string]: (prop: any) => any } = {};\n if (this.afterLinkClick) {\n hooks['afterLinkClick'] = this.afterLinkClick;\n }\n return hooks;\n }\n\n constructor(\n public storeServiceService: StoreServiceService,\n private ngZone: NgZone,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngOnInit(): void {\n if (this.storeServiceService.searchstax) {\n this.storeServiceService.whenDataLayerReady(() => {\n this.attachObservables();\n });\n\n setTimeout(() => {\n this.storeServiceService.searchstax.addSearchResultsWidget(\n 'searchstax-results-container',\n {\n templates: {},\n hooks: this.hooks,\n renderMethod: this.renderMethod ?? \"pagination\",\n resultsPerPage: this.resultsPerPage,\n }\n );\n }, 0);\n } else {\n throw Error('Searchstax instance needs to be passed via props');\n }\n }\n\n executeSearch(term: string, event: Event, context: this): void {\n event.preventDefault();\n context.storeServiceService.searchstax.executeSearch(term);\n }\n\n attachObservables() {\n subscribeInNgZone(\n this.ngZone,\n this.storeServiceService.searchstax.dataLayer.$searchResults,\n (results: ISearchstaxParsedResult[] | null) => {\n const current = this.searchResults ? [...this.searchResults] : [];\n const newResults = results ?? [];\n const resultsCombined =\n this.renderMethod === \"infiniteScroll\"\n ? [...current, ...newResults]\n : results;\n if (\n this.storeServiceService.searchstax.dataLayer.$searchObject.value\n ?.page === 1\n ) {\n this.searchResults = newResults;\n } else {\n this.searchResults = resultsCombined;\n }\n },\n this.cdr\n );\n subscribeInNgZone(\n this.ngZone,\n this.storeServiceService.searchstax.dataLayer.$searchTermChange,\n (result: string) => {\n this.searchTerm = result;\n },\n this.cdr\n );\n\n subscribeInNgZone(\n this.ngZone,\n this.storeServiceService.searchstax.dataLayer.$searchResultsMetadata,\n (value: ISearchstaxSearchMetadata) => {\n this.metadata = value;\n },\n this.cdr\n );\n }\n\n resultClicked(result: ISearchstaxParsedResult, event: Event, context: this) {\n event.preventDefault();\n event.stopPropagation();\n context.storeServiceService.searchstax.executeLinkClick(result.uniqueId);\n }\n\n isImage(field: any){\n return field.isImage && typeof field.value === 'string'\n }\n}\n","<div id=\"searchstax-results-container\">\n <section aria-label=\"search results container\" tabindex=\"0\">\n <div\n class=\"searchstax-search-results-container\"\n id=\"searchstax-search-results-container\"\n >\n <div id=\"searchstax-result-container\">\n @if (\n searchResults?.length === 0 &&\n searchTerm !== '' &&\n searchTerm !== '*' &&\n storeServiceService.searchstax.dataLayer.parsedData\n ?.firstSearchHappened &&\n !noResultsTemplate\n ) {\n <div>\n <app-no-results-template #noResultsTpl></app-no-results-template>\n <ng-container\n [ngTemplateOutlet]=\"noResultsTpl.noResultsTemplate\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-container>\n </div>\n }\n @if (\n searchResults?.length === 0 &&\n searchTerm !== '' &&\n searchTerm !== '*' &&\n storeServiceService.searchstax.dataLayer.parsedData\n ?.firstSearchHappened &&\n noResultsTemplate\n ) {\n <div>\n <ng-container\n [ngTemplateOutlet]=\"noResultsTemplate\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-container>\n </div>\n }\n\n @if (searchResults && searchResults.length && !resultsTemplate) {\n <app-results-template #resultsTpl></app-results-template>\n <ng-container\n [ngTemplateOutlet]=\"resultsTpl.resultsTemplate\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-container>\n }\n\n @if (searchResults && searchResults.length && resultsTemplate) {\n <div>\n <ng-container\n [ngTemplateOutlet]=\"resultsTemplate\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-container>\n </div>\n }\n </div>\n </div>\n </section>\n</div>\n","// reusable-template.component.ts\nimport { Component, ViewChild, TemplateRef } from \"@angular/core\";\n\n@Component({\n standalone: false,\n selector: \"app-overview-template\",\n template: `\n <ng-template\n #feedbackTemplate\n let-searchFeedbackData=\"searchFeedbackData\"\n let-onOriginalQueryClick=\"onOriginalQueryClick\"\n let-context=\"context\"\n >\n <h2 class=\"searchstax-feedback-container\">\n Showing\n <b\n >{{ searchFeedbackData!.startResultIndex }} -\n {{ searchFeedbackData!.endResultIndex }}</b\n >\n of <b>{{ searchFeedbackData!.totalResults }}</b> results\n @if (searchFeedbackData.searchTerm) {\n <span\n >for \"<b>{{ searchFeedbackData!.searchTerm }}</b\n >\"\n </span>\n }\n <div class=\"searchstax-feedback-container-suggested\">\n @if (searchFeedbackData.autoCorrectedQuery) {\n <div>\n Search instead for\n <a\n href=\"#\"\n (click)=\"onOriginalQueryClick($event, context)\"\n class=\"searchstax-feedback-original-query\"\n [attr.aria-label]=\"\n 'Search instead for: ' + searchFeedbackData!.originalQuery\n \"\n >{{ searchFeedbackData!.originalQuery }}</a\n >\n </div>\n }\n </div>\n </h2>\n </ng-template>\n `,\n})\nexport class OverviewTemplateComponent {\n @ViewChild(\"feedbackTemplate\", { static: true }) overviewTemplate!: TemplateRef<any>;\n}\n","import {\n ChangeDetectorRef,\n Component,\n Input,\n NgZone,\n OnInit,\n TemplateRef,\n} from \"@angular/core\";\nimport { ISearchstaxSearchFeedbackData } from \"@searchstax-inc/searchstudio-ux-js\";\nimport { StoreServiceService } from \"../../services/store-service.service\";\nimport { subscribeInNgZone } from \"../../utils/subscribe-in-ng-zone\";\n\n@Component({\n standalone: false,\n selector: \"app-searchstax-search-feedback\",\n templateUrl: \"./searchstax-search-overview.component.html\",\n styles: [],\n})\nexport class SearchstaxSearchFeedbackWidget implements OnInit {\n @Input() templateOverride?: TemplateRef<any>;\n\n searchFeedbackData: null | ISearchstaxSearchFeedbackData = null;\n rand = Math.random();\n context = this;\n constructor(\n private storeServiceService: StoreServiceService,\n private ngZone: NgZone,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngOnInit(): void {\n if (this.storeServiceService.searchstax) {\n this.storeServiceService.whenDataLayerReady(() => {\n this.attachObservables();\n });\n setTimeout(() => {\n this.storeServiceService.searchstax.addSearchFeedbackWidget(\"search-feedback-container\" + this.rand, {});\n }, 0);\n } else {\n throw Error(\"Searchstax instance needs to be passed via props\");\n }\n }\n\n onOriginalQueryClick(e: Event, context: this) {\n e.stopImmediatePropagation();\n context.storeServiceService.searchstax.searchFeedbackWidget?.onOriginalQueryClick(e);\n }\n\n attachObservables() {\n subscribeInNgZone(\n this.ngZone,\n this.storeServiceService.searchstax.dataLayer.$searchFeedbackData,\n (searchFeedbackData: null | ISearchstaxSearchFeedbackData) => {\n this.searchFeedbackData = searchFeedbackData;\n },\n this.cdr\n );\n }\n}\n","<div\n class=\"search-feedback-container\"\n [id]=\"'search-feedback-container' + rand\"\n>\n @if (\n searchFeedbackData &&\n searchFeedbackData?.searchExecuted &&\n !templateOverride &&\n searchFeedbackData?.totalResults\n ) {\n <div class=\"searchstax-feedback-container\">\n <app-overview-template #ref></app-overview-template>\n <ng-container\n [ngTemplateOutlet]=\"ref.overviewTemplate\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-container>\n </div>\n }\n\n @if (\n searchFeedbackData &&\n searchFeedbackData?.searchExecuted &&\n templateOverride &&\n searchFeedbackData?.totalResults\n ) {\n <div>\n <ng-container\n [ngTemplateOutlet]=\"templateOverride\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-container>\n </div>\n }\n</div>\n","// reusable-template.component.ts\nimport { Component, ViewChild, TemplateRef } from \"@angular/core\";\n\n@Component({\n standalone: false,\n selector: \"app-pagination-template\",\n template: `\n <ng-template\n #paginationTemplate\n let-paginationData=\"paginationData\"\n let-previousPage=\"previousPage\"\n let-nextPage=\"nextPage\"\n let-context=\"context\"\n >\n <div class=\"searchstax-pagination-container\">\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 </ng-template>\n `,\n})\nexport class PaginationTemplateComponent {\n @ViewChild(\"paginationTemplate\", { static: true }) paginationTemplate!: TemplateRef<any>;\n}\n","// reusable-template.component.ts\nimport { Component, ViewChild, TemplateRef } from \"@angular/core\";\n\n@Component({\n standalone: false,\n selector: \"app-pagination-infinite-template\",\n template: `\n <ng-template\n #infiniteScrollTemplate\n let-paginationData=\"paginationData\"\n let-nextPage=\"nextPage\"\n let-context=\"context\"\n >\n <div class=\"searchstax-pagination-container\">\n <div class=\"searchstax-pagination-content\">\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 </div>\n </ng-template>\n `,\n})\nexport class PaginationInfiniteTemplateComponent {\n @ViewChild(\"infiniteScrollTemplate\", { static: true })\n infiniteScrollTemplate!: TemplateRef<any>;\n}\n","import {\n ChangeDetectorRef,\n Component,\n Input,\n NgZone,\n OnInit,\n TemplateRef,\n} from \"@angular/core\";\nimport {\n IPaginationData,\n ISearchObject,\n} from \"@searchstax-inc/searchstudio-ux-js\";\nimport { StoreServiceService } from \"../../services/store-service.service\";\nimport { subscribeInNgZone } from \"../../utils/subscribe-in-ng-zone\";\n\n@Component({\n standalone: false,\n selector: \"app-searchstax-search-pagination\",\n templateUrl: \"./searchstax-search-pagination.component.html\",\n styles: [],\n})\nexport class SearchstaxSearchPaginationWidget implements OnInit {\n @Input() templateOverride?: TemplateRef<any>;\n @Input() infiniteScrollTemplateOverride?: TemplateRef<any>;\n\n paginationData: null | IPaginationData = null;\n rand = Math.random();\n context = this;\n paginationAdded = false;\n constructor(\n private storeServiceService: StoreServiceService,\n private ngZone: NgZone,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngOnInit(): void {\n if (this.storeServiceService.searchstax) {\n this.storeServiceService.whenDataLayerReady(() => {\n this.attachObservables();\n });\n setTimeout(() => {\n this.addWidget();\n }, 0);\n } else {\n throw Error(\"Searchstax instance needs to be passed via props\");\n }\n }\n\n nextPage(event: Event, context: this) {\n event.stopImmediatePropagation();\n if (!context.paginationData?.isLastPage) {\n context.storeServiceService.searchstax.searchPaginationWidget?.nextPage(\n event\n );\n }\n }\n\n previousPage(event: Event, context: this) {\n event.stopImmediatePropagation();\n if (!context.paginationData?.isFirstPage) {\n context.storeServiceService.searchstax.searchPaginationWidget?.previousPage(\n event\n );\n }\n }\n\n addWidget() {\n if (\n !this.paginationAdded &&\n this.storeServiceService.searchstax.routerHelper\n ) {\n this.paginationAdded = true;\n this.storeServiceService.searchstax.addPaginationWidget(\n \"searchstax-pagination-container\" + this.rand,\n {}\n );\n }\n }\n\n attachObservables() {\n subscribeInNgZone(\n this.ngZone,\n this.storeServiceService.searchstax.dataLayer.$searchObject,\n (_pagination: ISearchObject | null) => {\n this.addWidget();\n },\n this.cdr\n );\n\n subscribeInNgZone(\n this.ngZone,\n this.storeServiceService.searchstax.dataLayer.$paginationData,\n (pagination: IPaginationData | null) => {\n this.paginationData = pagination;\n },\n this.cdr\n );\n }\n}\n","<div [id]=\"'searchstax-pagination-container' + rand\">\n @if (\n paginationData?.totalResults &&\n !templateOverride &&\n !paginationData?.isInfiniteScroll\n ) {\n <ng-container>\n <app-pagination-template #paginationTpl></app-pagination-template>\n <ng-container\n [ngTemplateOutlet]=\"paginationTpl.paginationTemplate\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-container>\n </ng-container>\n }\n\n @if (\n paginationData?.totalResults &&\n templateOverride &&\n !paginationData?.isInfiniteScroll\n ) {\n <div>\n <ng-container\n [ngTemplateOutlet]=\"templateOverride\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-container>\n </div>\n }\n\n @if (\n paginationData?.totalResults &&\n !infiniteScrollTemplateOverride &&\n paginationData?.totalResults !== 0 &&\n !paginationData?.isLastPage &&\n paginationData?.isInfiniteScroll\n ) {\n <ng-container>\n <app-pagination-infinite-template\n #infiniteScrollTpl\n ></app-pagination-infinite-template>\n <ng-container\n [ngTemplateOutlet]=\"infiniteScrollTpl.infiniteScrollTemplate\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-container>\n </ng-container>\n }\n\n @if (\n paginationData?.totalResults &&\n infiniteScrollTemplateOverride &&\n paginationData?.totalResults !== 0 &&\n !paginationData?.isLastPage &&\n paginationData?.isInfiniteScroll\n ) {\n <div>\n <ng-container\n [ngTemplateOutlet]=\"infiniteScrollTemplateOverride\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-container>\n </div>\n }\n</div>\n","// reusable-template.component.ts\nimport { Component, ViewChild, TemplateRef } from \"@angular/core\";\n\n@Component({\n standalone: false,\n selector: \"app-facet-desktop-template\",\n template: `\n <ng-template\n #templateOverrideDesktop\n let-facetsTemplateDataDesktop=\"facetsTemplateDataDesktop\"\n let-isNotDeactivated=\"isNotDeactivated\"\n let-context=\"context\"\n let-toggleFacetGroup=\"toggleFacetGroup\"\n let-facetValues=\"facetValues\"\n let-isChecked=\"isChecked\"\n let-selectFacet=\"selectFacet\"\n let-showMoreLessDesktop=\"showMoreLessDesktop\"\n >\n <div class=\"searchstax-facets-container-desktop\">\n @for (\n facet of facetsTemplateDataDesktop?.facets ?? [];\n track facet.name\n ) {\n <div\n class=\"searchstax-facet-container\"\n [class]=\"{ active: isNotDeactivated(facet.name, context) }\"\n >\n <div>\n <div\n class=\"searchstax-facet-title-container\"\n (click)=\"toggleFacetGroup(facet.name, context)\"\n >\n <div class=\"searchstax-facet-title\">\n {{ facet.label }}\n </div>\n <div class=\"searchstax-facet-title-arrow active\"></div>\n </div>\n <div class=\"searchstax-facet-values-container\" aria-live=\"polite\">\n @for (\n facetValue of facetValues(facet);\n track $index\n ) {\n <div\n class=\"searchstax-facet-value-container\"\n [class]=\"{\n 'searchstax-facet-value-disabled': facetValue.disabled\n }\"\n #facetValueRow\n >\n <div class=\"searchstax-facet-input\">\n <input\n type=\"checkbox\"\n class=\"searchstax-facet-input-checkbox\"\n [checked]=\"isChecked(facetValue, context)\"\n [attr.aria-label]=\"\n facetValue.value + ' ' + facetValue.count\n \"\n [disabled]=\"facetValue.disabled\"\n (click)=\"\n selectFacet(facetValueRow, $event, facetValue, true, context)\n \"\n />\n </div>\n <div\n class=\"searchstax-facet-value-label\"\n (click)=\"\n selectFacet(facetValueRow, $event, facetValue, false, context)\n \"\n >\n {{ facetValue.value }}\n </div>\n <div\n class=\"searchstax-facet-value-count\"\n (click)=\"\n selectFacet(facetValueRow, $event, facetValue, false, context)\n \"\n >\n ({{ facetValue.count }})\n </div>\n </div>\n }\n @if (facet.hasMoreFacets) {\n <div class=\"searchstax-facet-show-more-container\">\n <div\n class=\"searchstax-facet-show-more-container\"\n (click)=\"showMoreLessDesktop($event, facet, context)\"\n (keyup.enter)=\"showMoreLessDesktop($event, facet, context)\"\n (keyup.space)=\"showMoreLessDesktop($event, facet, context)\"\n tabindex=\"0\"\n role=\"button\"\n >\n @if (facet.showingAllFacets) {\n <div\n class=\"searchstax-facet-show-less-button searchstax-facet-show-button\"\n >\n less\n </div>\n }\n @if (!facet.showingAllFacets) {\n <div\n class=\"searchstax-facet-show-more-button searchstax-facet-show-button\"\n >\n more\n </div>\n }\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n }\n </div>\n </ng-template>\n `,\n})\nexport class FacetDesktopTemplateComponent {\n @ViewChild(\"templateOverrideDesktop\", { static: true })\n templateOverrideDesktop!: TemplateRef<any>;\n}\n","// reusable-template.component.ts\nimport { Component, ViewChild, TemplateRef } from \"@angular/core\";\n\n@Component({\n standalone: false,\n selector: \"app-facet-mobile-template\",\n template: `\n <ng-template\n #templateOverrideMobile\n let-isNotDeactivated=\"isNotDeactivated\"\n let-context=\"context\"\n let-toggleFacetGroup=\"toggleFacetGroup\"\n let-facetValues=\"facetValues\"\n let-isChecked=\"isChecked\"\n let-selectFacet=\"selectFacet\"\n let-openOverlay=\"openOverlay\"\n let-selectedFacetsCheckboxes=\"selectedFacetsCheckboxes\"\n let-unselectFacet=\"unselectFacet\"\n let-unselectAll=\"unselectAll\"\n let-facetMobileData=\"facetMobileData\"\n let-facetsTemplateDataMobile=\"facetsTemplateDataMobile\"\n let-closeOverlay=\"closeOverlay\"\n let-showMoreLessDesktop=\"showMoreLessDesktop\"\n let-showMoreLessMobile=\"showMoreLessMobile\"\n >\n <div class=\"searchstax-facets-container-mobile\">\n <div class=\"searchstax-facets-pills-container\">\n <div\n class=\"searchstax-facets-pill searchstax-facets-pill-filter-by\"\n (click)=\"openOverlay(context)\"\n >\n <div class=\"searchstax-facets-pill-label\">Filter By</div>\n </div>\n <div class=\"searchstax-facets-pills-selected\">\n @for (facet of selectedFacetsCheckboxes; track $index) {\n <div\n class=\"searchstax-facets-pill searchstax-facets-pill-facets\"\n (click)=\"unselectFacet(facet, context)\"\n >\n <div class=\"searchstax-facets-pill-label\">\n {{ facet.value }} ({{ facet.count }})\n </div>\n <div class=\"searchstax-facets-pill-icon-close\"></div>\n </div>\n }\n </div>\n @if (selectedFacetsCheckboxes.length) {\n <div\n class=\"searchstax-facets-pill searchstax-clear-filters searchstax-facets-pill-clear-all\"\n (click)=\"unselectAll(context)\"\n >\n <div class=\"searchstax-facets-pill-label\">Clear Filters</div>\n </div>\n }\n </div>\n <div\n class=\"searchstax-facets-mobile-overlay\"\n [class]=\"{\n 'searchstax-show': facetMobileData(facetsTemplateDataMobile)\n ?.overlayOpened\n }\"\n >\n <div class=\"searchstax-facets-mobile-overlay-header\">\n <div class=\"searchstax-facets-mobile-overlay-header-title\">\n Filter By\n </div>\n <div\n class=\"searchstax-search-close\"\n (click)=\"closeOverlay(context)\"\n ></div>\n </div>\n <div class=\"searchstax-facets-container-mobile\">\n @for (\n facet of facetsTemplateDataMobile?.facets ?? [];\n track facet.name\n ) {\n <div\n class=\"searchstax-facet-container\"\n [class]=\"{\n active: isNotDeactivated(facet.name, context)\n }\"\n >\n <div>\n <div\n class=\"searchstax-facet-title-container\"\n (click)=\"toggleFacetGroup(facet.name, context)\"\n >\n <div class=\"searchstax-facet-title\">\n {{ facet.label }}\n </div>\n <div class=\"searchstax-facet-title-arrow active\"></div>\n </div>\n <div\n class=\"searchstax-facet-values-container\"\n aria-live=\"polite\"\n >\n @for (\n facetValue of facetValues(facet);\n track $index\n ) {\n <div\n class=\"searchstax-facet-value-container\"\n [class]=\"{\n 'searchstax-facet-value-disabled': facetValue.disabled\n }\"\n #facetValueRow\n >\n <div class=\"searchstax-facet-input\">\n <input\n type=\"checkbox\"\n class=\"searchstax-facet-input-checkbox\"\n [checked]=\"isChecked(facetValue, context)\"\n [attr.aria-label]=\"\n facetValue.value + ' ' + facetValue.count\n \"\n [disabled]=\"facetValue.disabled\"\n (click)=\"\n selectFacet(facetValueRow, $event, facetValue, true, context)\n \"\n />\n </div>\n <div\n class=\"searchstax-facet-value-label\"\n (click)=\"\n selectFacet(facetValueRow, $event, facetValue, false, context)\n \"\n >\n {{ facetValue.value }}\n </div>\n <div\n class=\"searchstax-facet-value-count\"\n (click)=\"\n selectFacet(facetValueRow, $event, facetValue, false, context)\n \"\n >\n ({{ facetValue.count }})\n </div>\n </div>\n }\n @if (facet.hasMoreFacets) {\n <div class=\"searchstax-facet-show-more-container\">\n <div\n class=\"searchstax-facet-show-more-container\"\n (click)=\"showMoreLessMobile($event, facet, context)\"\n (keyup.enter)=\"showMoreLessMobile($event, facet, context)\"\n (keyup.space)=\"showMoreLessMobile($event, facet, context)\"\n tabindex=\"0\"\n >\n @if (facet.showingAllFacets) {\n <div\n class=\"searchstax-facet-show-less-button searchstax-facet-show-button\"\n >\n less\n </div>\n }\n @if (!facet.showingAllFacets) {\n <div\n class=\"searchstax-facet-show-more-button searchstax-facet-show-button\"\n >\n more\n </div>\n }\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n }\n </div>\n <button\n class=\"searchstax-facets-mobile-overlay-done\"\n (click)=\"closeOverlay(context)\"\n >\n Done\n </button>\n </div>\n </div>\n </ng-template>\n `,\n})\nexport class FacetMobileTemplateComponent {\n @ViewChild(\"templateOverrideMobile\", { static: true })\n templateOverrideMobile!: TemplateRef<any>;\n}\n","import {\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n NgZone,\n OnInit,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewChildren,\n} from \"@angular/core\";\nimport { IFacetData, IFacetValue, IFacetValueData, IFacetValueRange, IFacetsTemplateData, IPaginationData, ISearchObject } from \"@searchstax-inc/searchstudio-ux-js\";\nimport { StoreServiceService } from \"../../services/store-service.service\";\nimport { subscribeInNgZone } from \"../../utils/subscribe-in-ng-zone\";\n\n@Component({\n standalone: false,\n selector: \"app-searchstax-search-facets\",\n templateUrl: \"./searchstax-search-facets.component.html\",\n styles: [],\n})\nexport class SearchstaxSearchFacetsWidget implements OnInit {\n @Input() templateOverrideMobile?: TemplateRef<any>;\n @Input() templateOverrideDesktop?: TemplateRef<any>;\n @Input() facetingType!: \"and\" | \"or\" | \"showUnavailable\" | \"tabs\";\n @Input() itemsPerPageDesktop!: number;\n @Input() itemsPerPageMobile!: number;\n @Input() specificFacets!: string[];\n @Input() beforeFacetsRender?: (facetsTemplateDataDesktop: IFacetData[]) => IFacetData[];\n\n facetsTemplateDataDesktop: null | IFacetsTemplateData = null;\n facetsTemplateDataMobile: null | IFacetsTemplateData = null;\n context = this;\n selectedFacetsCheckboxes: IFacetValue[] = [];\n selectedFacetsRange: IFacetValueRange[] = [];\n rand = Math.random();\n\n // @ViewChildren(\"facetContainers\") facetContainers: QueryList<ElementRef>;\n constructor(\n private storeServiceService: StoreServiceService,\n private ngZone: NgZone,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngOnInit(): void {\n if (this.storeServiceService.searchstax) {\n this.storeServiceService.whenDataLayerReady(() => {\n this.attachObservables();\n });\n setTimeout(() => {\n this.addWidget();\n }, 0);\n } else {\n throw Error(\"Searchstax instance needs to be passed via props\");\n }\n }\n\n addWidget() {\n this.storeServiceService.searchstax.addFacetsWidget('searchstax-facets-container' + this.rand, {\n facetingType: this.facetingType,\n specificFacets: this.specificFacets,\n itemsPerPageDesktop: this.itemsPerPageDesktop,\n itemsPerPageMobile: this.itemsPerPageMobile,\n hooks: {\n beforeFacetsRender: this.beforeFacetsRender\n }\n })\n }\n\n attachObservables() {\n subscribeInNgZone(\n this.ngZone,\n this.storeServiceService.searchstax.dataLayer.$facetsTemplateData,\n (data: null | IFacetsTemplateData) => {\n if (data?.isMobile) {\n this.facetsTemplateDataMobile = data;\n } else {\n this.facetsTemplateDataDesktop = data;\n }\n },\n this.cdr\n );\n\n subscribeInNgZone(\n this.ngZone,\n this.storeServiceService.searchstax.dataLayer.$selectedFacetsTemplateData,\n (data: null | (IFacetValue | IFacetValueRange)[]) => {\n const da = data ?? [];\n this.selectedFacetsCheckboxes = da.filter(\n (d) => d.type === \"checkbox\"\n ) as IFacetValue[];\n },\n this.cdr\n );\n }\n\n\n unselectFacet(facet: IFacetValue, context: this) {\n context.storeServiceService.searchstax.searchFacetsWidget?.unselectFacet(facet)\n }\n\n unselectAll(context: this) {\n context.storeServiceService.searchstax.searchFacetsWidget?.removeSelectedFacets()\n }\n\n isNotDeactivated(name: string, context: this) {\n return !context.storeServiceService.searchstax.searchFacetsWidget?.deactivatedFacets[name]\n }\n\n toggleFacetGroup(name: string, context: this) {\n if(context.storeServiceService.searchstax.searchFacetsWidget)\n if (context.isNotDeactivated(name, context)) {\n context.storeServiceService.searchstax.searchFacetsWidget.deactivatedFacets[name] = true\n } else {\n context.storeServiceService.searchstax.searchFacetsWidget.deactivatedFacets[name] = false\n }\n }\n\n isChecked(facetValue: IFacetValueData, context: this) {\n return context.storeServiceService.searchstax.searchFacetsWidget?.isChecked(facetValue)\n }\n\n selectFacet(el: HTMLElement, event: Event, data: IFacetValueData, isInput: boolean, context: this) {\n const wrapperDiv = document.createElement('div');\n wrapperDiv.innerHTML = el.outerHTML;\n context.storeServiceService.searchstax.searchFacetsWidget?.onFacetSelect(event, data, el as HTMLDivElement, isInput)\n\n }\n\n showMoreLessDesktop(e: Event, data: IFacetData, context: this) {\n context.storeServiceService.searchstax.searchFacetsWidget?.onShowMoreLessClick(e, data, false)\n }\n\n showMoreLessMobile(e: Event, data: IFacetData, context: this) {\n context.storeServiceService.searchstax.searchFacetsWidget?.onShowMoreLessClick(e, data, true)\n }\n\n openOverlay(context: this) {\n context.storeServiceService.searchstax.searchFacetsWidget?.openOverlay();\n }\n\n closeOverlay(context: this) {\n context.storeServiceService.searchstax.searchFacetsWidget?.closeOverlay();\n }\n\n facetValues(facet: IFacetData) : IFacetValueData[] {\n return facet.values as IFacetValueData[];\n }\n\n facetMobileData(facet: IFacetsTemplateData | null) : any {\n return facet as any\n }\n}\n","<div [id]=\"'searchstax-facets-container' + rand\">\n @if (\n facetsTemplateDataDesktop?.hasResultsOrExternalPromotions &&\n !templateOverrideDesktop\n ) {\n <ng-container>\n <app-facet-desktop-template #facetDesktopTpl></app-facet-desktop-template>\n <ng-container\n [ngTemplateOutlet]=\"facetDesktopTpl.templateOverrideDesktop\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-container>\n </ng-container>\n }\n\n @if (\n facetsTemplateDataDesktop?.hasResultsOrExternalPromotions &&\n templateOverrideDesktop\n ) {\n <div>\n <ng-container\n [ngTemplateOutlet]=\"templateOverrideDesktop\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-container>\n </div>\n }\n\n @if (\n facetsTemplateDataMobile?.hasResultsOrExternalPromotions &&\n !templateOverrideMobile\n ) {\n <ng-container>\n <app-facet-mobile-template #facetMobileTpl></app-facet-mobile-template>\n <ng-container\n [ngTemplateOutlet]=\"facetMobileTpl.templateOverrideMobile\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-container>\n </ng-container>\n }\n\n @if (\n facetsTemplateDataMobile?.hasResultsOrExternalPromotions &&\n templateOverrideMobile\n ) {\n <div>\n <ng-container\n [ngTemplateOutlet]=\"templateOverrideMobile\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-container>\n </div>\n }\n</div>\n","// reusable-template.component.ts\nimport { Component, ViewChild, TemplateRef } from \"@angular/core\";\n\n@Component({\n standalone: false,\n selector: \"app-sorting-template\",\n template: `\n <ng-template\n #sortingTemplateOverride\n let-selectedSorting=\"selectedSorting\"\n let-orderChange=\"orderChange\"\n let-context=\"context\"\n >\n <div class=\"searchstax-sorting-container\">\n <label\n class=\"searchstax-sorting-label\"\n for=\"searchstax-search-order-select\"\n >Sort By</label\n >\n <select\n id=\"searchstax-search-order-select\"\n class=\"searchstax-search-order-select\"\n [(ngModel)]=\"context.selectedSorting\"\n (change)=\"orderChange($event, context)\"\n >\n @for (\n sortOption of context.sortingData?.sortOptions ?? [];\n track sortOption.key\n ) {\n <option [value]=\"sortOption.key\">\n {{ sortOption.value }}\n </option>\n }\n </select>\n </div>\n </ng-template>\n `,\n})\nexport class SortingTemplateComponent {\n @ViewChild(\"sortingTemplateOverride\", { static: true }) sortingTemplate!: TemplateRef<any>;\n}\n","import {\n ChangeDetectorRef,\n Component,\n Input,\n NgZone,\n OnInit,\n TemplateRef,\n} from \"@angular/core\";\nimport { ISearchObject, ISearchstaxSearchFeedbackData, ISearchstaxSearchSortingData } from \"@searchstax-inc/searchstudio-ux-js\";\nimport { StoreServiceService } from \"../../services/store-service.service\";\nimport { subscribeInNgZone } from \"../../utils/subscribe-in-ng-zone\";\n\n@Component({\n standalone: false,\n selector: \"app-searchstax-search-sorting\",\n templateUrl: \"./searchstax-search-sorting.component.html\",\n styles: [],\n})\nexport class SearchstaxSearchSortingWidget implements OnInit {\n @Input() templateOverride?: TemplateRef<any>;\n\n sortingData: null | ISearchstaxSearchSortingData = null;\n rand = Math.random();\n context = this;\n selectedSorting: string = \"\";\n constructor(\n private storeServiceService: StoreServiceService,\n private ngZone: NgZone,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngOnInit(): void {\n if (this.storeServiceService.searchstax) {\n this.storeServiceService.whenDataLayerReady(() => {\n this.attachObservables();\n });\n setTimeout(() => {\n this.storeServiceService.searchstax.addSearchSortingWidget(\"search-sorting-container\" + this.rand, {});\n }, 0);\n } else {\n throw Error(\"Searchstax instance needs to be passed via props\");\n }\n }\n\n orderChange(e: Event, context: this) {\n e.stopImmediatePropagation();\n context.storeServiceService.searchstax.searchSortingWidget?.setOrderQuery((e.target as HTMLSelectElement).value);\n }\n\n attachObservables() {\n subscribeInNgZone(\n this.ngZone,\n this.storeServiceService.searchstax.dataLayer.$searchSortingData,\n (sortingData: null | ISearchstaxSearchSortingData) => {\n this.sortingData = sortingData;\n },\n this.cdr\n );\n\n subscribeInNgZone(\n this.ngZone,\n this.storeServiceService.searchstax.dataLayer.$searchObject,\n (searchObject: null | ISearchObject) => {\n this.selectedSorting = decodeURIComponent(searchObject?.order ?? \"\");\n },\n this.cdr\n );\n }\n}\n","<div class=\"search-feedback-container\" [id]=\"'search-sorting-container' + rand\">\n @if (\n sortingData &&\n sortingData?.searchExecuted &&\n sortingData?.hasResultsOrExternalPromotions &&\n (sortingData.sortOptions?.length ?? 0) > 0 &&\n !templateOverride\n ) {\n <ng-container>\n <app-sorting-template #ref></app-sorting-template>\n <ng-container\n [ngTemplateOutlet]=\"ref.sortingTemplate\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-container>\n </ng-container>\n }\n\n @if (\n sortingData &&\n sortingData?.searchExecuted &&\n sortingData?.hasResultsOrExternalPromotions &&\n templateOverride\n ) {\n <div>\n <ng-container\n [ngTemplateOutlet]=\"templateOverride\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-container>\n </div>\n }\n</div>\n","// reusable-template.component.ts\nimport { Component, ViewChild, TemplateRef } from \"@angular/core\";\n\n@Component({\n standalone: false,\n selector: \"app-answer-template\",\n template: `\n <ng-template\n #answerTemplate\n let-answerData=\"answerData\"\n let-showMore=\"showMore\"\n let-context=\"context\"\n >\n <div class=\"searchstax-answer-wrap\">\n <div class=\"searchstax-answer-icon\"></div>\n <div>\n <div\n [class]=\"{\n 'searchstax-answer-container': true,\n 'searchstax-answer-show-more': answerData.showMoreButtonVisible\n }\"\n >\n <div class=\"searchstax-answer-title\">Smart Answers</div>\n @if (answerData.shouldShowAnswerError) {\n <div\n class=\"searchstax-answer-error\"\n [innerHTML]=\"answerData.answerErrorMessage\"\n ></div>\n }\n <div\n class=\"searchstax-answer-description\"\n [innerHTML]=\"answerData.fullAnswerFormatted\"\n ></div>\n @if (answerData.answerLoading) {\n <div class=\"searchstax-answer-loading\"></div>\n }\n </div>\n @if (answerData.showMoreButtonVisible) {\n <div class=\"searchstax-answer-load-more-button-container\">\n <button\n class=\"searchstax-answer-load-more-button\"\n (click)=\"showMore($event, context)\"\n >\n Show More\n </button>\n </div>\n }\n </div>\n <div class=\"searchstax-answer-footer\">\n <div id=\"feedbackWidgetContainer\"></div>\n <div class=\"searchstax-lightweight-widget-separator-inline\"></div>\n <p class=\"searchstax-disclaimer\">Generative AI is Experimental</p>\n </div>\n </div>\n </ng-template>\n `,\n})\nexport class AnswerTemplateComponent {\n @ViewChild(\"answerTemplate\", { static: true }) answerTemplate!: TemplateRef<any>;\n}\n","import {\n ChangeDetectorRef,\n Component,\n Input,\n NgZone,\n OnInit,\n TemplateRef,\n} from \"@angular/core\";\nimport { IFeedbackWidgetProperties, ISearchstaxAnswerData } from \"@searchstax-inc/searchstudio-ux-js\";\nimport { StoreServiceService } from \"../../services/store-service.service\";\nimport { subscribeInNgZone } from \"../../utils/subscribe-in-ng-zone\";\n\n@Component({\n standalone: false,\n selector: \"app-searchstax-answer\",\n templateUrl: \"./searchstax-search-answer.component.html\",\n styles: [],\n})\nexport class SearchstaxSearchAnswerWidget implements OnInit {\n @Input() templateOverride?: TemplateRef<any>;\n @Input() feedbackwidget?: IFeedbackWidgetProperties;\n @Input() showMoreAfterWordCount?: number;\n @Input() testString?: string;\n\n answerData: null | ISearchstaxAnswerData = null;\n rand = Math.random();\n context = this;\n constructor(\n private storeServiceService: StoreServiceService,\n private ngZone: NgZone,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngOnInit(): void {\n if (this.storeServiceService.searchstax) {\n this.storeServiceService.whenDataLayerReady(() => {\n this.attachObservables();\n });\n setTimeout(() => {\n this.storeServiceService.searchstax.addAnswerWidget('searchstax-answer-container' + this.rand, {showMoreAfterWordCount: this.showMoreAfterWordCount, feedbackwidget: this.feedbackwidget, testString: this.testString});\n }, 0);\n } else {\n throw Error(\"Searchstax instance needs to be passed via props\");\n }\n }\n\n showMore(event: Event, context: this) {\n if (context.storeServiceService.searchstax) {\n context.storeServiceService.searchstax.answerWidget?.showMore(event)\n }\n }\n\n\n attachObservables() {\n subscribeInNgZone(\n this.ngZone,\n this.storeServiceService.searchstax.dataLayer.$answerData,\n (answerData: null | ISearchstaxAnswerData) => {\n this.answerData = answerData;\n },\n this.cdr\n );\n }\n}\n","<div [id]=\"'searchstax-answer-container' + rand\">\n @if (\n answerData &&\n answerData?.searchExecuted &&\n answerData.shouldShowAnswer &&\n !templateOverride\n ) {\n <div>\n <app-answer-template #ref></app-answer-template>\n <ng-container\n [ngTemplateOutlet]=\"ref.answerTemplate\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-container>\n </div>\n }\n @if (\n answerData &&\n answerData?.searchExecuted &&\n answerData.shouldShowAnswer &&\n templateOverride\n ) {\n <div>\n <ng-container\n [ngTemplateOutlet]=\"templateOverride\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-container>\n </div>\n }\n</div>\n","// reusable-template.component.ts\nimport { Component, ViewChild, TemplateRef } from \"@angular/core\";\n\n@Component({\n standalone: false,\n selector: \"app-related-template\",\n template: `\n <ng-template\n #relatedTemplate\n let-rand=\"rand\"\n let-relatedData=\"relatedData\"\n let-executeSearch=\"executeSearch\"\n let-context=\"context\"\n >\n <div\n class=\"searchstax-related-searches-container\"\n [id]=\"'searchstax-related-searches-container' + rand\"\n >\n Related searches: <span id=\"searchstax-related-searches\"></span>\n @if (relatedData.relatedSearches) {\n <span class=\"searchstax-related-search\">\n @for (\n related of relatedData.relatedSearches;\n track $index\n ) {\n <span\n (click)=\"executeSearch(related, context)\"\n (keyup.enter)=\"executeSearch(related, context)\"\n (keyup.space)=\"executeSearch(related, context)\"\n tabindex=\"0\"\n class=\"searchstax-related-search searchstax-related-search-item\"\n [attr.aria-label]=\"'Related search: ' + related.related_search\"\n >\n {{ related.related_search }}\n @if (!related.last) {\n <span>,</span>\n }\n </span>\n }\n </span>\n }\n </div>\n </ng-template>\n `,\n})\nexport class RelatedTemplateComponent {\n @ViewChild(\"relatedTemplate\", { static: true }) relatedTemplate!: TemplateRef<any>;\n}\n","import {\n ChangeDetectorRef,\n Component,\n Input,\n NgZone,\n OnInit,\n TemplateRef,\n} from \"@angular/core\";\nimport { ISearchstaxRelatedSearchResult, ISearchstaxRelatedSearchesData } from \"@searchstax-inc/searchstudio-ux-js\";\nimport { StoreServiceService } from \"../../services/store-service.service\";\nimport { subscribeInNgZone } from \"../../utils/subscribe-in-ng-zone\";\n\n@Component({\n standalone: false,\n selector: \"app-searchstax-related-searches\",\n templateUrl: \"./searchstax-search-related.component.html\",\n styles: [],\n})\nexport class SearchstaxSearchRelatedSearchesWidget implements OnInit {\n @Input() relatedSearchesURL?: string;\n @Input() relatedSearchesAPIKey?: string;\n @Input() templateOverride?: TemplateRef<any>;\n\n relatedData: null | ISearchstaxRelatedSearchesData = null;\n rand = Math.random();\n context = this;\n constructor(\n private storeServiceService: StoreServiceService,\n private ngZone: NgZone,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngOnInit(): void {\n if (this.storeServiceService.searchstax) {\n this.storeServiceService.whenDataLayerReady(() => {\n this.attachObservables();\n });\n setTimeout(() => {\n this.storeServiceService.searchstax.addRelatedSearchesWidget(\n \"searchstax-related-searches-container\" + this.rand,\n { relatedSearchesURL: this.relatedSearchesURL ?? \"\", relatedSearchesAPIKey: this.relatedSearchesAPIKey ?? \"\" }\n );\n }, 0);\n } else {\n throw Error(\"Searchstax instance needs to be passed via props\");\n }\n }\n\n executeSearch(result: ISearchstaxRelatedSearchResult, context: this) {\n context.storeServiceService.searchstax.relatedSearchesWidget?.executeSearch(result);\n }\n\n attachObservables() {\n subscribeInNgZone(\n this.ngZone,\n this.storeServiceService.searchstax.dataLayer.$searchRelatedSearchesData,\n (relatedData: null | ISearchstaxRelatedSearchesData) => {\n this.relatedData = relatedData;\n },\n this.cdr\n );\n }\n}\n","@if (\n relatedData &&\n relatedData?.searchExecuted &&\n relatedData?.hasRelatedSearches &&\n !templateOverride\n) {\n <ng-container>\n <app-related-template #ref></app-related-template>\n <ng-container\n [ngTemplateOutlet]=\"ref.relatedTemplate\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-container>\n </ng-container>\n}\n\n@if (\n relatedData &&\n relatedData?.searchExecuted &&\n relatedData?.hasRelatedSearches &&\n templateOverride\n) {\n <div>\n <ng-container\n [ngTemplateOutlet]=\"templateOverride\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-container>\n </div>\n}\n","// reusable-template.component.ts\nimport { Component, ViewChild, TemplateRef } from \"@angular/core\";\n\n@Component({\n standalone: false,\n selector: \"app-external-template\",\n template: `\n <ng-template\n #externalPromotionsTemplate\n let-context=\"context\"\n let-externalPromotionsData=\"externalPromotionsData\"\n let-trackClick=\"trackClick\"\n >\n <div\n class=\"searchstax-external-promotions-container\"\n id=\"searchstax-external-promotions-container\"\n >\n @for (\n externalPromotion of externalPromotionsData?.externalPromotions ??\n [];\n track $index\n ) {\n <div\n class=\"searchstax-external-promotion searchstax-search-result\"\n >\n <div class=\"icon-elevated\"></div>\n @if (externalPromotion.url) {\n <a\n [href]=\"externalPromotion.url\"\n (click)=\"trackClick(externalPromotion, $event, context)\"\n class=\"searchstax-result-item-link\"\n ></a>\n }\n <div class=\"searchstax-search-result-title-container\">\n <span class=\"searchstax-search-result-title\">{{\n externalPromotion.name\n }}</span>\n </div>\n @if (externalPromotion.description) {\n <p\n class=\"searchstax-search-result-description searchstax-search-result-common\"\n >\n {{ externalPromotion.description }}\n </p>\n }\n @if (externalPromotion.url) {\n <p\n class=\"searchstax-search-result-description searchstax-search-result-common\"\n >\n {{ externalPromotion.url }}\n </p>\n }\n </div>\n }\n </div>\n </ng-template>\n `,\n})\nexport class ExternalPromotionsTemplateComponent {\n @ViewChild(\"externalPromotionsTemplate\", { static: true })\n externalPromotionsTemplate!: TemplateRef<any>;\n}\n","import {\n ChangeDetectorRef,\n Component,\n Input,\n NgZone,\n OnInit,\n TemplateRef,\n} from \"@angular/core\";\nimport { IExternalPromotion, ISearchstaxExternalPromotionsData } from \"@searchstax-inc/searchstudio-ux-js\";\nimport { StoreServiceService } from \"../../services/store-service.service\";\nimport { subscribeInNgZone } from \"../../utils/subscribe-in-ng-zone\";\n\n@Component({\n standalone: false,\n selector: \"app-searchstax-external-promotions\",\n templateUrl: \"./searchstax-search-external.component.html\",\n styles: [],\n})\nexport class SearchstaxSearchExternalPromotionsWidget implements OnInit {\n @Input() templateOverride?: TemplateRef<any>;\n\n externalPromotionsData: null | ISearchstaxExternalPromotionsData = null;\n rand = Math.random();\n context = this;\n constructor(\n private storeServiceService: StoreServiceService,\n private ngZone: NgZone,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngOnInit(): void {\n if (this.storeServiceService.searchstax) {\n this.storeServiceService.whenDataLayerReady(() => {\n this.attachObservables();\n });\n setTimeout(() => {\n this.storeServiceService.searchstax.addExternalPromotionsWidget(\n \"searchstax-external-promotions-layout-container\" + this.rand,\n {}\n );\n }, 0);\n } else {\n throw Error(\"Searchstax instance needs to be passed via props\");\n }\n }\n\n trackClick(externalPromotion: IExternalPromotion, event: Event, context: this) {\n context.storeServiceService.searchstax.externalPromotionsWidget?.trackClick(externalPromotion, event);\n }\n\n attachObservables() {\n subscribeInNgZone(\n this.ngZone,\n this.storeServiceService.searchstax.dataLayer.$searchExternalPromotionsData,\n (externalPromotionsData: null | ISearchstaxExternalPromotionsData) => {\n this.externalPromotionsData = externalPromotionsData;\n },\n this.cdr\n );\n }\n}\n","<div [id]=\"'searchstax-external-promotions-layout-container' + rand\">\n @if (\n externalPromotionsData &&\n externalPromotionsData?.searchExecuted &&\n externalPromotionsData?.hasExternalPromotions &&\n !templateOverride\n ) {\n <ng-container>\n <app-external-template #ref></app-external-template>\n <ng-container\n [ngTemplateOutlet]=\"ref.externalPromotionsTemplate\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-container>\n </ng-container>\n }\n @if (\n externalPromotionsData &&\n externalPromotionsData?.searchExecuted &&\n externalPromotionsData?.hasExternalPromotions &&\n templateOverride\n ) {\n <div>\n <ng-container\n [ngTemplateOutlet]=\"templateOverride\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-container>\n </div>\n }\n</div>\n","import { NgModule } from \"@angular/core\";\nimport { SearchstaxWrapper } from \"./components/searchstax-wrapper.component\";\nimport { SearchstaxInputWidget } from \"./components/searchstax-input/searchstax-input.component\";\nimport { CommonModule } from \"@angular/common\";\nimport { SearchstaxResultsWidget } from \"./components/searchstax-results/searchstax-results.component\";\nimport { SearchstaxSearchFeedbackWidget } from \"./components/searchstax-search-overview/searchstax-search-overview.component\";\nimport { SearchstaxSearchPaginationWidget } from \"./components/searchstax-search-pagination/searchstax-search-pagination.component\";\nimport { SearchstaxSearchAnswerWidget } from \"./components/searchstax-search-answer/searchstax-search-answer.component\";\nimport { SearchstaxSearchFacetsWidget } from \"./components/searchstax-search-facets/searchstax-search-facets.component\";\nimport { SearchstaxSearchSortingWidget } from \"./components/searchstax-search-sorting/searchstax-search-sorting.component\";\nimport { SearchstaxSearchRelatedSearchesWidget } from \"./components/searchstax-search-related/searchstax-search-related.component\";\nimport { SearchstaxSearchExternalPromotionsWidget } from \"./components/searchstax-search-external/searchstax-search-external.component\";\nimport { SearchstaxSearchLocationWidget } from \"./components/searchstax-search-location/searchstax-search-location.component\";\nimport { FormsModule } from \"@angular/forms\";\nimport { AnswerTemplateComponent } from \"./components/templates/searchstax-search-answer-template\";\nimport { InputTemplateComponent } from \"./components/templates/searchstax-search-input-template\";\nimport { OverviewTemplateComponent } from \"./components/templates/searchstax-search-overview-template\";\nimport { LocationTemplateComponent } from \"./components/templates/searchstax-search-location-template\";\nimport { PaginationTemplateComponent } from \"./components/templates/searchstax-search-pagination-template\";\nimport { PaginationInfiniteTemplateComponent } from \"./components/templates/searchstax-search-pagination-infinite-template\";\nimport { ResultsTemplateComponent } from \"./components/templates/searchstax-search-results-template\";\nimport { NoResultsTemplateComponent } from \"./components/templates/searchstax-search-no-results-template\";\nimport { ExternalPromotionsTemplateComponent } from \"./components/templates/searchstax-search-external-template\";\nimport { SortingTemplateComponent } from \"./components/templates/searchstax-search-sorting-template\";\nimport { RelatedTemplateComponent } from \"./components/templates/searchstax-search-related-template\";\nimport { FacetMobileTemplateComponent } from \"./components/templates/searchstax-search-facet-mobile-template\";\nimport { FacetDesktopTemplateComponent } from \"./components/templates/searchstax-search-facet-desktop-template\";\n\nconst libraryComponents = [\n SearchstaxWrapper,\n SearchstaxInputWidget,\n SearchstaxResultsWidget,\n SearchstaxSearchFeedbackWidget,\n SearchstaxSearchPaginationWidget,\n SearchstaxSearchFacetsWidget,\n SearchstaxSearchSortingWidget,\n SearchstaxSearchRelatedSearchesWidget,\n SearchstaxSearchExternalPromotionsWidget,\n SearchstaxSearchAnswerWidget,\n SearchstaxSearchLocationWidget,\n AnswerTemplateComponent,\n OverviewTemplateComponent,\n InputTemplateComponent,\n LocationTemplateComponent,\n PaginationTemplateComponent,\n PaginationInfiniteTemplateComponent,\n ResultsTemplateComponent,\n NoResultsTemplateComponent,\n ExternalPromotionsTemplateComponent,\n SortingTemplateComponent,\n RelatedTemplateComponent,\n FacetDesktopTemplateComponent,\n FacetMobileTemplateComponent,\n];\n\n@NgModule({\n declarations: [...libraryComponents],\n imports: [CommonModule, FormsModule],\n exports: [...libraryComponents],\n})\nexport class SearchstudioUxAngularModule {}\n","/*\n * Public API Surface of searchstudio-ux-angular\n */\n\nimport \"./lib/searchstudio-ux-js-augment\";\n\nexport * from './lib/components/searchstax-wrapper.component';\nexport * from './lib/components/searchstax-input/searchstax-input.component';\nexport * from './lib/components/searchstax-results/searchstax-results.component';\nexport * from './lib/components/searchstax-search-overview/searchstax-search-overview.component';\nexport * from './lib/components/searchstax-search-pagination/searchstax-search-pagination.component';\nexport * from './lib/components/searchstax-search-facets/searchstax-search-facets.component';\nexport * from './lib/components/searchstax-search-sorting/searchstax-search-sorting.component';\nexport * from './lib/components/searchstax-search-answer/searchstax-search-answer.component';\nexport * from './lib/components/searchstax-search-location/searchstax-search-location.component';\nexport * from './lib/components/searchstax-search-related/searchstax-search-related.component';\nexport * from './lib/components/searchstax-search-external/searchstax-search-external.component';\nexport * from './lib/services/store-service.service';\nexport * from './lib/searchstudio-ux-angular.module';\nexport * from './lib/components/templates/searchstax-search-answer-template';\nexport * from './lib/components/templates/searchstax-search-overview-template';\nexport * from './lib/components/templates/searchstax-search-input-template';\nexport * from './lib/components/templates/searchstax-search-location-template';\nexport * from './lib/components/templates/searchstax-search-pagination-template';\nexport * from './lib/components/templates/searchstax-search-pagination-infinite-template';\nexport * from './lib/components/templates/searchstax-search-results-template';\nexport * from './lib/components/templates/searchstax-search-no-results-template';\nexport * from './lib/components/templates/searchstax-search-external-template';\nexport * from './lib/components/templates/searchstax-search-sorting-template';\nexport * from './lib/components/templates/searchstax-search-related-template';\nexport * from './lib/components/templates/searchstax-search-facet-desktop-template';\nexport * from './lib/components/templates/searchstax-search-facet-mobile-template';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.StoreServiceService","i1","i2","i3.LocationTemplateComponent","i2.SearchstaxSearchLocationWidget","i3.InputTemplateComponent","i3.ResultsTemplateComponent","i4.NoResultsTemplateComponent","i3.OverviewTemplateComponent","i3.PaginationTemplateComponent","i4.PaginationInfiniteTemplateComponent","i3.FacetDesktopTemplateComponent","i4.FacetMobileTemplateComponent","i3.SortingTemplateComponent","i3.AnswerTemplateComponent","i3.RelatedTemplateComponent","i3.ExternalPromotionsTemplateComponent"],"mappings":"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"}
1
+ {"version":3,"file":"searchstax-inc-searchstudio-ux-angular.mjs","sources":["../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/services/store-service.service.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/searchstax-wrapper.component.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/utils/subscribe-in-ng-zone.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/templates/SearchstaxLocationWidgetTemplateConfig.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/templates/searchstax-search-location-template.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/searchstax-search-location/searchstax-search-location.component.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/searchstax-search-location/searchstax-search-location.component.html","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/templates/searchstax-search-input-template.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/searchstax-input/searchstax-input.component.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/searchstax-input/searchstax-input.component.html","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/templates/searchstax-search-results-template.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/templates/searchstax-search-no-results-template.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/searchstax-results/searchstax-results.component.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/searchstax-results/searchstax-results.component.html","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/templates/searchstax-search-overview-template.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/searchstax-search-overview/searchstax-search-overview.component.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/searchstax-search-overview/searchstax-search-overview.component.html","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/templates/searchstax-search-pagination-template.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/templates/searchstax-search-pagination-infinite-template.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/searchstax-search-pagination/searchstax-search-pagination.component.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/searchstax-search-pagination/searchstax-search-pagination.component.html","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/templates/searchstax-search-facet-desktop-template.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/templates/searchstax-search-facet-mobile-template.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/searchstax-search-facets/searchstax-search-facets.component.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/searchstax-search-facets/searchstax-search-facets.component.html","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/templates/searchstax-search-sorting-template.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/searchstax-search-sorting/searchstax-search-sorting.component.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/searchstax-search-sorting/searchstax-search-sorting.component.html","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/templates/searchstax-search-answer-template.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/searchstax-search-answer/searchstax-search-answer.component.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/searchstax-search-answer/searchstax-search-answer.component.html","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/templates/searchstax-search-related-template.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/searchstax-search-related/searchstax-search-related.component.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/searchstax-search-related/searchstax-search-related.component.html","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/templates/searchstax-search-external-template.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/searchstax-search-external/searchstax-search-external.component.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/components/searchstax-search-external/searchstax-search-external.component.html","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/lib/searchstudio-ux-angular.module.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/public-api.ts","../../../../projects/searchstax-inc/searchstudio-ux-angular/src/searchstax-inc-searchstudio-ux-angular.ts"],"sourcesContent":["import { Injectable } from \"@angular/core\";\nimport {\n ISearchstaxRenderEngine,\n Searchstax,\n} from \"@searchstax-inc/searchstudio-ux-js\";\nimport { ReplaySubject } from \"rxjs\";\nimport { take } from \"rxjs/operators\";\n\n@Injectable({\n providedIn: \"root\",\n})\nexport class StoreServiceService {\n searchstax = new Searchstax(ISearchstaxRenderEngine.angular);\n\n /**\n * `Searchstax.initialize()` assigns a fresh `dataLayer`. Widgets must not\n * subscribe before that runs, or they listen to stale observables and never\n * see search results (projection order can run child `ngOnInit` first).\n */\n private readonly dataLayerReady$ = new ReplaySubject<void>(1);\n\n constructor() {}\n\n /** Called from `SearchstaxWrapper` immediately after `initialize()`. */\n notifyDataLayerReady(): void {\n this.dataLayerReady$.next();\n }\n\n whenDataLayerReady(callback: () => void): void {\n this.dataLayerReady$.pipe(take(1)).subscribe(() => callback());\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { IRouterConfig, ISearchObject, ISearchstaxParsedResult, ISearchstaxSearchResponse, Searchstax } from '@searchstax-inc/searchstudio-ux-js';\nimport { StoreServiceService } from '../services/store-service.service';\n\n@Component({\n standalone: false,\n selector: 'app-searchstax-wrapper',\n template: `\n <div>\n <ng-content></ng-content>\n </div>\n `,\n styles: [\n ]\n})\nexport class SearchstaxWrapper implements OnInit {\n @Input() language = 'en';\n @Input() model = '';\n @Input() searchURL: string = '';\n @Input() suggesterURL: string = '';\n @Input() trackApiKey: string = '';\n @Input() searchAuth: string = '';\n @Input() sessionId?: string;\n @Input() analyticsBaseUrl: string = '';\n @Input() analyticsSrc: string = '';\n @Input() questionURL: string = '';\n @Input() authType: 'basic' | 'token' = 'basic';\n @Input() autoCorrect = true;\n @Input() router?: IRouterConfig;\n @Input() beforeSearch?: (props: ISearchObject) => ISearchObject | null ;\n @Input() afterSearch?: (results: ISearchstaxParsedResult[], unparsedResponse?: ISearchstaxSearchResponse) => ISearchstaxParsedResult[];\n @Output() initialized = new EventEmitter<Searchstax>();\n hooks: { beforeSearch?: (props: ISearchObject) => ISearchObject | null, afterSearch?: (results: ISearchstaxParsedResult[]) => ISearchstaxParsedResult[] } = {};\n constructor(private storeServiceService: StoreServiceService) {\n }\n\n ngOnInit(): void {\n if (this.beforeSearch) {\n this.hooks.beforeSearch = this.beforeSearch;\n }\n if (this.afterSearch) {\n this.hooks.afterSearch = this.afterSearch;\n }\n this.storeServiceService.searchstax.initialize({\n language: this.language,\n model: this.model,\n searchURL: this.searchURL,\n suggesterURL: this.suggesterURL,\n trackApiKey: this.trackApiKey,\n searchAuth: this.searchAuth,\n authType: this.authType,\n autoCorrect: this.autoCorrect,\n router: this.router,\n hooks: this.hooks,\n analyticsBaseUrl: this.analyticsBaseUrl,\n analyticsSrc: this.analyticsSrc,\n sessionId: this.sessionId,\n questionURL: this.questionURL\n })\n\n this.initialized.emit(this.storeServiceService.searchstax);\n this.storeServiceService.notifyDataLayerReady();\n }\n\n}\n","import { ChangeDetectorRef, NgZone } from \"@angular/core\";\n\n/**\n * Shape of `@searchstax-inc/searchstudio-ux-js` data-layer streams (custom class, not RxJS).\n */\nexport type SearchstaxDataLayerObservableLike = {\n subscribe(observer: (data: unknown) => void, key?: string): string;\n};\n\n/**\n * Studio JS often emits on dataLayer streams outside Angular's zone (fetch/XHR).\n * `NgZone.run()` alone does not always schedule a tick for library components, so\n * pass the host `ChangeDetectorRef` to refresh the widget after each emission.\n */\nexport function subscribeInNgZone<T = unknown>(\n ngZone: NgZone,\n source: SearchstaxDataLayerObservableLike,\n next: (value: T) => void,\n cdr: ChangeDetectorRef\n): string {\n return source.subscribe((value) => {\n ngZone.run(() => {\n next(value as T);\n cdr.detectChanges();\n });\n });\n}\n","import { ISearchstaxLocation } from \"@searchstax-inc/searchstudio-ux-js\";\n\n//CUT START\n\n\nconst config = {\n appId: \"APP_ID\",\n relatedSearchesAPIKey: \"KEY\"\n}\n\nconst locationWidgetConfig = {\n locationDecode: (term: string): Promise<ISearchstaxLocation> => {\n return new Promise((resolve) => {\n // make a request to google geocoding API to retrieve lat, lon and address\n\n const geocodingAPIKey = \"GEOCODING_API_KEY\";\n const geocodingURL = `https://maps.googleapis.com/maps/api/geocode/json?address=${encodeURIComponent(\n term\n )}&key=${geocodingAPIKey}`;\n fetch(geocodingURL)\n .then((response) => response.json())\n .then((data) => {\n if (data.status === \"OK\" && data.results.length > 0) {\n const result = data.results[0];\n const location = {\n lat: result.geometry.location.lat,\n lon: result.geometry.location.lng,\n address: result.formatted_address,\n };\n resolve(location);\n } else {\n resolve({\n address: undefined,\n lat: undefined,\n lon: undefined,\n error: true,\n });\n }\n })\n .catch(() => {\n resolve({\n address: undefined,\n lat: undefined,\n lon: undefined,\n error: true,\n });\n });\n });\n },\n locationDecodeCoordinatesToAddress: (lat: string, lon: string): Promise<ISearchstaxLocation> => {\n return new Promise((resolve) => {\n fetch(\n `https://geocoding-staging.searchstax.co/reverse?location=${lat},${lon}&components=country:US&app_id=${config.appId}`,\n {\n method: \"GET\",\n headers: {\n Authorization: `Token ${config.relatedSearchesAPIKey}`,\n },\n }\n )\n .then((response) => response.json())\n .then((data) => {\n if (data.status === \"OK\" && data.results.length > 0) {\n const result = data.results[0];\n resolve({\n address: result.formatted_address,\n lat: lat,\n lon: lon,\n error: false,\n });\n } else {\n resolve({\n address: undefined,\n lat: lat,\n lon: lon,\n error: true,\n });\n }\n })\n .catch(() => {\n resolve({\n address: undefined,\n lat: lat,\n lon: lon,\n error: true,\n });\n });\n });\n },\n locationSearchEnabled: false,\n locationValuesOverride: {\n locationDistanceEnabled: true,\n filterValues: [\"any\", \"1000\"],\n filterUnit: \"miles\",\n locationFilterDefaultValue: \"any\"\n },\n }\n//CUT END\n export {locationWidgetConfig}","// reusable-template.component.ts\nimport { Component, ViewChild, TemplateRef } from \"@angular/core\";\n\n@Component({\n standalone: false,\n selector: \"app-location-template\",\n template: `\n <ng-template\n #locationTemplate\n let-context=\"context\"\n let-locationData=\"locationData\"\n let-inputValue=\"inputValue\"\n let-selectValue=\"selectValue\"\n let-radiusChange=\"radiusChange\"\n let-inputChange=\"inputChange\"\n let-locationBlur=\"locationBlur\"\n let-locationError=\"locationError\"\n let-getCurrentLocation=\"getCurrentLocation\"\n >\n @if (locationData) {\n <div\n class=\"searchstax-location-input-container\"\n data-test-id=\"searchstax-location-input-container\"\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 [value]=\"inputValue\"\n (change)=\"inputChange($event, context)\"\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 @if (locationData.shouldShowLocationDistanceDropdown) {\n <span\n class=\"searchstax-location-input-label\"\n >WITHIN</span\n >\n }\n @if (locationData.shouldShowLocationDistanceDropdown) {\n <select\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)]=\"context.selectValue\"\n >\n @for (\n value of locationData.locationSearchDistanceValues;\n track value.value\n ) {\n <option [value]=\"value.value\">\n {{ value.label }}\n </option>\n }\n </select>\n }\n </div>\n </div>\n }\n </ng-template>\n `,\n})\nexport class LocationTemplateComponent {\n @ViewChild(\"locationTemplate\", { static: true }) locationTemplate!: TemplateRef<any>;\n}\n","import {\n ChangeDetectorRef,\n Component,\n Input,\n NgZone,\n OnInit,\n TemplateRef,\n} from \"@angular/core\";\nimport {\n ISearchObject,\n ISearchstaxLocation,\n ISearchstaxLocationRenderData,\n} from \"@searchstax-inc/searchstudio-ux-js\";\nimport { StoreServiceService } from \"../../services/store-service.service\";\nimport { subscribeInNgZone } from \"../../utils/subscribe-in-ng-zone\";\n\n@Component({\n standalone: false,\n selector: \"app-searchstax-search-location\",\n templateUrl: \"./searchstax-search-location.component.html\",\n styles: [],\n})\nexport class SearchstaxSearchLocationWidget implements OnInit {\n @Input() templateOverride?: TemplateRef<any>;\n @Input() locationSearchEnabled?: boolean;\n @Input() locationValuesOverride?: {\n locationDistanceEnabled: boolean; // if set to true location distance dropdown will be shown\n filterValues: string[]; // array of location filter values to override the default ones\n filterUnit: string; // unit of the location filter to override the default one\n }\n @Input() locationDecode!: (\n locationName: string\n ) => Promise<ISearchstaxLocation>;\n @Input() locationDecodeCoordinatesToAddress!: (\n lat: string,\n lon: string\n ) => Promise<ISearchstaxLocation>;\n\n locationData: null | ISearchstaxLocationRenderData = null;\n inputValue: string = \"\";\n selectValue: string | number = \"\";\n locationAdded = false;\n locationError = false;\n rand = Math.random();\n\n context = this;\n constructor(\n private storeServiceService: StoreServiceService,\n private ngZone: NgZone,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngOnInit(): void {\n if (this.storeServiceService.searchstax) {\n this.storeServiceService.whenDataLayerReady(() => {\n this.attachObservables();\n });\n setTimeout(() => {\n this.addWidget();\n }, 100);\n } else {\n throw Error(\"Searchstax instance needs to be passed via props\");\n }\n }\n\n locationBlur(context: this) {\n context.storeServiceService.searchstax.searchLocationWidget?.triggerGeocoder(\n context.inputValue\n );\n }\n radiusChange(e: Event, context: this) {\n const target = e.target as HTMLSelectElement;\n context.selectValue = target.value;\n context.storeServiceService.searchstax.searchLocationWidget?.setRadiusValue(\n context.selectValue\n );\n }\n inputChange(e: Event, context: this) {\n const target = e.target as HTMLInputElement;\n context.inputValue = target.value;\n }\n\n getCurrentLocation(context: this){\n context.storeServiceService.searchstax.searchLocationWidget?.getCurrentLocation();\n }\n\n addWidget() {\n if (\n !this.locationAdded &&\n this.storeServiceService.searchstax.routerHelper\n ) {\n this.locationAdded = true;\n this.storeServiceService.searchstax.addSearchLocationWidget(\n \"searchstax-location-container\" + this.rand,\n {\n hooks: {\n locationDecode: this.locationDecode,\n locationDecodeCoordinatesToAddress:\n this.locationDecodeCoordinatesToAddress,\n },\n locationSearchEnabled: this.locationSearchEnabled,\n locationValuesOverride: this.locationValuesOverride,\n }\n );\n }\n }\n\n attachObservables() {\n subscribeInNgZone(\n this.ngZone,\n this.storeServiceService.searchstax.dataLayer.$locationWidgetTemplateData,\n (sortingData: null | ISearchstaxLocationRenderData) => {\n this.locationData = sortingData;\n },\n this.cdr\n );\n\n subscribeInNgZone(\n this.ngZone,\n this.storeServiceService.searchstax.dataLayer.$searchObject,\n (result: null | ISearchObject) => {\n this.inputValue = result?.location?.address ?? \"\";\n this.selectValue = result?.location?.radius || \"\";\n },\n this.cdr\n );\n\n subscribeInNgZone(\n this.ngZone,\n this.storeServiceService.searchstax.dataLayer.$locationError,\n (locationError: boolean) => {\n this.locationError = locationError;\n },\n this.cdr\n );\n\n subscribeInNgZone(\n this.ngZone,\n this.storeServiceService.searchstax.dataLayer.$searchLocationChange,\n (location: string) => {\n this.inputValue = location;\n },\n this.cdr\n );\n\n subscribeInNgZone(\n this.ngZone,\n this.storeServiceService.searchstax.dataLayer.$searchRadiusChange,\n (radius: string | number) => {\n this.selectValue = radius;\n },\n this.cdr\n );\n }\n}\n","<div\n [id]=\"'searchstax-location-container' + rand\"\n class=\"searchstax-location-container\"\n>\n @if (!!locationData && !templateOverride) {\n <div>\n <app-location-template #ref></app-location-template>\n <ng-container\n [ngTemplateOutlet]=\"ref.locationTemplate\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-container>\n </div>\n }\n\n @if (!!locationData && templateOverride) {\n <div>\n <ng-container\n [ngTemplateOutlet]=\"templateOverride\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-container>\n </div>\n }\n</div>\n","// reusable-template.component.ts\nimport { Component, ViewChild, TemplateRef } from \"@angular/core\";\n\n@Component({\n standalone: false,\n selector: \"app-input-template\",\n template: `\n <ng-template\n #inputTemplate\n let-suggestions=\"suggestions\"\n let-onMouseLeave=\"onMouseLeave\"\n let-onMouseOver=\"onMouseOver\"\n let-onMouseClick=\"onMouseClick\"\n let-onClearClick=\"onClearClick\"\n let-context=\"context\"\n let-locationWidgetConfig=\"locationWidgetConfig\"\n let-hasInputValue=\"hasInputValue\"\n \n >\n <div class=\"searchstax-search-input-wrapper\">\n <input\n type=\"text\"\n id=\"searchstax-search-input\"\n class=\"searchstax-search-input\"\n placeholder=\"SEARCH FOR...\"\n aria-label=\"search\"\n />\n @if (hasInputValue) {\n <button \n (click)=\"onClearClick($event, context)\" \n id=\"searchstax-clear-input-action-button\" \n class=\"searchstax-cross-icon hidden\" \n aria-label=\"clear input\" \n role=\"button\">\n </button>\n <span id=\"searchstax-separator-icon\" class=\"searchstax-separator hidden\"></span> \n }\n <div\n class=\"searchstax-autosuggest-container\"\n [ngClass]=\"{ hidden: suggestions.length === 0 }\"\n (mouseleave)=\"onMouseLeave(context)\"\n >\n @for (suggestion of suggestions; track $index) {\n <div\n class=\"searchstax-autosuggest-item\"\n >\n <div\n class=\"searchstax-autosuggest-item-term-container\"\n [innerHtml]=\"suggestion.term\"\n (mouseover)=\"onMouseOver(suggestion, context)\"\n tabindex=\"0\"\n (click)=\"onMouseClick($event, context)\"\n ></div>\n </div>\n }\n </div>\n </div>\n <app-searchstax-search-location\n [locationDecode]=\"locationWidgetConfig.locationDecode\"\n [locationDecodeCoordinatesToAddress]=\"\n locationWidgetConfig.locationDecodeCoordinatesToAddress\n \"\n [locationSearchEnabled]=\"locationWidgetConfig.locationSearchEnabled\"\n [locationValuesOverride]=\"locationWidgetConfig.locationValuesOverride\"\n >\n </app-searchstax-search-location>\n <button\n class=\"searchstax-spinner-icon\"\n id=\"searchstax-search-input-action-button\"\n role=\"button\"\n aria-label=\"search\"\n ></button>\n </ng-template>\n `,\n})\nexport class InputTemplateComponent {\n @ViewChild(\"inputTemplate\", { static: true }) inputTemplate!: TemplateRef<any>;\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n Input,\n NgZone,\n OnInit,\n TemplateRef,\n} from \"@angular/core\";\nimport {\n ISearchstaxLocation,\n ISearchstaxSEARCHTERM,\n ISearchstaxSearchInputRenderData,\n ISearchstaxSuggestProps,\n ISearchstaxSuggestResponse,\n ISearchstaxSuggestion,\n} from \"@searchstax-inc/searchstudio-ux-js\";\nimport { StoreServiceService } from \"../../services/store-service.service\";\nimport { subscribeInNgZone } from \"../../utils/subscribe-in-ng-zone\";\nimport { locationWidgetConfig } from \"../templates/SearchstaxLocationWidgetTemplateConfig\";\n\n@Component({\n standalone: false,\n selector: \"app-searchstax-input\",\n templateUrl: \"./searchstax-input.component.html\",\n styles: [],\n})\nexport class SearchstaxInputWidget implements OnInit, AfterViewInit {\n @Input() afterAutosuggest?: (\n result: ISearchstaxSuggestResponse\n ) => ISearchstaxSuggestResponse;\n @Input() beforeAutosuggest?: (\n props: ISearchstaxSuggestProps\n ) => ISearchstaxSuggestProps | null;\n @Input() searchInputId = \"\";\n @Input() suggestAfterMinChars?: number;\n @Input() templateOverride?: TemplateRef<any>;\n\n hooks: { [key: string]: (prop: any) => any } = {};\n suggestions: ISearchstaxSuggestion[] = [];\n context = this;\n templateData: null | ISearchstaxSearchInputRenderData = null;\n locationWidgetConfig = locationWidgetConfig;\n\n private searchInputWidgetAttached = false;\n\n constructor(\n private storeServiceService: StoreServiceService,\n private ngZone: NgZone,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngOnInit(): void {\n if (this.storeServiceService.searchstax) {\n this.storeServiceService.whenDataLayerReady(() => {\n this.attachObservables();\n });\n if (this.afterAutosuggest) {\n this.hooks[\"afterAutosuggest\"] = this.afterAutosuggest;\n }\n if (this.beforeAutosuggest) {\n this.hooks[\"beforeAutosuggest\"] = this.beforeAutosuggest;\n }\n } else {\n throw Error(\"Searchstax instance needs to be passed via props\");\n }\n }\n\n /**\n * Studio JS looks up `#searchInputId` as soon as `addSearchInputWidget` runs.\n * The real input is stamped by `ngTemplateOutlet` after child views exist, so\n * `ngOnInit` + a fixed delay can run too early (especially with control flow).\n */\n ngAfterViewInit(): void {\n this.tryAttachSearchInputWidget(0);\n }\n\n private tryAttachSearchInputWidget(attempt: number): void {\n const searchstax = this.storeServiceService.searchstax;\n if (!searchstax || this.searchInputWidgetAttached) {\n return;\n }\n if (typeof document === \"undefined\") {\n return;\n }\n const inputId = this.searchInputId || \"searchstax-search-input\";\n if (document.getElementById(inputId)) {\n searchstax.addSearchInputWidget(\"searchstax-input-container\", {\n suggestAfterMinChars: this.suggestAfterMinChars,\n hooks: this.hooks,\n templates: {\n mainTemplate: {\n template: ``,\n searchInputId: inputId,\n },\n },\n });\n searchstax.dataLayer.setInputTemplateRendered(true);\n this.searchInputWidgetAttached = true;\n return;\n }\n const maxAttempts = 60;\n if (attempt < maxAttempts) {\n requestAnimationFrame(() =>\n this.tryAttachSearchInputWidget(attempt + 1)\n );\n } else {\n console.warn(\n `[Searchstax] Input #${inputId} not found after view init; search input widget was not attached. ` +\n `With a custom templateOverride, set the input id to match [searchInputId] (default \"${inputId}\").`\n );\n }\n }\n\n\n onMouseLeave(context: this) {\n context.storeServiceService.searchstax.searchInputWidget?.resetAutosuggestSelection();\n context.storeServiceService.searchstax.searchInputWidget?.markActiveAutosuggestItem();\n }\n\n onMouseOver(suggestion: ISearchstaxSuggestion, context: this) {\n context.storeServiceService.searchstax.searchInputWidget?.onSuggestionEnter(\n suggestion\n );\n }\n\n onMouseClick(e: Event, context: this) {\n e.stopImmediatePropagation();\n context.storeServiceService.searchstax.searchInputWidget?.suggestionChosen();\n }\n\n onClearClick(e: Event, context: this) {\n e.stopImmediatePropagation();\n context.storeServiceService.searchstax.searchInputWidget?.clearInput();\n }\n\n attachObservables() {\n subscribeInNgZone(\n this.ngZone,\n this.storeServiceService.searchstax.dataLayer.$autosuggestResults,\n (suggestions: null | ISearchstaxSEARCHTERM) => {\n this.suggestions = suggestions?.suggestions ?? [];\n },\n this.cdr\n );\n\n subscribeInNgZone(\n this.ngZone,\n this.storeServiceService.searchstax.dataLayer.$inputWidgetTemplateData,\n (data: null | ISearchstaxSearchInputRenderData) => {\n this.templateData = data;\n },\n this.cdr\n );\n }\n}\n","<div id=\"searchstax-input-container\">\n <div\n class=\"searchstax-search-input-container searchstax-search-input-container-new\"\n [class]=\"{\n 'searchstax-alternative-render': !!templateData?.locationEnabled\n }\"\n >\n @if (!templateOverride) {\n <app-input-template #ref></app-input-template>\n <ng-container\n [ngTemplateOutlet]=\"ref.inputTemplate\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-container>\n } @else {\n <ng-container\n [ngTemplateOutlet]=\"templateOverride\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-container>\n }\n </div>\n</div>\n","// reusable-template.component.ts\nimport { Component, ViewChild, TemplateRef } from \"@angular/core\";\n\n@Component({\n standalone: false,\n selector: \"app-results-template\",\n template: `\n <ng-template\n #resultsTemplate\n let-searchResults=\"searchResults\"\n let-resultClicked=\"resultClicked\"\n let-isImage=\"isImage\"\n let-context=\"context\"\n >\n <div class=\"searchstax-search-results\" id=\"searchstax-search-results\">\n @for (\n searchResult of searchResults ?? [];\n track searchResult.uniqueId\n ) {\n <a\n [href]=\"searchResult.url\"\n [attr.data-searchstax-unique-result-id]=\"searchResult.uniqueId\"\n (click)=\"resultClicked(searchResult, $event, context)\"\n (keyup.enter)=\"resultClicked(searchResult, $event, context)\"\n (keyup.space)=\"resultClicked(searchResult, $event, context)\"\n [attr.aria-labelledby]=\"'title-' + searchResult.uniqueId\"\n tabindex=\"0\"\n class=\"searchstax-result-item-link searchstax-result-item-link-wrapping\"\n >\n <div\n class=\"searchstax-search-result\"\n [ngClass]=\"{ 'has-thumbnail': searchResult.thumbnail }\"\n >\n @if (searchResult.promoted) {\n <div class=\"searchstax-search-result-promoted\"></div>\n }\n @if (searchResult.ribbon) {\n <div\n [innerHTML]=\"searchResult.ribbon\"\n class=\"searchstax-search-result-ribbon\"\n ></div>\n }\n @if (searchResult.thumbnail) {\n <img\n alt=\"\"\n [src]=\"searchResult.thumbnail\"\n class=\"searchstax-thumbnail\"\n />\n }\n <div class=\"searchstax-search-result-title-container\">\n <span\n class=\"searchstax-search-result-title\"\n [id]=\"'title-' + searchResult.uniqueId\"\n [innerHTML]=\"searchResult.title\"\n ></span>\n </div>\n @if (searchResult.paths) {\n <p\n tabindex=\"0\"\n class=\"searchstax-search-result-common\"\n [innerHTML]=\"searchResult.paths\"\n ></p>\n }\n @if (searchResult.description) {\n <p\n tabindex=\"0\"\n [innerHTML]=\"searchResult.description\"\n class=\"searchstax-search-result-description searchstax-search-result-common\"\n ></p>\n }\n @for (\n unmappedField of searchResult.unmappedFields ?? [];\n track $index\n ) {\n @if (isImage(unmappedField)) {\n <div class=\"searchstax-search-result-image-container\">\n <img\n alt=\"\"\n [src]=\"unmappedField.value\"\n class=\"searchstax-result-image\"\n />\n </div>\n } @else {\n <div>\n <p\n tabindex=\"0\"\n class=\"searchstax-search-result-common\"\n [innerHTML]=\"unmappedField.value\"\n ></p>\n </div>\n }\n }\n </div>\n </a>\n }\n </div>\n </ng-template>\n `,\n})\nexport class ResultsTemplateComponent {\n @ViewChild(\"resultsTemplate\", { static: true }) resultsTemplate!: TemplateRef<any>;\n}\n","// reusable-template.component.ts\nimport { Component, ViewChild, TemplateRef } from \"@angular/core\";\n\n@Component({\n standalone: false,\n selector: \"app-no-results-template\",\n template: `\n <ng-template\n #noResultsTemplate\n let-metadata=\"metadata\"\n let-searchTerm=\"searchTerm\"\n let-executeSearch=\"executeSearch\"\n let-context=\"context\"\n >\n <div class=\"searchstax-no-results\">\n Showing <strong>no results</strong> for\n <strong>\"{{ searchTerm }}\"</strong>\n <br />\n @if (metadata?.spellingSuggestion) {\n <span\n >&nbsp;Did you mean\n <a\n href=\"#\"\n [attr.aria-label]=\"'did you mean: ' + metadata?.spellingSuggestion\"\n class=\"searchstax-suggestion-term\"\n (click)=\"\n executeSearch(metadata?.spellingSuggestion ?? '', $event, context)\n \"\n >{{ metadata?.spellingSuggestion }}</a\n >?</span\n >\n }\n </div>\n <ul>\n <li>\n Try searching for search related terms or topics. We offer a wide\n variety of content to help you get the information you need.\n </li>\n </ul>\n </ng-template>\n `,\n})\nexport class NoResultsTemplateComponent {\n @ViewChild(\"noResultsTemplate\", { static: true }) noResultsTemplate!: TemplateRef<any>;\n}\n","import {\n ChangeDetectorRef,\n Component,\n Input,\n NgZone,\n OnInit,\n TemplateRef,\n} from '@angular/core';\nimport { StoreServiceService } from '../../services/store-service.service';\nimport { subscribeInNgZone } from '../../utils/subscribe-in-ng-zone';\nimport {\n ISearchstaxParsedResult,\n ISearchstaxSearchMetadata,\n} from '@searchstax-inc/searchstudio-ux-js';\n\n@Component({\n standalone: false,\n selector: 'app-searchstax-results',\n templateUrl: './searchstax-results.component.html',\n styles: [],\n})\nexport class SearchstaxResultsWidget implements OnInit {\n @Input() afterLinkClick?: (\n results: ISearchstaxParsedResult\n ) => ISearchstaxParsedResult;\n\n @Input() noResultsTemplate?: TemplateRef<any>;\n @Input() resultsTemplate?: TemplateRef<any>;\n @Input() renderMethod?: \"infiniteScroll\" | \"pagination\";\n @Input() resultsPerPage?: number;\n\n searchResults: ISearchstaxParsedResult[] | null = null;\n metadata: ISearchstaxSearchMetadata | null = null;\n searchTerm = '';\n context = this;\n\n get hooks(): { [key: string]: (prop: any) => any } {\n const hooks: { [key: string]: (prop: any) => any } = {};\n if (this.afterLinkClick) {\n hooks['afterLinkClick'] = this.afterLinkClick;\n }\n return hooks;\n }\n\n constructor(\n public storeServiceService: StoreServiceService,\n private ngZone: NgZone,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngOnInit(): void {\n if (this.storeServiceService.searchstax) {\n this.storeServiceService.whenDataLayerReady(() => {\n this.attachObservables();\n });\n\n setTimeout(() => {\n this.storeServiceService.searchstax.addSearchResultsWidget(\n 'searchstax-results-container',\n {\n templates: {},\n hooks: this.hooks,\n renderMethod: this.renderMethod ?? \"pagination\",\n resultsPerPage: this.resultsPerPage,\n }\n );\n }, 0);\n } else {\n throw Error('Searchstax instance needs to be passed via props');\n }\n }\n\n executeSearch(term: string, event: Event, context: this): void {\n event.preventDefault();\n context.storeServiceService.searchstax.executeSearch(term);\n }\n\n attachObservables() {\n subscribeInNgZone(\n this.ngZone,\n this.storeServiceService.searchstax.dataLayer.$searchResults,\n (results: ISearchstaxParsedResult[] | null) => {\n const current = this.searchResults ? [...this.searchResults] : [];\n const newResults = results ?? [];\n const resultsCombined =\n this.renderMethod === \"infiniteScroll\"\n ? [...current, ...newResults]\n : results;\n if (\n this.storeServiceService.searchstax.dataLayer.$searchObject.value\n ?.page === 1\n ) {\n this.searchResults = newResults;\n } else {\n this.searchResults = resultsCombined;\n }\n },\n this.cdr\n );\n subscribeInNgZone(\n this.ngZone,\n this.storeServiceService.searchstax.dataLayer.$searchTermChange,\n (result: string) => {\n this.searchTerm = result;\n },\n this.cdr\n );\n\n subscribeInNgZone(\n this.ngZone,\n this.storeServiceService.searchstax.dataLayer.$searchResultsMetadata,\n (value: ISearchstaxSearchMetadata) => {\n this.metadata = value;\n },\n this.cdr\n );\n }\n\n resultClicked(result: ISearchstaxParsedResult, event: Event, context: this) {\n event.preventDefault();\n event.stopPropagation();\n context.storeServiceService.searchstax.executeLinkClick(result.uniqueId);\n }\n\n isImage(field: any){\n return field.isImage && typeof field.value === 'string'\n }\n}\n","<div id=\"searchstax-results-container\">\n <section aria-label=\"search results container\" tabindex=\"0\">\n <div\n class=\"searchstax-search-results-container\"\n id=\"searchstax-search-results-container\"\n >\n <div id=\"searchstax-result-container\">\n @if (\n searchResults?.length === 0 &&\n searchTerm !== '' &&\n searchTerm !== '*' &&\n storeServiceService.searchstax.dataLayer.parsedData\n ?.firstSearchHappened &&\n !noResultsTemplate\n ) {\n <div>\n <app-no-results-template #noResultsTpl></app-no-results-template>\n <ng-container\n [ngTemplateOutlet]=\"noResultsTpl.noResultsTemplate\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-container>\n </div>\n }\n @if (\n searchResults?.length === 0 &&\n searchTerm !== '' &&\n searchTerm !== '*' &&\n storeServiceService.searchstax.dataLayer.parsedData\n ?.firstSearchHappened &&\n noResultsTemplate\n ) {\n <div>\n <ng-container\n [ngTemplateOutlet]=\"noResultsTemplate\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-container>\n </div>\n }\n\n @if (searchResults && searchResults.length && !resultsTemplate) {\n <app-results-template #resultsTpl></app-results-template>\n <ng-container\n [ngTemplateOutlet]=\"resultsTpl.resultsTemplate\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-container>\n }\n\n @if (searchResults && searchResults.length && resultsTemplate) {\n <div>\n <ng-container\n [ngTemplateOutlet]=\"resultsTemplate\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-container>\n </div>\n }\n </div>\n </div>\n </section>\n</div>\n","// reusable-template.component.ts\nimport { Component, ViewChild, TemplateRef } from \"@angular/core\";\n\n@Component({\n standalone: false,\n selector: \"app-overview-template\",\n template: `\n <ng-template\n #feedbackTemplate\n let-searchFeedbackData=\"searchFeedbackData\"\n let-onOriginalQueryClick=\"onOriginalQueryClick\"\n let-context=\"context\"\n >\n <h2 class=\"searchstax-feedback-container\">\n Showing\n <b\n >{{ searchFeedbackData!.startResultIndex }} -\n {{ searchFeedbackData!.endResultIndex }}</b\n >\n of <b>{{ searchFeedbackData!.totalResults }}</b> results\n @if (searchFeedbackData.searchTerm) {\n <span\n >for \"<b>{{ searchFeedbackData!.searchTerm }}</b\n >\"\n </span>\n }\n <div class=\"searchstax-feedback-container-suggested\">\n @if (searchFeedbackData.autoCorrectedQuery) {\n <div>\n Search instead for\n <a\n href=\"#\"\n (click)=\"onOriginalQueryClick($event, context)\"\n class=\"searchstax-feedback-original-query\"\n [attr.aria-label]=\"\n 'Search instead for: ' + searchFeedbackData!.originalQuery\n \"\n >{{ searchFeedbackData!.originalQuery }}</a\n >\n </div>\n }\n </div>\n </h2>\n </ng-template>\n `,\n})\nexport class OverviewTemplateComponent {\n @ViewChild(\"feedbackTemplate\", { static: true }) overviewTemplate!: TemplateRef<any>;\n}\n","import {\n ChangeDetectorRef,\n Component,\n Input,\n NgZone,\n OnInit,\n TemplateRef,\n} from \"@angular/core\";\nimport { ISearchstaxSearchFeedbackData } from \"@searchstax-inc/searchstudio-ux-js\";\nimport { StoreServiceService } from \"../../services/store-service.service\";\nimport { subscribeInNgZone } from \"../../utils/subscribe-in-ng-zone\";\n\n@Component({\n standalone: false,\n selector: \"app-searchstax-search-feedback\",\n templateUrl: \"./searchstax-search-overview.component.html\",\n styles: [],\n})\nexport class SearchstaxSearchFeedbackWidget implements OnInit {\n @Input() templateOverride?: TemplateRef<any>;\n\n searchFeedbackData: null | ISearchstaxSearchFeedbackData = null;\n rand = Math.random();\n context = this;\n constructor(\n private storeServiceService: StoreServiceService,\n private ngZone: NgZone,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngOnInit(): void {\n if (this.storeServiceService.searchstax) {\n this.storeServiceService.whenDataLayerReady(() => {\n this.attachObservables();\n });\n setTimeout(() => {\n this.storeServiceService.searchstax.addSearchFeedbackWidget(\"search-feedback-container\" + this.rand, {});\n }, 0);\n } else {\n throw Error(\"Searchstax instance needs to be passed via props\");\n }\n }\n\n onOriginalQueryClick(e: Event, context: this) {\n e.stopImmediatePropagation();\n context.storeServiceService.searchstax.searchFeedbackWidget?.onOriginalQueryClick(e);\n }\n\n attachObservables() {\n subscribeInNgZone(\n this.ngZone,\n this.storeServiceService.searchstax.dataLayer.$searchFeedbackData,\n (searchFeedbackData: null | ISearchstaxSearchFeedbackData) => {\n this.searchFeedbackData = searchFeedbackData;\n },\n this.cdr\n );\n }\n}\n","<div\n class=\"search-feedback-container\"\n [id]=\"'search-feedback-container' + rand\"\n>\n @if (\n searchFeedbackData &&\n searchFeedbackData?.searchExecuted &&\n !templateOverride &&\n searchFeedbackData?.totalResults\n ) {\n <div class=\"searchstax-feedback-container\">\n <app-overview-template #ref></app-overview-template>\n <ng-container\n [ngTemplateOutlet]=\"ref.overviewTemplate\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-container>\n </div>\n }\n\n @if (\n searchFeedbackData &&\n searchFeedbackData?.searchExecuted &&\n templateOverride &&\n searchFeedbackData?.totalResults\n ) {\n <div>\n <ng-container\n [ngTemplateOutlet]=\"templateOverride\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-container>\n </div>\n }\n</div>\n","// reusable-template.component.ts\nimport { Component, ViewChild, TemplateRef } from \"@angular/core\";\n\n@Component({\n standalone: false,\n selector: \"app-pagination-template\",\n template: `\n <ng-template\n #paginationTemplate\n let-paginationData=\"paginationData\"\n let-previousPage=\"previousPage\"\n let-nextPage=\"nextPage\"\n let-context=\"context\"\n >\n <div class=\"searchstax-pagination-container\">\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 </ng-template>\n `,\n})\nexport class PaginationTemplateComponent {\n @ViewChild(\"paginationTemplate\", { static: true }) paginationTemplate!: TemplateRef<any>;\n}\n","// reusable-template.component.ts\nimport { Component, ViewChild, TemplateRef } from \"@angular/core\";\n\n@Component({\n standalone: false,\n selector: \"app-pagination-infinite-template\",\n template: `\n <ng-template\n #infiniteScrollTemplate\n let-paginationData=\"paginationData\"\n let-nextPage=\"nextPage\"\n let-context=\"context\"\n >\n <div class=\"searchstax-pagination-container\">\n <div class=\"searchstax-pagination-content\">\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 </div>\n </ng-template>\n `,\n})\nexport class PaginationInfiniteTemplateComponent {\n @ViewChild(\"infiniteScrollTemplate\", { static: true })\n infiniteScrollTemplate!: TemplateRef<any>;\n}\n","import {\n ChangeDetectorRef,\n Component,\n Input,\n NgZone,\n OnInit,\n TemplateRef,\n} from \"@angular/core\";\nimport {\n IPaginationData,\n ISearchObject,\n} from \"@searchstax-inc/searchstudio-ux-js\";\nimport { StoreServiceService } from \"../../services/store-service.service\";\nimport { subscribeInNgZone } from \"../../utils/subscribe-in-ng-zone\";\n\n@Component({\n standalone: false,\n selector: \"app-searchstax-search-pagination\",\n templateUrl: \"./searchstax-search-pagination.component.html\",\n styles: [],\n})\nexport class SearchstaxSearchPaginationWidget implements OnInit {\n @Input() templateOverride?: TemplateRef<any>;\n @Input() infiniteScrollTemplateOverride?: TemplateRef<any>;\n\n paginationData: null | IPaginationData = null;\n rand = Math.random();\n context = this;\n paginationAdded = false;\n constructor(\n private storeServiceService: StoreServiceService,\n private ngZone: NgZone,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngOnInit(): void {\n if (this.storeServiceService.searchstax) {\n this.storeServiceService.whenDataLayerReady(() => {\n this.attachObservables();\n });\n setTimeout(() => {\n this.addWidget();\n }, 0);\n } else {\n throw Error(\"Searchstax instance needs to be passed via props\");\n }\n }\n\n nextPage(event: Event, context: this) {\n event.stopImmediatePropagation();\n if (!context.paginationData?.isLastPage) {\n context.storeServiceService.searchstax.searchPaginationWidget?.nextPage(\n event\n );\n }\n }\n\n previousPage(event: Event, context: this) {\n event.stopImmediatePropagation();\n if (!context.paginationData?.isFirstPage) {\n context.storeServiceService.searchstax.searchPaginationWidget?.previousPage(\n event\n );\n }\n }\n\n addWidget() {\n if (\n !this.paginationAdded &&\n this.storeServiceService.searchstax.routerHelper\n ) {\n this.paginationAdded = true;\n this.storeServiceService.searchstax.addPaginationWidget(\n \"searchstax-pagination-container\" + this.rand,\n {}\n );\n }\n }\n\n attachObservables() {\n subscribeInNgZone(\n this.ngZone,\n this.storeServiceService.searchstax.dataLayer.$searchObject,\n (_pagination: ISearchObject | null) => {\n this.addWidget();\n },\n this.cdr\n );\n\n subscribeInNgZone(\n this.ngZone,\n this.storeServiceService.searchstax.dataLayer.$paginationData,\n (pagination: IPaginationData | null) => {\n this.paginationData = pagination;\n },\n this.cdr\n );\n }\n}\n","<div [id]=\"'searchstax-pagination-container' + rand\">\n @if (\n paginationData?.totalResults &&\n !templateOverride &&\n !paginationData?.isInfiniteScroll\n ) {\n <ng-container>\n <app-pagination-template #paginationTpl></app-pagination-template>\n <ng-container\n [ngTemplateOutlet]=\"paginationTpl.paginationTemplate\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-container>\n </ng-container>\n }\n\n @if (\n paginationData?.totalResults &&\n templateOverride &&\n !paginationData?.isInfiniteScroll\n ) {\n <div>\n <ng-container\n [ngTemplateOutlet]=\"templateOverride\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-container>\n </div>\n }\n\n @if (\n paginationData?.totalResults &&\n !infiniteScrollTemplateOverride &&\n paginationData?.totalResults !== 0 &&\n !paginationData?.isLastPage &&\n paginationData?.isInfiniteScroll\n ) {\n <ng-container>\n <app-pagination-infinite-template\n #infiniteScrollTpl\n ></app-pagination-infinite-template>\n <ng-container\n [ngTemplateOutlet]=\"infiniteScrollTpl.infiniteScrollTemplate\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-container>\n </ng-container>\n }\n\n @if (\n paginationData?.totalResults &&\n infiniteScrollTemplateOverride &&\n paginationData?.totalResults !== 0 &&\n !paginationData?.isLastPage &&\n paginationData?.isInfiniteScroll\n ) {\n <div>\n <ng-container\n [ngTemplateOutlet]=\"infiniteScrollTemplateOverride\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-container>\n </div>\n }\n</div>\n","// reusable-template.component.ts\nimport { Component, ViewChild, TemplateRef } from \"@angular/core\";\n\n@Component({\n standalone: false,\n selector: \"app-facet-desktop-template\",\n template: `\n <ng-template\n #templateOverrideDesktop\n let-facetsTemplateDataDesktop=\"facetsTemplateDataDesktop\"\n let-isNotDeactivated=\"isNotDeactivated\"\n let-context=\"context\"\n let-toggleFacetGroup=\"toggleFacetGroup\"\n let-facetValues=\"facetValues\"\n let-isChecked=\"isChecked\"\n let-selectFacet=\"selectFacet\"\n let-showMoreLessDesktop=\"showMoreLessDesktop\"\n >\n <div class=\"searchstax-facets-container-desktop\">\n @for (\n facet of facetsTemplateDataDesktop?.facets ?? [];\n track facet.name\n ) {\n <div\n class=\"searchstax-facet-container\"\n [class]=\"{ active: isNotDeactivated(facet.name, context) }\"\n >\n <div>\n <div\n class=\"searchstax-facet-title-container\"\n (click)=\"toggleFacetGroup(facet.name, context)\"\n >\n <div class=\"searchstax-facet-title\">\n {{ facet.label }}\n </div>\n <div class=\"searchstax-facet-title-arrow active\"></div>\n </div>\n <div class=\"searchstax-facet-values-container\" aria-live=\"polite\">\n @for (\n facetValue of facetValues(facet);\n track $index\n ) {\n <div\n class=\"searchstax-facet-value-container\"\n [class]=\"{\n 'searchstax-facet-value-disabled': facetValue.disabled\n }\"\n #facetValueRow\n >\n <div class=\"searchstax-facet-input\">\n <input\n type=\"checkbox\"\n class=\"searchstax-facet-input-checkbox\"\n [checked]=\"isChecked(facetValue, context)\"\n [attr.aria-label]=\"\n facetValue.value + ' ' + facetValue.count\n \"\n [disabled]=\"facetValue.disabled\"\n (click)=\"\n selectFacet(facetValueRow, $event, facetValue, true, context)\n \"\n />\n </div>\n <div\n class=\"searchstax-facet-value-label\"\n (click)=\"\n selectFacet(facetValueRow, $event, facetValue, false, context)\n \"\n >\n {{ facetValue.value }}\n </div>\n <div\n class=\"searchstax-facet-value-count\"\n (click)=\"\n selectFacet(facetValueRow, $event, facetValue, false, context)\n \"\n >\n ({{ facetValue.count }})\n </div>\n </div>\n }\n @if (facet.hasMoreFacets) {\n <div class=\"searchstax-facet-show-more-container\">\n <div\n class=\"searchstax-facet-show-more-container\"\n (click)=\"showMoreLessDesktop($event, facet, context)\"\n (keyup.enter)=\"showMoreLessDesktop($event, facet, context)\"\n (keyup.space)=\"showMoreLessDesktop($event, facet, context)\"\n tabindex=\"0\"\n role=\"button\"\n >\n @if (facet.showingAllFacets) {\n <div\n class=\"searchstax-facet-show-less-button searchstax-facet-show-button\"\n >\n less\n </div>\n }\n @if (!facet.showingAllFacets) {\n <div\n class=\"searchstax-facet-show-more-button searchstax-facet-show-button\"\n >\n more\n </div>\n }\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n }\n </div>\n </ng-template>\n `,\n})\nexport class FacetDesktopTemplateComponent {\n @ViewChild(\"templateOverrideDesktop\", { static: true })\n templateOverrideDesktop!: TemplateRef<any>;\n}\n","// reusable-template.component.ts\nimport { Component, ViewChild, TemplateRef } from \"@angular/core\";\n\n@Component({\n standalone: false,\n selector: \"app-facet-mobile-template\",\n template: `\n <ng-template\n #templateOverrideMobile\n let-isNotDeactivated=\"isNotDeactivated\"\n let-context=\"context\"\n let-toggleFacetGroup=\"toggleFacetGroup\"\n let-facetValues=\"facetValues\"\n let-isChecked=\"isChecked\"\n let-selectFacet=\"selectFacet\"\n let-openOverlay=\"openOverlay\"\n let-selectedFacetsCheckboxes=\"selectedFacetsCheckboxes\"\n let-unselectFacet=\"unselectFacet\"\n let-unselectAll=\"unselectAll\"\n let-facetMobileData=\"facetMobileData\"\n let-facetsTemplateDataMobile=\"facetsTemplateDataMobile\"\n let-closeOverlay=\"closeOverlay\"\n let-showMoreLessDesktop=\"showMoreLessDesktop\"\n let-showMoreLessMobile=\"showMoreLessMobile\"\n >\n <div class=\"searchstax-facets-container-mobile\">\n <div class=\"searchstax-facets-pills-container\">\n <div\n class=\"searchstax-facets-pill searchstax-facets-pill-filter-by\"\n (click)=\"openOverlay(context)\"\n >\n <div class=\"searchstax-facets-pill-label\">Filter By</div>\n </div>\n <div class=\"searchstax-facets-pills-selected\">\n @for (facet of selectedFacetsCheckboxes; track $index) {\n <div\n class=\"searchstax-facets-pill searchstax-facets-pill-facets\"\n (click)=\"unselectFacet(facet, context)\"\n >\n <div class=\"searchstax-facets-pill-label\">\n {{ facet.value }} ({{ facet.count }})\n </div>\n <div class=\"searchstax-facets-pill-icon-close\"></div>\n </div>\n }\n </div>\n @if (selectedFacetsCheckboxes.length) {\n <div\n class=\"searchstax-facets-pill searchstax-clear-filters searchstax-facets-pill-clear-all\"\n (click)=\"unselectAll(context)\"\n >\n <div class=\"searchstax-facets-pill-label\">Clear Filters</div>\n </div>\n }\n </div>\n <div\n class=\"searchstax-facets-mobile-overlay\"\n [class]=\"{\n 'searchstax-show': facetMobileData(facetsTemplateDataMobile)\n ?.overlayOpened\n }\"\n >\n <div class=\"searchstax-facets-mobile-overlay-header\">\n <div class=\"searchstax-facets-mobile-overlay-header-title\">\n Filter By\n </div>\n <div\n class=\"searchstax-search-close\"\n (click)=\"closeOverlay(context)\"\n ></div>\n </div>\n <div class=\"searchstax-facets-container-mobile\">\n @for (\n facet of facetsTemplateDataMobile?.facets ?? [];\n track facet.name\n ) {\n <div\n class=\"searchstax-facet-container\"\n [class]=\"{\n active: isNotDeactivated(facet.name, context)\n }\"\n >\n <div>\n <div\n class=\"searchstax-facet-title-container\"\n (click)=\"toggleFacetGroup(facet.name, context)\"\n >\n <div class=\"searchstax-facet-title\">\n {{ facet.label }}\n </div>\n <div class=\"searchstax-facet-title-arrow active\"></div>\n </div>\n <div\n class=\"searchstax-facet-values-container\"\n aria-live=\"polite\"\n >\n @for (\n facetValue of facetValues(facet);\n track $index\n ) {\n <div\n class=\"searchstax-facet-value-container\"\n [class]=\"{\n 'searchstax-facet-value-disabled': facetValue.disabled\n }\"\n #facetValueRow\n >\n <div class=\"searchstax-facet-input\">\n <input\n type=\"checkbox\"\n class=\"searchstax-facet-input-checkbox\"\n [checked]=\"isChecked(facetValue, context)\"\n [attr.aria-label]=\"\n facetValue.value + ' ' + facetValue.count\n \"\n [disabled]=\"facetValue.disabled\"\n (click)=\"\n selectFacet(facetValueRow, $event, facetValue, true, context)\n \"\n />\n </div>\n <div\n class=\"searchstax-facet-value-label\"\n (click)=\"\n selectFacet(facetValueRow, $event, facetValue, false, context)\n \"\n >\n {{ facetValue.value }}\n </div>\n <div\n class=\"searchstax-facet-value-count\"\n (click)=\"\n selectFacet(facetValueRow, $event, facetValue, false, context)\n \"\n >\n ({{ facetValue.count }})\n </div>\n </div>\n }\n @if (facet.hasMoreFacets) {\n <div class=\"searchstax-facet-show-more-container\">\n <div\n class=\"searchstax-facet-show-more-container\"\n (click)=\"showMoreLessMobile($event, facet, context)\"\n (keyup.enter)=\"showMoreLessMobile($event, facet, context)\"\n (keyup.space)=\"showMoreLessMobile($event, facet, context)\"\n tabindex=\"0\"\n >\n @if (facet.showingAllFacets) {\n <div\n class=\"searchstax-facet-show-less-button searchstax-facet-show-button\"\n >\n less\n </div>\n }\n @if (!facet.showingAllFacets) {\n <div\n class=\"searchstax-facet-show-more-button searchstax-facet-show-button\"\n >\n more\n </div>\n }\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n }\n </div>\n <button\n class=\"searchstax-facets-mobile-overlay-done\"\n (click)=\"closeOverlay(context)\"\n >\n Done\n </button>\n </div>\n </div>\n </ng-template>\n `,\n})\nexport class FacetMobileTemplateComponent {\n @ViewChild(\"templateOverrideMobile\", { static: true })\n templateOverrideMobile!: TemplateRef<any>;\n}\n","import {\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n NgZone,\n OnInit,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewChildren,\n} from \"@angular/core\";\nimport { IFacetData, IFacetValue, IFacetValueData, IFacetValueRange, IFacetsTemplateData, IPaginationData, ISearchObject } from \"@searchstax-inc/searchstudio-ux-js\";\nimport { StoreServiceService } from \"../../services/store-service.service\";\nimport { subscribeInNgZone } from \"../../utils/subscribe-in-ng-zone\";\n\n@Component({\n standalone: false,\n selector: \"app-searchstax-search-facets\",\n templateUrl: \"./searchstax-search-facets.component.html\",\n styles: [],\n})\nexport class SearchstaxSearchFacetsWidget implements OnInit {\n @Input() templateOverrideMobile?: TemplateRef<any>;\n @Input() templateOverrideDesktop?: TemplateRef<any>;\n @Input() facetingType!: \"and\" | \"or\" | \"showUnavailable\" | \"tabs\";\n @Input() itemsPerPageDesktop!: number;\n @Input() itemsPerPageMobile!: number;\n @Input() specificFacets!: string[];\n @Input() beforeFacetsRender?: (facetsTemplateDataDesktop: IFacetData[]) => IFacetData[];\n\n facetsTemplateDataDesktop: null | IFacetsTemplateData = null;\n facetsTemplateDataMobile: null | IFacetsTemplateData = null;\n context = this;\n selectedFacetsCheckboxes: IFacetValue[] = [];\n selectedFacetsRange: IFacetValueRange[] = [];\n rand = Math.random();\n\n // @ViewChildren(\"facetContainers\") facetContainers: QueryList<ElementRef>;\n constructor(\n private storeServiceService: StoreServiceService,\n private ngZone: NgZone,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngOnInit(): void {\n if (this.storeServiceService.searchstax) {\n this.storeServiceService.whenDataLayerReady(() => {\n this.attachObservables();\n });\n setTimeout(() => {\n this.addWidget();\n }, 0);\n } else {\n throw Error(\"Searchstax instance needs to be passed via props\");\n }\n }\n\n addWidget() {\n this.storeServiceService.searchstax.addFacetsWidget('searchstax-facets-container' + this.rand, {\n facetingType: this.facetingType,\n specificFacets: this.specificFacets,\n itemsPerPageDesktop: this.itemsPerPageDesktop,\n itemsPerPageMobile: this.itemsPerPageMobile,\n hooks: {\n beforeFacetsRender: this.beforeFacetsRender\n }\n })\n }\n\n attachObservables() {\n subscribeInNgZone(\n this.ngZone,\n this.storeServiceService.searchstax.dataLayer.$facetsTemplateData,\n (data: null | IFacetsTemplateData) => {\n if (data?.isMobile) {\n this.facetsTemplateDataMobile = data;\n } else {\n this.facetsTemplateDataDesktop = data;\n }\n },\n this.cdr\n );\n\n subscribeInNgZone(\n this.ngZone,\n this.storeServiceService.searchstax.dataLayer.$selectedFacetsTemplateData,\n (data: null | (IFacetValue | IFacetValueRange)[]) => {\n const da = data ?? [];\n this.selectedFacetsCheckboxes = da.filter(\n (d) => d.type === \"checkbox\"\n ) as IFacetValue[];\n },\n this.cdr\n );\n }\n\n\n unselectFacet(facet: IFacetValue, context: this) {\n context.storeServiceService.searchstax.searchFacetsWidget?.unselectFacet(facet)\n }\n\n unselectAll(context: this) {\n context.storeServiceService.searchstax.searchFacetsWidget?.removeSelectedFacets()\n }\n\n isNotDeactivated(name: string, context: this) {\n return !context.storeServiceService.searchstax.searchFacetsWidget?.deactivatedFacets[name]\n }\n\n toggleFacetGroup(name: string, context: this) {\n if(context.storeServiceService.searchstax.searchFacetsWidget)\n if (context.isNotDeactivated(name, context)) {\n context.storeServiceService.searchstax.searchFacetsWidget.deactivatedFacets[name] = true\n } else {\n context.storeServiceService.searchstax.searchFacetsWidget.deactivatedFacets[name] = false\n }\n }\n\n isChecked(facetValue: IFacetValueData, context: this) {\n return context.storeServiceService.searchstax.searchFacetsWidget?.isChecked(facetValue)\n }\n\n selectFacet(el: HTMLElement, event: Event, data: IFacetValueData, isInput: boolean, context: this) {\n const wrapperDiv = document.createElement('div');\n wrapperDiv.innerHTML = el.outerHTML;\n context.storeServiceService.searchstax.searchFacetsWidget?.onFacetSelect(event, data, el as HTMLDivElement, isInput)\n\n }\n\n showMoreLessDesktop(e: Event, data: IFacetData, context: this) {\n context.storeServiceService.searchstax.searchFacetsWidget?.onShowMoreLessClick(e, data, false)\n }\n\n showMoreLessMobile(e: Event, data: IFacetData, context: this) {\n context.storeServiceService.searchstax.searchFacetsWidget?.onShowMoreLessClick(e, data, true)\n }\n\n openOverlay(context: this) {\n context.storeServiceService.searchstax.searchFacetsWidget?.openOverlay();\n }\n\n closeOverlay(context: this) {\n context.storeServiceService.searchstax.searchFacetsWidget?.closeOverlay();\n }\n\n facetValues(facet: IFacetData) : IFacetValueData[] {\n return facet.values as IFacetValueData[];\n }\n\n facetMobileData(facet: IFacetsTemplateData | null) : any {\n return facet as any\n }\n}\n","<div [id]=\"'searchstax-facets-container' + rand\">\n @if (\n facetsTemplateDataDesktop?.hasResultsOrExternalPromotions &&\n !templateOverrideDesktop\n ) {\n <ng-container>\n <app-facet-desktop-template #facetDesktopTpl></app-facet-desktop-template>\n <ng-container\n [ngTemplateOutlet]=\"facetDesktopTpl.templateOverrideDesktop\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-container>\n </ng-container>\n }\n\n @if (\n facetsTemplateDataDesktop?.hasResultsOrExternalPromotions &&\n templateOverrideDesktop\n ) {\n <div>\n <ng-container\n [ngTemplateOutlet]=\"templateOverrideDesktop\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-container>\n </div>\n }\n\n @if (\n facetsTemplateDataMobile?.hasResultsOrExternalPromotions &&\n !templateOverrideMobile\n ) {\n <ng-container>\n <app-facet-mobile-template #facetMobileTpl></app-facet-mobile-template>\n <ng-container\n [ngTemplateOutlet]=\"facetMobileTpl.templateOverrideMobile\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-container>\n </ng-container>\n }\n\n @if (\n facetsTemplateDataMobile?.hasResultsOrExternalPromotions &&\n templateOverrideMobile\n ) {\n <div>\n <ng-container\n [ngTemplateOutlet]=\"templateOverrideMobile\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-container>\n </div>\n }\n</div>\n","// reusable-template.component.ts\nimport { Component, ViewChild, TemplateRef } from \"@angular/core\";\n\n@Component({\n standalone: false,\n selector: \"app-sorting-template\",\n template: `\n <ng-template\n #sortingTemplateOverride\n let-selectedSorting=\"selectedSorting\"\n let-orderChange=\"orderChange\"\n let-context=\"context\"\n >\n <div class=\"searchstax-sorting-container\">\n <label\n class=\"searchstax-sorting-label\"\n for=\"searchstax-search-order-select\"\n >Sort By</label\n >\n <select\n id=\"searchstax-search-order-select\"\n class=\"searchstax-search-order-select\"\n [(ngModel)]=\"context.selectedSorting\"\n (change)=\"orderChange($event, context)\"\n >\n @for (\n sortOption of context.sortingData?.sortOptions ?? [];\n track sortOption.key\n ) {\n <option [value]=\"sortOption.key\">\n {{ sortOption.value }}\n </option>\n }\n </select>\n </div>\n </ng-template>\n `,\n})\nexport class SortingTemplateComponent {\n @ViewChild(\"sortingTemplateOverride\", { static: true }) sortingTemplate!: TemplateRef<any>;\n}\n","import {\n ChangeDetectorRef,\n Component,\n Input,\n NgZone,\n OnInit,\n TemplateRef,\n} from \"@angular/core\";\nimport { ISearchObject, ISearchstaxSearchFeedbackData, ISearchstaxSearchSortingData } from \"@searchstax-inc/searchstudio-ux-js\";\nimport { StoreServiceService } from \"../../services/store-service.service\";\nimport { subscribeInNgZone } from \"../../utils/subscribe-in-ng-zone\";\n\n@Component({\n standalone: false,\n selector: \"app-searchstax-search-sorting\",\n templateUrl: \"./searchstax-search-sorting.component.html\",\n styles: [],\n})\nexport class SearchstaxSearchSortingWidget implements OnInit {\n @Input() templateOverride?: TemplateRef<any>;\n\n sortingData: null | ISearchstaxSearchSortingData = null;\n rand = Math.random();\n context = this;\n selectedSorting: string = \"\";\n constructor(\n private storeServiceService: StoreServiceService,\n private ngZone: NgZone,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngOnInit(): void {\n if (this.storeServiceService.searchstax) {\n this.storeServiceService.whenDataLayerReady(() => {\n this.attachObservables();\n });\n setTimeout(() => {\n this.storeServiceService.searchstax.addSearchSortingWidget(\"search-sorting-container\" + this.rand, {});\n }, 0);\n } else {\n throw Error(\"Searchstax instance needs to be passed via props\");\n }\n }\n\n orderChange(e: Event, context: this) {\n e.stopImmediatePropagation();\n context.storeServiceService.searchstax.searchSortingWidget?.setOrderQuery((e.target as HTMLSelectElement).value);\n }\n\n attachObservables() {\n subscribeInNgZone(\n this.ngZone,\n this.storeServiceService.searchstax.dataLayer.$searchSortingData,\n (sortingData: null | ISearchstaxSearchSortingData) => {\n this.sortingData = sortingData;\n },\n this.cdr\n );\n\n subscribeInNgZone(\n this.ngZone,\n this.storeServiceService.searchstax.dataLayer.$searchObject,\n (searchObject: null | ISearchObject) => {\n this.selectedSorting = decodeURIComponent(searchObject?.order ?? \"\");\n },\n this.cdr\n );\n }\n}\n","<div class=\"search-feedback-container\" [id]=\"'search-sorting-container' + rand\">\n @if (\n sortingData &&\n sortingData?.searchExecuted &&\n sortingData?.hasResultsOrExternalPromotions &&\n (sortingData.sortOptions?.length ?? 0) > 0 &&\n !templateOverride\n ) {\n <ng-container>\n <app-sorting-template #ref></app-sorting-template>\n <ng-container\n [ngTemplateOutlet]=\"ref.sortingTemplate\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-container>\n </ng-container>\n }\n\n @if (\n sortingData &&\n sortingData?.searchExecuted &&\n sortingData?.hasResultsOrExternalPromotions &&\n templateOverride\n ) {\n <div>\n <ng-container\n [ngTemplateOutlet]=\"templateOverride\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-container>\n </div>\n }\n</div>\n","// reusable-template.component.ts\nimport { Component, ViewChild, TemplateRef } from \"@angular/core\";\n\n@Component({\n standalone: false,\n selector: \"app-answer-template\",\n template: `\n <ng-template\n #answerTemplate\n let-answerData=\"answerData\"\n let-showMore=\"showMore\"\n let-context=\"context\"\n >\n <div class=\"searchstax-answer-wrap\">\n <div class=\"searchstax-answer-icon\"></div>\n <div>\n <div\n [class]=\"{\n 'searchstax-answer-container': true,\n 'searchstax-answer-show-more': answerData.showMoreButtonVisible\n }\"\n >\n <div class=\"searchstax-answer-title\">Smart Answers</div>\n @if (answerData.shouldShowAnswerError) {\n <div\n class=\"searchstax-answer-error\"\n [innerHTML]=\"answerData.answerErrorMessage\"\n ></div>\n }\n <div\n class=\"searchstax-answer-description\"\n [innerHTML]=\"answerData.fullAnswerFormatted\"\n ></div>\n @if (answerData.answerLoading) {\n <div class=\"searchstax-answer-loading\"></div>\n }\n </div>\n @if (answerData.showMoreButtonVisible) {\n <div class=\"searchstax-answer-load-more-button-container\">\n <button\n class=\"searchstax-answer-load-more-button\"\n (click)=\"showMore($event, context)\"\n >\n Show More\n </button>\n </div>\n }\n </div>\n <div class=\"searchstax-answer-footer\">\n <div id=\"feedbackWidgetContainer\"></div>\n <div class=\"searchstax-lightweight-widget-separator-inline\"></div>\n <p class=\"searchstax-disclaimer\">Generative AI is Experimental</p>\n </div>\n </div>\n </ng-template>\n `,\n})\nexport class AnswerTemplateComponent {\n @ViewChild(\"answerTemplate\", { static: true }) answerTemplate!: TemplateRef<any>;\n}\n","import {\n ChangeDetectorRef,\n Component,\n Input,\n NgZone,\n OnInit,\n TemplateRef,\n} from \"@angular/core\";\nimport { IFeedbackWidgetProperties, ISearchstaxAnswerData } from \"@searchstax-inc/searchstudio-ux-js\";\nimport { StoreServiceService } from \"../../services/store-service.service\";\nimport { subscribeInNgZone } from \"../../utils/subscribe-in-ng-zone\";\n\n@Component({\n standalone: false,\n selector: \"app-searchstax-answer\",\n templateUrl: \"./searchstax-search-answer.component.html\",\n styles: [],\n})\nexport class SearchstaxSearchAnswerWidget implements OnInit {\n @Input() templateOverride?: TemplateRef<any>;\n @Input() feedbackwidget?: IFeedbackWidgetProperties;\n @Input() showMoreAfterWordCount?: number;\n @Input() testString?: string;\n\n answerData: null | ISearchstaxAnswerData = null;\n rand = Math.random();\n context = this;\n constructor(\n private storeServiceService: StoreServiceService,\n private ngZone: NgZone,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngOnInit(): void {\n if (this.storeServiceService.searchstax) {\n this.storeServiceService.whenDataLayerReady(() => {\n this.attachObservables();\n });\n setTimeout(() => {\n this.storeServiceService.searchstax.addAnswerWidget('searchstax-answer-container' + this.rand, {showMoreAfterWordCount: this.showMoreAfterWordCount, feedbackwidget: this.feedbackwidget, testString: this.testString});\n }, 0);\n } else {\n throw Error(\"Searchstax instance needs to be passed via props\");\n }\n }\n\n showMore(event: Event, context: this) {\n if (context.storeServiceService.searchstax) {\n context.storeServiceService.searchstax.answerWidget?.showMore(event)\n }\n }\n\n\n attachObservables() {\n subscribeInNgZone(\n this.ngZone,\n this.storeServiceService.searchstax.dataLayer.$answerData,\n (answerData: null | ISearchstaxAnswerData) => {\n this.answerData = answerData;\n },\n this.cdr\n );\n }\n}\n","<div [id]=\"'searchstax-answer-container' + rand\">\n @if (\n answerData &&\n answerData?.searchExecuted &&\n answerData.shouldShowAnswer &&\n !templateOverride\n ) {\n <div>\n <app-answer-template #ref></app-answer-template>\n <ng-container\n [ngTemplateOutlet]=\"ref.answerTemplate\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-container>\n </div>\n }\n @if (\n answerData &&\n answerData?.searchExecuted &&\n answerData.shouldShowAnswer &&\n templateOverride\n ) {\n <div>\n <ng-container\n [ngTemplateOutlet]=\"templateOverride\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-container>\n </div>\n }\n</div>\n","// reusable-template.component.ts\nimport { Component, ViewChild, TemplateRef } from \"@angular/core\";\n\n@Component({\n standalone: false,\n selector: \"app-related-template\",\n template: `\n <ng-template\n #relatedTemplate\n let-rand=\"rand\"\n let-relatedData=\"relatedData\"\n let-executeSearch=\"executeSearch\"\n let-context=\"context\"\n >\n <div\n class=\"searchstax-related-searches-container\"\n [id]=\"'searchstax-related-searches-container' + rand\"\n >\n Related searches: <span id=\"searchstax-related-searches\"></span>\n @if (relatedData.relatedSearches) {\n <span class=\"searchstax-related-search\">\n @for (\n related of relatedData.relatedSearches;\n track $index\n ) {\n <span\n (click)=\"executeSearch(related, context)\"\n (keyup.enter)=\"executeSearch(related, context)\"\n (keyup.space)=\"executeSearch(related, context)\"\n tabindex=\"0\"\n class=\"searchstax-related-search searchstax-related-search-item\"\n [attr.aria-label]=\"'Related search: ' + related.related_search\"\n >\n {{ related.related_search }}\n @if (!related.last) {\n <span>,</span>\n }\n </span>\n }\n </span>\n }\n </div>\n </ng-template>\n `,\n})\nexport class RelatedTemplateComponent {\n @ViewChild(\"relatedTemplate\", { static: true }) relatedTemplate!: TemplateRef<any>;\n}\n","import {\n ChangeDetectorRef,\n Component,\n Input,\n NgZone,\n OnInit,\n TemplateRef,\n} from \"@angular/core\";\nimport { ISearchstaxRelatedSearchResult, ISearchstaxRelatedSearchesData } from \"@searchstax-inc/searchstudio-ux-js\";\nimport { StoreServiceService } from \"../../services/store-service.service\";\nimport { subscribeInNgZone } from \"../../utils/subscribe-in-ng-zone\";\n\n@Component({\n standalone: false,\n selector: \"app-searchstax-related-searches\",\n templateUrl: \"./searchstax-search-related.component.html\",\n styles: [],\n})\nexport class SearchstaxSearchRelatedSearchesWidget implements OnInit {\n @Input() relatedSearchesURL?: string;\n @Input() relatedSearchesAPIKey?: string;\n @Input() templateOverride?: TemplateRef<any>;\n\n relatedData: null | ISearchstaxRelatedSearchesData = null;\n rand = Math.random();\n context = this;\n constructor(\n private storeServiceService: StoreServiceService,\n private ngZone: NgZone,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngOnInit(): void {\n if (this.storeServiceService.searchstax) {\n this.storeServiceService.whenDataLayerReady(() => {\n this.attachObservables();\n });\n setTimeout(() => {\n this.storeServiceService.searchstax.addRelatedSearchesWidget(\n \"searchstax-related-searches-container\" + this.rand,\n { relatedSearchesURL: this.relatedSearchesURL ?? \"\", relatedSearchesAPIKey: this.relatedSearchesAPIKey ?? \"\" }\n );\n }, 0);\n } else {\n throw Error(\"Searchstax instance needs to be passed via props\");\n }\n }\n\n executeSearch(result: ISearchstaxRelatedSearchResult, context: this) {\n context.storeServiceService.searchstax.relatedSearchesWidget?.executeSearch(result);\n }\n\n attachObservables() {\n subscribeInNgZone(\n this.ngZone,\n this.storeServiceService.searchstax.dataLayer.$searchRelatedSearchesData,\n (relatedData: null | ISearchstaxRelatedSearchesData) => {\n this.relatedData = relatedData;\n },\n this.cdr\n );\n }\n}\n","@if (\n relatedData &&\n relatedData?.searchExecuted &&\n relatedData?.hasRelatedSearches &&\n !templateOverride\n) {\n <ng-container>\n <app-related-template #ref></app-related-template>\n <ng-container\n [ngTemplateOutlet]=\"ref.relatedTemplate\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-container>\n </ng-container>\n}\n\n@if (\n relatedData &&\n relatedData?.searchExecuted &&\n relatedData?.hasRelatedSearches &&\n templateOverride\n) {\n <div>\n <ng-container\n [ngTemplateOutlet]=\"templateOverride\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-container>\n </div>\n}\n","// reusable-template.component.ts\nimport { Component, ViewChild, TemplateRef } from \"@angular/core\";\n\n@Component({\n standalone: false,\n selector: \"app-external-template\",\n template: `\n <ng-template\n #externalPromotionsTemplate\n let-context=\"context\"\n let-externalPromotionsData=\"externalPromotionsData\"\n let-trackClick=\"trackClick\"\n >\n <div\n class=\"searchstax-external-promotions-container\"\n id=\"searchstax-external-promotions-container\"\n >\n @for (\n externalPromotion of externalPromotionsData?.externalPromotions ??\n [];\n track $index\n ) {\n <div\n class=\"searchstax-external-promotion searchstax-search-result\"\n >\n <div class=\"icon-elevated\"></div>\n @if (externalPromotion.url) {\n <a\n [href]=\"externalPromotion.url\"\n (click)=\"trackClick(externalPromotion, $event, context)\"\n class=\"searchstax-result-item-link\"\n ></a>\n }\n <div class=\"searchstax-search-result-title-container\">\n <span class=\"searchstax-search-result-title\">{{\n externalPromotion.name\n }}</span>\n </div>\n @if (externalPromotion.description) {\n <p\n class=\"searchstax-search-result-description searchstax-search-result-common\"\n >\n {{ externalPromotion.description }}\n </p>\n }\n @if (externalPromotion.url) {\n <p\n class=\"searchstax-search-result-description searchstax-search-result-common\"\n >\n {{ externalPromotion.url }}\n </p>\n }\n </div>\n }\n </div>\n </ng-template>\n `,\n})\nexport class ExternalPromotionsTemplateComponent {\n @ViewChild(\"externalPromotionsTemplate\", { static: true })\n externalPromotionsTemplate!: TemplateRef<any>;\n}\n","import {\n ChangeDetectorRef,\n Component,\n Input,\n NgZone,\n OnInit,\n TemplateRef,\n} from \"@angular/core\";\nimport { IExternalPromotion, ISearchstaxExternalPromotionsData } from \"@searchstax-inc/searchstudio-ux-js\";\nimport { StoreServiceService } from \"../../services/store-service.service\";\nimport { subscribeInNgZone } from \"../../utils/subscribe-in-ng-zone\";\n\n@Component({\n standalone: false,\n selector: \"app-searchstax-external-promotions\",\n templateUrl: \"./searchstax-search-external.component.html\",\n styles: [],\n})\nexport class SearchstaxSearchExternalPromotionsWidget implements OnInit {\n @Input() templateOverride?: TemplateRef<any>;\n\n externalPromotionsData: null | ISearchstaxExternalPromotionsData = null;\n rand = Math.random();\n context = this;\n constructor(\n private storeServiceService: StoreServiceService,\n private ngZone: NgZone,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngOnInit(): void {\n if (this.storeServiceService.searchstax) {\n this.storeServiceService.whenDataLayerReady(() => {\n this.attachObservables();\n });\n setTimeout(() => {\n this.storeServiceService.searchstax.addExternalPromotionsWidget(\n \"searchstax-external-promotions-layout-container\" + this.rand,\n {}\n );\n }, 0);\n } else {\n throw Error(\"Searchstax instance needs to be passed via props\");\n }\n }\n\n trackClick(externalPromotion: IExternalPromotion, event: Event, context: this) {\n context.storeServiceService.searchstax.externalPromotionsWidget?.trackClick(externalPromotion, event);\n }\n\n attachObservables() {\n subscribeInNgZone(\n this.ngZone,\n this.storeServiceService.searchstax.dataLayer.$searchExternalPromotionsData,\n (externalPromotionsData: null | ISearchstaxExternalPromotionsData) => {\n this.externalPromotionsData = externalPromotionsData;\n },\n this.cdr\n );\n }\n}\n","<div [id]=\"'searchstax-external-promotions-layout-container' + rand\">\n @if (\n externalPromotionsData &&\n externalPromotionsData?.searchExecuted &&\n externalPromotionsData?.hasExternalPromotions &&\n !templateOverride\n ) {\n <ng-container>\n <app-external-template #ref></app-external-template>\n <ng-container\n [ngTemplateOutlet]=\"ref.externalPromotionsTemplate\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-container>\n </ng-container>\n }\n @if (\n externalPromotionsData &&\n externalPromotionsData?.searchExecuted &&\n externalPromotionsData?.hasExternalPromotions &&\n templateOverride\n ) {\n <div>\n <ng-container\n [ngTemplateOutlet]=\"templateOverride\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-container>\n </div>\n }\n</div>\n","import { NgModule } from \"@angular/core\";\nimport { SearchstaxWrapper } from \"./components/searchstax-wrapper.component\";\nimport { SearchstaxInputWidget } from \"./components/searchstax-input/searchstax-input.component\";\nimport { CommonModule } from \"@angular/common\";\nimport { SearchstaxResultsWidget } from \"./components/searchstax-results/searchstax-results.component\";\nimport { SearchstaxSearchFeedbackWidget } from \"./components/searchstax-search-overview/searchstax-search-overview.component\";\nimport { SearchstaxSearchPaginationWidget } from \"./components/searchstax-search-pagination/searchstax-search-pagination.component\";\nimport { SearchstaxSearchAnswerWidget } from \"./components/searchstax-search-answer/searchstax-search-answer.component\";\nimport { SearchstaxSearchFacetsWidget } from \"./components/searchstax-search-facets/searchstax-search-facets.component\";\nimport { SearchstaxSearchSortingWidget } from \"./components/searchstax-search-sorting/searchstax-search-sorting.component\";\nimport { SearchstaxSearchRelatedSearchesWidget } from \"./components/searchstax-search-related/searchstax-search-related.component\";\nimport { SearchstaxSearchExternalPromotionsWidget } from \"./components/searchstax-search-external/searchstax-search-external.component\";\nimport { SearchstaxSearchLocationWidget } from \"./components/searchstax-search-location/searchstax-search-location.component\";\nimport { FormsModule } from \"@angular/forms\";\nimport { AnswerTemplateComponent } from \"./components/templates/searchstax-search-answer-template\";\nimport { InputTemplateComponent } from \"./components/templates/searchstax-search-input-template\";\nimport { OverviewTemplateComponent } from \"./components/templates/searchstax-search-overview-template\";\nimport { LocationTemplateComponent } from \"./components/templates/searchstax-search-location-template\";\nimport { PaginationTemplateComponent } from \"./components/templates/searchstax-search-pagination-template\";\nimport { PaginationInfiniteTemplateComponent } from \"./components/templates/searchstax-search-pagination-infinite-template\";\nimport { ResultsTemplateComponent } from \"./components/templates/searchstax-search-results-template\";\nimport { NoResultsTemplateComponent } from \"./components/templates/searchstax-search-no-results-template\";\nimport { ExternalPromotionsTemplateComponent } from \"./components/templates/searchstax-search-external-template\";\nimport { SortingTemplateComponent } from \"./components/templates/searchstax-search-sorting-template\";\nimport { RelatedTemplateComponent } from \"./components/templates/searchstax-search-related-template\";\nimport { FacetMobileTemplateComponent } from \"./components/templates/searchstax-search-facet-mobile-template\";\nimport { FacetDesktopTemplateComponent } from \"./components/templates/searchstax-search-facet-desktop-template\";\n\nconst libraryComponents = [\n SearchstaxWrapper,\n SearchstaxInputWidget,\n SearchstaxResultsWidget,\n SearchstaxSearchFeedbackWidget,\n SearchstaxSearchPaginationWidget,\n SearchstaxSearchFacetsWidget,\n SearchstaxSearchSortingWidget,\n SearchstaxSearchRelatedSearchesWidget,\n SearchstaxSearchExternalPromotionsWidget,\n SearchstaxSearchAnswerWidget,\n SearchstaxSearchLocationWidget,\n AnswerTemplateComponent,\n OverviewTemplateComponent,\n InputTemplateComponent,\n LocationTemplateComponent,\n PaginationTemplateComponent,\n PaginationInfiniteTemplateComponent,\n ResultsTemplateComponent,\n NoResultsTemplateComponent,\n ExternalPromotionsTemplateComponent,\n SortingTemplateComponent,\n RelatedTemplateComponent,\n FacetDesktopTemplateComponent,\n FacetMobileTemplateComponent,\n];\n\n@NgModule({\n declarations: [...libraryComponents],\n imports: [CommonModule, FormsModule],\n exports: [...libraryComponents],\n})\nexport class SearchstudioUxAngularModule {}\n","/*\n * Public API Surface of searchstudio-ux-angular\n */\n\nimport \"./lib/searchstudio-ux-js-augment\";\n\nexport * from './lib/components/searchstax-wrapper.component';\nexport * from './lib/components/searchstax-input/searchstax-input.component';\nexport * from './lib/components/searchstax-results/searchstax-results.component';\nexport * from './lib/components/searchstax-search-overview/searchstax-search-overview.component';\nexport * from './lib/components/searchstax-search-pagination/searchstax-search-pagination.component';\nexport * from './lib/components/searchstax-search-facets/searchstax-search-facets.component';\nexport * from './lib/components/searchstax-search-sorting/searchstax-search-sorting.component';\nexport * from './lib/components/searchstax-search-answer/searchstax-search-answer.component';\nexport * from './lib/components/searchstax-search-location/searchstax-search-location.component';\nexport * from './lib/components/searchstax-search-related/searchstax-search-related.component';\nexport * from './lib/components/searchstax-search-external/searchstax-search-external.component';\nexport * from './lib/services/store-service.service';\nexport * from './lib/searchstudio-ux-angular.module';\nexport * from './lib/components/templates/searchstax-search-answer-template';\nexport * from './lib/components/templates/searchstax-search-overview-template';\nexport * from './lib/components/templates/searchstax-search-input-template';\nexport * from './lib/components/templates/searchstax-search-location-template';\nexport * from './lib/components/templates/searchstax-search-pagination-template';\nexport * from './lib/components/templates/searchstax-search-pagination-infinite-template';\nexport * from './lib/components/templates/searchstax-search-results-template';\nexport * from './lib/components/templates/searchstax-search-no-results-template';\nexport * from './lib/components/templates/searchstax-search-external-template';\nexport * from './lib/components/templates/searchstax-search-sorting-template';\nexport * from './lib/components/templates/searchstax-search-related-template';\nexport * from './lib/components/templates/searchstax-search-facet-desktop-template';\nexport * from './lib/components/templates/searchstax-search-facet-mobile-template';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.StoreServiceService","i1","i2","i3.LocationTemplateComponent","i2.SearchstaxSearchLocationWidget","i3.InputTemplateComponent","i3.ResultsTemplateComponent","i4.NoResultsTemplateComponent","i3.OverviewTemplateComponent","i3.PaginationTemplateComponent","i4.PaginationInfiniteTemplateComponent","i3.FacetDesktopTemplateComponent","i4.FacetMobileTemplateComponent","i3.SortingTemplateComponent","i3.AnswerTemplateComponent","i3.RelatedTemplateComponent","i3.ExternalPromotionsTemplateComponent"],"mappings":"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"}