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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/CHANGELOG.md +9 -1
  2. package/README.md +40 -5
  3. package/package.json +5 -2
  4. package/esm2022/lib/components/searchstax-input/searchstax-input.component.mjs +0 -81
  5. package/esm2022/lib/components/searchstax-results/searchstax-results.component.mjs +0 -85
  6. package/esm2022/lib/components/searchstax-search-answer/searchstax-search-answer.component.mjs +0 -47
  7. package/esm2022/lib/components/searchstax-search-external/searchstax-search-external.component.mjs +0 -41
  8. package/esm2022/lib/components/searchstax-search-facets/searchstax-search-facets.component.mjs +0 -114
  9. package/esm2022/lib/components/searchstax-search-location/searchstax-search-location.component.mjs +0 -92
  10. package/esm2022/lib/components/searchstax-search-overview/searchstax-search-overview.component.mjs +0 -42
  11. package/esm2022/lib/components/searchstax-search-pagination/searchstax-search-pagination.component.mjs +0 -64
  12. package/esm2022/lib/components/searchstax-search-related/searchstax-search-related.component.mjs +0 -45
  13. package/esm2022/lib/components/searchstax-search-sorting/searchstax-search-sorting.component.mjs +0 -46
  14. package/esm2022/lib/components/searchstax-wrapper.component.mjs +0 -93
  15. package/esm2022/lib/components/templates/SearchstaxLocationWidgetTemplateConfig.mjs +0 -91
  16. package/esm2022/lib/components/templates/searchstax-search-answer-template.mjs +0 -119
  17. package/esm2022/lib/components/templates/searchstax-search-external-template.mjs +0 -107
  18. package/esm2022/lib/components/templates/searchstax-search-facet-desktop-template.mjs +0 -207
  19. package/esm2022/lib/components/templates/searchstax-search-facet-mobile-template.mjs +0 -343
  20. package/esm2022/lib/components/templates/searchstax-search-input-template.mjs +0 -126
  21. package/esm2022/lib/components/templates/searchstax-search-location-template.mjs +0 -152
  22. package/esm2022/lib/components/templates/searchstax-search-no-results-template.mjs +0 -85
  23. package/esm2022/lib/components/templates/searchstax-search-overview-template.mjs +0 -87
  24. package/esm2022/lib/components/templates/searchstax-search-pagination-infinite-template.mjs +0 -60
  25. package/esm2022/lib/components/templates/searchstax-search-pagination-template.mjs +0 -96
  26. package/esm2022/lib/components/templates/searchstax-search-related-template.mjs +0 -81
  27. package/esm2022/lib/components/templates/searchstax-search-results-template.mjs +0 -171
  28. package/esm2022/lib/components/templates/searchstax-search-sorting-template.mjs +0 -76
  29. package/esm2022/lib/searchstudio-ux-angular.module.mjs +0 -138
  30. package/esm2022/lib/services/store-service.service.mjs +0 -17
  31. package/esm2022/public-api.mjs +0 -30
  32. package/esm2022/searchstax-inc-searchstudio-ux-angular.mjs +0 -5
  33. package/fesm2022/searchstax-inc-searchstudio-ux-angular.mjs +0 -2594
  34. package/fesm2022/searchstax-inc-searchstudio-ux-angular.mjs.map +0 -1
  35. package/index.d.ts +0 -5
  36. package/lib/components/searchstax-input/searchstax-input.component.d.ts +0 -37
  37. package/lib/components/searchstax-results/searchstax-results.component.d.ts +0 -26
  38. package/lib/components/searchstax-search-answer/searchstax-search-answer.component.d.ts +0 -19
  39. package/lib/components/searchstax-search-external/searchstax-search-external.component.d.ts +0 -17
  40. package/lib/components/searchstax-search-facets/searchstax-search-facets.component.d.ts +0 -37
  41. package/lib/components/searchstax-search-location/searchstax-search-location.component.d.ts +0 -33
  42. package/lib/components/searchstax-search-overview/searchstax-search-overview.component.d.ts +0 -17
  43. package/lib/components/searchstax-search-pagination/searchstax-search-pagination.component.d.ts +0 -21
  44. package/lib/components/searchstax-search-related/searchstax-search-related.component.d.ts +0 -19
  45. package/lib/components/searchstax-search-sorting/searchstax-search-sorting.component.d.ts +0 -18
  46. package/lib/components/searchstax-wrapper.component.d.ts +0 -31
  47. package/lib/components/templates/SearchstaxLocationWidgetTemplateConfig.d.ts +0 -13
  48. package/lib/components/templates/searchstax-search-answer-template.d.ts +0 -7
  49. package/lib/components/templates/searchstax-search-external-template.d.ts +0 -7
  50. package/lib/components/templates/searchstax-search-facet-desktop-template.d.ts +0 -7
  51. package/lib/components/templates/searchstax-search-facet-mobile-template.d.ts +0 -7
  52. package/lib/components/templates/searchstax-search-input-template.d.ts +0 -7
  53. package/lib/components/templates/searchstax-search-location-template.d.ts +0 -7
  54. package/lib/components/templates/searchstax-search-no-results-template.d.ts +0 -7
  55. package/lib/components/templates/searchstax-search-overview-template.d.ts +0 -7
  56. package/lib/components/templates/searchstax-search-pagination-infinite-template.d.ts +0 -7
  57. package/lib/components/templates/searchstax-search-pagination-template.d.ts +0 -7
  58. package/lib/components/templates/searchstax-search-related-template.d.ts +0 -7
  59. package/lib/components/templates/searchstax-search-results-template.d.ts +0 -7
  60. package/lib/components/templates/searchstax-search-sorting-template.d.ts +0 -7
  61. package/lib/searchstudio-ux-angular.module.d.ts +0 -32
  62. package/lib/services/store-service.service.d.ts +0 -8
  63. package/public-api.d.ts +0 -26
package/CHANGELOG.md CHANGED
@@ -20,4 +20,12 @@ All notable changes to the "searchstudio-ux-angular" project will be documented
20
20
  - Readme updated to give more information on how widgets work
21
21
  ### Bug Fixes
22
22
  - NVDA facet groups now announce state
23
- - NVDA added ability to jump from facets to results section
23
+ - NVDA added ability to jump from facets to results section
24
+
25
+ ## [4.1.0]
26
+ ### Bug Fixes
27
+ - stopped making unnecessary calls on blank search page load
28
+ - accessibility: template modified to only read result title for accessibility
29
+ - accessibility: leave feedback button state change is now announced
30
+ - accessibility: focus persistance added for feedback rating
31
+ - added support for react 19
package/README.md CHANGED
@@ -160,12 +160,12 @@ The AppSearchstaxAnswer component for Angular provides an AI answer widget for y
160
160
  **Usage**
161
161
 
162
162
  ```
163
- <app-searchstax-answer [showShowMoreAfterWordCount]="100"></app-searchstax-answer>
163
+ <app-searchstax-answer [showMoreAfterWordCount]="100"></app-searchstax-answer>
164
164
  ```
165
165
 
166
166
  **Props**
167
167
 
168
- - showShowMoreAfterWordCount - number(default 100) determining after how many symbols UI will show “Read More” view.
168
+ - showMoreAfterWordCount - number(default 100) determining after how many symbols UI will show “Read More” view.
169
169
  - feedbackWidget – an optional object that configures thumbs-up and thumbs-down feedback functionality.
170
170
 
171
171
  Example of feedbackWidget config:
@@ -191,7 +191,7 @@ It receives the following props:
191
191
  **Example**
192
192
 
193
193
  ```
194
- <app-searchstax-answer [showShowMoreAfterWordCount]="100" [templateOverride]="answerTemplate" [feedbackwidget]="feedbackConfig">
194
+ <app-searchstax-answer [showMoreAfterWordCount]="100" [templateOverride]="answerTemplate" [feedbackwidget]="feedbackConfig">
195
195
  <ng-template
196
196
  #answerTemplate
197
197
  let-answerData="answerData"
@@ -263,12 +263,12 @@ The SearchstaxInputWidget component for Angular provides a search input with aut
263
263
  - suggestAfterMinChars - default 3. Number of characters needed for autosuggest to start triggering
264
264
  - beforeAutosuggest - callback function that gets called before firing autosuggest. autosuggestProps are being passed as a property and can be modified, if passed along further search will execute with modified properties, if null is returned then event gets canceled and search never fires.
265
265
  - afterAutosuggest - callback function that gets called after autosuggest has values but before rendering. It needs to return same type of data but it can be modified.
266
- - inputTemplate - template override. look at examples below
266
+ - templateOverride - template override. look at examples below
267
267
 
268
268
 
269
269
  **inputWidgetTemplate**
270
270
 
271
- The inputTemplate prop allows customizing the input UI.
271
+ The templateOverride prop allows customizing the input UI.
272
272
 
273
273
  It receives the following props:
274
274
 
@@ -453,6 +453,10 @@ const locationWidgetConfig = {
453
453
 
454
454
  - locationDecode - callback function to override location decoding
455
455
  - locationDecodeCoordinatesToAddress - callback function to override location decoding
456
+ - locationValuesOverride - location widget values
457
+ - locationSearchEnabled - boolean stating if locationSearch is locationSearchEnabled
458
+ - templateOverride - template override. look at examples below
459
+
456
460
 
457
461
  **Template Override**
458
462
 
@@ -571,6 +575,7 @@ const locationWidgetConfig = {
571
575
  [locationValuesOverride]="locationWidgetConfig.locationValuesOverride"
572
576
  [locationSearchEnabled]="locationWidgetConfig.locationSearchEnabled"
573
577
  [locationDecodeCoordinatesToAddress]="locationWidgetConfig.locationDecodeCoordinatesToAddress"
578
+ [templateOverride]="locationTemplate"
574
579
  >
575
580
  <ng-template
576
581
  #locationTemplate
@@ -652,9 +657,20 @@ The SearchstaxResultsWidget for Angular component displays the search results.
652
657
  ```
