@bridgeline-digital/hawksearch-handlebars-ui 6.2.3 → 6.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/changelog.md +17 -1
- package/dist/hawksearch-handlebars-ui.cjs +2 -2
- package/dist/hawksearch-handlebars-ui.js +102 -73
- package/dist/hawksearch-handlebars-ui.min.js +59 -59
- package/dist/hawksearch-handlebars-ui.umd.cjs +2 -2
- package/dist/index.d.ts +17 -0
- package/docs/assets/highlight.css +15 -8
- package/docs/assets/search.js +1 -1
- package/docs/classes/Components.AutocompleteComponent.html +24 -3
- package/docs/classes/Components.BaseComponent.html +22 -2
- package/docs/classes/Components.BaseContentComponent.html +23 -2
- package/docs/classes/Components.BaseFacetComponent.html +23 -2
- package/docs/classes/Components.CheckboxListFacetComponent.html +24 -3
- package/docs/classes/Components.ColorFacetComponent.html +24 -3
- package/docs/classes/Components.ConceptSearchFieldComponent.html +23 -2
- package/docs/classes/Components.ContentZoneComponent.html +24 -3
- package/docs/classes/Components.ConversationalSearchComponent.html +24 -3
- package/docs/classes/Components.CustomContentComponent.html +23 -2
- package/docs/classes/Components.DatePickerComponent.html +24 -3
- package/docs/classes/Components.DateRangeFacetComponent.html +24 -3
- package/docs/classes/Components.FacetWrapperComponent.html +24 -3
- package/docs/classes/Components.FacetsListComponent.html +24 -3
- package/docs/classes/Components.FeaturedItemsContentComponent.html +24 -3
- package/docs/classes/Components.FeaturedItemsContentItemComponent.html +24 -3
- package/docs/classes/Components.IconComponent.html +24 -3
- package/docs/classes/Components.ImageContentComponent.html +23 -2
- package/docs/classes/Components.ImageSearchFieldComponent.html +23 -2
- package/docs/classes/Components.LandingPageComponent.html +24 -3
- package/docs/classes/Components.LinkListFacetComponent.html +23 -2
- package/docs/classes/Components.ModifiedQueryComponent.html +24 -3
- package/docs/classes/Components.NumericRangeFacetComponent.html +23 -2
- package/docs/classes/Components.PageSizeComponent.html +23 -2
- package/docs/classes/Components.PaginationComponent.html +24 -3
- package/docs/classes/Components.PopularQueriesContentComponent.html +23 -2
- package/docs/classes/Components.QuerySuggestionsComponent.html +24 -3
- package/docs/classes/Components.RangeSliderComponent.html +24 -3
- package/docs/classes/Components.RangeSliderFacetComponent.html +24 -3
- package/docs/classes/Components.RatingComponent.html +24 -3
- package/docs/classes/Components.RecentSearchesFacetComponent.html +23 -2
- package/docs/classes/Components.RecommendationsComponent.html +24 -3
- package/docs/classes/Components.RecommendationsItemComponent.html +24 -3
- package/docs/classes/Components.RelatedSearchesFacetComponent.html +23 -2
- package/docs/classes/Components.SearchFieldComponent.html +24 -3
- package/docs/classes/Components.SearchResultsComponent.html +24 -3
- package/docs/classes/Components.SearchResultsItemComponent.html +24 -3
- package/docs/classes/Components.SearchResultsListComponent.html +24 -3
- package/docs/classes/Components.SearchWithinFacetComponent.html +23 -2
- package/docs/classes/Components.SelectedFacetsComponent.html +24 -3
- package/docs/classes/Components.SizeFacetComponent.html +24 -3
- package/docs/classes/Components.SmartResponseComponent.html +24 -3
- package/docs/classes/Components.SortingComponent.html +23 -2
- package/docs/classes/Components.TabsComponent.html +23 -2
- package/docs/classes/Components.TooltipComponent.html +24 -3
- package/docs/classes/Components.VariantSelectorComponent.html +24 -3
- package/docs/classes/Components.VisualSearchFieldComponent.html +24 -3
- package/docs/enums/Models.AutocompleteItemType.html +1 -0
- package/docs/enums/Models.EventType.html +1 -0
- package/docs/enums/Models.PageType.html +1 -0
- package/docs/enums/Models.SearchType.html +1 -0
- package/docs/index.html +15 -3
- package/docs/interfaces/Configuration.HawkSearchConfig.html +1 -1
- package/docs/interfaces/Models.AutocompleteCategories.html +1 -0
- package/docs/interfaces/Models.AutocompleteCategory.html +1 -0
- package/docs/interfaces/Models.AutocompleteComponentModel.html +1 -0
- package/docs/interfaces/Models.AutocompleteContent.html +1 -0
- package/docs/interfaces/Models.AutocompleteContentResult.html +1 -0
- package/docs/interfaces/Models.AutocompleteProductResult.html +1 -0
- package/docs/interfaces/Models.AutocompleteProducts.html +1 -0
- package/docs/interfaces/Models.AutocompleteQueries.html +1 -0
- package/docs/interfaces/Models.AutocompleteQuery.html +1 -0
- package/docs/interfaces/Models.AutocompleteRequest.html +1 -0
- package/docs/interfaces/Models.AutocompleteResponse.html +1 -0
- package/docs/interfaces/Models.BaseComponentModel.html +1 -0
- package/docs/interfaces/Models.CalendarDay.html +1 -0
- package/docs/interfaces/Models.CheckboxListFacetComponentModel.html +1 -0
- package/docs/interfaces/Models.CheckboxListFacetValue.html +1 -0
- package/docs/interfaces/Models.ColorFacetComponentModel.html +1 -0
- package/docs/interfaces/Models.ColorFacetValue.html +1 -0
- package/docs/interfaces/Models.ContentConfiguration.html +1 -0
- package/docs/interfaces/Models.ContentType.html +1 -0
- package/docs/interfaces/Models.ContentZone.html +1 -0
- package/docs/interfaces/Models.ContentZoneComponentModel.html +1 -0
- package/docs/interfaces/Models.ContentZoneItem.html +1 -0
- package/docs/interfaces/Models.ContentZones.html +1 -0
- package/docs/interfaces/Models.ConversationalSearchComponentModel.html +1 -0
- package/docs/interfaces/Models.CustomContent.html +1 -0
- package/docs/interfaces/Models.CustomContentComponentModel.html +1 -0
- package/docs/interfaces/Models.CustomWidgetContent.html +1 -0
- package/docs/interfaces/Models.DateFacetRange.html +1 -0
- package/docs/interfaces/Models.DatePickerComponentModel.html +1 -0
- package/docs/interfaces/Models.DateRangeFacetComponentModel.html +1 -0
- package/docs/interfaces/Models.Facet.html +1 -0
- package/docs/interfaces/Models.FacetScrolling.html +1 -0
- package/docs/interfaces/Models.FacetSearch.html +1 -0
- package/docs/interfaces/Models.FacetTruncation.html +1 -0
- package/docs/interfaces/Models.FacetValue.html +1 -0
- package/docs/interfaces/Models.FacetValueColor.html +1 -0
- package/docs/interfaces/Models.FacetWrapperComponentModel.html +1 -0
- package/docs/interfaces/Models.FacetsListComponentModel.html +1 -0
- package/docs/interfaces/Models.FeaturedItemsContent.html +1 -0
- package/docs/interfaces/Models.FeaturedItemsContentComponentModel.html +1 -0
- package/docs/interfaces/Models.FeaturedItemsContentItem.html +1 -0
- package/docs/interfaces/Models.FeaturedItemsContentItemComponentModel.html +1 -0
- package/docs/interfaces/Models.IconComponentModel.html +1 -0
- package/docs/interfaces/Models.ImageContent.html +1 -0
- package/docs/interfaces/Models.ImageContentComponentModel.html +1 -0
- package/docs/interfaces/Models.Item.html +1 -0
- package/docs/interfaces/Models.ItemVariant.html +1 -0
- package/docs/interfaces/Models.LandingPageComponentModel.html +1 -0
- package/docs/interfaces/Models.LinkListFacetComponentModel.html +1 -0
- package/docs/interfaces/Models.LinkListFacetValue.html +1 -0
- package/docs/interfaces/Models.MessageItem.html +1 -0
- package/docs/interfaces/Models.MessageItemList.html +2 -1
- package/docs/interfaces/Models.ModifiedQueryComponentModel.html +1 -0
- package/docs/interfaces/Models.ModifiedQueryData.html +1 -0
- package/docs/interfaces/Models.NumericFacetRange.html +1 -0
- package/docs/interfaces/Models.NumericRangeFacetComponentModel.html +1 -0
- package/docs/interfaces/Models.PageSizeComponentModel.html +1 -0
- package/docs/interfaces/Models.Pagination.html +1 -0
- package/docs/interfaces/Models.PaginationComponentModel.html +1 -0
- package/docs/interfaces/Models.PaginationOption.html +1 -0
- package/docs/interfaces/Models.PopularQueriesContent.html +1 -0
- package/docs/interfaces/Models.PopularQueriesContentComponentModel.html +1 -0
- package/docs/interfaces/Models.PopularQueriesContentItem.html +1 -0
- package/docs/interfaces/Models.QuerySuggestionsComponentModel.html +1 -0
- package/docs/interfaces/Models.QuerySuggestionsData.html +1 -0
- package/docs/interfaces/Models.RangeSliderComponentModel.html +1 -0
- package/docs/interfaces/Models.RangeSliderEventData.html +1 -0
- package/docs/interfaces/Models.RangeSliderFacetComponentModel.html +1 -0
- package/docs/interfaces/Models.RatingComponentModel.html +1 -0
- package/docs/interfaces/Models.RecentSearchesFacetComponentModel.html +1 -0
- package/docs/interfaces/Models.RecommendationsCarouselData.html +232 -0
- package/docs/interfaces/Models.RecommendationsComponentModel.html +7 -0
- package/docs/interfaces/Models.RecommendationsItem.html +1 -0
- package/docs/interfaces/Models.RecommendationsItemComponentModel.html +1 -0
- package/docs/interfaces/Models.RecommendationsRequest.html +1 -0
- package/docs/interfaces/Models.RecommendationsResponse.html +1 -0
- package/docs/interfaces/Models.RecommendationsWidget.html +6 -0
- package/docs/interfaces/Models.Redirect.html +1 -0
- package/docs/interfaces/Models.RelatedSearchesFacetComponentModel.html +1 -0
- package/docs/interfaces/Models.SearchFieldComponentModel.html +1 -0
- package/docs/interfaces/Models.SearchRequest.html +1 -0
- package/docs/interfaces/Models.SearchResponse.html +1 -0
- package/docs/interfaces/Models.SearchResultsComponentModel.html +1 -0
- package/docs/interfaces/Models.SearchResultsItem.html +1 -0
- package/docs/interfaces/Models.SearchResultsItemComponentModel.html +1 -0
- package/docs/interfaces/Models.SearchResultsItemVariant.html +1 -0
- package/docs/interfaces/Models.SearchResultsListComponentModel.html +1 -0
- package/docs/interfaces/Models.SearchWithinFacetComponentModel.html +1 -0
- package/docs/interfaces/Models.SelectedFacet.html +1 -0
- package/docs/interfaces/Models.SelectedFacetValue.html +1 -0
- package/docs/interfaces/Models.SelectedFacetsComponentModel.html +1 -0
- package/docs/interfaces/Models.SeoConfiguration.html +1 -0
- package/docs/interfaces/Models.SizeFacetComponentModel.html +1 -0
- package/docs/interfaces/Models.SizeFacetValue.html +1 -0
- package/docs/interfaces/Models.SmartResponseComponentModel.html +1 -0
- package/docs/interfaces/Models.SmartResponseRequest.html +1 -0
- package/docs/interfaces/Models.SmartResponseResponse.html +1 -0
- package/docs/interfaces/Models.SmartSearchFieldComponentModel.html +1 -0
- package/docs/interfaces/Models.Sorting.html +1 -0
- package/docs/interfaces/Models.SortingComponentModel.html +1 -0
- package/docs/interfaces/Models.SortingOption.html +1 -0
- package/docs/interfaces/Models.TabsComponentModel.html +1 -0
- package/docs/interfaces/Models.TooltipComponentModel.html +1 -0
- package/docs/interfaces/Models.VariantSelectorComponentModel.html +1 -0
- package/docs/interfaces/Models.Variants.html +1 -0
- package/docs/interfaces/Models.VisualSearchFieldComponentModel.html +1 -0
- package/docs/modules/Components.html +1 -1
- package/docs/modules/Models.html +3 -1
- package/docs/types/Models.FacetState.html +1 -0
- package/docs/types/Models.FacetType.html +1 -0
- package/docs/types/Models.FacetValueState.html +1 -0
- package/docs/types/Models.IconName.html +1 -0
- package/docs/types/Models.ItemType.html +1 -0
- package/docs/types/Models.MessageRole.html +1 -0
- package/docs/types/Models.RequestType.html +1 -0
- package/docs/types/Models.SearchResultsMode.html +1 -0
- package/docs/types/Models.SearchTypes.html +1 -0
- package/docs/types/Models.SelectedFacets.html +1 -0
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* name: @bridgeline-digital/hawksearch-handlebars-ui
|
|
3
3
|
*
|
|
4
|
-
* version: v6.2.
|
|
4
|
+
* version: v6.2.5
|
|
5
5
|
*
|
|
6
6
|
* description: The HawkSearch Handlebars UI package allows you to add a highly-customizable search results page to your website powered by HawkSearch.
|
|
7
7
|
*
|
|
@@ -6009,6 +6009,10 @@ class BaseComponent extends HTMLElement {
|
|
|
6009
6009
|
});
|
|
6010
6010
|
return output;
|
|
6011
6011
|
}
|
|
6012
|
+
triggerEvent(name, data) {
|
|
6013
|
+
const event = new CustomEvent(name, { detail: data });
|
|
6014
|
+
window.dispatchEvent(event);
|
|
6015
|
+
}
|
|
6012
6016
|
}
|
|
6013
6017
|
class BaseContentComponent extends BaseComponent {
|
|
6014
6018
|
constructor() {
|
|
@@ -6317,6 +6321,9 @@ function formatNumber(value, decimals = 2) {
|
|
|
6317
6321
|
maximumFractionDigits: decimals
|
|
6318
6322
|
});
|
|
6319
6323
|
}
|
|
6324
|
+
function isQueryBase64Image(query) {
|
|
6325
|
+
return !!query && query.includes("data:image/");
|
|
6326
|
+
}
|
|
6320
6327
|
const defaultHtml$B = `<div class="date-picker">
|
|
6321
6328
|
<input type="text" value="{{value}}" hawksearch-input readonly class="date-picker__input" aria-label="{{strings.label}}" />
|
|
6322
6329
|
{{#if modalVisible}}
|
|
@@ -7025,6 +7032,14 @@ class RecommendationsComponent extends BaseComponent {
|
|
|
7025
7032
|
get carouselPosition() {
|
|
7026
7033
|
return this.carousel ? `${-1 * this.selectedIndex * 100 / this.itemsToDisplay}%` : void 0;
|
|
7027
7034
|
}
|
|
7035
|
+
get paginationEnabled() {
|
|
7036
|
+
var _a, _b, _c, _d;
|
|
7037
|
+
return ((_b = (_a = this.data) == null ? void 0 : _a.carouselData) == null ? void 0 : _b.showDots) ?? ((_d = (_c = this.configuration) == null ? void 0 : _c.carousel) == null ? void 0 : _d.paginationEnabled) ?? false;
|
|
7038
|
+
}
|
|
7039
|
+
get buttonsEnabled() {
|
|
7040
|
+
var _a, _b, _c;
|
|
7041
|
+
return ((_a = this.data) == null ? void 0 : _a.carouselData.showNextPrevButtons) ?? ((_c = (_b = this.configuration) == null ? void 0 : _b.carousel) == null ? void 0 : _c.buttonsEnabled) ?? true;
|
|
7042
|
+
}
|
|
7028
7043
|
get displayType() {
|
|
7029
7044
|
var _a, _b;
|
|
7030
7045
|
const width = window.innerWidth;
|
|
@@ -7102,23 +7117,23 @@ class RecommendationsComponent extends BaseComponent {
|
|
|
7102
7117
|
return !!((_b = (_a = this.data) == null ? void 0 : _a.items) == null ? void 0 : _b.length);
|
|
7103
7118
|
}
|
|
7104
7119
|
getContentModel() {
|
|
7105
|
-
var _a, _b, _c, _d, _e
|
|
7120
|
+
var _a, _b, _c, _d, _e;
|
|
7106
7121
|
this.previousDisplayType = this.displayType;
|
|
7107
7122
|
return {
|
|
7108
7123
|
...this.data,
|
|
7109
|
-
buttonsEnabled: ((_b = (_a = this.configuration) == null ? void 0 : _a.carousel) == null ? void 0 : _b.buttonsEnabled) ?? true,
|
|
7110
7124
|
carousel: this.carousel,
|
|
7111
7125
|
carouselPosition: this.carouselPosition,
|
|
7112
|
-
headingEnabled: ((
|
|
7126
|
+
headingEnabled: ((_a = this.configuration) == null ? void 0 : _a.headingEnabled) ?? true,
|
|
7113
7127
|
itemWidth: this.itemWidth,
|
|
7114
|
-
|
|
7128
|
+
buttonsEnabled: this.buttonsEnabled,
|
|
7129
|
+
paginationEnabled: this.paginationEnabled,
|
|
7115
7130
|
paginationItems: this.data.items.map((item, index) => ({
|
|
7116
7131
|
selected: this.getSelected(index),
|
|
7117
7132
|
title: item.title
|
|
7118
7133
|
})),
|
|
7119
7134
|
strings: {
|
|
7120
|
-
next: ((
|
|
7121
|
-
previous: ((
|
|
7135
|
+
next: ((_c = (_b = this.configuration) == null ? void 0 : _b.strings) == null ? void 0 : _c.next) ?? "Next",
|
|
7136
|
+
previous: ((_e = (_d = this.configuration) == null ? void 0 : _d.strings) == null ? void 0 : _e.previous) ?? "Previous"
|
|
7122
7137
|
}
|
|
7123
7138
|
};
|
|
7124
7139
|
}
|
|
@@ -9403,52 +9418,43 @@ class SmartResponseComponent extends BaseComponent {
|
|
|
9403
9418
|
get schema() {
|
|
9404
9419
|
var _a, _b;
|
|
9405
9420
|
return ((_b = (_a = this.configuration) == null ? void 0 : _a.prompt) == null ? void 0 : _b.schema) || {
|
|
9406
|
-
|
|
9407
|
-
|
|
9408
|
-
|
|
9409
|
-
|
|
9410
|
-
|
|
9411
|
-
|
|
9412
|
-
|
|
9413
|
-
|
|
9421
|
+
name: "smartresponse_summary",
|
|
9422
|
+
description: "Recommedation message and product details which includes name, description, url, price and imageUrl",
|
|
9423
|
+
strict: true,
|
|
9424
|
+
schema: {
|
|
9425
|
+
type: "object",
|
|
9426
|
+
properties: {
|
|
9427
|
+
recommendation: {
|
|
9428
|
+
type: "string"
|
|
9414
9429
|
},
|
|
9415
|
-
|
|
9416
|
-
|
|
9417
|
-
|
|
9418
|
-
|
|
9419
|
-
|
|
9420
|
-
|
|
9421
|
-
|
|
9430
|
+
products: {
|
|
9431
|
+
type: "array",
|
|
9432
|
+
items: {
|
|
9433
|
+
type: "object",
|
|
9434
|
+
properties: {
|
|
9435
|
+
name: {
|
|
9436
|
+
type: "string"
|
|
9422
9437
|
},
|
|
9423
|
-
|
|
9424
|
-
|
|
9438
|
+
url: {
|
|
9439
|
+
type: "string"
|
|
9425
9440
|
},
|
|
9426
|
-
|
|
9427
|
-
|
|
9441
|
+
description: {
|
|
9442
|
+
type: "string"
|
|
9428
9443
|
},
|
|
9429
|
-
|
|
9430
|
-
|
|
9444
|
+
price: {
|
|
9445
|
+
type: "number"
|
|
9431
9446
|
},
|
|
9432
|
-
|
|
9433
|
-
|
|
9447
|
+
imageUrl: {
|
|
9448
|
+
type: "string"
|
|
9434
9449
|
}
|
|
9435
9450
|
},
|
|
9436
|
-
|
|
9437
|
-
|
|
9438
|
-
"url",
|
|
9439
|
-
"description",
|
|
9440
|
-
"price",
|
|
9441
|
-
"imageUrl"
|
|
9442
|
-
],
|
|
9443
|
-
"additionalProperties": false
|
|
9451
|
+
required: ["name", "url", "description", "price", "imageUrl"],
|
|
9452
|
+
additionalProperties: false
|
|
9444
9453
|
}
|
|
9445
9454
|
}
|
|
9446
9455
|
},
|
|
9447
|
-
|
|
9448
|
-
|
|
9449
|
-
"products"
|
|
9450
|
-
],
|
|
9451
|
-
"additionalProperties": false
|
|
9456
|
+
required: ["recommendation", "products"],
|
|
9457
|
+
additionalProperties: false
|
|
9452
9458
|
}
|
|
9453
9459
|
};
|
|
9454
9460
|
}
|
|
@@ -9506,9 +9512,9 @@ class SmartResponseComponent extends BaseComponent {
|
|
|
9506
9512
|
{ role: "user", content: `USER INPUT: "${this.currentQuery}", PRODUCTS:${JSON.stringify(this.currentResponse)}` }
|
|
9507
9513
|
],
|
|
9508
9514
|
{
|
|
9509
|
-
|
|
9510
|
-
|
|
9511
|
-
|
|
9515
|
+
response_format: {
|
|
9516
|
+
type: "json_schema",
|
|
9517
|
+
json_schema: this.schema
|
|
9512
9518
|
}
|
|
9513
9519
|
}
|
|
9514
9520
|
).then((result) => {
|
|
@@ -9627,31 +9633,32 @@ class VisualSearchFieldComponent extends BaseComponent {
|
|
|
9627
9633
|
var _a;
|
|
9628
9634
|
const file = files[0];
|
|
9629
9635
|
const extension = (_a = file.name.split(".").pop()) == null ? void 0 : _a.toLowerCase();
|
|
9630
|
-
if (
|
|
9631
|
-
|
|
9632
|
-
|
|
9633
|
-
|
|
9634
|
-
|
|
9635
|
-
|
|
9636
|
-
|
|
9637
|
-
|
|
9638
|
-
|
|
9639
|
-
|
|
9640
|
-
e2.appendChild(img);
|
|
9641
|
-
});
|
|
9642
|
-
const base64Data = (_a2 = e.target) == null ? void 0 : _a2.result;
|
|
9643
|
-
if (base64Data) {
|
|
9644
|
-
this.previousValue = base64Data;
|
|
9645
|
-
HawkSearch.services.search.query({
|
|
9646
|
-
queryString: base64Data,
|
|
9647
|
-
requestType: "ImageData"
|
|
9648
|
-
});
|
|
9636
|
+
if (!this.isValidFile(file, extension))
|
|
9637
|
+
return;
|
|
9638
|
+
const reader = new FileReader();
|
|
9639
|
+
reader.onload = (e) => {
|
|
9640
|
+
var _a2;
|
|
9641
|
+
const img = new Image();
|
|
9642
|
+
img.src = reader.result;
|
|
9643
|
+
this.rootElement.querySelectorAll("[hawksearch-visualsearch-display]").forEach((e2) => {
|
|
9644
|
+
if (e2.lastChild) {
|
|
9645
|
+
e2.removeChild(e2.lastChild);
|
|
9649
9646
|
}
|
|
9650
|
-
|
|
9651
|
-
|
|
9652
|
-
|
|
9653
|
-
|
|
9654
|
-
|
|
9647
|
+
e2.appendChild(img);
|
|
9648
|
+
});
|
|
9649
|
+
const base64Data = (_a2 = e.target) == null ? void 0 : _a2.result;
|
|
9650
|
+
if (base64Data) {
|
|
9651
|
+
this.previousValue = base64Data;
|
|
9652
|
+
HawkSearch.services.search.query({
|
|
9653
|
+
queryString: base64Data,
|
|
9654
|
+
requestType: "ImageData"
|
|
9655
|
+
});
|
|
9656
|
+
}
|
|
9657
|
+
};
|
|
9658
|
+
reader.onerror = (error) => {
|
|
9659
|
+
this.triggerUploadFailed("file_read_unsuccessful", { error });
|
|
9660
|
+
};
|
|
9661
|
+
reader.readAsDataURL(file);
|
|
9655
9662
|
}
|
|
9656
9663
|
connectedCallback() {
|
|
9657
9664
|
super.connectedCallback();
|
|
@@ -9715,6 +9722,27 @@ class VisualSearchFieldComponent extends BaseComponent {
|
|
|
9715
9722
|
});
|
|
9716
9723
|
});
|
|
9717
9724
|
}
|
|
9725
|
+
isValidFile(file, extension) {
|
|
9726
|
+
if (!file.type.startsWith("image/")) {
|
|
9727
|
+
this.triggerUploadFailed("file_type_unsupported", { type: file.type });
|
|
9728
|
+
return false;
|
|
9729
|
+
}
|
|
9730
|
+
if (file.size > this.maxSize) {
|
|
9731
|
+
this.triggerUploadFailed("file_too_large", { size: `${Math.round(file.size / 1024 / 1024)}MB` });
|
|
9732
|
+
return false;
|
|
9733
|
+
}
|
|
9734
|
+
if (!this.allowedExtensions.includes(extension)) {
|
|
9735
|
+
this.triggerUploadFailed("file_extension_unsupported", { extension });
|
|
9736
|
+
return false;
|
|
9737
|
+
}
|
|
9738
|
+
return true;
|
|
9739
|
+
}
|
|
9740
|
+
triggerUploadFailed(reason, data) {
|
|
9741
|
+
this.triggerEvent("hawksearch:visualsearch-upload-failed", {
|
|
9742
|
+
reason,
|
|
9743
|
+
...data
|
|
9744
|
+
});
|
|
9745
|
+
}
|
|
9718
9746
|
}
|
|
9719
9747
|
const defaultHtml = `{{#if (arrayHasObjectsWithValue items "color")}}
|
|
9720
9748
|
<div class="variant-selector-list">
|
|
@@ -10225,7 +10253,7 @@ class ConversationalService extends BaseService {
|
|
|
10225
10253
|
async executeSearch(messages, options) {
|
|
10226
10254
|
this.bindComponents(messages);
|
|
10227
10255
|
const rawConversationalSearchRequest = {
|
|
10228
|
-
|
|
10256
|
+
api_key: this.API_KEY,
|
|
10229
10257
|
messages,
|
|
10230
10258
|
...options
|
|
10231
10259
|
};
|
|
@@ -10351,6 +10379,7 @@ class RecommendationsService extends BaseService {
|
|
|
10351
10379
|
requestId: rawRecommendationsResponse.requestId,
|
|
10352
10380
|
title: w.widgetName,
|
|
10353
10381
|
carousel: w.isCarousel,
|
|
10382
|
+
carouselData: w.carouselData,
|
|
10354
10383
|
items: (_a2 = w.recommendationItems) == null ? void 0 : _a2.map((i) => getItem(i))
|
|
10355
10384
|
};
|
|
10356
10385
|
})
|
|
@@ -10402,7 +10431,7 @@ class SearchService extends BaseService {
|
|
|
10402
10431
|
window.location.assign(url);
|
|
10403
10432
|
return Promise.resolve();
|
|
10404
10433
|
}
|
|
10405
|
-
if (queryString && !queryString
|
|
10434
|
+
if (queryString && !isQueryBase64Image(queryString)) {
|
|
10406
10435
|
const recentQueries = this.getRecentQueries();
|
|
10407
10436
|
const recentQueryLimit = 5;
|
|
10408
10437
|
if (!recentQueries.includes(queryString)) {
|
|
@@ -11235,7 +11264,7 @@ class SearchService extends BaseService {
|
|
|
11235
11264
|
const url = new URL(searchPage ? window.location.href : this.searchUrl, window.location.origin);
|
|
11236
11265
|
const nonFacetParams = Object.keys(this.queryStringParams);
|
|
11237
11266
|
url.searchParams.delete(this.queryStringParams.query);
|
|
11238
|
-
if (searchRequest.query) {
|
|
11267
|
+
if (searchRequest.query && !isQueryBase64Image(searchRequest.query)) {
|
|
11239
11268
|
url.searchParams.set(this.queryStringParams.query, searchRequest.query);
|
|
11240
11269
|
}
|
|
11241
11270
|
Array.from(url.searchParams.keys()).filter((p) => !nonFacetParams.includes(p)).forEach((p) => url.searchParams.delete(p));
|