653
658
  <app-searchstax-results
654
659
  [afterLinkClick]="afterLinkClick"
660
+ [renderMethod]="'“pagination”'"
661
+ [resultsPerPage]="10"
655
662
  ></app-searchstax-results>
656
663
  ```
657
664
 
665
+ **Props**
666
+
667
+ - renderMethod – either “pagination” or “infiniteScroll”.
668
+ - resultsPerPage – number of results on a page.
669
+ - afterLinkClick – Callback function invoked when a result link is clicked. Allows modifying the result object.
670
+ - noResultTemplate - template override for no results view
671
+ - resultsTemplate - template override for result item
672
+
673
+
658
674
  **Result Template Override**
659
675
 
660
676
  The resultsTemplate prop allows customizing the result UI.
@@ -699,6 +715,7 @@ It receives following props:
699
715
  (click)="resultClicked(searchResult, $event, context)"
700
716
  (keyup.enter)="resultClicked(searchResult, $event, context)"
701
717
  (keyup.space)="resultClicked(searchResult, $event, context)"
718
+ [attr.aria-labelledby]="'title-' + searchResult.uniqueId"
702
719
  tabindex="0"
703
720
  class="searchstax-result-item-link searchstax-result-item-link-wrapping"
704
721
  >
@@ -724,6 +741,7 @@ It receives following props:
724
741
  <div class="searchstax-search-result-title-container">
725
742
  <span
726
743
  class="searchstax-search-result-title"
744
+ [id]="'title-' + searchResult.uniqueId"
727
745
  [innerHTML]="searchResult.title"
728
746
  ></span>
729
747
  </div>
@@ -817,6 +835,11 @@ The SearchstaxPaginationWidget for Angular displays pagination controls for sear
817
835
  <app-searchstax-search-pagination></app-searchstax-search-pagination>
818
836
  ```
819
837
 
838
+ **Props**
839
+
840
+ - infiniteScrollTemplateOverride - template override for infinite scroll view pagination
841
+ - templateOverride - template override for standard view pagination
842
+
820
843
  **Main Template Override**
821
844
 
822
845
  Main template for the pagination controls.
@@ -969,6 +992,8 @@ Facet lists are configured and ordered on the Site Search [Faceting Tab](https:/
969
992
  - specificFacets?: string[]; // optional array of facet names that if provided will only render those facets
970
993
  - itemsPerPageDesktop: number; // default expanded facets for desktop
971
994
  - itemsPerPageMobile: number; // default expanded facets for mobile
995
+ - templateOverrideMobile - template override for mobile view
996
+ - templateOverrideDesktop - template override for desktop view
972
997
 
973
998
 
974
999
  **Main Template Desktop Override**
@@ -1284,6 +1309,10 @@ The SearchstaxFeedbackWidget for Angular displays search feedback and stats.
1284
1309
  <app-searchstax-search-feedback></app-searchstax-search-feedback>
1285
1310
  ```
1286
1311
 
1312
+ **Props**
1313
+
1314
+ - templateOverride - template override for search feedback
1315
+
1287
1316
  **Main Template Override**
1288
1317
 
1289
1318
  Main template for the search feedback message.
@@ -1349,6 +1378,7 @@ The SearchstaxRelatedSearchesWidget displays related searches.
1349
1378
 
1350
1379
  - relatedSearchesURL: API URL for fetching related searches
1351
1380
  - relatedSearchesAPIKey?: API key for related searches API
1381
+ - templateOverride - template override for related search
1352
1382
 
1353
1383
  **Main Template Override**
1354
1384
 
@@ -1412,6 +1442,10 @@ The SearchstaxExternalPromotionsWidget displays external promotions fetched from
1412
1442
  <app-searchstax-external-promotions></app-searchstax-external-promotions>
1413
1443
  ```
1414
1444
 
1445
+ **Props**
1446
+
1447
+ - templateOverride - template override for external promotion
1448
+
1415
1449
  **Main Template Override**
1416
1450
 
1417
1451
  Main template for external promotions.
@@ -1492,6 +1526,7 @@ It receives following props:
1492
1526
  - sortingData – Sorting data object
1493
1527
  - orderChange – Handler for sorting change
1494
1528
  - selectedSorting – Current selected sorting
1529
+ - templateOverride - template override for sorting widget
1495
1530
 
1496
1531
  **Example**
1497
1532
 
package/package.json CHANGED
@@ -1,15 +1,18 @@
1
1
  {
2
2
  "name": "@searchstax-inc/searchstudio-ux-angular",
3
3
  "private": false,
4
- "version": "2.0.0",
4
+ "version": "4.1.0",
5
5
  "type": "module",
6
6
  "peerDependencies": {
7
7
  "@angular/common": "13 - 19",
8
8
  "@angular/core": "13 - 19"
9
9
  },
10
+ "files": [
11
+ "./CHANGELOG.md"
12
+ ],
10
13
  "dependencies": {
11
14
  "tslib": "^2.3.0",
12
- "@searchstax-inc/searchstudio-ux-js": "npm:@searchstax-inc/searchstudio-ux-js@^2.0.0"
15
+ "@searchstax-inc/searchstudio-ux-js": "npm:@searchstax-inc/searchstudio-ux-js@^4.1.0"
13
16
  },
14
17
  "module": "fesm2022/searchstax-inc-searchstudio-ux-angular.mjs",
15
18
  "typings": "index.d.ts",
@@ -1,81 +0,0 @@
1
- import { Component, Input } from "@angular/core";
2
- import { locationWidgetConfig } from "../templates/SearchstaxLocationWidgetTemplateConfig";
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "../../services/store-service.service";
5
- import * as i2 from "@angular/common";
6
- import * as i3 from "../templates/searchstax-search-input-template";
7
- export class SearchstaxInputWidget {
8
- constructor(storeServiceService) {
9
- this.storeServiceService = storeServiceService;
10
- this.searchInputId = "";
11
- this.hooks = {};
12
- this.suggestions = [];
13
- this.context = this;
14
- this.templateData = null;
15
- this.locationWidgetConfig = locationWidgetConfig;
16
- }
17
- ngOnInit() {
18
- if (this.storeServiceService.searchstax) {
19
- this.attachObservables();
20
- // const hooks: { [key: string]: (prop: any) => any } = {}
21
- if (this.afterAutosuggest) {
22
- this.hooks["afterAutosuggest"] = this.afterAutosuggest;
23
- }
24
- if (this.beforeAutosuggest) {
25
- this.hooks["beforeAutosuggest"] = this.beforeAutosuggest;
26
- }
27
- setTimeout(() => {
28
- this.storeServiceService.searchstax.addSearchInputWidget("searchstax-input-container", {
29
- suggestAfterMinChars: this.suggestAfterMinChars,
30
- hooks: this.hooks,
31
- templates: {
32
- mainTemplate: {
33
- template: ``,
34
- searchInputId: this.searchInputId ?? "searchstax-search-input",
35
- },
36
- },
37
- });
38
- this.storeServiceService.searchstax.dataLayer.setInputTemplateRendered(true);
39
- }, 100);
40
- }
41
- else {
42
- throw Error("Searchstax instance needs to be passed via props");
43
- }
44
- }
45
- onMouseLeave(context) {
46
- context.storeServiceService.searchstax.searchInputWidget?.resetAutosuggestSelection();
47
- context.storeServiceService.searchstax.searchInputWidget?.markActiveAutosuggestItem();
48
- }
49
- onMouseOver(suggestion, context) {
50
- context.storeServiceService.searchstax.searchInputWidget?.onSuggestionEnter(suggestion);
51
- }
52
- onMouseClick(e, context) {
53
- e.stopImmediatePropagation();
54
- context.storeServiceService.searchstax.searchInputWidget?.suggestionChosen();
55
- }
56
- attachObservables() {
57
- this.storeServiceService.searchstax.dataLayer.$autosuggestResults.subscribe((suggestions) => {
58
- this.suggestions = suggestions?.suggestions ?? [];
59
- });
60
- this.storeServiceService.searchstax.dataLayer.$inputWidgetTemplateData.subscribe((data) => {
61
- this.templateData = data;
62
- });
63
- }
64
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SearchstaxInputWidget, deps: [{ token: i1.StoreServiceService }], target: i0.ɵɵFactoryTarget.Component }); }
65
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SearchstaxInputWidget, selector: "app-searchstax-input", inputs: { afterAutosuggest: "afterAutosuggest", beforeAutosuggest: "beforeAutosuggest", searchInputId: "searchInputId", suggestAfterMinChars: "suggestAfterMinChars", templateOverride: "templateOverride" }, ngImport: i0, template: "<div id=\"searchstax-input-container\">\n <div\n class=\"searchstax-search-input-container searchstax-search-input-container-new\"\n [class]=\"{\n 'searchstax-alternative-render': !!templateData?.locationEnabled\n }\"\n >\n <ng-container *ngIf=\"!templateOverride\">\n <app-input-template #ref></app-input-template>\n <ng-template\n *ngTemplateOutlet=\"ref.inputTemplate; context: context\"\n ></ng-template>\n </ng-container>\n <ng-container *ngIf=\"templateOverride\">\n <ng-container\n *ngTemplateOutlet=\"templateOverride; context: context\"\n ></ng-container>\n </ng-container>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.InputTemplateComponent, selector: "app-input-template" }] }); }
66
- }
67
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SearchstaxInputWidget, decorators: [{
68
- type: Component,
69
- args: [{ selector: "app-searchstax-input", template: "<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 <ng-container *ngIf=\"!templateOverride\">\n <app-input-template #ref></app-input-template>\n <ng-template\n *ngTemplateOutlet=\"ref.inputTemplate; context: context\"\n ></ng-template>\n </ng-container>\n <ng-container *ngIf=\"templateOverride\">\n <ng-container\n *ngTemplateOutlet=\"templateOverride; context: context\"\n ></ng-container>\n </ng-container>\n </div>\n</div>\n" }]
70
- }], ctorParameters: () => [{ type: i1.StoreServiceService }], propDecorators: { afterAutosuggest: [{
71
- type: Input
72
- }], beforeAutosuggest: [{
73
- type: Input
74
- }], searchInputId: [{
75
- type: Input
76
- }], suggestAfterMinChars: [{
77
- type: Input
78
- }], templateOverride: [{
79
- type: Input
80
- }] } });
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoc3RheC1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zZWFyY2hzdGF4LWluYy9zZWFyY2hzdHVkaW8tdXgtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvc2VhcmNoc3RheC1pbnB1dC9zZWFyY2hzdGF4LWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NlYXJjaHN0YXgtaW5jL3NlYXJjaHN0dWRpby11eC1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9zZWFyY2hzdGF4LWlucHV0L3NlYXJjaHN0YXgtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXVCLE1BQU0sZUFBZSxDQUFDO0FBVXRFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDOzs7OztBQU8zRixNQUFNLE9BQU8scUJBQXFCO0lBaUJoQyxZQUFvQixtQkFBd0M7UUFBeEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQVZuRCxrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUk1QixVQUFLLEdBQTBDLEVBQUUsQ0FBQztRQUNsRCxnQkFBVyxHQUE0QixFQUFFLENBQUM7UUFDMUMsWUFBTyxHQUFHLElBQUksQ0FBQztRQUNmLGlCQUFZLEdBQTRDLElBQUksQ0FBQztRQUM3RCx5QkFBb0IsR0FBRyxvQkFBb0IsQ0FBQztJQUVtQixDQUFDO0lBRWhFLFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLEVBQUU7WUFDdkMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDekIsMERBQTBEO1lBQzFELElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO2dCQUN6QixJQUFJLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO2FBQ3hEO1lBQ0QsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7Z0JBQzFCLElBQUksQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUM7YUFDMUQ7WUFDRCxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsb0JBQW9CLENBQ3RELDRCQUE0QixFQUM1QjtvQkFDRSxvQkFBb0IsRUFBRSxJQUFJLENBQUMsb0JBQW9CO29CQUMvQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7b0JBQ2pCLFNBQVMsRUFBRTt3QkFDVCxZQUFZLEVBQUU7NEJBQ1osUUFBUSxFQUFFLEVBQUU7NEJBQ1osYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLElBQUkseUJBQXlCO3lCQUMvRDtxQkFDRjtpQkFDRixDQUNGLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsd0JBQXdCLENBQ3BFLElBQUksQ0FDTCxDQUFDO1lBQ0osQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ1Q7YUFBTTtZQUNMLE1BQU0sS0FBSyxDQUFDLGtEQUFrRCxDQUFDLENBQUM7U0FDakU7SUFDSCxDQUFDO0lBR0QsWUFBWSxDQUFDLE9BQWE7UUFDeEIsT0FBTyxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRSx5QkFBeUIsRUFBRSxDQUFDO1FBQ3RGLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLEVBQUUseUJBQXlCLEVBQUUsQ0FBQztJQUN4RixDQUFDO0lBRUQsV0FBVyxDQUFDLFVBQWlDLEVBQUUsT0FBYTtRQUMxRCxPQUFPLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLGlCQUFpQixFQUFFLGlCQUFpQixDQUN6RSxVQUFVLENBQ1gsQ0FBQztJQUNKLENBQUM7SUFFRCxZQUFZLENBQUMsQ0FBUSxFQUFFLE9BQWE7UUFDbEMsQ0FBQyxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDN0IsT0FBTyxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDO0lBQy9FLENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQ3pFLENBQUMsV0FBeUMsRUFBRSxFQUFFO1lBQzVDLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxFQUFFLFdBQVcsSUFBSSxFQUFFLENBQUM7UUFDcEQsQ0FBQyxDQUNGLENBQUM7UUFFRixJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyx3QkFBd0IsQ0FBQyxTQUFTLENBQzlFLENBQUMsSUFBNkMsRUFBRSxFQUFFO1lBQ2hELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQzNCLENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQzsrR0FqRlUscUJBQXFCO21HQUFyQixxQkFBcUIsMFFDakJsQywrcEJBb0JBOzs0RkRIYSxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0Usc0JBQXNCO3dGQUt2QixnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBR0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUdHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgVGVtcGxhdGVSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtcbiAgSVNlYXJjaHN0YXhMb2NhdGlvbixcbiAgSVNlYXJjaHN0YXhTRUFSQ0hURVJNLFxuICBJU2VhcmNoc3RheFNlYXJjaElucHV0UmVuZGVyRGF0YSxcbiAgSVNlYXJjaHN0YXhTdWdnZXN0UHJvcHMsXG4gIElTZWFyY2hzdGF4U3VnZ2VzdFJlc3BvbnNlLFxuICBJU2VhcmNoc3RheFN1Z2dlc3Rpb24sXG59IGZyb20gXCJAc2VhcmNoc3RheC1pbmMvc2VhcmNoc3R1ZGlvLXV4LWpzXCI7XG5pbXBvcnQgeyBTdG9yZVNlcnZpY2VTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3N0b3JlLXNlcnZpY2Uuc2VydmljZVwiO1xuaW1wb3J0IHsgbG9jYXRpb25XaWRnZXRDb25maWcgfSBmcm9tIFwiLi4vdGVtcGxhdGVzL1NlYXJjaHN0YXhMb2NhdGlvbldpZGdldFRlbXBsYXRlQ29uZmlnXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJhcHAtc2VhcmNoc3RheC1pbnB1dFwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL3NlYXJjaHN0YXgtaW5wdXQuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoc3RheElucHV0V2lkZ2V0IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgYWZ0ZXJBdXRvc3VnZ2VzdD86IChcbiAgICByZXN1bHQ6IElTZWFyY2hzdGF4U3VnZ2VzdFJlc3BvbnNlXG4gICkgPT4gSVNlYXJjaHN0YXhTdWdnZXN0UmVzcG9uc2U7XG4gIEBJbnB1dCgpIGJlZm9yZUF1dG9zdWdnZXN0PzogKFxuICAgIHByb3BzOiBJU2VhcmNoc3RheFN1Z2dlc3RQcm9wc1xuICApID0+IElTZWFyY2hzdGF4U3VnZ2VzdFByb3BzIHwgbnVsbDtcbiAgQElucHV0KCkgc2VhcmNoSW5wdXRJZCA9IFwiXCI7XG4gIEBJbnB1dCgpIHN1Z2dlc3RBZnRlck1pbkNoYXJzPzogbnVtYmVyO1xuICBASW5wdXQoKSB0ZW1wbGF0ZU92ZXJyaWRlPzogVGVtcGxhdGVSZWY8YW55PjtcblxuICBob29rczogeyBba2V5OiBzdHJpbmddOiAocHJvcDogYW55KSA9PiBhbnkgfSA9IHt9O1xuICBzdWdnZXN0aW9uczogSVNlYXJjaHN0YXhTdWdnZXN0aW9uW10gPSBbXTtcbiAgY29udGV4dCA9IHRoaXM7XG4gIHRlbXBsYXRlRGF0YTogbnVsbCB8IElTZWFyY2hzdGF4U2VhcmNoSW5wdXRSZW5kZXJEYXRhID0gbnVsbDtcbiAgbG9jYXRpb25XaWRnZXRDb25maWcgPSBsb2NhdGlvbldpZGdldENvbmZpZztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN0b3JlU2VydmljZVNlcnZpY2U6IFN0b3JlU2VydmljZVNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RvcmVTZXJ2aWNlU2VydmljZS5zZWFyY2hzdGF4KSB7XG4gICAgICB0aGlzLmF0dGFjaE9ic2VydmFibGVzKCk7XG4gICAgICAvLyBjb25zdCBob29rczogeyBba2V5OiBzdHJpbmddOiAocHJvcDogYW55KSA9PiBhbnkgfSA9IHt9XG4gICAgICBpZiAodGhpcy5hZnRlckF1dG9zdWdnZXN0KSB7XG4gICAgICAgIHRoaXMuaG9va3NbXCJhZnRlckF1dG9zdWdnZXN0XCJdID0gdGhpcy5hZnRlckF1dG9zdWdnZXN0O1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuYmVmb3JlQXV0b3N1Z2dlc3QpIHtcbiAgICAgICAgdGhpcy5ob29rc1tcImJlZm9yZUF1dG9zdWdnZXN0XCJdID0gdGhpcy5iZWZvcmVBdXRvc3VnZ2VzdDtcbiAgICAgIH1cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnN0b3JlU2VydmljZVNlcnZpY2Uuc2VhcmNoc3RheC5hZGRTZWFyY2hJbnB1dFdpZGdldChcbiAgICAgICAgICBcInNlYXJjaHN0YXgtaW5wdXQtY29udGFpbmVyXCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgc3VnZ2VzdEFmdGVyTWluQ2hhcnM6IHRoaXMuc3VnZ2VzdEFmdGVyTWluQ2hhcnMsXG4gICAgICAgICAgICBob29rczogdGhpcy5ob29rcyxcbiAgICAgICAgICAgIHRlbXBsYXRlczoge1xuICAgICAgICAgICAgICBtYWluVGVtcGxhdGU6IHtcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZTogYGAsXG4gICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRJZDogdGhpcy5zZWFyY2hJbnB1dElkID8/IFwic2VhcmNoc3RheC1zZWFyY2gtaW5wdXRcIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnN0b3JlU2VydmljZVNlcnZpY2Uuc2VhcmNoc3RheC5kYXRhTGF5ZXIuc2V0SW5wdXRUZW1wbGF0ZVJlbmRlcmVkKFxuICAgICAgICAgIHRydWVcbiAgICAgICAgKTtcbiAgICAgIH0sIDEwMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IEVycm9yKFwiU2VhcmNoc3RheCBpbnN0YW5jZSBuZWVkcyB0byBiZSBwYXNzZWQgdmlhIHByb3BzXCIpO1xuICAgIH1cbiAgfVxuXG5cbiAgb25Nb3VzZUxlYXZlKGNvbnRleHQ6IHRoaXMpIHtcbiAgICBjb250ZXh0LnN0b3JlU2VydmljZVNlcnZpY2Uuc2VhcmNoc3RheC5zZWFyY2hJbnB1dFdpZGdldD8ucmVzZXRBdXRvc3VnZ2VzdFNlbGVjdGlvbigpO1xuICAgIGNvbnRleHQuc3RvcmVTZXJ2aWNlU2VydmljZS5zZWFyY2hzdGF4LnNlYXJjaElucHV0V2lkZ2V0Py5tYXJrQWN0aXZlQXV0b3N1Z2dlc3RJdGVtKCk7XG4gIH1cblxuICBvbk1vdXNlT3ZlcihzdWdnZXN0aW9uOiBJU2VhcmNoc3RheFN1Z2dlc3Rpb24sIGNvbnRleHQ6IHRoaXMpIHtcbiAgICBjb250ZXh0LnN0b3JlU2VydmljZVNlcnZpY2Uuc2VhcmNoc3RheC5zZWFyY2hJbnB1dFdpZGdldD8ub25TdWdnZXN0aW9uRW50ZXIoXG4gICAgICBzdWdnZXN0aW9uXG4gICAgKTtcbiAgfVxuXG4gIG9uTW91c2VDbGljayhlOiBFdmVudCwgY29udGV4dDogdGhpcykge1xuICAgIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgY29udGV4dC5zdG9yZVNlcnZpY2VTZXJ2aWNlLnNlYXJjaHN0YXguc2VhcmNoSW5wdXRXaWRnZXQ/LnN1Z2dlc3Rpb25DaG9zZW4oKTtcbiAgfVxuXG4gIGF0dGFjaE9ic2VydmFibGVzKCkge1xuICAgIHRoaXMuc3RvcmVTZXJ2aWNlU2VydmljZS5zZWFyY2hzdGF4LmRhdGFMYXllci4kYXV0b3N1Z2dlc3RSZXN1bHRzLnN1YnNjcmliZShcbiAgICAgIChzdWdnZXN0aW9uczogbnVsbCB8IElTZWFyY2hzdGF4U0VBUkNIVEVSTSkgPT4ge1xuICAgICAgICB0aGlzLnN1Z2dlc3Rpb25zID0gc3VnZ2VzdGlvbnM/LnN1Z2dlc3Rpb25zID8/IFtdO1xuICAgICAgfVxuICAgICk7XG5cbiAgICB0aGlzLnN0b3JlU2VydmljZVNlcnZpY2Uuc2VhcmNoc3RheC5kYXRhTGF5ZXIuJGlucHV0V2lkZ2V0VGVtcGxhdGVEYXRhLnN1YnNjcmliZShcbiAgICAgIChkYXRhOiBudWxsIHwgSVNlYXJjaHN0YXhTZWFyY2hJbnB1dFJlbmRlckRhdGEpID0+IHtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZURhdGEgPSBkYXRhO1xuICAgICAgfVxuICAgICk7XG4gIH1cbn1cbiIsIjxkaXYgaWQ9XCJzZWFyY2hzdGF4LWlucHV0LWNvbnRhaW5lclwiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJzZWFyY2hzdGF4LXNlYXJjaC1pbnB1dC1jb250YWluZXIgc2VhcmNoc3RheC1zZWFyY2gtaW5wdXQtY29udGFpbmVyLW5ld1wiXG4gICAgW2NsYXNzXT1cIntcbiAgICAgICdzZWFyY2hzdGF4LWFsdGVybmF0aXZlLXJlbmRlcic6ICEhdGVtcGxhdGVEYXRhPy5sb2NhdGlvbkVuYWJsZWRcbiAgICB9XCJcbiAgPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdGVtcGxhdGVPdmVycmlkZVwiPlxuICAgICAgPGFwcC1pbnB1dC10ZW1wbGF0ZSAjcmVmPjwvYXBwLWlucHV0LXRlbXBsYXRlPlxuICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwicmVmLmlucHV0VGVtcGxhdGU7IGNvbnRleHQ6IGNvbnRleHRcIlxuICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRlbXBsYXRlT3ZlcnJpZGVcIj5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZU92ZXJyaWRlOyBjb250ZXh0OiBjb250ZXh0XCJcbiAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -1,85 +0,0 @@
1
- import { Component, Input } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "../../services/store-service.service";
4
- import * as i2 from "@angular/common";
5
- import * as i3 from "../templates/searchstax-search-results-template";
6
- import * as i4 from "../templates/searchstax-search-no-results-template";
7
- export class SearchstaxResultsWidget {
8
- get hooks() {
9
- const hooks = {};
10
- if (this.afterLinkClick) {
11
- hooks['afterLinkClick'] = this.afterLinkClick;
12
- }
13
- return hooks;
14
- }
15
- constructor(storeServiceService) {
16
- this.storeServiceService = storeServiceService;
17
- this.searchResults = null;
18
- this.metadata = null;
19
- this.searchTerm = '';
20
- this.context = this;
21
- }
22
- ngOnInit() {
23
- if (this.storeServiceService.searchstax) {
24
- this.attachObservables();
25
- setTimeout(() => {
26
- this.storeServiceService.searchstax.addSearchResultsWidget('searchstax-results-container', {
27
- templates: {},
28
- hooks: this.hooks,
29
- renderMethod: this.renderMethod ?? "pagination",
30
- });
31
- }, 0);
32
- }
33
- else {
34
- throw Error('Searchstax instance needs to be passed via props');
35
- }
36
- }
37
- executeSearch(term, event, context) {
38
- event.preventDefault();
39
- context.storeServiceService.searchstax.executeSearch(term);
40
- }
41
- attachObservables() {
42
- this.storeServiceService.searchstax.dataLayer.$searchResults.subscribe((results) => {
43
- const current = this.searchResults ? [...this.searchResults] : [];
44
- const newResults = results ?? [];
45
- const resultsCombined = this.renderMethod === "infiniteScroll"
46
- ? [...current, ...newResults]
47
- : results;
48
- if (this.storeServiceService.searchstax.dataLayer.$searchObject.value?.page === 1) {
49
- this.searchResults = newResults;
50
- }
51
- else {
52
- this.searchResults = resultsCombined;
53
- }
54
- });
55
- this.storeServiceService.searchstax.dataLayer.$searchTermChange.subscribe((result) => {
56
- this.searchTerm = result;
57
- });
58
- this.storeServiceService.searchstax.dataLayer.$searchResultsMetadata.subscribe((value) => {
59
- this.metadata = value;
60
- });
61
- }
62
- resultClicked(result, event, context) {
63
- event.preventDefault();
64
- event.stopPropagation();
65
- context.storeServiceService.searchstax.executeLinkClick(result.uniqueId);
66
- }
67
- isImage(field) {
68
- return field.isImage && typeof field.value === 'string';
69
- }
70
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SearchstaxResultsWidget, deps: [{ token: i1.StoreServiceService }], target: i0.ɵɵFactoryTarget.Component }); }
71
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SearchstaxResultsWidget, selector: "app-searchstax-results", inputs: { afterLinkClick: "afterLinkClick", noResultsTemplate: "noResultsTemplate", resultsTemplate: "resultsTemplate", renderMethod: "renderMethod" }, ngImport: i0, template: "<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 <div\n *ngIf=\"\n searchResults?.length === 0 &&\n searchTerm !== '' &&\n searchTerm !== '*' &&\n storeServiceService.searchstax.dataLayer.parsedData\n .firstSearchHappened &&\n !noResultsTemplate\n \"\n >\n <app-no-results-template #ref></app-no-results-template>\n <ng-template\n *ngTemplateOutlet=\"ref.noResultsTemplate; context: context\"\n ></ng-template>\n </div>\n <div\n *ngIf=\"\n searchResults?.length === 0 &&\n searchTerm !== '' &&\n searchTerm !== '*' &&\n storeServiceService.searchstax.dataLayer.parsedData\n .firstSearchHappened &&\n noResultsTemplate\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"noResultsTemplate; context: context\"\n ></ng-container>\n </div>\n\n <ng-container\n *ngIf=\"searchResults && searchResults.length && !resultsTemplate\"\n >\n <app-results-template #ref></app-results-template>\n <ng-template\n *ngTemplateOutlet=\"ref.resultsTemplate; context: context\"\n ></ng-template>\n </ng-container>\n\n <div *ngIf=\"searchResults && searchResults.length && resultsTemplate\">\n <ng-container\n *ngTemplateOutlet=\"resultsTemplate; context: context\"\n ></ng-container>\n </div>\n </div>\n </div>\n </section>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.ResultsTemplateComponent, selector: "app-results-template" }, { kind: "component", type: i4.NoResultsTemplateComponent, selector: "app-no-results-template" }] }); }
72
- }
73
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SearchstaxResultsWidget, decorators: [{
74
- type: Component,
75
- args: [{ selector: 'app-searchstax-results', template: "<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 <div\n *ngIf=\"\n searchResults?.length === 0 &&\n searchTerm !== '' &&\n searchTerm !== '*' &&\n storeServiceService.searchstax.dataLayer.parsedData\n .firstSearchHappened &&\n !noResultsTemplate\n \"\n >\n <app-no-results-template #ref></app-no-results-template>\n <ng-template\n *ngTemplateOutlet=\"ref.noResultsTemplate; context: context\"\n ></ng-template>\n </div>\n <div\n *ngIf=\"\n searchResults?.length === 0 &&\n searchTerm !== '' &&\n searchTerm !== '*' &&\n storeServiceService.searchstax.dataLayer.parsedData\n .firstSearchHappened &&\n noResultsTemplate\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"noResultsTemplate; context: context\"\n ></ng-container>\n </div>\n\n <ng-container\n *ngIf=\"searchResults && searchResults.length && !resultsTemplate\"\n >\n <app-results-template #ref></app-results-template>\n <ng-template\n *ngTemplateOutlet=\"ref.resultsTemplate; context: context\"\n ></ng-template>\n </ng-container>\n\n <div *ngIf=\"searchResults && searchResults.length && resultsTemplate\">\n <ng-container\n *ngTemplateOutlet=\"resultsTemplate; context: context\"\n ></ng-container>\n </div>\n </div>\n </div>\n </section>\n</div>\n" }]
76
- }], ctorParameters: () => [{ type: i1.StoreServiceService }], propDecorators: { afterLinkClick: [{
77
- type: Input
78
- }], noResultsTemplate: [{
79
- type: Input
80
- }], resultsTemplate: [{
81
- type: Input
82
- }], renderMethod: [{
83
- type: Input
84
- }] } });
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoc3RheC1yZXN1bHRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NlYXJjaHN0YXgtaW5jL3NlYXJjaHN0dWRpby11eC1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9zZWFyY2hzdGF4LXJlc3VsdHMvc2VhcmNoc3RheC1yZXN1bHRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NlYXJjaHN0YXgtaW5jL3NlYXJjaHN0dWRpby11eC1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9zZWFyY2hzdGF4LXJlc3VsdHMvc2VhcmNoc3RheC1yZXN1bHRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUF1QixNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBWXRFLE1BQU0sT0FBTyx1QkFBdUI7SUFjbEMsSUFBSSxLQUFLO1FBQ1AsTUFBTSxLQUFLLEdBQTBDLEVBQUUsQ0FBQztRQUN4RCxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDdkIsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztTQUMvQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELFlBQW1CLG1CQUF3QztRQUF4Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBYjNELGtCQUFhLEdBQXFDLElBQUksQ0FBQztRQUN2RCxhQUFRLEdBQXFDLElBQUksQ0FBQztRQUNsRCxlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLFlBQU8sR0FBRyxJQUFJLENBQUM7SUFVK0MsQ0FBQztJQUUvRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBRXpCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsQ0FDeEQsOEJBQThCLEVBQzlCO29CQUNFLFNBQVMsRUFBRSxFQUFFO29CQUNiLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztvQkFDakIsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZLElBQUksWUFBWTtpQkFDaEQsQ0FDRixDQUFDO1lBQ0osQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ1A7YUFBTTtZQUNMLE1BQU0sS0FBSyxDQUFDLGtEQUFrRCxDQUFDLENBQUM7U0FDakU7SUFDSCxDQUFDO0lBRUQsYUFBYSxDQUFDLElBQVksRUFBRSxLQUFZLEVBQUUsT0FBYTtRQUNyRCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsT0FBTyxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQ3BFLENBQUMsT0FBeUMsRUFBRSxFQUFFO1lBRTVDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNsRSxNQUFNLFVBQVUsR0FBRyxPQUFPLElBQUksRUFBRSxDQUFDO1lBQ2pDLE1BQU0sZUFBZSxHQUNuQixJQUFJLENBQUMsWUFBWSxLQUFLLGdCQUFnQjtnQkFDcEMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxVQUFVLENBQUM7Z0JBQzdCLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFDZCxJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxLQUFLLENBQUMsRUFBRTtnQkFDakYsSUFBSSxDQUFDLGFBQWEsR0FBRyxVQUFVLENBQUM7YUFDakM7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLGFBQWEsR0FBRyxlQUFlLENBQUM7YUFDdEM7UUFDSCxDQUFDLENBQ0YsQ0FBQztRQUNGLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FDdkUsQ0FBQyxNQUFjLEVBQUUsRUFBRTtZQUNqQixJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztRQUMzQixDQUFDLENBQ0YsQ0FBQztRQUVGLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLHNCQUFzQixDQUFDLFNBQVMsQ0FDNUUsQ0FBQyxLQUFnQyxFQUFFLEVBQUU7WUFDbkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDeEIsQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQStCLEVBQUUsS0FBWSxFQUFFLE9BQWE7UUFDeEUsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixPQUFPLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQVU7UUFDaEIsT0FBTyxLQUFLLENBQUMsT0FBTyxJQUFJLE9BQU8sS0FBSyxDQUFDLEtBQUssS0FBSyxRQUFRLENBQUE7SUFDekQsQ0FBQzsrR0F0RlUsdUJBQXVCO21HQUF2Qix1QkFBdUIsc05DWnBDLGt6REF1REE7OzRGRDNDYSx1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0Usd0JBQXdCO3dGQUt6QixjQUFjO3NCQUF0QixLQUFLO2dCQUlHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yZVNlcnZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3RvcmUtc2VydmljZS5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIElTZWFyY2hzdGF4UGFyc2VkUmVzdWx0LFxuICBJU2VhcmNoc3RheFNlYXJjaE1ldGFkYXRhLFxufSBmcm9tICdAc2VhcmNoc3RheC1pbmMvc2VhcmNoc3R1ZGlvLXV4LWpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXNlYXJjaHN0YXgtcmVzdWx0cycsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWFyY2hzdGF4LXJlc3VsdHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZXM6IFtdLFxufSlcbmV4cG9ydCBjbGFzcyBTZWFyY2hzdGF4UmVzdWx0c1dpZGdldCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGFmdGVyTGlua0NsaWNrPzogKFxuICAgIHJlc3VsdHM6IElTZWFyY2hzdGF4UGFyc2VkUmVzdWx0XG4gICkgPT4gSVNlYXJjaHN0YXhQYXJzZWRSZXN1bHQ7XG5cbiAgQElucHV0KCkgbm9SZXN1bHRzVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBASW5wdXQoKSByZXN1bHRzVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBASW5wdXQoKSByZW5kZXJNZXRob2Q/OiBcImluZmluaXRlU2Nyb2xsXCIgfCBcInBhZ2luYXRpb25cIjtcblxuICBzZWFyY2hSZXN1bHRzOiBJU2VhcmNoc3RheFBhcnNlZFJlc3VsdFtdIHwgbnVsbCA9IG51bGw7XG4gIG1ldGFkYXRhOiBJU2VhcmNoc3RheFNlYXJjaE1ldGFkYXRhIHwgbnVsbCA9IG51bGw7XG4gIHNlYXJjaFRlcm0gPSAnJztcbiAgY29udGV4dCA9IHRoaXM7XG5cbiAgZ2V0IGhvb2tzKCk6IHsgW2tleTogc3RyaW5nXTogKHByb3A6IGFueSkgPT4gYW55IH0ge1xuICAgIGNvbnN0IGhvb2tzOiB7IFtrZXk6IHN0cmluZ106IChwcm9wOiBhbnkpID0+IGFueSB9ID0ge307XG4gICAgaWYgKHRoaXMuYWZ0ZXJMaW5rQ2xpY2spIHtcbiAgICAgIGhvb2tzWydhZnRlckxpbmtDbGljayddID0gdGhpcy5hZnRlckxpbmtDbGljaztcbiAgICB9XG4gICAgcmV0dXJuIGhvb2tzO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHVibGljIHN0b3JlU2VydmljZVNlcnZpY2U6IFN0b3JlU2VydmljZVNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RvcmVTZXJ2aWNlU2VydmljZS5zZWFyY2hzdGF4KSB7XG4gICAgICB0aGlzLmF0dGFjaE9ic2VydmFibGVzKCk7XG5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnN0b3JlU2VydmljZVNlcnZpY2Uuc2VhcmNoc3RheC5hZGRTZWFyY2hSZXN1bHRzV2lkZ2V0KFxuICAgICAgICAgICdzZWFyY2hzdGF4LXJlc3VsdHMtY29udGFpbmVyJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0ZW1wbGF0ZXM6IHt9LFxuICAgICAgICAgICAgaG9va3M6IHRoaXMuaG9va3MsXG4gICAgICAgICAgICByZW5kZXJNZXRob2Q6IHRoaXMucmVuZGVyTWV0aG9kID8/IFwicGFnaW5hdGlvblwiLFxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH0sIDApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBFcnJvcignU2VhcmNoc3RheCBpbnN0YW5jZSBuZWVkcyB0byBiZSBwYXNzZWQgdmlhIHByb3BzJyk7XG4gICAgfVxuICB9XG5cbiAgZXhlY3V0ZVNlYXJjaCh0ZXJtOiBzdHJpbmcsIGV2ZW50OiBFdmVudCwgY29udGV4dDogdGhpcyk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgY29udGV4dC5zdG9yZVNlcnZpY2VTZXJ2aWNlLnNlYXJjaHN0YXguZXhlY3V0ZVNlYXJjaCh0ZXJtKTtcbiAgfVxuXG4gIGF0dGFjaE9ic2VydmFibGVzKCkge1xuICAgIHRoaXMuc3RvcmVTZXJ2aWNlU2VydmljZS5zZWFyY2hzdGF4LmRhdGFMYXllci4kc2VhcmNoUmVzdWx0cy5zdWJzY3JpYmUoXG4gICAgICAocmVzdWx0czogSVNlYXJjaHN0YXhQYXJzZWRSZXN1bHRbXSB8IG51bGwpID0+IHtcblxuICAgICAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5zZWFyY2hSZXN1bHRzID8gWy4uLnRoaXMuc2VhcmNoUmVzdWx0c10gOiBbXTtcbiAgICAgICAgY29uc3QgbmV3UmVzdWx0cyA9IHJlc3VsdHMgPz8gW107XG4gICAgICAgIGNvbnN0IHJlc3VsdHNDb21iaW5lZCA9XG4gICAgICAgICAgdGhpcy5yZW5kZXJNZXRob2QgPT09IFwiaW5maW5pdGVTY3JvbGxcIlxuICAgICAgICAgICAgPyBbLi4uY3VycmVudCwgLi4ubmV3UmVzdWx0c11cbiAgICAgICAgICAgIDogcmVzdWx0cztcbiAgICAgICAgaWYgKHRoaXMuc3RvcmVTZXJ2aWNlU2VydmljZS5zZWFyY2hzdGF4LmRhdGFMYXllci4kc2VhcmNoT2JqZWN0LnZhbHVlPy5wYWdlID09PSAxKSB7XG4gICAgICAgICAgdGhpcy5zZWFyY2hSZXN1bHRzID0gbmV3UmVzdWx0cztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNlYXJjaFJlc3VsdHMgPSByZXN1bHRzQ29tYmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuICAgIHRoaXMuc3RvcmVTZXJ2aWNlU2VydmljZS5zZWFyY2hzdGF4LmRhdGFMYXllci4kc2VhcmNoVGVybUNoYW5nZS5zdWJzY3JpYmUoXG4gICAgICAocmVzdWx0OiBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy5zZWFyY2hUZXJtID0gcmVzdWx0O1xuICAgICAgfVxuICAgICk7XG5cbiAgICB0aGlzLnN0b3JlU2VydmljZVNlcnZpY2Uuc2VhcmNoc3RheC5kYXRhTGF5ZXIuJHNlYXJjaFJlc3VsdHNNZXRhZGF0YS5zdWJzY3JpYmUoXG4gICAgICAodmFsdWU6IElTZWFyY2hzdGF4U2VhcmNoTWV0YWRhdGEpID0+IHtcbiAgICAgICAgdGhpcy5tZXRhZGF0YSA9IHZhbHVlO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICByZXN1bHRDbGlja2VkKHJlc3VsdDogSVNlYXJjaHN0YXhQYXJzZWRSZXN1bHQsIGV2ZW50OiBFdmVudCwgY29udGV4dDogdGhpcykge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgY29udGV4dC5zdG9yZVNlcnZpY2VTZXJ2aWNlLnNlYXJjaHN0YXguZXhlY3V0ZUxpbmtDbGljayhyZXN1bHQudW5pcXVlSWQpO1xuICB9XG5cbiAgaXNJbWFnZShmaWVsZDogYW55KXtcbiAgICByZXR1cm4gZmllbGQuaXNJbWFnZSAmJiB0eXBlb2YgZmllbGQudmFsdWUgPT09ICdzdHJpbmcnXG4gIH1cbn1cbiIsIjxkaXYgaWQ9XCJzZWFyY2hzdGF4LXJlc3VsdHMtY29udGFpbmVyXCI+XG4gIDxzZWN0aW9uIGFyaWEtbGFiZWw9XCJzZWFyY2ggcmVzdWx0cyBjb250YWluZXJcIiB0YWJpbmRleD1cIjBcIj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInNlYXJjaHN0YXgtc2VhcmNoLXJlc3VsdHMtY29udGFpbmVyXCJcbiAgICAgIGlkPVwic2VhcmNoc3RheC1zZWFyY2gtcmVzdWx0cy1jb250YWluZXJcIlxuICAgID5cbiAgICAgIDxkaXYgaWQ9XCJzZWFyY2hzdGF4LXJlc3VsdC1jb250YWluZXJcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICBzZWFyY2hSZXN1bHRzPy5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgICAgIHNlYXJjaFRlcm0gIT09ICcnICYmXG4gICAgICAgICAgICBzZWFyY2hUZXJtICE9PSAnKicgJiZcbiAgICAgICAgICAgIHN0b3JlU2VydmljZVNlcnZpY2Uuc2VhcmNoc3RheC5kYXRhTGF5ZXIucGFyc2VkRGF0YVxuICAgICAgICAgICAgICAuZmlyc3RTZWFyY2hIYXBwZW5lZCAmJlxuICAgICAgICAgICAgIW5vUmVzdWx0c1RlbXBsYXRlXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxhcHAtbm8tcmVzdWx0cy10ZW1wbGF0ZSAjcmVmPjwvYXBwLW5vLXJlc3VsdHMtdGVtcGxhdGU+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInJlZi5ub1Jlc3VsdHNUZW1wbGF0ZTsgY29udGV4dDogY29udGV4dFwiXG4gICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgIHNlYXJjaFJlc3VsdHM/Lmxlbmd0aCA9PT0gMCAmJlxuICAgICAgICAgICAgc2VhcmNoVGVybSAhPT0gJycgJiZcbiAgICAgICAgICAgIHNlYXJjaFRlcm0gIT09ICcqJyAmJlxuICAgICAgICAgICAgc3RvcmVTZXJ2aWNlU2VydmljZS5zZWFyY2hzdGF4LmRhdGFMYXllci5wYXJzZWREYXRhXG4gICAgICAgICAgICAgIC5maXJzdFNlYXJjaEhhcHBlbmVkICYmXG4gICAgICAgICAgICBub1Jlc3VsdHNUZW1wbGF0ZVxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIm5vUmVzdWx0c1RlbXBsYXRlOyBjb250ZXh0OiBjb250ZXh0XCJcbiAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdJZj1cInNlYXJjaFJlc3VsdHMgJiYgc2VhcmNoUmVzdWx0cy5sZW5ndGggJiYgIXJlc3VsdHNUZW1wbGF0ZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8YXBwLXJlc3VsdHMtdGVtcGxhdGUgI3JlZj48L2FwcC1yZXN1bHRzLXRlbXBsYXRlPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJyZWYucmVzdWx0c1RlbXBsYXRlOyBjb250ZXh0OiBjb250ZXh0XCJcbiAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPGRpdiAqbmdJZj1cInNlYXJjaFJlc3VsdHMgJiYgc2VhcmNoUmVzdWx0cy5sZW5ndGggJiYgcmVzdWx0c1RlbXBsYXRlXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJyZXN1bHRzVGVtcGxhdGU7IGNvbnRleHQ6IGNvbnRleHRcIlxuICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9zZWN0aW9uPlxuPC9kaXY+XG4iXX0=
@@ -1,47 +0,0 @@
1
- import { Component, Input } from "@angular/core";
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "../../services/store-service.service";
4
- import * as i2 from "@angular/common";
5
- import * as i3 from "../templates/searchstax-search-answer-template";
6
- export class SearchstaxSearchAnswerWidget {
7
- constructor(storeServiceService) {
8
- this.storeServiceService = storeServiceService;
9
- this.answerData = null;
10
- this.rand = Math.random();
11
- this.context = this;
12
- }
13
- ngOnInit() {
14
- if (this.storeServiceService.searchstax) {
15
- this.attachObservables();
16
- setTimeout(() => {
17
- this.storeServiceService.searchstax.addAnswerWidget('searchstax-answer-container' + this.rand, { showShowMoreAfterWordCount: this.showShowMoreAfterWordCount, feedbackwidget: this.feedbackwidget });
18
- }, 0);
19
- }
20
- else {
21
- throw Error("Searchstax instance needs to be passed via props");
22
- }
23
- }
24
- showMore(event, context) {
25
- if (context.storeServiceService.searchstax) {
26
- context.storeServiceService.searchstax.answerWidget?.showMore(event);
27
- }
28
- }
29
- attachObservables() {
30
- this.storeServiceService.searchstax.dataLayer.$answerData.subscribe((answerData) => {
31
- this.answerData = answerData;
32
- });
33
- }
34
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SearchstaxSearchAnswerWidget, deps: [{ token: i1.StoreServiceService }], target: i0.ɵɵFactoryTarget.Component }); }
35
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SearchstaxSearchAnswerWidget, selector: "app-searchstax-answer", inputs: { templateOverride: "templateOverride", feedbackwidget: "feedbackwidget", showShowMoreAfterWordCount: "showShowMoreAfterWordCount" }, ngImport: i0, template: "<div [id]=\"'searchstax-answer-container' + rand\">\n <div\n *ngIf=\"\n answerData &&\n answerData?.searchExecuted &&\n answerData.shouldShowAnswer &&\n !templateOverride\n \"\n >\n <app-answer-template #ref></app-answer-template>\n <ng-template\n [ngTemplateOutlet]=\"ref.answerTemplate\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-template>\n </div>\n <div\n *ngIf=\"\n answerData &&\n answerData?.searchExecuted &&\n answerData.shouldShowAnswer &&\n templateOverride\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"templateOverride; context: context\"\n ></ng-container>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.AnswerTemplateComponent, selector: "app-answer-template" }] }); }
36
- }
37
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SearchstaxSearchAnswerWidget, decorators: [{
38
- type: Component,
39
- args: [{ selector: "app-searchstax-answer", template: "<div [id]=\"'searchstax-answer-container' + rand\">\n <div\n *ngIf=\"\n answerData &&\n answerData?.searchExecuted &&\n answerData.shouldShowAnswer &&\n !templateOverride\n \"\n >\n <app-answer-template #ref></app-answer-template>\n <ng-template\n [ngTemplateOutlet]=\"ref.answerTemplate\"\n [ngTemplateOutletContext]=\"context\"\n ></ng-template>\n </div>\n <div\n *ngIf=\"\n answerData &&\n answerData?.searchExecuted &&\n answerData.shouldShowAnswer &&\n templateOverride\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"templateOverride; context: context\"\n ></ng-container>\n </div>\n</div>\n" }]
40
- }], ctorParameters: () => [{ type: i1.StoreServiceService }], propDecorators: { templateOverride: [{
41
- type: Input
42
- }], feedbackwidget: [{
43
- type: Input
44
- }], showShowMoreAfterWordCount: [{
45
- type: Input
46
- }] } });
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoc3RheC1zZWFyY2gtYW5zd2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NlYXJjaHN0YXgtaW5jL3NlYXJjaHN0dWRpby11eC1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9zZWFyY2hzdGF4LXNlYXJjaC1hbnN3ZXIvc2VhcmNoc3RheC1zZWFyY2gtYW5zd2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NlYXJjaHN0YXgtaW5jL3NlYXJjaHN0dWRpby11eC1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9zZWFyY2hzdGF4LXNlYXJjaC1hbnN3ZXIvc2VhcmNoc3RheC1zZWFyY2gtYW5zd2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUF1QixNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFTdEUsTUFBTSxPQUFPLDRCQUE0QjtJQVF2QyxZQUFvQixtQkFBd0M7UUFBeEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUg1RCxlQUFVLEdBQWlDLElBQUksQ0FBQztRQUNoRCxTQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3JCLFlBQU8sR0FBRyxJQUFJLENBQUM7SUFDZ0QsQ0FBQztJQUVoRSxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3pCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsNkJBQTZCLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFDLDBCQUEwQixFQUFFLElBQUksQ0FBQywwQkFBMEIsRUFBRSxjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBQyxDQUFDLENBQUM7WUFDck0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ1A7YUFBTTtZQUNMLE1BQU0sS0FBSyxDQUFDLGtEQUFrRCxDQUFDLENBQUM7U0FDakU7SUFDSCxDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQVksRUFBRSxPQUFhO1FBQ2xDLElBQUksT0FBTyxDQUFDLG1CQUFtQixDQUFDLFVBQVUsRUFBRTtZQUMxQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUE7U0FDckU7SUFDSCxDQUFDO0lBR0QsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FDakUsQ0FBQyxVQUF3QyxFQUFFLEVBQUU7WUFDM0MsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDL0IsQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDOytHQWxDVSw0QkFBNEI7bUdBQTVCLDRCQUE0QiwyTUNUekMsOHFCQTRCQTs7NEZEbkJhLDRCQUE0QjtrQkFMeEMsU0FBUzsrQkFDRSx1QkFBdUI7d0ZBS3hCLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLDBCQUEwQjtzQkFBbEMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgVGVtcGxhdGVSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgSUZlZWRiYWNrV2lkZ2V0UHJvcGVydGllcywgSVNlYXJjaHN0YXhBbnN3ZXJEYXRhIH0gZnJvbSBcIkBzZWFyY2hzdGF4LWluYy9zZWFyY2hzdHVkaW8tdXgtanNcIjtcbmltcG9ydCB7IFN0b3JlU2VydmljZVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvc3RvcmUtc2VydmljZS5zZXJ2aWNlXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJhcHAtc2VhcmNoc3RheC1hbnN3ZXJcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9zZWFyY2hzdGF4LXNlYXJjaC1hbnN3ZXIuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoc3RheFNlYXJjaEFuc3dlcldpZGdldCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHRlbXBsYXRlT3ZlcnJpZGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBASW5wdXQoKSBmZWVkYmFja3dpZGdldD86IElGZWVkYmFja1dpZGdldFByb3BlcnRpZXM7XG4gIEBJbnB1dCgpIHNob3dTaG93TW9yZUFmdGVyV29yZENvdW50PzogbnVtYmVyO1xuXG4gIGFuc3dlckRhdGE6IG51bGwgfCBJU2VhcmNoc3RheEFuc3dlckRhdGEgPSBudWxsO1xuICByYW5kID0gTWF0aC5yYW5kb20oKTtcbiAgY29udGV4dCA9IHRoaXM7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmVTZXJ2aWNlU2VydmljZTogU3RvcmVTZXJ2aWNlU2VydmljZSkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdG9yZVNlcnZpY2VTZXJ2aWNlLnNlYXJjaHN0YXgpIHtcbiAgICAgIHRoaXMuYXR0YWNoT2JzZXJ2YWJsZXMoKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnN0b3JlU2VydmljZVNlcnZpY2Uuc2VhcmNoc3RheC5hZGRBbnN3ZXJXaWRnZXQoJ3NlYXJjaHN0YXgtYW5zd2VyLWNvbnRhaW5lcicgKyB0aGlzLnJhbmQsIHtzaG93U2hvd01vcmVBZnRlcldvcmRDb3VudDogdGhpcy5zaG93U2hvd01vcmVBZnRlcldvcmRDb3VudCwgZmVlZGJhY2t3aWRnZXQ6IHRoaXMuZmVlZGJhY2t3aWRnZXR9KTtcbiAgICAgIH0sIDApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBFcnJvcihcIlNlYXJjaHN0YXggaW5zdGFuY2UgbmVlZHMgdG8gYmUgcGFzc2VkIHZpYSBwcm9wc1wiKTtcbiAgICB9XG4gIH1cblxuICBzaG93TW9yZShldmVudDogRXZlbnQsIGNvbnRleHQ6IHRoaXMpIHtcbiAgICBpZiAoY29udGV4dC5zdG9yZVNlcnZpY2VTZXJ2aWNlLnNlYXJjaHN0YXgpIHtcbiAgICAgIGNvbnRleHQuc3RvcmVTZXJ2aWNlU2VydmljZS5zZWFyY2hzdGF4LmFuc3dlcldpZGdldD8uc2hvd01vcmUoZXZlbnQpXG4gICAgfVxuICB9XG5cblxuICBhdHRhY2hPYnNlcnZhYmxlcygpIHtcbiAgICB0aGlzLnN0b3JlU2VydmljZVNlcnZpY2Uuc2VhcmNoc3RheC5kYXRhTGF5ZXIuJGFuc3dlckRhdGEuc3Vic2NyaWJlKFxuICAgICAgKGFuc3dlckRhdGE6IG51bGwgfCBJU2VhcmNoc3RheEFuc3dlckRhdGEpID0+IHtcbiAgICAgICAgdGhpcy5hbnN3ZXJEYXRhID0gYW5zd2VyRGF0YTtcbiAgICAgIH1cbiAgICApO1xuICB9XG59XG4iLCI8ZGl2IFtpZF09XCInc2VhcmNoc3RheC1hbnN3ZXItY29udGFpbmVyJyArIHJhbmRcIj5cbiAgPGRpdlxuICAgICpuZ0lmPVwiXG4gICAgICBhbnN3ZXJEYXRhICYmXG4gICAgICBhbnN3ZXJEYXRhPy5zZWFyY2hFeGVjdXRlZCAmJlxuICAgICAgYW5zd2VyRGF0YS5zaG91bGRTaG93QW5zd2VyICYmXG4gICAgICAhdGVtcGxhdGVPdmVycmlkZVxuICAgIFwiXG4gID5cbiAgICA8YXBwLWFuc3dlci10ZW1wbGF0ZSAjcmVmPjwvYXBwLWFuc3dlci10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGVcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInJlZi5hbnN3ZXJUZW1wbGF0ZVwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwiY29udGV4dFwiXG4gICAgPjwvbmctdGVtcGxhdGU+XG4gIDwvZGl2PlxuICA8ZGl2XG4gICAgKm5nSWY9XCJcbiAgICAgIGFuc3dlckRhdGEgJiZcbiAgICAgIGFuc3dlckRhdGE/LnNlYXJjaEV4ZWN1dGVkICYmXG4gICAgICBhbnN3ZXJEYXRhLnNob3VsZFNob3dBbnN3ZXIgJiZcbiAgICAgIHRlbXBsYXRlT3ZlcnJpZGVcbiAgICBcIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZU92ZXJyaWRlOyBjb250ZXh0OiBjb250ZXh0XCJcbiAgICA+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -1,41 +0,0 @@
1
- import { Component, Input } from "@angular/core";
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "../../services/store-service.service";
4
- import * as i2 from "@angular/common";
5
- import * as i3 from "../templates/searchstax-search-external-template";
6
- export class SearchstaxSearchExternalPromotionsWidget {
7
- constructor(storeServiceService) {
8
- this.storeServiceService = storeServiceService;
9
- this.externalPromotionsData = null;
10
- this.rand = Math.random();
11
- this.context = this;
12
- }
13
- ngOnInit() {
14
- if (this.storeServiceService.searchstax) {
15
- this.attachObservables();
16
- setTimeout(() => {
17
- this.storeServiceService.searchstax.addExternalPromotionsWidget("searchstax-external-promotions-layout-container" + this.rand, {});
18
- }, 0);
19
- }
20
- else {
21
- throw Error("Searchstax instance needs to be passed via props");
22
- }
23
- }
24
- trackClick(externalPromotion, event, context) {
25
- context.storeServiceService.searchstax.externalPromotionsWidget?.trackClick(externalPromotion, event);
26
- }
27
- attachObservables() {
28
- this.storeServiceService.searchstax.dataLayer.$searchExternalPromotionsData.subscribe((externalPromotionsData) => {
29
- this.externalPromotionsData = externalPromotionsData;
30
- });
31
- }
32
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SearchstaxSearchExternalPromotionsWidget, deps: [{ token: i1.StoreServiceService }], target: i0.ɵɵFactoryTarget.Component }); }
33
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SearchstaxSearchExternalPromotionsWidget, selector: "app-searchstax-external-promotions", inputs: { templateOverride: "templateOverride" }, ngImport: i0, template: "<div [id]=\"'searchstax-external-promotions-layout-container' + rand\">\n <ng-container\n *ngIf=\"\n externalPromotionsData &&\n externalPromotionsData?.searchExecuted &&\n externalPromotionsData?.hasExternalPromotions &&\n !templateOverride\n \"\n >\n <app-external-template #ref></app-external-template>\n <ng-template\n *ngTemplateOutlet=\"ref.externalPromotionsTemplate; context: context\"\n ></ng-template>\n </ng-container>\n <div\n *ngIf=\"\n externalPromotionsData &&\n externalPromotionsData?.searchExecuted &&\n externalPromotionsData?.hasExternalPromotions &&\n templateOverride\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"templateOverride; context: context\"\n ></ng-container>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.ExternalPromotionsTemplateComponent, selector: "app-external-template" }] }); }
34
- }
35
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SearchstaxSearchExternalPromotionsWidget, decorators: [{
36
- type: Component,
37
- args: [{ selector: "app-searchstax-external-promotions", template: "<div [id]=\"'searchstax-external-promotions-layout-container' + rand\">\n <ng-container\n *ngIf=\"\n externalPromotionsData &&\n externalPromotionsData?.searchExecuted &&\n externalPromotionsData?.hasExternalPromotions &&\n !templateOverride\n \"\n >\n <app-external-template #ref></app-external-template>\n <ng-template\n *ngTemplateOutlet=\"ref.externalPromotionsTemplate; context: context\"\n ></ng-template>\n </ng-container>\n <div\n *ngIf=\"\n externalPromotionsData &&\n externalPromotionsData?.searchExecuted &&\n externalPromotionsData?.hasExternalPromotions &&\n templateOverride\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"templateOverride; context: context\"\n ></ng-container>\n </div>\n</div>\n" }]
38
- }], ctorParameters: () => [{ type: i1.StoreServiceService }], propDecorators: { templateOverride: [{
39
- type: Input
40
- }] } });
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoc3RheC1zZWFyY2gtZXh0ZXJuYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2VhcmNoc3RheC1pbmMvc2VhcmNoc3R1ZGlvLXV4LWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3NlYXJjaHN0YXgtc2VhcmNoLWV4dGVybmFsL3NlYXJjaHN0YXgtc2VhcmNoLWV4dGVybmFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NlYXJjaHN0YXgtaW5jL3NlYXJjaHN0dWRpby11eC1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9zZWFyY2hzdGF4LXNlYXJjaC1leHRlcm5hbC9zZWFyY2hzdGF4LXNlYXJjaC1leHRlcm5hbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBdUIsTUFBTSxlQUFlLENBQUM7Ozs7O0FBU3RFLE1BQU0sT0FBTyx3Q0FBd0M7SUFNbkQsWUFBb0IsbUJBQXdDO1FBQXhDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFINUQsMkJBQXNCLEdBQTZDLElBQUksQ0FBQztRQUN4RSxTQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3JCLFlBQU8sR0FBRyxJQUFJLENBQUM7SUFDZ0QsQ0FBQztJQUVoRSxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3pCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQywyQkFBMkIsQ0FDN0QsaURBQWlELEdBQUcsSUFBSSxDQUFDLElBQUksRUFDN0QsRUFBRSxDQUNILENBQUM7WUFDSixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDUDthQUFNO1lBQ0wsTUFBTSxLQUFLLENBQUMsa0RBQWtELENBQUMsQ0FBQztTQUNqRTtJQUNILENBQUM7SUFFRCxVQUFVLENBQUMsaUJBQXFDLEVBQUUsS0FBWSxFQUFFLE9BQWE7UUFDM0UsT0FBTyxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyx3QkFBd0IsRUFBRSxVQUFVLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDeEcsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLDZCQUE2QixDQUFDLFNBQVMsQ0FDbkYsQ0FBQyxzQkFBZ0UsRUFBRSxFQUFFO1lBQ25FLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxzQkFBc0IsQ0FBQztRQUN2RCxDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7K0dBaENVLHdDQUF3QzttR0FBeEMsd0NBQXdDLDRIQ1RyRCw0eEJBMkJBOzs0RkRsQmEsd0NBQXdDO2tCQUxwRCxTQUFTOytCQUNFLG9DQUFvQzt3RkFLckMsZ0JBQWdCO3NCQUF4QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBUZW1wbGF0ZVJlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBJRXh0ZXJuYWxQcm9tb3Rpb24sIElTZWFyY2hzdGF4RXh0ZXJuYWxQcm9tb3Rpb25zRGF0YSB9IGZyb20gXCJAc2VhcmNoc3RheC1pbmMvc2VhcmNoc3R1ZGlvLXV4LWpzXCI7XG5pbXBvcnQgeyBTdG9yZVNlcnZpY2VTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3N0b3JlLXNlcnZpY2Uuc2VydmljZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiYXBwLXNlYXJjaHN0YXgtZXh0ZXJuYWwtcHJvbW90aW9uc1wiLFxuICB0ZW1wbGF0ZVVybDogXCIuL3NlYXJjaHN0YXgtc2VhcmNoLWV4dGVybmFsLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlczogW10sXG59KVxuZXhwb3J0IGNsYXNzIFNlYXJjaHN0YXhTZWFyY2hFeHRlcm5hbFByb21vdGlvbnNXaWRnZXQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSB0ZW1wbGF0ZU92ZXJyaWRlPzogVGVtcGxhdGVSZWY8YW55PjtcblxuICBleHRlcm5hbFByb21vdGlvbnNEYXRhOiBudWxsIHwgSVNlYXJjaHN0YXhFeHRlcm5hbFByb21vdGlvbnNEYXRhID0gbnVsbDtcbiAgcmFuZCA9IE1hdGgucmFuZG9tKCk7XG4gIGNvbnRleHQgPSB0aGlzO1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN0b3JlU2VydmljZVNlcnZpY2U6IFN0b3JlU2VydmljZVNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RvcmVTZXJ2aWNlU2VydmljZS5zZWFyY2hzdGF4KSB7XG4gICAgICB0aGlzLmF0dGFjaE9ic2VydmFibGVzKCk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5zdG9yZVNlcnZpY2VTZXJ2aWNlLnNlYXJjaHN0YXguYWRkRXh0ZXJuYWxQcm9tb3Rpb25zV2lkZ2V0KFxuICAgICAgICAgIFwic2VhcmNoc3RheC1leHRlcm5hbC1wcm9tb3Rpb25zLWxheW91dC1jb250YWluZXJcIiArIHRoaXMucmFuZCxcbiAgICAgICAgICB7fVxuICAgICAgICApO1xuICAgICAgfSwgMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IEVycm9yKFwiU2VhcmNoc3RheCBpbnN0YW5jZSBuZWVkcyB0byBiZSBwYXNzZWQgdmlhIHByb3BzXCIpO1xuICAgIH1cbiAgfVxuXG4gIHRyYWNrQ2xpY2soZXh0ZXJuYWxQcm9tb3Rpb246IElFeHRlcm5hbFByb21vdGlvbiwgZXZlbnQ6IEV2ZW50LCBjb250ZXh0OiB0aGlzKSB7XG4gICAgY29udGV4dC5zdG9yZVNlcnZpY2VTZXJ2aWNlLnNlYXJjaHN0YXguZXh0ZXJuYWxQcm9tb3Rpb25zV2lkZ2V0Py50cmFja0NsaWNrKGV4dGVybmFsUHJvbW90aW9uLCBldmVudCk7XG4gIH1cblxuICBhdHRhY2hPYnNlcnZhYmxlcygpIHtcbiAgICB0aGlzLnN0b3JlU2VydmljZVNlcnZpY2Uuc2VhcmNoc3RheC5kYXRhTGF5ZXIuJHNlYXJjaEV4dGVybmFsUHJvbW90aW9uc0RhdGEuc3Vic2NyaWJlKFxuICAgICAgKGV4dGVybmFsUHJvbW90aW9uc0RhdGE6IG51bGwgfCBJU2VhcmNoc3RheEV4dGVybmFsUHJvbW90aW9uc0RhdGEpID0+IHtcbiAgICAgICAgdGhpcy5leHRlcm5hbFByb21vdGlvbnNEYXRhID0gZXh0ZXJuYWxQcm9tb3Rpb25zRGF0YTtcbiAgICAgIH1cbiAgICApO1xuICB9XG59XG4iLCI8ZGl2IFtpZF09XCInc2VhcmNoc3RheC1leHRlcm5hbC1wcm9tb3Rpb25zLWxheW91dC1jb250YWluZXInICsgcmFuZFwiPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nSWY9XCJcbiAgICAgIGV4dGVybmFsUHJvbW90aW9uc0RhdGEgJiZcbiAgICAgIGV4dGVybmFsUHJvbW90aW9uc0RhdGE/LnNlYXJjaEV4ZWN1dGVkICYmXG4gICAgICBleHRlcm5hbFByb21vdGlvbnNEYXRhPy5oYXNFeHRlcm5hbFByb21vdGlvbnMgJiZcbiAgICAgICF0ZW1wbGF0ZU92ZXJyaWRlXG4gICAgXCJcbiAgPlxuICAgIDxhcHAtZXh0ZXJuYWwtdGVtcGxhdGUgI3JlZj48L2FwcC1leHRlcm5hbC10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGVcbiAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwicmVmLmV4dGVybmFsUHJvbW90aW9uc1RlbXBsYXRlOyBjb250ZXh0OiBjb250ZXh0XCJcbiAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxkaXZcbiAgICAqbmdJZj1cIlxuICAgICAgZXh0ZXJuYWxQcm9tb3Rpb25zRGF0YSAmJlxuICAgICAgZXh0ZXJuYWxQcm9tb3Rpb25zRGF0YT8uc2VhcmNoRXhlY3V0ZWQgJiZcbiAgICAgIGV4dGVybmFsUHJvbW90aW9uc0RhdGE/Lmhhc0V4dGVybmFsUHJvbW90aW9ucyAmJlxuICAgICAgdGVtcGxhdGVPdmVycmlkZVxuICAgIFwiXG4gID5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlT3ZlcnJpZGU7IGNvbnRleHQ6IGNvbnRleHRcIlxuICAgID48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==